TreasureTrails/node_modules/@electric-sql/pglite/dist/worker/index.cjs.map

1 line
132 KiB
Text
Raw Normal View History

2026-03-18 09:02:21 -05:00
{"version":3,"sources":["../../src/worker/index.ts","../../../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.47.7_@types+node@20.16.11__postcss@8.4.47_tsx@4.19.2_typescript@5.6.3/node_modules/tsup/assets/cjs_shims.js","../../src/templating.ts","../../src/types.ts","../../src/parse.ts","../../../pg-protocol/src/string-utils.ts","../../../pg-protocol/src/buffer-writer.ts","../../../pg-protocol/src/serializer.ts","../../../pg-protocol/src/messages.ts","../../../pg-protocol/src/buffer-reader.ts","../../../pg-protocol/src/parser.ts","../../src/errors.ts","../../src/base.ts","../../src/utils.ts"],"sourcesContent":["import type {\n DebugLevel,\n ExecProtocolResult,\n Extensions,\n PGliteInterface,\n PGliteInterfaceExtensions,\n PGliteOptions,\n Transaction,\n} from '../interface.js'\nimport type { PGlite } from '../pglite.js'\nimport { BasePGlite } from '../base.js'\nimport { toPostgresName, uuid } from '../utils.js'\nimport { DumpTarCompressionOptions } from '../fs/tarUtils.js'\nimport { BackendMessage } from '@electric-sql/pg-protocol/messages'\n\nexport type PGliteWorkerOptions<E extends Extensions = Extensions> =\n PGliteOptions<E> & {\n meta?: any\n id?: string\n }\n\nexport class PGliteWorker\n extends BasePGlite\n implements PGliteInterface, AsyncDisposable\n{\n #initPromise: Promise<void>\n #debug: DebugLevel = 0\n\n #ready = false\n #closed = false\n #isLeader = false\n\n #eventTarget = new EventTarget()\n\n #tabId: string\n\n #connected = false\n\n #workerProcess: Worker\n #workerID?: string\n #workerHerePromise?: Promise<void>\n #workerReadyPromise?: Promise<void>\n\n #broadcastChannel?: BroadcastChannel\n #tabChannel?: BroadcastChannel\n #releaseTabCloseLock?: () => void\n\n #notifyListeners = new Map<string, Set<(payload: string) => void>>()\n #globalNotifyListeners = new Set<(channel: string, payload: string) => void>()\n\n #extensions: Extensions\n #extensionsClose: Array<() => Promise<void>> = []\n\n constructor(worker: Worker, options?: PGliteWorkerOptions) {\n super()\n this.#workerProcess = worker\n this.#tabId = uuid()\n this.#extensions = options?.extensions ?? {}\n\n this.#workerHerePromise = new Promise<void>((resolve) => {\n this.#workerProcess.addEventListener(\n 'message',\n (event) => {\n if (event.data.type === 'here') {\n resolve()\n } else {\n throw new Error('Invalid message')\n }\n },\n { once: true },\n )\n })\n\n this.#workerReadyPromise = new Promise<void>((resolve) => {\n const callback = (event: MessageEvent<any>) => {\n if (event.data.type === 'ready') {\n this.#workerID = event.data.id\n this.#workerProcess.removeEventListener('message', callback)\n resolve()\n }\n }\n this.#workerProcess.addEventListener('message', callback)\n })\n\n this.#initPromise = this.#init(options)\n }\n\n /**\n * Create a new PGlite instance with extensions on the Typescript interface\n * This also awaits the instance to be ready before resolving\n * (The main constructor does enable extensions, however due to the limitations\n * of Typescript, the extensions are not available on the instance interface)\n * @param worker The worker to use\n * @param options Optional options\n * @returns A promise that resolves to the PGlite instance when it's ready.\n */\n static async create<O extends PGliteWorkerOptions>(\n worker: Worker,\n options?: O,\n ): Promise<PGliteWorker & PGliteInterfaceExtensions<O['extensions']>> {\n const pg = new PGliteWorker(worker, options)\n await pg.#initPromise\n return pg as PGliteWorker & PGliteInterfaceExtensions<O['extensions']>\n }\n\n async #init(options: PGliteWorkerOptions = {}) {\n // Setup the extensions\n for (const [extName, ext] of Object.entries(this.#extensions)) {\n if (ext instanceof URL) {\n throw new Error(\n 'URL extensions are not supported on the client side of a worker',\n )\n }