✅ Complete Astro migration - PDPA compliant website
- Migrated all pages from Next.js to Astro - Added PDPA-compliant Privacy Policy (Thai) - Added PDPA-compliant Terms & Conditions (Thai) - Added Cookie Policy with disclosure (Thai) - Implemented cookie consent banner (client-side) - Integrated Umami Analytics placeholder - Blog system with 3 posts - Optimized Docker configuration for production - Static site build (184KB, 11 pages) - Ready for Easypanel deployment Backup: /Users/kunthawatgreethong/Gitea/dealplustech-backup-nextjs-20260309.tar.gz
This commit is contained in:
84
dealplustech-astro/node_modules/@libsql/hrana-client/lib-cjs/ws/cursor.js
generated
vendored
Normal file
84
dealplustech-astro/node_modules/@libsql/hrana-client/lib-cjs/ws/cursor.js
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.WsCursor = void 0;
|
||||
const errors_js_1 = require("../errors.js");
|
||||
const cursor_js_1 = require("../cursor.js");
|
||||
const queue_js_1 = require("../queue.js");
|
||||
const fetchChunkSize = 1000;
|
||||
const fetchQueueSize = 10;
|
||||
class WsCursor extends cursor_js_1.Cursor {
|
||||
#client;
|
||||
#stream;
|
||||
#cursorId;
|
||||
#entryQueue;
|
||||
#fetchQueue;
|
||||
#closed;
|
||||
#done;
|
||||
/** @private */
|
||||
constructor(client, stream, cursorId) {
|
||||
super();
|
||||
this.#client = client;
|
||||
this.#stream = stream;
|
||||
this.#cursorId = cursorId;
|
||||
this.#entryQueue = new queue_js_1.Queue();
|
||||
this.#fetchQueue = new queue_js_1.Queue();
|
||||
this.#closed = undefined;
|
||||
this.#done = false;
|
||||
}
|
||||
/** Fetch the next entry from the cursor. */
|
||||
async next() {
|
||||
for (;;) {
|
||||
if (this.#closed !== undefined) {
|
||||
throw new errors_js_1.ClosedError("Cursor is closed", this.#closed);
|
||||
}
|
||||
while (!this.#done && this.#fetchQueue.length < fetchQueueSize) {
|
||||
this.#fetchQueue.push(this.#fetch());
|
||||
}
|
||||
const entry = this.#entryQueue.shift();
|
||||
if (this.#done || entry !== undefined) {
|
||||
return entry;
|
||||
}
|
||||
// we assume that `Cursor.next()` is never called concurrently
|
||||
await this.#fetchQueue.shift().then((response) => {
|
||||
if (response === undefined) {
|
||||
return;
|
||||
}
|
||||
for (const entry of response.entries) {
|
||||
this.#entryQueue.push(entry);
|
||||
}
|
||||
this.#done ||= response.done;
|
||||
});
|
||||
}
|
||||
}
|
||||
#fetch() {
|
||||
return this.#stream._sendCursorRequest(this, {
|
||||
type: "fetch_cursor",
|
||||
cursorId: this.#cursorId,
|
||||
maxCount: fetchChunkSize,
|
||||
}).then((resp) => resp, (error) => {
|
||||
this._setClosed(error);
|
||||
return undefined;
|
||||
});
|
||||
}
|
||||
/** @private */
|
||||
_setClosed(error) {
|
||||
if (this.#closed !== undefined) {
|
||||
return;
|
||||
}
|
||||
this.#closed = error;
|
||||
this.#stream._sendCursorRequest(this, {
|
||||
type: "close_cursor",
|
||||
cursorId: this.#cursorId,
|
||||
}).catch(() => undefined);
|
||||
this.#stream._cursorClosed(this);
|
||||
}
|
||||
/** Close the cursor. */
|
||||
close() {
|
||||
this._setClosed(new errors_js_1.ClientError("Cursor was manually closed"));
|
||||
}
|
||||
/** True if the cursor is closed. */
|
||||
get closed() {
|
||||
return this.#closed !== undefined;
|
||||
}
|
||||
}
|
||||
exports.WsCursor = WsCursor;
|
||||
Reference in New Issue
Block a user