@powerhousedao/connect 6.0.0-dev.240 → 6.0.0-dev.241
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-B9BPORvo.js → AddDriveModal-ZK9-BWMB.js} +4 -1
- package/dist/AddDriveModal-ZK9-BWMB.js.map +1 -0
- package/dist/{ClearStorageModal-K1H6NgT6.js → ClearStorageModal-Bfb3ube7.js} +5 -2
- package/dist/ClearStorageModal-Bfb3ube7.js.map +1 -0
- package/dist/{CookiesPolicyModal-CnVx2R_8.js → CookiesPolicyModal-DiXQV82b.js} +4 -1
- package/dist/CookiesPolicyModal-DiXQV82b.js.map +1 -0
- package/dist/{CreateDocumentModal-TtG7E62x.js → CreateDocumentModal-BhJh4nWt.js} +4 -1
- package/dist/CreateDocumentModal-BhJh4nWt.js.map +1 -0
- package/dist/{DebugSettingsModal-Cm61I2LB.js → DebugSettingsModal-BNQeiQfh.js} +6 -3
- package/dist/DebugSettingsModal-BNQeiQfh.js.map +1 -0
- package/dist/{DeleteDriveModal-Cb43NeNu.js → DeleteDriveModal-DbwMkMWV.js} +4 -1
- package/dist/DeleteDriveModal-DbwMkMWV.js.map +1 -0
- package/dist/{DeleteItemModal-Brq4QKdd.js → DeleteItemModal-9ErYlauT.js} +4 -1
- package/dist/DeleteItemModal-9ErYlauT.js.map +1 -0
- package/dist/{DisclaimerModal-Dk6PpkZU.js → DisclaimerModal-CfDeiBz8.js} +4 -1
- package/dist/DisclaimerModal-CfDeiBz8.js.map +1 -0
- package/dist/{DownloadDocumentWithErrorsModal-B8ZKi2Xy.js → DownloadDocumentWithErrorsModal-KZGWQ4J7.js} +4 -1
- package/dist/DownloadDocumentWithErrorsModal-KZGWQ4J7.js.map +1 -0
- package/dist/{DriveSettingsModal-Bnug5LXo.js → DriveSettingsModal-DEk05PS7.js} +4 -1
- package/dist/DriveSettingsModal-DEk05PS7.js.map +1 -0
- package/dist/{InspectorModal-EDrjiXPs.js → InspectorModal-DV7lUbNo.js} +7 -4
- package/dist/InspectorModal-DV7lUbNo.js.map +1 -0
- package/dist/{MissingPackageModal-BfblPbd8.js → MissingPackageModal-BM4HV-ct.js} +5 -2
- package/dist/MissingPackageModal-BM4HV-ct.js.map +1 -0
- package/dist/{SettingsModal-DOEWGn1K.js → SettingsModal-BaUiNFjH.js} +7 -4
- package/dist/SettingsModal-BaUiNFjH.js.map +1 -0
- package/dist/{UpgradeDriveModal-CBLALaaQ.js → UpgradeDriveModal-BwI5E5k3.js} +4 -1
- package/dist/UpgradeDriveModal-BwI5E5k3.js.map +1 -0
- package/dist/build-info-R_6wley4.js +15 -0
- package/dist/build-info-R_6wley4.js.map +1 -0
- package/dist/connect.config-Cuh0hj_Q.js +4 -1
- package/dist/connect.config-Cuh0hj_Q.js.map +1 -1
- package/dist/{i18n-DLmohU39.js → i18n-4rfcgnb9.js} +4 -1
- package/dist/i18n-4rfcgnb9.js.map +1 -0
- package/dist/{load-BJYAMdHd.js → load-DMmsRD74.js} +8 -5
- package/dist/load-DMmsRD74.js.map +1 -0
- package/dist/main.js +5 -2
- package/dist/main.js.map +1 -1
- package/dist/{package-qZJprZw5.js → package-DljSGkeL.js} +5 -2
- package/dist/package-DljSGkeL.js.map +1 -0
- package/dist/packages.config-CiH8KJVN.js +32 -0
- package/dist/packages.config-CiH8KJVN.js.map +1 -0
- package/dist/{pglite-runtime-C1g-4Jxl.js → pglite-runtime-Btp8ZXVH.js} +4 -1
- package/dist/pglite-runtime-Btp8ZXVH.js.map +1 -0
- package/dist/{pglite-seed-BtXWFpHf.js → pglite-seed-b1mJUaip.js} +5 -2
- package/dist/pglite-seed-b1mJUaip.js.map +1 -0
- package/dist/pglite.worker.js +4 -1
- package/dist/pglite.worker.js.map +1 -1
- package/dist/pglite.worker.legacy.js +4 -1
- package/dist/pglite.worker.legacy.js.map +1 -1
- package/dist/{reactor-Nm3jOev1.js → reactor-DFuRedvV.js} +159 -29
- package/dist/reactor-DFuRedvV.js.map +1 -0
- package/dist/{registerServiceWorker-LI8_JXt3.js → registerServiceWorker-CMRF2LWE.js} +4 -1
- package/dist/registerServiceWorker-CMRF2LWE.js.map +1 -0
- package/dist/{sidebar-DHvt_u7k.js → sidebar-oU7KWQKI.js} +157 -20
- package/dist/sidebar-oU7KWQKI.js.map +1 -0
- package/dist/start-connect.js +5 -2
- package/dist/start-connect.js.map +1 -1
- package/dist/style.css +135 -18
- package/dist/toast-DnODOv28.js +4 -1
- package/dist/toast-DnODOv28.js.map +1 -1
- package/dist/{useRegistryPackages-BOX4NMAb.js → useRegistryPackages-DK8swjWd.js} +10 -6
- package/dist/useRegistryPackages-DK8swjWd.js.map +1 -0
- package/package.json +9 -9
- package/public/ph-packages.json +2 -1
- package/dist/AddDriveModal-B9BPORvo.js.map +0 -1
- package/dist/ClearStorageModal-K1H6NgT6.js.map +0 -1
- package/dist/CookiesPolicyModal-CnVx2R_8.js.map +0 -1
- package/dist/CreateDocumentModal-TtG7E62x.js.map +0 -1
- package/dist/DebugSettingsModal-Cm61I2LB.js.map +0 -1
- package/dist/DeleteDriveModal-Cb43NeNu.js.map +0 -1
- package/dist/DeleteItemModal-Brq4QKdd.js.map +0 -1
- package/dist/DisclaimerModal-Dk6PpkZU.js.map +0 -1
- package/dist/DownloadDocumentWithErrorsModal-B8ZKi2Xy.js.map +0 -1
- package/dist/DriveSettingsModal-Bnug5LXo.js.map +0 -1
- package/dist/InspectorModal-EDrjiXPs.js.map +0 -1
- package/dist/MissingPackageModal-BfblPbd8.js.map +0 -1
- package/dist/SettingsModal-DOEWGn1K.js.map +0 -1
- package/dist/UpgradeDriveModal-CBLALaaQ.js.map +0 -1
- package/dist/build-info-rXPlOFzu.js +0 -12
- package/dist/build-info-rXPlOFzu.js.map +0 -1
- package/dist/i18n-DLmohU39.js.map +0 -1
- package/dist/load-BJYAMdHd.js.map +0 -1
- package/dist/package-qZJprZw5.js.map +0 -1
- package/dist/pglite-runtime-C1g-4Jxl.js.map +0 -1
- package/dist/pglite-seed-BtXWFpHf.js.map +0 -1
- package/dist/reactor-Nm3jOev1.js.map +0 -1
- package/dist/registerServiceWorker-LI8_JXt3.js.map +0 -1
- package/dist/sidebar-DHvt_u7k.js.map +0 -1
- package/dist/useRegistryPackages-BOX4NMAb.js.map +0 -1
|
@@ -1,9 +1,11 @@
|
|
|
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]="f746cb97-cecf-57c6-bc38-2bde9bef78e0")}catch(e){}}();
|
|
1
3
|
import { t as connectConfig } from "./connect.config-Cuh0hj_Q.js";
|
|
2
4
|
import { n as toast } from "./toast-DnODOv28.js";
|
|
3
|
-
import { t as package_default } from "./package-
|
|
4
|
-
import { t as detectReactorPgMajor } from "./pglite-runtime-
|
|
5
|
-
import { n as seedPendingPgVersion } from "./pglite-seed-
|
|
6
|
-
import { n as createReactor } from "./reactor-
|
|
5
|
+
import { t as package_default } from "./package-DljSGkeL.js";
|
|
6
|
+
import { t as detectReactorPgMajor } from "./pglite-runtime-Btp8ZXVH.js";
|
|
7
|
+
import { n as seedPendingPgVersion } from "./pglite-seed-b1mJUaip.js";
|
|
8
|
+
import { n as createReactor } from "./reactor-DFuRedvV.js";
|
|
7
9
|
import { useUser } from "@powerhousedao/reactor-browser";
|
|
8
10
|
import { logger } from "document-model";
|
|
9
11
|
import { createElement, useEffect } from "react";
|
|
@@ -106,4 +108,5 @@ async function loadComponent(localPackage) {
|
|
|
106
108
|
//#endregion
|
|
107
109
|
export { loadComponent };
|
|
108
110
|
|
|
109
|
-
//# sourceMappingURL=load-
|
|
111
|
+
//# sourceMappingURL=load-DMmsRD74.js.map
|
|
112
|
+
//# debugId=f746cb97-cecf-57c6-bc38-2bde9bef78e0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-DMmsRD74.js","sources":["../src/components/reload-connect-toast.tsx","../src/hooks/useCheckLatestVersion.ts","../src/hooks/utils.ts","../src/store/user.ts","../src/components/load.tsx"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\n\nexport const ReloadConnectToast = () => {\n const { t } = useTranslation();\n\n return (\n <div>\n <p className=\"font-medium\">{t(\"notifications.reloadApp\")}</p>\n <button\n onClick={() => location.reload()}\n className=\"underline decoration-solid underline-offset-2\"\n >\n {t(\"common.reloadConnect\")} 🔄\n </button>\n </div>\n );\n};\n","import { connectConfig } from \"@powerhousedao/connect/config\";\nimport { isLatestVersion } from \"@powerhousedao/connect/hooks\";\nimport { toast } from \"@powerhousedao/connect/services\";\nimport { logger } from \"document-model\";\nimport { createElement, useEffect } from \"react\";\nimport { ReloadConnectToast } from \"../components/reload-connect-toast.js\";\n\nexport const useCheckLatestVersion = () => {\n async function checkLatestVersion() {\n const result = await isLatestVersion();\n if (result === null) return;\n // ignore dev/staging versions\n if (result.isLatest || result.currentVersion.includes(\"-\")) {\n return true;\n }\n\n if (\n import.meta.env.MODE === \"development\" ||\n connectConfig.studioMode ||\n !connectConfig.warnOutdatedApp\n ) {\n logger.warn(\n \"Connect is outdated: \\nCurrent: @currentVersion\\nLatest: @latestVersion\",\n result.currentVersion,\n result.latestVersion,\n );\n } else {\n toast(createElement(ReloadConnectToast), {\n type: \"connect-warning\",\n toastId: \"outdated-app\",\n autoClose: false,\n });\n }\n }\n\n useEffect(() => {\n checkLatestVersion().catch(console.error);\n }, []);\n};\n","import { packageJson } from \"../utils/package-json.js\";\n\nexport const isMac = window.navigator.appVersion.includes(\"Mac\");\n\nconst urlBranchMap: Record<string, string> = {\n \"staging/makerdao\": \"deployments/staging/makerdao\",\n \"staging/arbitrum\": \"arb-ltip\",\n \"staging/powerhouse\": \"staging\",\n makerdao: \"deployments/makerdao\",\n arbitrum: \"deployments/arbitrum\",\n arbgrants: \"deployments/arbitrum\",\n localhost: \"develop\",\n};\n\nconst getGithubLinkFromUrl = () => {\n const githubLink = \"https://raw.githubusercontent.com/powerhouse-inc/connect\";\n const url = window.location.href;\n\n const env = Object.keys(urlBranchMap).find((env) => url.includes(env));\n const value = env ? urlBranchMap[env] : undefined;\n if (!value) {\n return undefined;\n } else {\n return `${githubLink}/${value}/package.json`;\n }\n};\n\nconst fetchLatestVersion = async () => {\n const link = getGithubLinkFromUrl();\n if (!link) {\n return undefined;\n }\n const result = await fetch(link);\n const data = (await result.json()) as { version: string };\n const { version } = data;\n return version;\n};\n\nexport const isLatestVersion = async () => {\n const currentVersion = packageJson.version;\n const deployed = await fetchLatestVersion();\n\n if (deployed) {\n return {\n isLatest: deployed === currentVersion,\n currentVersion,\n latestVersion: deployed,\n };\n }\n\n return null;\n};\n","import { useUser } from \"@powerhousedao/reactor-browser\";\nimport type { User as SentryUser } from \"@sentry/react\";\nimport { setUser as setSentryUser } from \"@sentry/react\";\nimport { useEffect } from \"react\";\n\nexport function useSetSentryUser() {\n const user = useUser();\n useEffect(() => {\n let sentryUser: SentryUser | null = null;\n if (user) {\n // saves the user info except the credential\n const { credential, ...rest } = user;\n sentryUser = { id: rest.did, username: rest.ens?.name, ...rest };\n }\n setSentryUser(sentryUser);\n }, [user]);\n}\n","import { useCheckLatestVersion } from \"@powerhousedao/connect/hooks\";\nimport \"@powerhousedao/connect/i18n\";\nimport { createReactor, useSetSentryUser } from \"@powerhousedao/connect/store\";\nimport {\n detectReactorPgMajor,\n seedPendingPgVersion,\n} from \"@powerhousedao/connect/utils\";\nimport type { DocumentModelLib } from \"document-model\";\nimport { type ReactNode } from \"react\";\n\nexport async function loadComponent(localPackage?: DocumentModelLib) {\n await seedPendingPgVersion();\n await detectReactorPgMajor();\n await createReactor(localPackage);\n return {\n default: ({ children }: { children?: ReactNode }) => {\n useSetSentryUser();\n useCheckLatestVersion();\n return children;\n },\n };\n}\n"],"names":["packageJson"],"mappings":";;;;;;;;;;;;;;;AAEA,MAAa,2BAA2B;CACtC,MAAM,EAAE,MAAM,gBAAgB;AAE9B,QACE,qBAAC,OAAD,EAAA,UAAA,CACE,oBAAC,KAAD;EAAG,WAAU;YAAe,EAAE,0BAA0B;EAAK,CAAA,EAC7D,qBAAC,UAAD;EACE,eAAe,SAAS,QAAQ;EAChC,WAAU;YAFZ,CAIG,EAAE,uBAAuB,EAAC,MACpB;IACL,EAAA,CAAA;;;;ACPV,MAAa,8BAA8B;CACzC,eAAe,qBAAqB;EAClC,MAAM,SAAS,MAAM,iBAAiB;AACtC,MAAI,WAAW,KAAM;AAErB,MAAI,OAAO,YAAY,OAAO,eAAe,SAAS,IAAI,CACxD,QAAO;AAGT,MACE,OAAO,KAAK,IAAI,SAAS,iBACzB,cAAc,cACd,CAAC,cAAc,gBAEf,QAAO,KACL,2EACA,OAAO,gBACP,OAAO,cACR;MAED,OAAM,cAAc,mBAAmB,EAAE;GACvC,MAAM;GACN,SAAS;GACT,WAAW;GACZ,CAAC;;AAIN,iBAAgB;AACd,sBAAoB,CAAC,MAAM,QAAQ,MAAM;IACxC,EAAE,CAAC;;ACnCa,OAAO,UAAU,WAAW,SAAS,MAAM;AAEhE,MAAM,eAAuC;CAC3C,oBAAoB;CACpB,oBAAoB;CACpB,sBAAsB;CACtB,UAAU;CACV,UAAU;CACV,WAAW;CACX,WAAW;CACZ;AAED,MAAM,6BAA6B;CACjC,MAAM,aAAa;CACnB,MAAM,MAAM,OAAO,SAAS;CAE5B,MAAM,MAAM,OAAO,KAAK,aAAa,CAAC,MAAM,QAAQ,IAAI,SAAS,IAAI,CAAC;CACtE,MAAM,QAAQ,MAAM,aAAa,OAAO,KAAA;AACxC,KAAI,CAAC,MACH;KAEA,QAAO,GAAG,WAAW,GAAG,MAAM;;AAIlC,MAAM,qBAAqB,YAAY;CACrC,MAAM,OAAO,sBAAsB;AACnC,KAAI,CAAC,KACH;CAIF,MAAM,EAAE,YADM,OADC,MAAM,MAAM,KAAK,EACL,MAAM;AAEjC,QAAO;;AAGT,MAAa,kBAAkB,YAAY;CACzC,MAAM,iBAAiBA,gBAAY;CACnC,MAAM,WAAW,MAAM,oBAAoB;AAE3C,KAAI,SACF,QAAO;EACL,UAAU,aAAa;EACvB;EACA,eAAe;EAChB;AAGH,QAAO;;;;AC7CT,SAAgB,mBAAmB;CACjC,MAAM,OAAO,SAAS;AACtB,iBAAgB;EACd,IAAI,aAAgC;AACpC,MAAI,MAAM;GAER,MAAM,EAAE,YAAY,GAAG,SAAS;AAChC,gBAAa;IAAE,IAAI,KAAK;IAAK,UAAU,KAAK,KAAK;IAAM,GAAG;IAAM;;AAElE,UAAc,WAAW;IACxB,CAAC,KAAK,CAAC;;;;ACLZ,eAAsB,cAAc,cAAiC;AACnE,OAAM,sBAAsB;AAC5B,OAAM,sBAAsB;AAC5B,OAAM,cAAc,aAAa;AACjC,QAAO,EACL,UAAU,EAAE,eAAyC;AACnD,oBAAkB;AAClB,yBAAuB;AACvB,SAAO;IAEV","debug_id":"f746cb97-cecf-57c6-bc38-2bde9bef78e0"}
|
package/dist/main.js
CHANGED
|
@@ -1,4 +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]="2bbd67e3-aeba-5d1b-90e8-4d1ff3d7e576")}catch(e){}}();
|
|
3
|
+
import { t as AppLoader } from "./sidebar-oU7KWQKI.js";
|
|
2
4
|
import { createRoot } from "react-dom/client";
|
|
3
5
|
import { jsx } from "react/jsx-runtime";
|
|
4
6
|
//#region main.tsx
|
|
@@ -6,4 +8,5 @@ if (!window.ph) window.ph = {};
|
|
|
6
8
|
createRoot(document.getElementById("root")).render(/* @__PURE__ */ jsx(AppLoader, {}));
|
|
7
9
|
//#endregion
|
|
8
10
|
|
|
9
|
-
//# sourceMappingURL=main.js.map
|
|
11
|
+
//# sourceMappingURL=main.js.map
|
|
12
|
+
//# debugId=2bbd67e3-aeba-5d1b-90e8-4d1ff3d7e576
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../main.tsx"],"sourcesContent":["import { createRoot } from \"react-dom/client\";\nimport { AppLoader } from \"./src/components/app-loader.js\";\n\nif (!window.ph) {\n window.ph = {};\n}\n\ncreateRoot(document.getElementById(\"root\")!).render(<AppLoader />);\n"],"names":[],"mappings":";;;;;;AAGA,IAAI,CAAC,OAAO,GACV,QAAO,KAAK,EAAE;AAGhB,WAAW,SAAS,eAAe,OAAO,CAAE,CAAC,OAAO,oBAAC,WAAD,EAAa,CAAA,CAAC","debug_id":"2bbd67e3-aeba-5d1b-90e8-4d1ff3d7e576"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
//#region package.json
|
|
2
|
+
|
|
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]="fe975262-b189-5f66-8547-79e8ec14e388")}catch(e){}}();
|
|
2
4
|
var package_default = {
|
|
3
5
|
name: "@powerhousedao/connect",
|
|
4
6
|
productName: "Powerhouse-Connect",
|
|
5
|
-
version: "6.0.0-dev.
|
|
7
|
+
version: "6.0.0-dev.241",
|
|
6
8
|
description: "Powerhouse Connect",
|
|
7
9
|
main: "dist/index.html",
|
|
8
10
|
type: "module",
|
|
@@ -111,4 +113,5 @@ var package_default = {
|
|
|
111
113
|
//#endregion
|
|
112
114
|
export { package_default as t };
|
|
113
115
|
|
|
114
|
-
//# sourceMappingURL=package-
|
|
116
|
+
//# sourceMappingURL=package-DljSGkeL.js.map
|
|
117
|
+
//# debugId=fe975262-b189-5f66-8547-79e8ec14e388
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-DljSGkeL.js","sources":["../package.json"],"sourcesContent":[""],"names":[],"mappings":"","debug_id":"fe975262-b189-5f66-8547-79e8ec14e388"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/packages.config.ts
|
|
2
|
+
|
|
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]="7f114cbb-36f3-5b27-a65c-dd233bc41499")}catch(e){}}();
|
|
4
|
+
function assertPackagesConfig(value) {
|
|
5
|
+
if (typeof value !== "object" || value === null) throw new Error("ph-packages.json must be a JSON object");
|
|
6
|
+
const obj = value;
|
|
7
|
+
if (!Array.isArray(obj.packages)) throw new Error("ph-packages.json: 'packages' must be an array");
|
|
8
|
+
if (!obj.packages.every((item) => typeof item === "string")) throw new Error("ph-packages.json: 'packages' must be an array of strings");
|
|
9
|
+
if (obj.registryUrl !== void 0 && obj.registryUrl !== null && typeof obj.registryUrl !== "string") throw new Error("ph-packages.json: 'registryUrl' must be a string, null, or omitted");
|
|
10
|
+
}
|
|
11
|
+
let cached;
|
|
12
|
+
async function loadPackagesConfig() {
|
|
13
|
+
if (cached) return cached;
|
|
14
|
+
const url = `${import.meta.env.BASE_URL ?? "/"}ph-packages.json`;
|
|
15
|
+
const json = await (await fetch(url)).json();
|
|
16
|
+
assertPackagesConfig(json);
|
|
17
|
+
cached = json;
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Returns the cached config synchronously.
|
|
22
|
+
* Must be called after `loadPackagesConfig()` has resolved.
|
|
23
|
+
*/
|
|
24
|
+
function getPackagesConfig() {
|
|
25
|
+
if (!cached) throw new Error("Packages config not loaded yet. Call loadPackagesConfig() first.");
|
|
26
|
+
return cached;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { loadPackagesConfig as n, getPackagesConfig as t };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=packages.config-CiH8KJVN.js.map
|
|
32
|
+
//# debugId=7f114cbb-36f3-5b27-a65c-dd233bc41499
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packages.config-CiH8KJVN.js","sources":["../src/packages.config.ts"],"sourcesContent":["export type PackagesConfig = {\n packages: string[];\n localPackage?: { name: string; version: string } | null;\n registryUrl?: string | null;\n};\n\nfunction assertPackagesConfig(value: unknown): asserts value is PackagesConfig {\n if (typeof value !== \"object\" || value === null) {\n throw new Error(\"ph-packages.json must be a JSON object\");\n }\n\n const obj = value as Record<string, unknown>;\n\n if (!Array.isArray(obj.packages)) {\n throw new Error(\"ph-packages.json: 'packages' must be an array\");\n }\n\n if (!obj.packages.every((item) => typeof item === \"string\")) {\n throw new Error(\"ph-packages.json: 'packages' must be an array of strings\");\n }\n\n if (\n obj.registryUrl !== undefined &&\n obj.registryUrl !== null &&\n typeof obj.registryUrl !== \"string\"\n ) {\n throw new Error(\n \"ph-packages.json: 'registryUrl' must be a string, null, or omitted\",\n );\n }\n}\n\nlet cached: PackagesConfig | undefined;\n\nexport async function loadPackagesConfig(): Promise<PackagesConfig> {\n if (cached) return cached;\n\n const basePath = import.meta.env.BASE_URL ?? \"/\";\n const url = `${basePath}ph-packages.json`;\n const res = await fetch(url);\n const json: unknown = await res.json();\n assertPackagesConfig(json);\n cached = json;\n return cached;\n}\n\n/**\n * Returns the cached config synchronously.\n * Must be called after `loadPackagesConfig()` has resolved.\n */\nexport function getPackagesConfig(): PackagesConfig {\n if (!cached) {\n throw new Error(\n \"Packages config not loaded yet. Call loadPackagesConfig() first.\",\n );\n }\n return cached;\n}\n"],"names":[],"mappings":";;;AAMA,SAAS,qBAAqB,OAAiD;AAC7E,KAAI,OAAO,UAAU,YAAY,UAAU,KACzC,OAAM,IAAI,MAAM,yCAAyC;CAG3D,MAAM,MAAM;AAEZ,KAAI,CAAC,MAAM,QAAQ,IAAI,SAAS,CAC9B,OAAM,IAAI,MAAM,gDAAgD;AAGlE,KAAI,CAAC,IAAI,SAAS,OAAO,SAAS,OAAO,SAAS,SAAS,CACzD,OAAM,IAAI,MAAM,2DAA2D;AAG7E,KACE,IAAI,gBAAgB,KAAA,KACpB,IAAI,gBAAgB,QACpB,OAAO,IAAI,gBAAgB,SAE3B,OAAM,IAAI,MACR,qEACD;;AAIL,IAAI;AAEJ,eAAsB,qBAA8C;AAClE,KAAI,OAAQ,QAAO;CAGnB,MAAM,MAAM,GADK,OAAO,KAAK,IAAI,YAAY,IACrB;CAExB,MAAM,OAAgB,OADV,MAAM,MAAM,IAAI,EACI,MAAM;AACtC,sBAAqB,KAAK;AAC1B,UAAS;AACT,QAAO;;;;;;AAOT,SAAgB,oBAAoC;AAClD,KAAI,CAAC,OACH,OAAM,IAAI,MACR,mEACD;AAEH,QAAO","debug_id":"7f114cbb-36f3-5b27-a65c-dd233bc41499"}
|
|
@@ -1,3 +1,5 @@
|
|
|
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]="7934ff5b-6633-5fdc-8cfc-d34fefb943b9")}catch(e){}}();
|
|
1
3
|
import { DEFAULT_RELATIONAL_PROCESSOR_DB_NAME } from "@powerhousedao/shared/processors";
|
|
2
4
|
//#region src/utils/pglite-idb.ts
|
|
3
5
|
const IDB_STORE_NAME = "FILE_DATA";
|
|
@@ -129,4 +131,5 @@ async function loadPgDump(major) {
|
|
|
129
131
|
//#endregion
|
|
130
132
|
export { loadPGliteModule as a, subscribeReactorPgMajor as c, createFileDataStore as d, idbError as f, invalidateReactorPgMajorCache as i, IDB_STORE_NAME as l, readPgVersionFile as m, detectRelationalPgMajor as n, loadPgDump as o, openIdb as p, getCachedReactorPgMajor as r, resolvePgMajorForRuntime as s, detectReactorPgMajor as t, PRIMARY_IDB_NAMES as u };
|
|
131
133
|
|
|
132
|
-
//# sourceMappingURL=pglite-runtime-
|
|
134
|
+
//# sourceMappingURL=pglite-runtime-Btp8ZXVH.js.map
|
|
135
|
+
//# debugId=7934ff5b-6633-5fdc-8cfc-d34fefb943b9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pglite-runtime-Btp8ZXVH.js","sources":["../src/utils/pglite-idb.ts","../src/utils/pglite-runtime.ts"],"sourcesContent":["import { DEFAULT_RELATIONAL_PROCESSOR_DB_NAME } from \"@powerhousedao/shared/processors\";\n\nexport const IDB_STORE_NAME = \"FILE_DATA\";\nexport const IDB_DB_VERSION = 21;\n\nexport const REACTOR_IDB_NAME = \"/pglite/reactor\";\nexport const RELATIONAL_IDB_NAME = `/pglite/${DEFAULT_RELATIONAL_PROCESSOR_DB_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":"7934ff5b-6633-5fdc-8cfc-d34fefb943b9"}
|
|
@@ -1,4 +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]="a10d30b6-6e0e-5609-ac46-867e7535e754")}catch(e){}}();
|
|
3
|
+
import { i as invalidateReactorPgMajorCache } from "./pglite-runtime-Btp8ZXVH.js";
|
|
2
4
|
//#region src/utils/pglite-seed.ts
|
|
3
5
|
const PENDING_PG_SEED_KEY = "ph:pending-pg-seed";
|
|
4
6
|
/**
|
|
@@ -43,4 +45,5 @@ async function seedPendingPgVersion() {
|
|
|
43
45
|
//#endregion
|
|
44
46
|
export { seedPendingPgVersion as n, PENDING_PG_SEED_KEY as t };
|
|
45
47
|
|
|
46
|
-
//# sourceMappingURL=pglite-seed-
|
|
48
|
+
//# sourceMappingURL=pglite-seed-b1mJUaip.js.map
|
|
49
|
+
//# debugId=a10d30b6-6e0e-5609-ac46-867e7535e754
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pglite-seed-b1mJUaip.js","sources":["../src/utils/pglite-seed.ts"],"sourcesContent":["import { invalidateReactorPgMajorCache } from \"./pglite-runtime.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 `idb://reactor`, 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\");\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\");\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":";;;;AAEA,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,gBAAgB;AACtC,OAAI;AACF,UAAM,GAAG;aACD;AACR,UAAM,GAAG,OAAO;;aAET,UAAU,IAAI;GACvB,MAAM,EAAE,WAAW,MAAM,OAAO;GAChC,MAAM,KAAK,IAAI,OAAO,gBAAgB;AACtC,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":"a10d30b6-6e0e-5609-ac46-867e7535e754"}
|
package/dist/pglite.worker.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
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]="3cfe1dbb-5463-5a07-8ec2-8a3bf554be18")}catch(e){}}();
|
|
1
3
|
import { IdbFs, PGlite } from "@electric-sql/pglite";
|
|
2
4
|
import { DEFAULT_RELATIONAL_PROCESSOR_DB_NAME } from "@powerhousedao/shared/processors";
|
|
3
5
|
import { live } from "@electric-sql/pglite/live";
|
|
@@ -12,4 +14,5 @@ worker({ async init() {
|
|
|
12
14
|
} }).catch(console.error);
|
|
13
15
|
//#endregion
|
|
14
16
|
|
|
15
|
-
//# sourceMappingURL=pglite.worker.js.map
|
|
17
|
+
//# sourceMappingURL=pglite.worker.js.map
|
|
18
|
+
//# debugId=3cfe1dbb-5463-5a07-8ec2-8a3bf554be18
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pglite.worker.js","
|
|
1
|
+
{"version":3,"file":"pglite.worker.js","sources":["../pglite.worker.ts"],"sourcesContent":["import { IdbFs, PGlite } from \"@electric-sql/pglite\";\nimport { live } from \"@electric-sql/pglite/live\";\nimport { worker } from \"@electric-sql/pglite/worker\";\nimport { DEFAULT_RELATIONAL_PROCESSOR_DB_NAME } from \"@powerhousedao/shared/processors\";\n\nworker({\n async init() {\n const idbFs = new IdbFs(DEFAULT_RELATIONAL_PROCESSOR_DB_NAME);\n return new PGlite({\n fs: idbFs,\n relaxedDurability: true,\n extensions: { live },\n });\n },\n}).catch(console.error);\n"],"names":[],"mappings":";;;;;;;AAKA,OAAO,EACL,MAAM,OAAO;AAEX,QAAO,IAAI,OAAO;EAChB,IAFY,IAAI,MAAM,qCAAqC;EAG3D,mBAAmB;EACnB,YAAY,EAAE,MAAM;EACrB,CAAC;GAEL,CAAC,CAAC,MAAM,QAAQ,MAAM","debug_id":"3cfe1dbb-5463-5a07-8ec2-8a3bf554be18"}
|
|
@@ -1,3 +1,5 @@
|
|
|
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]="04954497-eb5c-51e6-9675-c7f6883ba95c")}catch(e){}}();
|
|
1
3
|
import { DEFAULT_RELATIONAL_PROCESSOR_DB_NAME } from "@powerhousedao/shared/processors";
|
|
2
4
|
import { IdbFs, PGlite } from "pglite-legacy-02";
|
|
3
5
|
import { live } from "pglite-legacy-02/live";
|
|
@@ -12,4 +14,5 @@ worker({ async init() {
|
|
|
12
14
|
} }).catch(console.error);
|
|
13
15
|
//#endregion
|
|
14
16
|
|
|
15
|
-
//# sourceMappingURL=pglite.worker.legacy.js.map
|
|
17
|
+
//# sourceMappingURL=pglite.worker.legacy.js.map
|
|
18
|
+
//# debugId=04954497-eb5c-51e6-9675-c7f6883ba95c
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pglite.worker.legacy.js","
|
|
1
|
+
{"version":3,"file":"pglite.worker.legacy.js","sources":["../pglite.worker.legacy.ts"],"sourcesContent":["import { IdbFs, PGlite } from \"pglite-legacy-02\";\nimport { live } from \"pglite-legacy-02/live\";\nimport { worker } from \"pglite-legacy-02/worker\";\nimport { DEFAULT_RELATIONAL_PROCESSOR_DB_NAME } from \"@powerhousedao/shared/processors\";\n\nworker({\n async init() {\n const idbFs = new IdbFs(DEFAULT_RELATIONAL_PROCESSOR_DB_NAME);\n return new PGlite({\n fs: idbFs,\n relaxedDurability: true,\n extensions: { live },\n });\n },\n}).catch(console.error);\n"],"names":[],"mappings":";;;;;;;AAKA,OAAO,EACL,MAAM,OAAO;AAEX,QAAO,IAAI,OAAO;EAChB,IAFY,IAAI,MAAM,qCAAqC;EAG3D,mBAAmB;EACnB,YAAY,EAAE,MAAM;EACrB,CAAC;GAEL,CAAC,CAAC,MAAM,QAAQ,MAAM","debug_id":"04954497-eb5c-51e6-9675-c7f6883ba95c"}
|
|
@@ -1,6 +1,9 @@
|
|
|
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]="c8d56ddb-ed05-5b87-860f-7dca138eba3e")}catch(e){}}();
|
|
1
3
|
import { i as phGlobalConfigFromEnv } from "./connect.config-Cuh0hj_Q.js";
|
|
2
4
|
import { n as toast } from "./toast-DnODOv28.js";
|
|
3
|
-
import {
|
|
5
|
+
import { n as loadPackagesConfig } from "./packages.config-CiH8KJVN.js";
|
|
6
|
+
import { a as loadPGliteModule, n as detectRelationalPgMajor, s as resolvePgMajorForRuntime, t as detectReactorPgMajor } from "./pglite-runtime-Btp8ZXVH.js";
|
|
4
7
|
import { BrowserLocalStorage, ChannelScheme, DocumentCache, DocumentChangeType, ReactorBuilder, ReactorClientBuilder, RegistryClient, addPHEventHandlers, addRemoteDrive, createAnalyticsStore, extractDriveSlugFromPath, extractNodeSlugFromPath, getDrives, login, refreshReactorDataClient, setDefaultPHGlobalConfig, setDocumentCache, setDrives, setFeatures, setPHToast, setPackageDiscoveryService, setReactorClient, setReactorClientModule, setRenown, setSelectedDrive, setSelectedNode, setVetraPackageManager } from "@powerhousedao/reactor-browser";
|
|
5
8
|
import { ConsoleLogger, logger, setLogLevel as setLogLevel$1 } from "document-model";
|
|
6
9
|
import { createRelationalDb } from "@powerhousedao/shared/processors";
|
|
@@ -185,6 +188,90 @@ async function initFeatureFlags(searchParams) {
|
|
|
185
188
|
return features;
|
|
186
189
|
}
|
|
187
190
|
//#endregion
|
|
191
|
+
//#region src/no-registry-discovery.ts
|
|
192
|
+
/**
|
|
193
|
+
* Discovery service used when no package registry is configured. Every load
|
|
194
|
+
* for an unknown document type is recorded as a failure with reason
|
|
195
|
+
* "no-registry" so the UI can surface the issue; the modal install flow is a
|
|
196
|
+
* no-op because there is no registry to query.
|
|
197
|
+
*/
|
|
198
|
+
var NoRegistryDiscoveryService = class {
|
|
199
|
+
#packageManager;
|
|
200
|
+
#failed = /* @__PURE__ */ new Map();
|
|
201
|
+
#failedMemo = [];
|
|
202
|
+
#failedSubscribers = /* @__PURE__ */ new Set();
|
|
203
|
+
#eventSubscribers = /* @__PURE__ */ new Set();
|
|
204
|
+
constructor(packageManager) {
|
|
205
|
+
this.#packageManager = packageManager;
|
|
206
|
+
}
|
|
207
|
+
load(documentType) {
|
|
208
|
+
const existing = this.#findModuleInLoadedPackages(documentType);
|
|
209
|
+
if (existing) {
|
|
210
|
+
this.#clearFailed(documentType);
|
|
211
|
+
return Promise.resolve(existing);
|
|
212
|
+
}
|
|
213
|
+
this.#recordFailure(documentType);
|
|
214
|
+
return Promise.reject(/* @__PURE__ */ new Error(`No package registry configured; cannot resolve "${documentType}"`));
|
|
215
|
+
}
|
|
216
|
+
promptInstallation() {}
|
|
217
|
+
approveInstallation() {
|
|
218
|
+
return Promise.resolve();
|
|
219
|
+
}
|
|
220
|
+
dismissInstallation() {}
|
|
221
|
+
getPendingInstallations() {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
subscribePending() {
|
|
225
|
+
return () => {};
|
|
226
|
+
}
|
|
227
|
+
getFailedInstallations() {
|
|
228
|
+
return this.#failedMemo;
|
|
229
|
+
}
|
|
230
|
+
subscribeFailed(listener) {
|
|
231
|
+
this.#failedSubscribers.add(listener);
|
|
232
|
+
return () => {
|
|
233
|
+
this.#failedSubscribers.delete(listener);
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
subscribeEvents(listener) {
|
|
237
|
+
this.#eventSubscribers.add(listener);
|
|
238
|
+
return () => {
|
|
239
|
+
this.#eventSubscribers.delete(listener);
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
retryInstallation(documentType) {
|
|
243
|
+
this.#recordFailure(documentType);
|
|
244
|
+
return Promise.resolve();
|
|
245
|
+
}
|
|
246
|
+
#findModuleInLoadedPackages(documentType) {
|
|
247
|
+
return this.#packageManager.packages.flatMap((p) => p.documentModels).find((m) => m.documentModel.global.id === documentType);
|
|
248
|
+
}
|
|
249
|
+
#recordFailure(documentType) {
|
|
250
|
+
this.#failed.set(documentType, {
|
|
251
|
+
documentType,
|
|
252
|
+
reason: "no-registry",
|
|
253
|
+
packageNames: [],
|
|
254
|
+
error: null
|
|
255
|
+
});
|
|
256
|
+
this.#emitEvent({
|
|
257
|
+
type: "load-failed",
|
|
258
|
+
documentType,
|
|
259
|
+
reason: "no-registry"
|
|
260
|
+
});
|
|
261
|
+
this.#notifyFailedChanged();
|
|
262
|
+
}
|
|
263
|
+
#clearFailed(documentType) {
|
|
264
|
+
if (this.#failed.delete(documentType)) this.#notifyFailedChanged();
|
|
265
|
+
}
|
|
266
|
+
#notifyFailedChanged() {
|
|
267
|
+
this.#failedMemo = Array.from(this.#failed.values());
|
|
268
|
+
for (const listener of this.#failedSubscribers) listener();
|
|
269
|
+
}
|
|
270
|
+
#emitEvent(event) {
|
|
271
|
+
for (const listener of this.#eventSubscribers) listener(event);
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
//#endregion
|
|
188
275
|
//#region src/package-discovery.ts
|
|
189
276
|
var PackageDiscoveryService = class {
|
|
190
277
|
#packageManager;
|
|
@@ -194,6 +281,9 @@ var PackageDiscoveryService = class {
|
|
|
194
281
|
#pending = /* @__PURE__ */ new Map();
|
|
195
282
|
#pendingMemo = [];
|
|
196
283
|
#pendingSubscribers = /* @__PURE__ */ new Set();
|
|
284
|
+
#failed = /* @__PURE__ */ new Map();
|
|
285
|
+
#failedMemo = [];
|
|
286
|
+
#failedSubscribers = /* @__PURE__ */ new Set();
|
|
197
287
|
#eventSubscribers = /* @__PURE__ */ new Set();
|
|
198
288
|
#dismissedStorage;
|
|
199
289
|
#discoveredTypes = /* @__PURE__ */ new Map();
|
|
@@ -205,8 +295,14 @@ var PackageDiscoveryService = class {
|
|
|
205
295
|
}
|
|
206
296
|
load(documentType) {
|
|
207
297
|
const existing = this.#findModuleInLoadedPackages(documentType);
|
|
208
|
-
if (existing)
|
|
209
|
-
|
|
298
|
+
if (existing) {
|
|
299
|
+
this.#clearFailed(documentType);
|
|
300
|
+
return Promise.resolve(existing);
|
|
301
|
+
}
|
|
302
|
+
if (this.#dismissedStorage.has(documentType)) {
|
|
303
|
+
this.#recordFailure(documentType, "dismissed", [], null);
|
|
304
|
+
return Promise.reject(/* @__PURE__ */ new Error(`Document type "${documentType}" was dismissed`));
|
|
305
|
+
}
|
|
210
306
|
const tracked = this.#deferred.get(documentType);
|
|
211
307
|
if (tracked) return tracked.promise;
|
|
212
308
|
return this.#discover(documentType);
|
|
@@ -235,6 +331,7 @@ var PackageDiscoveryService = class {
|
|
|
235
331
|
this.#deferred.delete(documentType);
|
|
236
332
|
this.#pending.delete(documentType);
|
|
237
333
|
}
|
|
334
|
+
this.#recordFailure(documentType, "install-failed", [packageName], result.error);
|
|
238
335
|
}
|
|
239
336
|
this.#notifyPendingChanged();
|
|
240
337
|
return;
|
|
@@ -248,8 +345,14 @@ var PackageDiscoveryService = class {
|
|
|
248
345
|
const entry = this.#deferred.get(documentType);
|
|
249
346
|
if (!entry) continue;
|
|
250
347
|
const module = this.#findModuleInLoadedPackages(documentType);
|
|
251
|
-
if (module)
|
|
252
|
-
|
|
348
|
+
if (module) {
|
|
349
|
+
entry.resolve(module);
|
|
350
|
+
this.#clearFailed(documentType);
|
|
351
|
+
} else {
|
|
352
|
+
const error = /* @__PURE__ */ new Error(`Package "${packageName}" installed but module for "${documentType}" not found`);
|
|
353
|
+
entry.reject(error);
|
|
354
|
+
this.#recordFailure(documentType, "install-failed", [packageName], error);
|
|
355
|
+
}
|
|
253
356
|
this.#deferred.delete(documentType);
|
|
254
357
|
this.#pending.delete(documentType);
|
|
255
358
|
}
|
|
@@ -265,6 +368,7 @@ var PackageDiscoveryService = class {
|
|
|
265
368
|
this.#deferred.delete(documentType);
|
|
266
369
|
this.#pending.delete(documentType);
|
|
267
370
|
this.#discoveredTypes.delete(documentType);
|
|
371
|
+
this.#recordFailure(documentType, "dismissed", [packageName], null);
|
|
268
372
|
}
|
|
269
373
|
this.#emitEvent({
|
|
270
374
|
type: "installation-dismissed",
|
|
@@ -282,25 +386,46 @@ var PackageDiscoveryService = class {
|
|
|
282
386
|
this.#pendingSubscribers.delete(listener);
|
|
283
387
|
};
|
|
284
388
|
}
|
|
389
|
+
getFailedInstallations() {
|
|
390
|
+
return this.#failedMemo;
|
|
391
|
+
}
|
|
392
|
+
subscribeFailed(listener) {
|
|
393
|
+
this.#failedSubscribers.add(listener);
|
|
394
|
+
return () => {
|
|
395
|
+
this.#failedSubscribers.delete(listener);
|
|
396
|
+
};
|
|
397
|
+
}
|
|
285
398
|
subscribeEvents(listener) {
|
|
286
399
|
this.#eventSubscribers.add(listener);
|
|
287
400
|
return () => {
|
|
288
401
|
this.#eventSubscribers.delete(listener);
|
|
289
402
|
};
|
|
290
403
|
}
|
|
404
|
+
async retryInstallation(documentType) {
|
|
405
|
+
this.#dismissedStorage.delete(documentType);
|
|
406
|
+
this.#clearFailed(documentType);
|
|
407
|
+
try {
|
|
408
|
+
await this.#discover(documentType);
|
|
409
|
+
} catch {}
|
|
410
|
+
}
|
|
291
411
|
async #discover(documentType) {
|
|
292
412
|
let packageNames;
|
|
293
413
|
try {
|
|
294
414
|
packageNames = await this.#registryClient.getPackagesByDocumentType(documentType);
|
|
295
415
|
} catch (error) {
|
|
416
|
+
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
296
417
|
this.#emitEvent({
|
|
297
418
|
type: "registry-query-failed",
|
|
298
419
|
documentType,
|
|
299
|
-
error:
|
|
420
|
+
error: normalized
|
|
300
421
|
});
|
|
301
|
-
|
|
422
|
+
this.#recordFailure(documentType, "registry-error", [], normalized);
|
|
423
|
+
return Promise.reject(normalized);
|
|
424
|
+
}
|
|
425
|
+
if (packageNames.length === 0) {
|
|
426
|
+
this.#recordFailure(documentType, "not-in-registry", [], null);
|
|
427
|
+
return Promise.reject(/* @__PURE__ */ new Error(`No packages found for document type "${documentType}"`));
|
|
302
428
|
}
|
|
303
|
-
if (packageNames.length === 0) return Promise.reject(/* @__PURE__ */ new Error(`No packages found for document type "${documentType}"`));
|
|
304
429
|
const entry = this.#createDeferredEntry(documentType, packageNames);
|
|
305
430
|
this.#emitEvent({
|
|
306
431
|
type: "type-discovered",
|
|
@@ -352,6 +477,27 @@ var PackageDiscoveryService = class {
|
|
|
352
477
|
this.#pendingMemo = Array.from(this.#pending.values());
|
|
353
478
|
for (const listener of this.#pendingSubscribers) listener();
|
|
354
479
|
}
|
|
480
|
+
#notifyFailedChanged() {
|
|
481
|
+
this.#failedMemo = Array.from(this.#failed.values());
|
|
482
|
+
for (const listener of this.#failedSubscribers) listener();
|
|
483
|
+
}
|
|
484
|
+
#recordFailure(documentType, reason, packageNames, error) {
|
|
485
|
+
this.#failed.set(documentType, {
|
|
486
|
+
documentType,
|
|
487
|
+
reason,
|
|
488
|
+
packageNames,
|
|
489
|
+
error
|
|
490
|
+
});
|
|
491
|
+
this.#emitEvent({
|
|
492
|
+
type: "load-failed",
|
|
493
|
+
documentType,
|
|
494
|
+
reason
|
|
495
|
+
});
|
|
496
|
+
this.#notifyFailedChanged();
|
|
497
|
+
}
|
|
498
|
+
#clearFailed(documentType) {
|
|
499
|
+
if (this.#failed.delete(documentType)) this.#notifyFailedChanged();
|
|
500
|
+
}
|
|
355
501
|
#emitEvent(event) {
|
|
356
502
|
for (const listener of this.#eventSubscribers) listener(event);
|
|
357
503
|
}
|
|
@@ -593,23 +739,6 @@ var BrowserPackageManager = class {
|
|
|
593
739
|
}
|
|
594
740
|
};
|
|
595
741
|
//#endregion
|
|
596
|
-
//#region src/packages.config.ts
|
|
597
|
-
function assertPackagesConfig(value) {
|
|
598
|
-
if (typeof value !== "object" || value === null) throw new Error("ph-packages.json must be a JSON object");
|
|
599
|
-
const obj = value;
|
|
600
|
-
if (!Array.isArray(obj.packages)) throw new Error("ph-packages.json: 'packages' must be an array");
|
|
601
|
-
if (!obj.packages.every((item) => typeof item === "string")) throw new Error("ph-packages.json: 'packages' must be an array of strings");
|
|
602
|
-
}
|
|
603
|
-
let cached;
|
|
604
|
-
async function loadPackagesConfig() {
|
|
605
|
-
if (cached) return cached;
|
|
606
|
-
const url = `${import.meta.env.BASE_URL ?? "/"}ph-packages.json`;
|
|
607
|
-
const json = await (await fetch(url)).json();
|
|
608
|
-
assertPackagesConfig(json);
|
|
609
|
-
cached = json;
|
|
610
|
-
return cached;
|
|
611
|
-
}
|
|
612
|
-
//#endregion
|
|
613
742
|
//#region src/pglite.db.ts
|
|
614
743
|
async function createPGliteWorkerForMajor(major) {
|
|
615
744
|
if (major === 16) {
|
|
@@ -683,7 +812,7 @@ async function createReactor(localPackage) {
|
|
|
683
812
|
baseUrl: phGlobalConfigFromEnv.renownUrl
|
|
684
813
|
}).withCrypto(renownCrypto).build();
|
|
685
814
|
const packagesConfig = await loadPackagesConfig();
|
|
686
|
-
const packageManager = new BrowserPackageManager(phGlobalConfigFromEnv.routerBasename ?? "",
|
|
815
|
+
const packageManager = new BrowserPackageManager(phGlobalConfigFromEnv.routerBasename ?? "", packagesConfig.registryUrl ?? null);
|
|
687
816
|
setVetraPackageManager(packageManager);
|
|
688
817
|
await packageManager.init(localPackage, packagesConfig.localPackage?.version);
|
|
689
818
|
try {
|
|
@@ -698,8 +827,8 @@ async function createReactor(localPackage) {
|
|
|
698
827
|
const discoveryService = packageManager.cdnUrl !== null ? new PackageDiscoveryService(packageManager, new RegistryClient(packageManager.cdnUrl), {
|
|
699
828
|
mode: "immediate",
|
|
700
829
|
storageKey: phGlobalConfigFromEnv.routerBasename ?? ""
|
|
701
|
-
}) :
|
|
702
|
-
|
|
830
|
+
}) : new NoRegistryDiscoveryService(packageManager);
|
|
831
|
+
setPackageDiscoveryService(discoveryService);
|
|
703
832
|
const reactorClientModule = await createBrowserReactor(documentModelModules, upgradeManifests, renown, discoveryService);
|
|
704
833
|
const drives = await getDrives(reactorClientModule.client);
|
|
705
834
|
const path = window.location.pathname;
|
|
@@ -780,4 +909,5 @@ function getDriveUrl() {
|
|
|
780
909
|
//#endregion
|
|
781
910
|
export { createReactor as n, clearReactorStorage as t };
|
|
782
911
|
|
|
783
|
-
//# sourceMappingURL=reactor-
|
|
912
|
+
//# sourceMappingURL=reactor-DFuRedvV.js.map
|
|
913
|
+
//# debugId=c8d56ddb-ed05-5b87-860f-7dca138eba3e
|