@powerhousedao/connect 6.2.1-dev.0 → 6.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AddDriveModal-D-nbV40j.js → AddDriveModal-vA-eqqPS.js} +24 -10
- package/dist/AddDriveModal-vA-eqqPS.js.map +1 -0
- package/dist/{ClearStorageModal-BoHhAIcb.js → ClearStorageModal-Dm00WyUu.js} +4 -4
- package/dist/{ClearStorageModal-BoHhAIcb.js.map → ClearStorageModal-Dm00WyUu.js.map} +1 -1
- package/dist/{CookiesPolicyModal-CkcUKPLb.js → CookiesPolicyModal-1nOh6oN3.js} +3 -3
- package/dist/{CookiesPolicyModal-CkcUKPLb.js.map → CookiesPolicyModal-1nOh6oN3.js.map} +1 -1
- package/dist/{CreateDocumentModal-CvsTh0HM.js → CreateDocumentModal-nQbLVDq3.js} +3 -3
- package/dist/{CreateDocumentModal-CvsTh0HM.js.map → CreateDocumentModal-nQbLVDq3.js.map} +1 -1
- package/dist/{DebugSettingsModal-BVerP6Sp.js → DebugSettingsModal-CWZkbU7v.js} +6 -6
- package/dist/{DebugSettingsModal-BVerP6Sp.js.map → DebugSettingsModal-CWZkbU7v.js.map} +1 -1
- package/dist/{DeleteDriveModal-DSTK8FYk.js → DeleteDriveModal-6P0T1QgD.js} +4 -4
- package/dist/{DeleteDriveModal-DSTK8FYk.js.map → DeleteDriveModal-6P0T1QgD.js.map} +1 -1
- package/dist/{DeleteItemModal-B2nJmjsP.js → DeleteItemModal-BmV1aQyZ.js} +4 -4
- package/dist/{DeleteItemModal-B2nJmjsP.js.map → DeleteItemModal-BmV1aQyZ.js.map} +1 -1
- package/dist/{DisclaimerModal-D5FO34u9.js → DisclaimerModal-CVTFfN0_.js} +3 -3
- package/dist/{DisclaimerModal-D5FO34u9.js.map → DisclaimerModal-CVTFfN0_.js.map} +1 -1
- package/dist/{DownloadDocumentWithErrorsModal-tEr3bbtN.js → DownloadDocumentWithErrorsModal-CXeFUtaz.js} +3 -3
- package/dist/{DownloadDocumentWithErrorsModal-tEr3bbtN.js.map → DownloadDocumentWithErrorsModal-CXeFUtaz.js.map} +1 -1
- package/dist/{DriveAuthRequiredModal-BA2vS3oF.js → DriveAuthRequiredModal-DDlfeXD_.js} +3 -3
- package/dist/{DriveAuthRequiredModal-BA2vS3oF.js.map → DriveAuthRequiredModal-DDlfeXD_.js.map} +1 -1
- package/dist/{DriveSettingsModal-kR3hQnh4.js → DriveSettingsModal-CsNFEJ9E.js} +4 -4
- package/dist/DriveSettingsModal-CsNFEJ9E.js.map +1 -0
- package/dist/{InspectorModal-YtFXHkxp.js → InspectorModal-wChBJ6R5.js} +35 -84
- package/dist/InspectorModal-wChBJ6R5.js.map +1 -0
- package/dist/{MissingPackageModal-BQcCQbOn.js → MissingPackageModal-Bn036mWQ.js} +4 -4
- package/dist/{MissingPackageModal-BQcCQbOn.js.map → MissingPackageModal-Bn036mWQ.js.map} +1 -1
- package/dist/{SettingsModal-Cs-Wu3Rm.js → SettingsModal-1i3Dr5eT.js} +9 -9
- package/dist/SettingsModal-1i3Dr5eT.js.map +1 -0
- package/dist/{UpgradeDriveModal-BZGSE9_r.js → UpgradeDriveModal-C7lV4rAX.js} +3 -3
- package/dist/{UpgradeDriveModal-BZGSE9_r.js.map → UpgradeDriveModal-C7lV4rAX.js.map} +1 -1
- package/dist/{app-loader-CJrQEUby.js → app-loader-C5IWlQ7x.js} +258 -193
- package/dist/app-loader-C5IWlQ7x.js.map +1 -0
- package/dist/app-loader-DYpRh5ax.js +4 -0
- package/dist/{build-info-DtsaVWhi.js → build-info-zGvEjLMy.js} +5 -8
- package/dist/{build-info-DtsaVWhi.js.map → build-info-zGvEjLMy.js.map} +1 -1
- package/dist/components-CiPNtuf_.js +5 -0
- package/dist/{connect.config-p8UTNojR.js → connect.config-BDYNejx3.js} +3 -3
- package/dist/{connect.config-p8UTNojR.js.map → connect.config-BDYNejx3.js.map} +1 -1
- package/dist/{load-HWRrVQ7W.js → load-Bt4B0U-v.js} +11 -11
- package/dist/{load-HWRrVQ7W.js.map → load-Bt4B0U-v.js.map} +1 -1
- package/dist/main.js +1 -1
- package/dist/{package-CSEQB3Fe.js → package-CNJ1Q-58.js} +4 -5
- package/dist/package-CNJ1Q-58.js.map +1 -0
- package/dist/{pglite-major-B39aOEiE.js → pglite-runtime-CHa5UyCw.js} +47 -8
- package/dist/pglite-runtime-CHa5UyCw.js.map +1 -0
- package/dist/{pglite-seed-OvaK2kRv.js → pglite-seed-CvnZdEbx.js} +4 -4
- package/dist/{pglite-seed-OvaK2kRv.js.map → pglite-seed-CvnZdEbx.js.map} +1 -1
- package/dist/{reactor-CGjsDjJC.js → reactor-DWY9_ifj.js} +17 -229
- package/dist/reactor-DWY9_ifj.js.map +1 -0
- package/dist/{registerServiceWorker-BGIXpgGV.js → registerServiceWorker-Dc4QY0Sd.js} +4 -4
- package/dist/{registerServiceWorker-BGIXpgGV.js.map → registerServiceWorker-Dc4QY0Sd.js.map} +1 -1
- package/dist/{reload-connect-toast-D1Iqw9E_.js → reload-connect-toast-DIFQ9FCX.js} +3 -3
- package/dist/{reload-connect-toast-D1Iqw9E_.js.map → reload-connect-toast-DIFQ9FCX.js.map} +1 -1
- package/dist/start-connect.js +1 -1
- package/dist/{toast-4t-VimvD.js → toast-BEy42aYx.js} +3 -3
- package/dist/{toast-4t-VimvD.js.map → toast-BEy42aYx.js.map} +1 -1
- package/dist/{useRegistryPackages-BaYtekjQ.js → useRegistryPackages-B-gFECmd.js} +3 -3
- package/dist/{useRegistryPackages-BaYtekjQ.js.map → useRegistryPackages-B-gFECmd.js.map} +1 -1
- package/package.json +10 -11
- package/dist/AddDriveModal-D-nbV40j.js.map +0 -1
- package/dist/DriveSettingsModal-kR3hQnh4.js.map +0 -1
- package/dist/InspectorModal-YtFXHkxp.js.map +0 -1
- package/dist/SettingsModal-Cs-Wu3Rm.js.map +0 -1
- package/dist/app-loader-CJrQEUby.js.map +0 -1
- package/dist/app-loader-Da5NyqEp.js +0 -4
- package/dist/components-CYms4mPU.js +0 -5
- package/dist/connection-state-B7b2E8-L.js +0 -123
- package/dist/connection-state-B7b2E8-L.js.map +0 -1
- package/dist/package-CSEQB3Fe.js.map +0 -1
- package/dist/pglite-major-B39aOEiE.js.map +0 -1
- package/dist/pglite-migrate-core-Boxqqx-c.js +0 -143
- package/dist/pglite-migrate-core-Boxqqx-c.js.map +0 -1
- package/dist/reactor-CGjsDjJC.js.map +0 -1
- package/dist/reactor.worker.d.ts +0 -1
- package/dist/reactor.worker.js +0 -316
- package/dist/reactor.worker.js.map +0 -1
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
//#region src/utils/pglite-idb.ts
|
|
2
1
|
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5f074628-33d4-5e92-bd4c-25a33fd6c0f2")}catch(e){}}();
|
|
3
|
+
import { t as PH_CONNECT_BASE_PATH } from "./connect.config-BDYNejx3.js";
|
|
4
|
+
import { ROOT_STORAGE_NAMESPACE, getStorageNamespace } from "@powerhousedao/shared/connect";
|
|
5
|
+
import { DEFAULT_RELATIONAL_PROCESSOR_DB_NAME } from "@powerhousedao/shared/processors";
|
|
6
|
+
const STORAGE_NAMESPACE = getStorageNamespace(PH_CONNECT_BASE_PATH);
|
|
7
|
+
const REACTOR_PGLITE_NAME = STORAGE_NAMESPACE;
|
|
8
|
+
const RELATIONAL_PGLITE_NAME = STORAGE_NAMESPACE === ROOT_STORAGE_NAMESPACE ? DEFAULT_RELATIONAL_PROCESSOR_DB_NAME : `${STORAGE_NAMESPACE}-${DEFAULT_RELATIONAL_PROCESSOR_DB_NAME}`;
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/utils/pglite-idb.ts
|
|
4
11
|
const IDB_STORE_NAME = "FILE_DATA";
|
|
12
|
+
const REACTOR_IDB_NAME = `/pglite/${REACTOR_PGLITE_NAME}`;
|
|
13
|
+
const PRIMARY_IDB_NAMES = [REACTOR_IDB_NAME, `/pglite/${RELATIONAL_PGLITE_NAME}`];
|
|
5
14
|
function idbError(req, context) {
|
|
6
15
|
const cause = req.error ?? /* @__PURE__ */ new Error("unknown IDB error");
|
|
7
16
|
return new Error(`${context}: ${cause.message}`, { cause });
|
|
@@ -53,13 +62,43 @@ async function readPgVersionFile(idbName) {
|
|
|
53
62
|
}
|
|
54
63
|
}
|
|
55
64
|
const SUPPORTED_PG_MAJORS = [16, 17];
|
|
65
|
+
let cachedReactorMajor;
|
|
66
|
+
let inflight;
|
|
67
|
+
const majorListeners = /* @__PURE__ */ new Set();
|
|
68
|
+
function notifyMajorChanged() {
|
|
69
|
+
for (const l of majorListeners) l();
|
|
70
|
+
}
|
|
71
|
+
function subscribeReactorPgMajor(cb) {
|
|
72
|
+
majorListeners.add(cb);
|
|
73
|
+
return () => {
|
|
74
|
+
majorListeners.delete(cb);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
56
77
|
function coerceMajor(value) {
|
|
57
78
|
if (value === null) return null;
|
|
58
79
|
return SUPPORTED_PG_MAJORS.includes(value) ? value : null;
|
|
59
80
|
}
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
|
|
81
|
+
async function detectReactorPgMajor() {
|
|
82
|
+
if (cachedReactorMajor !== void 0) return cachedReactorMajor;
|
|
83
|
+
if (inflight) return inflight;
|
|
84
|
+
inflight = (async () => {
|
|
85
|
+
const major = coerceMajor(await readPgVersionFile(REACTOR_IDB_NAME));
|
|
86
|
+
cachedReactorMajor = major;
|
|
87
|
+
notifyMajorChanged();
|
|
88
|
+
return major;
|
|
89
|
+
})();
|
|
90
|
+
try {
|
|
91
|
+
return await inflight;
|
|
92
|
+
} finally {
|
|
93
|
+
inflight = void 0;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function getCachedReactorPgMajor() {
|
|
97
|
+
return cachedReactorMajor;
|
|
98
|
+
}
|
|
99
|
+
function invalidateReactorPgMajorCache() {
|
|
100
|
+
cachedReactorMajor = void 0;
|
|
101
|
+
notifyMajorChanged();
|
|
63
102
|
}
|
|
64
103
|
/**
|
|
65
104
|
* Pick the PGlite major to use for *new* reactor clients: fall back to the
|
|
@@ -92,7 +131,7 @@ async function loadPgDump(major) {
|
|
|
92
131
|
throw new Error(`Unsupported PGlite major: ${String(major)}`);
|
|
93
132
|
}
|
|
94
133
|
//#endregion
|
|
95
|
-
export {
|
|
134
|
+
export { loadPgDump as a, IDB_STORE_NAME as c, idbError as d, openIdb as f, loadPGliteModule as i, PRIMARY_IDB_NAMES as l, REACTOR_PGLITE_NAME as m, getCachedReactorPgMajor as n, resolvePgMajorForRuntime as o, readPgVersionFile as p, invalidateReactorPgMajorCache as r, subscribeReactorPgMajor as s, detectReactorPgMajor as t, createFileDataStore as u };
|
|
96
135
|
|
|
97
|
-
//# sourceMappingURL=pglite-
|
|
98
|
-
//# debugId=
|
|
136
|
+
//# sourceMappingURL=pglite-runtime-CHa5UyCw.js.map
|
|
137
|
+
//# debugId=5f074628-33d4-5e92-bd4c-25a33fd6c0f2
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pglite-runtime-CHa5UyCw.js","sources":["../src/utils/storage-namespace.ts","../src/utils/pglite-idb.ts","../src/utils/pglite-runtime.ts"],"sourcesContent":["import { DEFAULT_RELATIONAL_PROCESSOR_DB_NAME } from \"@powerhousedao/shared/processors\";\nimport {\n getStorageNamespace,\n ROOT_STORAGE_NAMESPACE,\n} from \"@powerhousedao/shared/connect\";\nimport { PH_CONNECT_BASE_PATH } from \"../connect.config.js\";\n\n// Single owner of the origin-scoped storage namespace. Reuses the same\n// resolved base path connect.config.ts feeds the router so every store agrees.\nconst basePath = PH_CONNECT_BASE_PATH;\n\n// \"reactor\" at the root, \"reactor--<slug>\" under a path prefix.\nexport const STORAGE_NAMESPACE = getStorageNamespace(basePath);\n\n// PGlite data-dir name for the reactor store, fed to `idb://`.\nexport const REACTOR_PGLITE_NAME = STORAGE_NAMESPACE;\n\n// IdbFs name for the relational-processor worker store.\nexport const RELATIONAL_PGLITE_NAME =\n STORAGE_NAMESPACE === ROOT_STORAGE_NAMESPACE\n ? DEFAULT_RELATIONAL_PROCESSOR_DB_NAME\n : `${STORAGE_NAMESPACE}-${DEFAULT_RELATIONAL_PROCESSOR_DB_NAME}`;\n","import {\n REACTOR_PGLITE_NAME,\n RELATIONAL_PGLITE_NAME,\n} from \"./storage-namespace.js\";\n\nexport const IDB_STORE_NAME = \"FILE_DATA\";\nexport const IDB_DB_VERSION = 21;\n\nexport const REACTOR_IDB_NAME = `/pglite/${REACTOR_PGLITE_NAME}`;\nexport const RELATIONAL_IDB_NAME = `/pglite/${RELATIONAL_PGLITE_NAME}`;\n\nexport const PRIMARY_IDB_NAMES = [\n REACTOR_IDB_NAME,\n RELATIONAL_IDB_NAME,\n] as const;\n\ntype FileDataValue = {\n contents: Uint8Array | number[];\n mode: number;\n timestamp: Date | number;\n};\n\nexport function idbError(\n req: IDBRequest | IDBTransaction,\n context: string,\n): Error {\n const cause = req.error ?? new Error(\"unknown IDB error\");\n return new Error(`${context}: ${cause.message}`, { cause });\n}\n\nexport function indexedDbExists(name: string): Promise<boolean> {\n if (typeof indexedDB.databases === \"function\") {\n return indexedDB\n .databases()\n .then((dbs) => dbs.some((d) => d.name === name))\n .catch(() => true);\n }\n return Promise.resolve(true);\n}\n\nexport function openIdb(\n name: string,\n version: number,\n upgrade?: (db: IDBDatabase) => void,\n): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n const req = indexedDB.open(name, version);\n req.onerror = () => reject(idbError(req, `IDB open failed for ${name}`));\n req.onblocked = () => reject(new Error(`IDB open blocked for ${name}`));\n req.onupgradeneeded = () => upgrade?.(req.result);\n req.onsuccess = () => resolve(req.result);\n });\n}\n\nexport function createFileDataStore(db: IDBDatabase): void {\n if (!db.objectStoreNames.contains(IDB_STORE_NAME)) {\n const store = db.createObjectStore(IDB_STORE_NAME);\n store.createIndex(\"timestamp\", \"timestamp\", { unique: false });\n }\n}\n\nexport async function readPgVersionFile(\n idbName: string,\n): Promise<number | null> {\n if (!(await indexedDbExists(idbName))) return null;\n let db: IDBDatabase;\n try {\n db = await openIdb(idbName, IDB_DB_VERSION, createFileDataStore);\n } catch {\n return null;\n }\n try {\n if (!db.objectStoreNames.contains(IDB_STORE_NAME)) return null;\n const tx = db.transaction(IDB_STORE_NAME, \"readonly\");\n const store = tx.objectStore(IDB_STORE_NAME);\n const value = await new Promise<FileDataValue | null>((resolve, reject) => {\n const req = store.openCursor();\n req.onerror = () =>\n reject(idbError(req, `FILE_DATA cursor failed for ${idbName}`));\n req.onsuccess = () => {\n const cursor = req.result;\n if (!cursor) return resolve(null);\n const key = typeof cursor.key === \"string\" ? cursor.key : \"\";\n if (key.endsWith(\"/PG_VERSION\")) {\n resolve(cursor.value as FileDataValue);\n } else {\n cursor.continue();\n }\n };\n });\n if (!value) return null;\n const bytes =\n value.contents instanceof Uint8Array\n ? value.contents\n : new Uint8Array(value.contents);\n const text = new TextDecoder().decode(bytes).trim();\n const major = parseInt(text, 10);\n return Number.isFinite(major) ? major : null;\n } finally {\n db.close();\n }\n}\n","import type * as CurrentPGliteModuleNs from \"@electric-sql/pglite\";\nimport {\n readPgVersionFile,\n REACTOR_IDB_NAME,\n RELATIONAL_IDB_NAME,\n} from \"./pglite-idb.js\";\n\nexport const CURRENT_PG_MAJOR = 17;\nexport const SUPPORTED_PG_MAJORS = [16, 17] as const;\nexport type SupportedPgMajor = (typeof SUPPORTED_PG_MAJORS)[number];\n\ntype DetectedMajor = SupportedPgMajor | null;\n\ntype CurrentPGliteModule = typeof CurrentPGliteModuleNs;\n\nlet cachedReactorMajor: DetectedMajor | undefined;\nlet inflight: Promise<DetectedMajor> | undefined;\nconst majorListeners = new Set<() => void>();\n\nfunction notifyMajorChanged() {\n for (const l of majorListeners) l();\n}\n\nexport function subscribeReactorPgMajor(cb: () => void): () => void {\n majorListeners.add(cb);\n return () => {\n majorListeners.delete(cb);\n };\n}\n\nfunction coerceMajor(value: number | null): DetectedMajor {\n if (value === null) return null;\n return (SUPPORTED_PG_MAJORS as readonly number[]).includes(value)\n ? (value as SupportedPgMajor)\n : null;\n}\n\nexport async function detectReactorPgMajor(): Promise<DetectedMajor> {\n if (cachedReactorMajor !== undefined) return cachedReactorMajor;\n if (inflight) return inflight;\n\n inflight = (async () => {\n const major = coerceMajor(await readPgVersionFile(REACTOR_IDB_NAME));\n cachedReactorMajor = major;\n notifyMajorChanged();\n return major;\n })();\n try {\n return await inflight;\n } finally {\n inflight = undefined;\n }\n}\n\nexport function getCachedReactorPgMajor(): DetectedMajor | undefined {\n return cachedReactorMajor;\n}\n\nexport function invalidateReactorPgMajorCache(): void {\n cachedReactorMajor = undefined;\n notifyMajorChanged();\n}\n\nexport async function detectRelationalPgMajor(): Promise<DetectedMajor> {\n return coerceMajor(await readPgVersionFile(RELATIONAL_IDB_NAME));\n}\n\n/**\n * Pick the PGlite major to use for *new* reactor clients: fall back to the\n * current version when there is no existing data dir.\n */\nexport function resolvePgMajorForRuntime(\n detected: DetectedMajor,\n): SupportedPgMajor {\n return detected ?? CURRENT_PG_MAJOR;\n}\n\n/**\n * Loads the PGlite module that matches an on-disk data dir major version.\n *\n * The 0.2.x and 0.3.x modules expose the same runtime interface (PGlite class,\n * `idb://` data-dir support, waitReady, exec/query/transaction, close). The\n * return type is pinned to the current package's module so callers can use it\n * against `kysely-pglite-dialect` which peer-depends on both majors.\n */\nexport async function loadPGliteModule(\n major: SupportedPgMajor,\n): Promise<CurrentPGliteModule> {\n if (major === 16) {\n return (await import(\"pglite-legacy-02\")) as unknown as CurrentPGliteModule;\n }\n if (major === 17) return import(\"@electric-sql/pglite\");\n throw new Error(`Unsupported PGlite major: ${String(major)}`);\n}\n\ntype PgDumpFn = (options: {\n pg: unknown;\n}) => Promise<{ text(): Promise<string> }>;\n\n/**\n * Loads the pg_dump tool for the given PGlite major. pg_dump's VFS layout is\n * version-specific, so using the wrong major against a live PGlite instance\n * fails with Emscripten ENOENT (errno 44).\n */\nexport async function loadPgDump(major: SupportedPgMajor): Promise<PgDumpFn> {\n if (major === 16) {\n const mod = (await import(\"pglite-tools-legacy-02/pg_dump\")) as {\n pgDump: PgDumpFn;\n };\n return mod.pgDump;\n }\n if (major === 17) {\n const mod = (await import(\"@electric-sql/pglite-tools/pg_dump\")) as {\n pgDump: PgDumpFn;\n };\n return mod.pgDump;\n }\n throw new Error(`Unsupported PGlite major: ${String(major)}`);\n}\n"],"names":[],"mappings":"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","debug_id":"5f074628-33d4-5e92-bd4c-25a33fd6c0f2"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import {
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b70e11d7-97cf-5865-85f3-386b400d5f24")}catch(e){}}();
|
|
3
|
+
import { m as REACTOR_PGLITE_NAME, r as invalidateReactorPgMajorCache } from "./pglite-runtime-CHa5UyCw.js";
|
|
4
4
|
//#region src/utils/pglite-seed.ts
|
|
5
5
|
const PENDING_PG_SEED_KEY = "ph:pending-pg-seed";
|
|
6
6
|
/**
|
|
@@ -45,5 +45,5 @@ async function seedPendingPgVersion() {
|
|
|
45
45
|
//#endregion
|
|
46
46
|
export { seedPendingPgVersion as n, PENDING_PG_SEED_KEY as t };
|
|
47
47
|
|
|
48
|
-
//# sourceMappingURL=pglite-seed-
|
|
49
|
-
//# debugId=
|
|
48
|
+
//# sourceMappingURL=pglite-seed-CvnZdEbx.js.map
|
|
49
|
+
//# debugId=b70e11d7-97cf-5865-85f3-386b400d5f24
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pglite-seed-
|
|
1
|
+
{"version":3,"file":"pglite-seed-CvnZdEbx.js","sources":["../src/utils/pglite-seed.ts"],"sourcesContent":["import { invalidateReactorPgMajorCache } from \"./pglite-runtime.js\";\nimport { REACTOR_PGLITE_NAME } from \"./storage-namespace.js\";\n\nexport const PENDING_PG_SEED_KEY = \"ph:pending-pg-seed\";\n\n/**\n * If the Debug Inspector requested a forced PG version reset, this runs\n * before the reactor is created on the subsequent page load: opens a fresh\n * PGlite of the requested major against the reactor data dir, lets `initdb`\n * populate `PG_VERSION`, then closes. The next step of app boot then\n * detects this fresh data dir and picks the matching runtime.\n */\nexport async function seedPendingPgVersion(): Promise<void> {\n const raw = localStorage.getItem(PENDING_PG_SEED_KEY);\n if (!raw) return;\n\n const major = parseInt(raw, 10);\n console.info(`[pglite-seed] Seeding fresh PG${major} data dir...`);\n\n try {\n if (major === 16) {\n const { PGlite } = await import(\"pglite-legacy-02\");\n const pg = new PGlite(`idb://${REACTOR_PGLITE_NAME}`);\n try {\n await pg.waitReady;\n } finally {\n await pg.close();\n }\n } else if (major === 17) {\n const { PGlite } = await import(\"@electric-sql/pglite\");\n const pg = new PGlite(`idb://${REACTOR_PGLITE_NAME}`);\n try {\n await pg.waitReady;\n } finally {\n await pg.close();\n }\n } else {\n console.warn(`[pglite-seed] Unsupported version ${raw}, skipping`);\n return;\n }\n console.info(`[pglite-seed] Seeded PG${major} data dir.`);\n } finally {\n localStorage.removeItem(PENDING_PG_SEED_KEY);\n invalidateReactorPgMajorCache();\n }\n}\n"],"names":[],"mappings":";;;;AAGA,MAAa,sBAAsB;;;;;;;;AASnC,eAAsB,uBAAsC;CAC1D,MAAM,MAAM,aAAa,QAAQ,oBAAoB;AACrD,KAAI,CAAC,IAAK;CAEV,MAAM,QAAQ,SAAS,KAAK,GAAG;AAC/B,SAAQ,KAAK,iCAAiC,MAAM,cAAc;AAElE,KAAI;AACF,MAAI,UAAU,IAAI;GAChB,MAAM,EAAE,WAAW,MAAM,OAAO;GAChC,MAAM,KAAK,IAAI,OAAO,SAAS,sBAAsB;AACrD,OAAI;AACF,UAAM,GAAG;aACD;AACR,UAAM,GAAG,OAAO;;aAET,UAAU,IAAI;GACvB,MAAM,EAAE,WAAW,MAAM,OAAO;GAChC,MAAM,KAAK,IAAI,OAAO,SAAS,sBAAsB;AACrD,OAAI;AACF,UAAM,GAAG;aACD;AACR,UAAM,GAAG,OAAO;;SAEb;AACL,WAAQ,KAAK,qCAAqC,IAAI,YAAY;AAClE;;AAEF,UAAQ,KAAK,0BAA0B,MAAM,YAAY;WACjD;AACR,eAAa,WAAW,oBAAoB;AAC5C,iCAA+B","debug_id":"b70e11d7-97cf-5865-85f3-386b400d5f24"}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e4ac466f-3b1a-588d-9c21-2041c2992b7e")}catch(e){}}();
|
|
3
3
|
import { n as getRuntimeConfig } from "./runtime-config-DL3QjcfM.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { n as
|
|
7
|
-
import { a as detectReactorPgMajor, f as REACTOR_INSTANCE_NAMESPACE, m as RELATIONAL_PGLITE_NAME, n as setWorkerConnectionStatus, p as REACTOR_PGLITE_NAME } from "./connection-state-B7b2E8-L.js";
|
|
8
|
-
import { n as toast } from "./toast-4t-VimvD.js";
|
|
4
|
+
import { n as buildPHGlobalConfig, o as phGlobalConfig } from "./connect.config-BDYNejx3.js";
|
|
5
|
+
import { i as loadPGliteModule, m as REACTOR_PGLITE_NAME, o as resolvePgMajorForRuntime, t as detectReactorPgMajor } from "./pglite-runtime-CHa5UyCw.js";
|
|
6
|
+
import { n as toast } from "./toast-BEy42aYx.js";
|
|
9
7
|
import { createRelationalDb } from "@powerhousedao/shared/processors";
|
|
10
|
-
import {
|
|
11
|
-
import { MessageRouter, RPC_PROTOCOL_VERSION, SyncManagerProxy, connectReactorClient, createInspectorProxy, createPortTransport, createReactorEventBusProxy, createRelationalPgliteProxy, createWorkerAdminClient, postReactorIdentity } from "@powerhousedao/reactor-browser/rpc";
|
|
12
|
-
import { Kysely } from "kysely";
|
|
13
|
-
import { PGliteDialect } from "kysely-pglite-dialect";
|
|
14
|
-
import { BrowserLocalStorage, ChannelScheme as ChannelScheme$1, DRIVE_DOCUMENT_TYPES, DocumentCache, DocumentChangeType, ReactorBuilder as ReactorBuilder$1, ReactorClientBuilder as ReactorClientBuilder$1, RegistryClient, addPHEventHandlers, addRemoteDrive, createAnalyticsStore, extractDriveSlugFromPath, extractNodeSlugFromPath, getDrives, isDriveAuthError, login, refreshReactorDataClient, setAttachmentService, setDefaultPHGlobalConfig, setDocumentCache, setDriveMetadata, setDrives, setFeatures, setPGliteDB, setPHToast, setPackageDiscoveryService, setReactorClient, setReactorClientModule, setRenown, setSelectedDrive, setSelectedNode, setVetraPackageManager, waitForDocumentReady } from "@powerhousedao/reactor-browser";
|
|
8
|
+
import { BrowserLocalStorage, ChannelScheme, DRIVE_DOCUMENT_TYPES, DocumentCache, DocumentChangeType, ReactorBuilder, ReactorClientBuilder, RegistryClient, addPHEventHandlers, addRemoteDrive, createAnalyticsStore, extractDriveSlugFromPath, extractNodeSlugFromPath, getDrives, isDriveAuthError, login, refreshReactorDataClient, setAttachmentService, setDefaultPHGlobalConfig, setDocumentCache, setDriveMetadata, setDrives, setFeatures, setPHToast, setPackageDiscoveryService, setReactorClient, setReactorClientModule, setRenown, setSelectedDrive, setSelectedNode, setVetraPackageManager, waitForDocumentReady } from "@powerhousedao/reactor-browser";
|
|
15
9
|
import { ConsoleLogger, logger, setLogLevel as setLogLevel$1 } from "document-model";
|
|
16
10
|
import { BrowserKeyStorage, RenownBuilder, RenownCryptoBuilder, createSignatureVerifier } from "@renown/sdk";
|
|
11
|
+
import { Kysely } from "kysely";
|
|
12
|
+
import { PGliteDialect } from "kysely-pglite-dialect";
|
|
17
13
|
import { createAttachmentClient, createRemoteAttachmentService } from "@powerhousedao/reactor-attachments/client";
|
|
18
14
|
import { OpenFeature } from "@openfeature/web-sdk";
|
|
19
15
|
import * as common from "@powerhousedao/powerhouse-vetra-packages";
|
|
@@ -67,16 +63,11 @@ async function createBrowserReactor(documentModelModules, upgradeManifests, reno
|
|
|
67
63
|
};
|
|
68
64
|
const pg = await getSharedPGlite();
|
|
69
65
|
const logger = new ConsoleLogger(["reactor-client"]);
|
|
70
|
-
const builder = new ReactorClientBuilder
|
|
66
|
+
const builder = new ReactorClientBuilder().withLogger(logger).withSigner(signerConfig).withReactorBuilder(new ReactorBuilder().withDocumentModels(documentModelModules).withUpgradeManifests(upgradeManifests).withChannelScheme(ChannelScheme.CONNECT).withJwtHandler(jwtHandler).withKysely(new Kysely({ dialect: new PGliteDialect(pg) })));
|
|
71
67
|
if (documentModelLoader) builder.withDocumentModelLoader(documentModelLoader);
|
|
72
|
-
const module = await builder.buildModule();
|
|
73
68
|
return {
|
|
74
|
-
...
|
|
75
|
-
|
|
76
|
-
reactorModule: module.reactorModule ? {
|
|
77
|
-
...module.reactorModule,
|
|
78
|
-
pg
|
|
79
|
-
} : void 0
|
|
69
|
+
...await builder.buildModule(),
|
|
70
|
+
pg
|
|
80
71
|
};
|
|
81
72
|
}
|
|
82
73
|
function getDefaultDrives(runtimeConfig) {
|
|
@@ -812,166 +803,6 @@ var BrowserPackageManager = class {
|
|
|
812
803
|
}
|
|
813
804
|
};
|
|
814
805
|
//#endregion
|
|
815
|
-
//#region src/reactor-worker-name.ts
|
|
816
|
-
const GEN_KEY_PREFIX = "ph-reactor-gen:";
|
|
817
|
-
function reactorWorkerName(namespace) {
|
|
818
|
-
const gen = readWorkerGen(namespace);
|
|
819
|
-
return gen ? `ph-reactor:${namespace}#${gen}` : `ph-reactor:${namespace}`;
|
|
820
|
-
}
|
|
821
|
-
function readWorkerGen(namespace) {
|
|
822
|
-
try {
|
|
823
|
-
return localStorage.getItem(GEN_KEY_PREFIX + namespace);
|
|
824
|
-
} catch {
|
|
825
|
-
return null;
|
|
826
|
-
}
|
|
827
|
-
}
|
|
828
|
-
function bumpWorkerGen(namespace, gen) {
|
|
829
|
-
try {
|
|
830
|
-
localStorage.setItem(GEN_KEY_PREFIX + namespace, gen);
|
|
831
|
-
} catch {}
|
|
832
|
-
}
|
|
833
|
-
//#endregion
|
|
834
|
-
//#region src/reactor-worker-client.ts
|
|
835
|
-
const PING_INTERVAL_MS = 2e3;
|
|
836
|
-
const PING_DEADLINE_MS = 3e3;
|
|
837
|
-
const MAX_MISSED_PINGS = 2;
|
|
838
|
-
function toReactorIdentity(user) {
|
|
839
|
-
if (!user) return null;
|
|
840
|
-
return {
|
|
841
|
-
address: user.address,
|
|
842
|
-
chainId: user.chainId,
|
|
843
|
-
networkId: user.networkId
|
|
844
|
-
};
|
|
845
|
-
}
|
|
846
|
-
function createWorkerReactorClientModule(args) {
|
|
847
|
-
const workerUrl = new URL("./reactor.worker.js", import.meta.url);
|
|
848
|
-
console.info(`[reactor-worker] constructing SharedWorker ${reactorWorkerName(args.namespace)} from ${workerUrl.href}`);
|
|
849
|
-
const worker = new SharedWorker(workerUrl, {
|
|
850
|
-
name: reactorWorkerName(args.namespace),
|
|
851
|
-
type: "module"
|
|
852
|
-
});
|
|
853
|
-
worker.addEventListener("error", (event) => {
|
|
854
|
-
console.error(`[reactor-worker] SharedWorker failed to load from ${workerUrl.href}`, event.message || event);
|
|
855
|
-
});
|
|
856
|
-
worker.port.onmessageerror = (event) => {
|
|
857
|
-
console.error("[reactor-worker] port message could not be deserialized", event);
|
|
858
|
-
};
|
|
859
|
-
const transport = createPortTransport(worker.port);
|
|
860
|
-
const router = new MessageRouter();
|
|
861
|
-
router.attach(transport);
|
|
862
|
-
const documentModelRegistry = new DocumentModelRegistry();
|
|
863
|
-
documentModelRegistry.registerModules(...args.documentModelModules);
|
|
864
|
-
documentModelRegistry.registerUpgradeManifests(...args.upgradeManifests);
|
|
865
|
-
const gitSha = getGitSha();
|
|
866
|
-
const clientProxy = connectReactorClient(router, {
|
|
867
|
-
version: {
|
|
868
|
-
appBuildId: gitSha !== "unknown" ? gitSha : getVersion(),
|
|
869
|
-
rpcProtocolVersion: RPC_PROTOCOL_VERSION,
|
|
870
|
-
models: args.documentModelModules.map((m) => ({
|
|
871
|
-
id: m.documentModel.global.id,
|
|
872
|
-
version: m.version ?? 1
|
|
873
|
-
}))
|
|
874
|
-
},
|
|
875
|
-
construct: {
|
|
876
|
-
namespace: args.namespace,
|
|
877
|
-
relationalNamespace: args.relationalNamespace,
|
|
878
|
-
cdnUrl: args.cdnUrl,
|
|
879
|
-
packageSpecs: args.packageSpecs
|
|
880
|
-
},
|
|
881
|
-
packages: args.packageSpecs
|
|
882
|
-
}, args.onReload, documentModelRegistry);
|
|
883
|
-
const busProxy = createReactorEventBusProxy(router);
|
|
884
|
-
const syncManagerProxy = new SyncManagerProxy(router, busProxy);
|
|
885
|
-
const modelResolver = new DocumentModelResolver(documentModelRegistry, args.documentModelLoader);
|
|
886
|
-
busProxy.subscribe(ReactorEventTypes.MODEL_LOADED, (_type, event) => {
|
|
887
|
-
const { documentType } = event;
|
|
888
|
-
modelResolver.ensureModelLoaded(documentType).catch((error) => {
|
|
889
|
-
console.error(`Failed to load model "${documentType}" into tab registry`, error);
|
|
890
|
-
});
|
|
891
|
-
});
|
|
892
|
-
setPGliteDB({
|
|
893
|
-
db: createRelationalPgliteProxy(router),
|
|
894
|
-
isLoading: false,
|
|
895
|
-
error: null
|
|
896
|
-
});
|
|
897
|
-
postReactorIdentity(router, toReactorIdentity(args.renown.user));
|
|
898
|
-
args.renown.on("user", (user) => postReactorIdentity(router, toReactorIdentity(user)));
|
|
899
|
-
const reactorClientModule = {
|
|
900
|
-
kind: "worker",
|
|
901
|
-
client: clientProxy,
|
|
902
|
-
adminClient: createWorkerAdminClient(router),
|
|
903
|
-
inspector: createInspectorProxy(router),
|
|
904
|
-
reactorModule: {
|
|
905
|
-
documentModelRegistry,
|
|
906
|
-
syncModule: { syncManager: syncManagerProxy },
|
|
907
|
-
eventBus: busProxy
|
|
908
|
-
}
|
|
909
|
-
};
|
|
910
|
-
let pingCounter = 0;
|
|
911
|
-
let missedPings = 0;
|
|
912
|
-
const pingDeadlines = /* @__PURE__ */ new Map();
|
|
913
|
-
router.on("pong", (msg) => {
|
|
914
|
-
const timer = pingDeadlines.get(msg.id);
|
|
915
|
-
if (timer === void 0) return;
|
|
916
|
-
clearTimeout(timer);
|
|
917
|
-
pingDeadlines.delete(msg.id);
|
|
918
|
-
missedPings = 0;
|
|
919
|
-
setWorkerConnectionStatus("connected");
|
|
920
|
-
});
|
|
921
|
-
const pingInterval = setInterval(() => {
|
|
922
|
-
const id = `ping${++pingCounter}`;
|
|
923
|
-
const timer = setTimeout(() => {
|
|
924
|
-
pingDeadlines.delete(id);
|
|
925
|
-
missedPings += 1;
|
|
926
|
-
if (missedPings >= MAX_MISSED_PINGS) setWorkerConnectionStatus("lost");
|
|
927
|
-
}, PING_DEADLINE_MS);
|
|
928
|
-
pingDeadlines.set(id, timer);
|
|
929
|
-
router.post({
|
|
930
|
-
k: "ping",
|
|
931
|
-
id
|
|
932
|
-
});
|
|
933
|
-
}, PING_INTERVAL_MS);
|
|
934
|
-
const dispose = () => {
|
|
935
|
-
clearInterval(pingInterval);
|
|
936
|
-
for (const timer of pingDeadlines.values()) clearTimeout(timer);
|
|
937
|
-
pingDeadlines.clear();
|
|
938
|
-
};
|
|
939
|
-
return {
|
|
940
|
-
reactorClientModule,
|
|
941
|
-
syncManagerProxy,
|
|
942
|
-
dispose
|
|
943
|
-
};
|
|
944
|
-
}
|
|
945
|
-
//#endregion
|
|
946
|
-
//#region src/utils/reactor-worker-flag.ts
|
|
947
|
-
const REACTOR_WORKER_QUERY_KEY = "reactorWorker";
|
|
948
|
-
const REACTOR_WORKER_STORAGE_KEY = "ph:reactorWorker";
|
|
949
|
-
function resolveReactorWorkerEnabled(input) {
|
|
950
|
-
const fromQuery = parseFlag(input.queryParam);
|
|
951
|
-
if (fromQuery !== void 0) return fromQuery;
|
|
952
|
-
const fromStore = parseFlag(input.storedValue);
|
|
953
|
-
if (fromStore !== void 0) return fromStore;
|
|
954
|
-
return input.configFlag;
|
|
955
|
-
}
|
|
956
|
-
function isReactorWorkerEnabled() {
|
|
957
|
-
const configFlag = getRuntimeConfig().connect.instance?.reactorWorker ?? false;
|
|
958
|
-
if (typeof window === "undefined") return configFlag;
|
|
959
|
-
const queryParam = new URLSearchParams(window.location.search).get(REACTOR_WORKER_QUERY_KEY);
|
|
960
|
-
const enabled = resolveReactorWorkerEnabled({
|
|
961
|
-
configFlag,
|
|
962
|
-
queryParam,
|
|
963
|
-
storedValue: window.localStorage.getItem(REACTOR_WORKER_STORAGE_KEY)
|
|
964
|
-
});
|
|
965
|
-
if (parseFlag(queryParam) !== void 0) window.localStorage.setItem(REACTOR_WORKER_STORAGE_KEY, enabled ? "true" : "false");
|
|
966
|
-
return enabled;
|
|
967
|
-
}
|
|
968
|
-
function parseFlag(value) {
|
|
969
|
-
if (value === null || value === void 0) return;
|
|
970
|
-
const normalized = value.trim().toLowerCase();
|
|
971
|
-
if (normalized === "true" || normalized === "1") return true;
|
|
972
|
-
if (normalized === "false" || normalized === "0") return false;
|
|
973
|
-
}
|
|
974
|
-
//#endregion
|
|
975
806
|
//#region src/store/processor-host-module.ts
|
|
976
807
|
var NullAttachmentService = class {
|
|
977
808
|
reserve() {
|
|
@@ -1079,12 +910,7 @@ function subscribeToPackagesChannel(packageManager) {
|
|
|
1079
910
|
source.addEventListener("error", () => {});
|
|
1080
911
|
}
|
|
1081
912
|
async function clearReactorStorage() {
|
|
1082
|
-
|
|
1083
|
-
if (module?.kind === "worker") {
|
|
1084
|
-
await module.adminClient.clearStorage();
|
|
1085
|
-
return;
|
|
1086
|
-
}
|
|
1087
|
-
if (module?.kind === "browser") await module.reactorModule?.pg?.close();
|
|
913
|
+
await window.ph?.reactorClientModule?.pg?.close();
|
|
1088
914
|
const targets = (await indexedDB.databases()).map((d) => d.name).filter((n) => !!n && !n.startsWith("ph-pglite-backup::") && /pglite|reactor/i.test(n));
|
|
1089
915
|
await Promise.all(targets.map((name) => new Promise((resolve) => {
|
|
1090
916
|
const req = indexedDB.deleteDatabase(name);
|
|
@@ -1125,43 +951,7 @@ async function createReactor(localPackage) {
|
|
|
1125
951
|
storageKey: phGlobalConfig.routerBasename ?? ""
|
|
1126
952
|
}) : new NoRegistryDiscoveryService(packageManager);
|
|
1127
953
|
setPackageDiscoveryService(discoveryService);
|
|
1128
|
-
|
|
1129
|
-
if (isReactorWorkerEnabled()) {
|
|
1130
|
-
const packageSpecs = packageManager.getRegistryPackages().map((p) => p.version ? `${p.name}@${p.version}` : p.name);
|
|
1131
|
-
const registryClient = new RegistryClient(packageManager.cdnUrl ?? "");
|
|
1132
|
-
const workerClient = createWorkerReactorClientModule({
|
|
1133
|
-
namespace: REACTOR_INSTANCE_NAMESPACE,
|
|
1134
|
-
relationalNamespace: RELATIONAL_PGLITE_NAME,
|
|
1135
|
-
cdnUrl: packageManager.cdnUrl ?? "",
|
|
1136
|
-
packageSpecs,
|
|
1137
|
-
documentModelModules,
|
|
1138
|
-
upgradeManifests,
|
|
1139
|
-
documentModelLoader: { async load(documentType) {
|
|
1140
|
-
const names = packageManager.cdnUrl ? await registryClient.getPackagesByDocumentType(documentType) : [];
|
|
1141
|
-
for (const name of names) {
|
|
1142
|
-
const result = await packageManager.addPackage(name);
|
|
1143
|
-
if (result.type === "error") throw new Error(`Failed to install package "${name}" for document model: ${documentType}`, { cause: result.error });
|
|
1144
|
-
}
|
|
1145
|
-
const module = packageManager.packages.flatMap((p) => p.documentModels).find((m) => m.documentModel.global.id === documentType);
|
|
1146
|
-
if (!module) throw new Error(names.length > 0 ? `Installed [${names.join(", ")}] but document model not available: ${documentType}` : `No package found for document model: ${documentType} (cdnUrl: ${packageManager.cdnUrl ?? "none"})`);
|
|
1147
|
-
return module;
|
|
1148
|
-
} },
|
|
1149
|
-
renown,
|
|
1150
|
-
onReload: (reason, workerGen) => {
|
|
1151
|
-
logger.warn("Reactor worker requested reload: @reason", reason);
|
|
1152
|
-
if (workerGen) bumpWorkerGen(REACTOR_INSTANCE_NAMESPACE, workerGen);
|
|
1153
|
-
window.location.reload();
|
|
1154
|
-
}
|
|
1155
|
-
});
|
|
1156
|
-
reactorClientModule = workerClient.reactorClientModule;
|
|
1157
|
-
try {
|
|
1158
|
-
await workerClient.syncManagerProxy.startup();
|
|
1159
|
-
} catch (error) {
|
|
1160
|
-
window.ph.loading = false;
|
|
1161
|
-
logger.error("Reactor worker failed to start: @error", error);
|
|
1162
|
-
throw error;
|
|
1163
|
-
}
|
|
1164
|
-
} else reactorClientModule = await createBrowserReactor(documentModelModules, upgradeManifests, renown, discoveryService);
|
|
954
|
+
const reactorClientModule = await createBrowserReactor(documentModelModules, upgradeManifests, renown, discoveryService);
|
|
1165
955
|
const drives = await getDrives(reactorClientModule.client);
|
|
1166
956
|
await login(getDidFromUrl(), renown);
|
|
1167
957
|
const documentCache = new DocumentCache(reactorClientModule.client);
|
|
@@ -1221,10 +1011,8 @@ async function createReactor(localPackage) {
|
|
|
1221
1011
|
});
|
|
1222
1012
|
await refreshReactorDataClient(reactorClientModule.client);
|
|
1223
1013
|
const packagesWithProcessorFactories = packageManager.packages.filter((pkg) => pkg.processorFactory !== void 0);
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
else if (packagesWithProcessorFactories.length > 0 && reactorModule) {
|
|
1227
|
-
const readModels = reactorModule.readModelCoordinator.readModels;
|
|
1014
|
+
if (packagesWithProcessorFactories.length > 0) {
|
|
1015
|
+
const readModels = reactorClientModule.reactorModule?.readModelCoordinator?.readModels ?? [];
|
|
1228
1016
|
const processorHostModule = await createProcessorHostModule(reactorClientModule.client, readModels, window.ph?.attachmentService);
|
|
1229
1017
|
if (processorHostModule !== void 0) await Promise.all(packagesWithProcessorFactories.map(async (pkg) => {
|
|
1230
1018
|
const { manifest, processorFactory } = pkg;
|
|
@@ -1236,7 +1024,7 @@ async function createReactor(localPackage) {
|
|
|
1236
1024
|
try {
|
|
1237
1025
|
const factory = await processorFactory?.(processorHostModule);
|
|
1238
1026
|
if (!factory) return;
|
|
1239
|
-
await reactorModule
|
|
1027
|
+
await reactorClientModule.reactorModule?.processorManager.registerFactory(id, factory);
|
|
1240
1028
|
} catch (error) {
|
|
1241
1029
|
logger.error(`Error registering processor: @label`, label);
|
|
1242
1030
|
logger.error("@error", error);
|
|
@@ -1256,5 +1044,5 @@ function getDriveUrl() {
|
|
|
1256
1044
|
//#endregion
|
|
1257
1045
|
export { createReactor as n, clearReactorStorage as t };
|
|
1258
1046
|
|
|
1259
|
-
//# sourceMappingURL=reactor-
|
|
1260
|
-
//# debugId=
|
|
1047
|
+
//# sourceMappingURL=reactor-DWY9_ifj.js.map
|
|
1048
|
+
//# debugId=e4ac466f-3b1a-588d-9c21-2041c2992b7e
|