@powerhousedao/connect 6.2.0-dev.5 → 6.2.0-dev.51

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.
Files changed (79) hide show
  1. package/dist/{AddDriveModal-kzL41qdg.js → AddDriveModal-D-nbV40j.js} +5 -8
  2. package/dist/{AddDriveModal-kzL41qdg.js.map → AddDriveModal-D-nbV40j.js.map} +1 -1
  3. package/dist/{ClearStorageModal-BSNg-Ymg.js → ClearStorageModal-D40SSzsa.js} +4 -4
  4. package/dist/{ClearStorageModal-BSNg-Ymg.js.map → ClearStorageModal-D40SSzsa.js.map} +1 -1
  5. package/dist/{CookiesPolicyModal-1nOh6oN3.js → CookiesPolicyModal-CkcUKPLb.js} +3 -3
  6. package/dist/{CookiesPolicyModal-1nOh6oN3.js.map → CookiesPolicyModal-CkcUKPLb.js.map} +1 -1
  7. package/dist/{CreateDocumentModal-nQbLVDq3.js → CreateDocumentModal-CvsTh0HM.js} +3 -3
  8. package/dist/{CreateDocumentModal-nQbLVDq3.js.map → CreateDocumentModal-CvsTh0HM.js.map} +1 -1
  9. package/dist/{DebugSettingsModal-BuAYgDSn.js → DebugSettingsModal-uI0wbST1.js} +10 -10
  10. package/dist/DebugSettingsModal-uI0wbST1.js.map +1 -0
  11. package/dist/{DeleteDriveModal-6P0T1QgD.js → DeleteDriveModal-DSTK8FYk.js} +4 -4
  12. package/dist/{DeleteDriveModal-6P0T1QgD.js.map → DeleteDriveModal-DSTK8FYk.js.map} +1 -1
  13. package/dist/{DeleteItemModal-BmV1aQyZ.js → DeleteItemModal-B2nJmjsP.js} +4 -4
  14. package/dist/{DeleteItemModal-BmV1aQyZ.js.map → DeleteItemModal-B2nJmjsP.js.map} +1 -1
  15. package/dist/{DisclaimerModal-CVTFfN0_.js → DisclaimerModal-D5FO34u9.js} +3 -3
  16. package/dist/{DisclaimerModal-CVTFfN0_.js.map → DisclaimerModal-D5FO34u9.js.map} +1 -1
  17. package/dist/{DownloadDocumentWithErrorsModal-CXeFUtaz.js → DownloadDocumentWithErrorsModal-tEr3bbtN.js} +3 -3
  18. package/dist/{DownloadDocumentWithErrorsModal-CXeFUtaz.js.map → DownloadDocumentWithErrorsModal-tEr3bbtN.js.map} +1 -1
  19. package/dist/DriveAuthRequiredModal-B5-ZfKsb.js +36 -0
  20. package/dist/DriveAuthRequiredModal-B5-ZfKsb.js.map +1 -0
  21. package/dist/{DriveSettingsModal-L5sM-rIh.js → DriveSettingsModal-kR3hQnh4.js} +5 -5
  22. package/dist/DriveSettingsModal-kR3hQnh4.js.map +1 -0
  23. package/dist/{InspectorModal-DyrVQ4fu.js → InspectorModal-CtzrfT0O.js} +84 -35
  24. package/dist/InspectorModal-CtzrfT0O.js.map +1 -0
  25. package/dist/{MissingPackageModal-D_N96M6a.js → MissingPackageModal-BQcCQbOn.js} +4 -4
  26. package/dist/{MissingPackageModal-D_N96M6a.js.map → MissingPackageModal-BQcCQbOn.js.map} +1 -1
  27. package/dist/{SettingsModal-xaWk_n_D.js → SettingsModal-CPbdBRon.js} +36 -43
  28. package/dist/SettingsModal-CPbdBRon.js.map +1 -0
  29. package/dist/{UpgradeDriveModal-CyAUDCU7.js → UpgradeDriveModal-BZGSE9_r.js} +3 -3
  30. package/dist/{UpgradeDriveModal-CyAUDCU7.js.map → UpgradeDriveModal-BZGSE9_r.js.map} +1 -1
  31. package/dist/app-loader-D0B2KMz8.js +4 -0
  32. package/dist/{app-loader-0E0DoHDu.js → app-loader-N0kkedYA.js} +241 -286
  33. package/dist/app-loader-N0kkedYA.js.map +1 -0
  34. package/dist/{build-info-AU2BqmyC.js → build-info-Bhdpc4-E.js} +8 -5
  35. package/dist/{build-info-AU2BqmyC.js.map → build-info-Bhdpc4-E.js.map} +1 -1
  36. package/dist/components-X3EnrDp4.js +5 -0
  37. package/dist/{connect.config-aPx3rHZQ.js → connect.config-BG681xG9.js} +9 -5
  38. package/dist/connect.config-BG681xG9.js.map +1 -0
  39. package/dist/connection-state-Cig644T0.js +126 -0
  40. package/dist/connection-state-Cig644T0.js.map +1 -0
  41. package/dist/{load-BBnRfGjk.js → load-Cd1vLUR-.js} +11 -11
  42. package/dist/{load-BBnRfGjk.js.map → load-Cd1vLUR-.js.map} +1 -1
  43. package/dist/main.js +1 -1
  44. package/dist/{package-Z50_4mCC.js → package-B2ziXT-m.js} +7 -5
  45. package/dist/package-B2ziXT-m.js.map +1 -0
  46. package/dist/{pglite-runtime-toc1-TWa.js → pglite-major-B39aOEiE.js} +8 -51
  47. package/dist/pglite-major-B39aOEiE.js.map +1 -0
  48. package/dist/pglite-migrate-core-Boxqqx-c.js +143 -0
  49. package/dist/pglite-migrate-core-Boxqqx-c.js.map +1 -0
  50. package/dist/{pglite-seed-D8oSKkep.js → pglite-seed-9rjhdCs5.js} +4 -4
  51. package/dist/{pglite-seed-D8oSKkep.js.map → pglite-seed-9rjhdCs5.js.map} +1 -1
  52. package/dist/{reactor-RZaraEfU.js → reactor-9Le-f3E4.js} +239 -36
  53. package/dist/reactor-9Le-f3E4.js.map +1 -0
  54. package/dist/reactor.worker.d.ts +1 -0
  55. package/dist/reactor.worker.js +316 -0
  56. package/dist/reactor.worker.js.map +1 -0
  57. package/dist/{registerServiceWorker-B7uKpkci.js → registerServiceWorker-2tRbkdJj.js} +4 -4
  58. package/dist/{registerServiceWorker-B7uKpkci.js.map → registerServiceWorker-2tRbkdJj.js.map} +1 -1
  59. package/dist/{reload-connect-toast-CwvSc6F-.js → reload-connect-toast-qibmlgQm.js} +3 -3
  60. package/dist/{reload-connect-toast-CwvSc6F-.js.map → reload-connect-toast-qibmlgQm.js.map} +1 -1
  61. package/dist/start-connect.js +1 -1
  62. package/dist/style.css +851 -2392
  63. package/dist/{toast-BEy42aYx.js → toast-4t-VimvD.js} +3 -3
  64. package/dist/{toast-BEy42aYx.js.map → toast-4t-VimvD.js.map} +1 -1
  65. package/dist/{useRegistryPackages-Bh0luCvV.js → useRegistryPackages-BaYtekjQ.js} +44 -8
  66. package/dist/useRegistryPackages-BaYtekjQ.js.map +1 -0
  67. package/package.json +13 -11
  68. package/dist/DebugSettingsModal-BuAYgDSn.js.map +0 -1
  69. package/dist/DriveSettingsModal-L5sM-rIh.js.map +0 -1
  70. package/dist/InspectorModal-DyrVQ4fu.js.map +0 -1
  71. package/dist/SettingsModal-xaWk_n_D.js.map +0 -1
  72. package/dist/app-loader-0E0DoHDu.js.map +0 -1
  73. package/dist/app-loader-Gype1CUN.js +0 -4
  74. package/dist/components-9-WKOGBP.js +0 -5
  75. package/dist/connect.config-aPx3rHZQ.js.map +0 -1
  76. package/dist/package-Z50_4mCC.js.map +0 -1
  77. package/dist/pglite-runtime-toc1-TWa.js.map +0 -1
  78. package/dist/reactor-RZaraEfU.js.map +0 -1
  79. package/dist/useRegistryPackages-Bh0luCvV.js.map +0 -1
@@ -1,13 +1,13 @@
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]="e3bfa468-69a6-54cb-afd8-c90501923ac8")}catch(e){}}();
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]="339adecb-8d67-5345-986c-2fc26f2b46b7")}catch(e){}}();
3
3
  import { r as loadRuntimeConfig, t as applyConnectBranding } from "./runtime-config-DL3QjcfM.js";
4
- import { t as ReloadConnectToast } from "./reload-connect-toast-CwvSc6F-.js";
5
- import { t as package_default } from "./package-Z50_4mCC.js";
6
- import { r as connectConfig } from "./connect.config-aPx3rHZQ.js";
7
- import { t as detectReactorPgMajor } from "./pglite-runtime-toc1-TWa.js";
8
- import { n as seedPendingPgVersion } from "./pglite-seed-D8oSKkep.js";
9
- import { n as createReactor } from "./reactor-RZaraEfU.js";
10
- import { n as toast } from "./toast-BEy42aYx.js";
4
+ import { t as ReloadConnectToast } from "./reload-connect-toast-qibmlgQm.js";
5
+ import { t as package_default } from "./package-B2ziXT-m.js";
6
+ import { r as connectConfig } from "./connect.config-BG681xG9.js";
7
+ import { a as detectReactorPgMajor, i as detectMigrationMajor } from "./connection-state-Cig644T0.js";
8
+ import { n as seedPendingPgVersion } from "./pglite-seed-9rjhdCs5.js";
9
+ import { n as createReactor } from "./reactor-9Le-f3E4.js";
10
+ import { n as toast } from "./toast-4t-VimvD.js";
11
11
  import { createElement, useEffect } from "react";
12
12
  import { initTheme, useUser } from "@powerhousedao/reactor-browser";
13
13
  import { logger } from "document-model";
@@ -84,7 +84,7 @@ function useSetSentryUser() {
84
84
  //#region src/components/load.tsx
85
85
  async function loadComponent(localPackage) {
86
86
  await seedPendingPgVersion();
87
- await detectReactorPgMajor();
87
+ await Promise.all([detectReactorPgMajor(), detectMigrationMajor()]);
88
88
  applyConnectBranding(await loadRuntimeConfig());
89
89
  await createReactor(localPackage);
90
90
  return { default: ({ children }) => {
@@ -97,5 +97,5 @@ async function loadComponent(localPackage) {
97
97
  //#endregion
98
98
  export { loadComponent };
99
99
 
100
- //# sourceMappingURL=load-BBnRfGjk.js.map
101
- //# debugId=e3bfa468-69a6-54cb-afd8-c90501923ac8
100
+ //# sourceMappingURL=load-Cd1vLUR-.js.map
101
+ //# debugId=339adecb-8d67-5345-986c-2fc26f2b46b7
@@ -1 +1 @@
1
- {"version":3,"file":"load-BBnRfGjk.js","sources":["../src/hooks/useCheckLatestVersion.ts","../src/hooks/utils.ts","../src/store/user.ts","../src/components/load.tsx"],"sourcesContent":["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: _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 { initTheme } from \"@powerhousedao/reactor-browser\";\nimport type { DocumentModelLib } from \"document-model\";\nimport { type ReactNode } from \"react\";\nimport { applyConnectBranding, loadRuntimeConfig } from \"../runtime-config.js\";\n\nexport async function loadComponent(localPackage?: DocumentModelLib) {\n await seedPendingPgVersion();\n await detectReactorPgMajor();\n const runtimeConfig = await loadRuntimeConfig();\n applyConnectBranding(runtimeConfig);\n await createReactor(localPackage);\n return {\n default: ({ children }: { children?: ReactNode }) => {\n initTheme();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useSetSentryUser();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useCheckLatestVersion();\n return children;\n },\n };\n}\n"],"names":["packageJson"],"mappings":";;;;;;;;;;;;;;;AAOA,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,aAAa,GAAG,SAAS;AAC7C,gBAAa;IAAE,IAAI,KAAK;IAAK,UAAU,KAAK,KAAK;IAAM,GAAG;IAAM;;AAElE,UAAc,WAAW;IACxB,CAAC,KAAK,CAAC;;;;ACHZ,eAAsB,cAAc,cAAiC;AACnE,OAAM,sBAAsB;AAC5B,OAAM,sBAAsB;AAE5B,sBADsB,MAAM,mBAAmB,CACZ;AACnC,OAAM,cAAc,aAAa;AACjC,QAAO,EACL,UAAU,EAAE,eAAyC;AACnD,aAAW;AAEX,oBAAkB;AAElB,yBAAuB;AACvB,SAAO;IAEV","debug_id":"e3bfa468-69a6-54cb-afd8-c90501923ac8"}
1
+ {"version":3,"file":"load-Cd1vLUR-.js","sources":["../src/hooks/useCheckLatestVersion.ts","../src/hooks/utils.ts","../src/store/user.ts","../src/components/load.tsx"],"sourcesContent":["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: _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 detectMigrationMajor,\n detectReactorPgMajor,\n seedPendingPgVersion,\n} from \"@powerhousedao/connect/utils\";\nimport { initTheme } from \"@powerhousedao/reactor-browser\";\nimport type { DocumentModelLib } from \"document-model\";\nimport { type ReactNode } from \"react\";\nimport { applyConnectBranding, loadRuntimeConfig } from \"../runtime-config.js\";\n\nexport async function loadComponent(localPackage?: DocumentModelLib) {\n await seedPendingPgVersion();\n await Promise.all([detectReactorPgMajor(), detectMigrationMajor()]);\n const runtimeConfig = await loadRuntimeConfig();\n applyConnectBranding(runtimeConfig);\n await createReactor(localPackage);\n return {\n default: ({ children }: { children?: ReactNode }) => {\n initTheme();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useSetSentryUser();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useCheckLatestVersion();\n return children;\n },\n };\n}\n"],"names":["packageJson"],"mappings":";;;;;;;;;;;;;;;AAOA,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,aAAa,GAAG,SAAS;AAC7C,gBAAa;IAAE,IAAI,KAAK;IAAK,UAAU,KAAK,KAAK;IAAM,GAAG;IAAM;;AAElE,UAAc,WAAW;IACxB,CAAC,KAAK,CAAC;;;;ACFZ,eAAsB,cAAc,cAAiC;AACnE,OAAM,sBAAsB;AAC5B,OAAM,QAAQ,IAAI,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;AAEnE,sBADsB,MAAM,mBAAmB,CACZ;AACnC,OAAM,cAAc,aAAa;AACjC,QAAO,EACL,UAAU,EAAE,eAAyC;AACnD,aAAW;AAEX,oBAAkB;AAElB,yBAAuB;AACvB,SAAO;IAEV","debug_id":"339adecb-8d67-5345-986c-2fc26f2b46b7"}
package/dist/main.js CHANGED
@@ -6,7 +6,7 @@ import { jsx } from "react/jsx-runtime";
6
6
  //#region main.tsx
7
7
  if (!window.ph) window.ph = {};
8
8
  await loadRuntimeConfig();
9
- const { AppLoader } = await import("./app-loader-Gype1CUN.js");
9
+ const { AppLoader } = await import("./app-loader-D0B2KMz8.js");
10
10
  createRoot(document.getElementById("root")).render(/* @__PURE__ */ jsx(AppLoader, {}));
11
11
  //#endregion
12
12
 
@@ -1,10 +1,10 @@
1
1
  //#region package.json
2
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]="24b64f04-2f06-5346-8399-aa297f6881cd")}catch(e){}}();
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]="456f93af-9ce5-5f06-a0a9-17749a7d4ba5")}catch(e){}}();
4
4
  var package_default = {
5
5
  name: "@powerhousedao/connect",
6
6
  productName: "Powerhouse-Connect",
7
- version: "6.2.0-dev.5",
7
+ version: "6.2.0-dev.51",
8
8
  description: "Powerhouse Connect",
9
9
  main: "dist/index.html",
10
10
  type: "module",
@@ -70,9 +70,10 @@ var package_default = {
70
70
  "@openpanel/web": "^1.4.1",
71
71
  "@powerhousedao/config": "workspace:*",
72
72
  "@powerhousedao/design-system": "workspace:*",
73
- "@powerhousedao/reactor-attachments": "workspace:*",
74
73
  "@powerhousedao/document-engineering": "catalog:",
75
74
  "@powerhousedao/powerhouse-vetra-packages": "workspace:*",
75
+ "@powerhousedao/reactor": "workspace:*",
76
+ "@powerhousedao/reactor-attachments": "workspace:*",
76
77
  "@powerhousedao/reactor-browser": "workspace:*",
77
78
  "@powerhousedao/shared": "workspace:*",
78
79
  "@powerhousedao/vetra": "workspace:*",
@@ -82,6 +83,7 @@ var package_default = {
82
83
  "i18next": "^25.5.3",
83
84
  "kysely": "catalog:",
84
85
  "kysely-pglite-dialect": "catalog:",
86
+ "lucide-react": "^1.16.0",
85
87
  "pglite-legacy-02": "npm:@electric-sql/pglite@0.2.17",
86
88
  "pglite-tools-legacy-02": "npm:@electric-sql/pglite-tools@0.2.4",
87
89
  "react-error-boundary": "^4.0.11",
@@ -121,5 +123,5 @@ var package_default = {
121
123
  //#endregion
122
124
  export { package_default as t };
123
125
 
124
- //# sourceMappingURL=package-Z50_4mCC.js.map
125
- //# debugId=24b64f04-2f06-5346-8399-aa297f6881cd
126
+ //# sourceMappingURL=package-B2ziXT-m.js.map
127
+ //# debugId=456f93af-9ce5-5f06-a0a9-17749a7d4ba5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-B2ziXT-m.js","sources":["../package.json"],"sourcesContent":[""],"names":[],"mappings":"","debug_id":"456f93af-9ce5-5f06-a0a9-17749a7d4ba5"}
@@ -1,17 +1,7 @@
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]="8646820c-6f27-5ef6-a1f1-39f46bed434a")}catch(e){}}();
3
- import { t as PH_CONNECT_BASE_PATH } from "./connect.config-aPx3rHZQ.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
1
  //#region src/utils/pglite-idb.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]="ddbad278-3c18-5b56-abbb-371faa5f9b3a")}catch(e){}}();
11
4
  const IDB_STORE_NAME = "FILE_DATA";
12
- const REACTOR_IDB_NAME = `/pglite/${REACTOR_PGLITE_NAME}`;
13
- const RELATIONAL_IDB_NAME = `/pglite/${RELATIONAL_PGLITE_NAME}`;
14
- const PRIMARY_IDB_NAMES = [REACTOR_IDB_NAME, RELATIONAL_IDB_NAME];
15
5
  function idbError(req, context) {
16
6
  const cause = req.error ?? /* @__PURE__ */ new Error("unknown IDB error");
17
7
  return new Error(`${context}: ${cause.message}`, { cause });
@@ -63,46 +53,13 @@ async function readPgVersionFile(idbName) {
63
53
  }
64
54
  }
65
55
  const SUPPORTED_PG_MAJORS = [16, 17];
66
- let cachedReactorMajor;
67
- let inflight;
68
- const majorListeners = /* @__PURE__ */ new Set();
69
- function notifyMajorChanged() {
70
- for (const l of majorListeners) l();
71
- }
72
- function subscribeReactorPgMajor(cb) {
73
- majorListeners.add(cb);
74
- return () => {
75
- majorListeners.delete(cb);
76
- };
77
- }
78
56
  function coerceMajor(value) {
79
57
  if (value === null) return null;
80
58
  return SUPPORTED_PG_MAJORS.includes(value) ? value : null;
81
59
  }
82
- async function detectReactorPgMajor() {
83
- if (cachedReactorMajor !== void 0) return cachedReactorMajor;
84
- if (inflight) return inflight;
85
- inflight = (async () => {
86
- const major = coerceMajor(await readPgVersionFile(REACTOR_IDB_NAME));
87
- cachedReactorMajor = major;
88
- notifyMajorChanged();
89
- return major;
90
- })();
91
- try {
92
- return await inflight;
93
- } finally {
94
- inflight = void 0;
95
- }
96
- }
97
- function getCachedReactorPgMajor() {
98
- return cachedReactorMajor;
99
- }
100
- function invalidateReactorPgMajorCache() {
101
- cachedReactorMajor = void 0;
102
- notifyMajorChanged();
103
- }
104
- async function detectRelationalPgMajor() {
105
- return coerceMajor(await readPgVersionFile(RELATIONAL_IDB_NAME));
60
+ function isMigratableMajor(value) {
61
+ const major = coerceMajor(value);
62
+ return major !== null && major !== 17;
106
63
  }
107
64
  /**
108
65
  * Pick the PGlite major to use for *new* reactor clients: fall back to the
@@ -135,7 +92,7 @@ async function loadPgDump(major) {
135
92
  throw new Error(`Unsupported PGlite major: ${String(major)}`);
136
93
  }
137
94
  //#endregion
138
- export { loadPGliteModule as a, subscribeReactorPgMajor as c, createFileDataStore as d, idbError as f, RELATIONAL_PGLITE_NAME as g, REACTOR_PGLITE_NAME as h, 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 };
95
+ export { resolvePgMajorForRuntime as a, idbError as c, loadPgDump as i, openIdb as l, isMigratableMajor as n, IDB_STORE_NAME as o, loadPGliteModule as r, createFileDataStore as s, coerceMajor as t, readPgVersionFile as u };
139
96
 
140
- //# sourceMappingURL=pglite-runtime-toc1-TWa.js.map
141
- //# debugId=8646820c-6f27-5ef6-a1f1-39f46bed434a
97
+ //# sourceMappingURL=pglite-major-B39aOEiE.js.map
98
+ //# debugId=ddbad278-3c18-5b56-abbb-371faa5f9b3a
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pglite-major-B39aOEiE.js","sources":["../src/utils/pglite-idb.ts","../src/utils/pglite-major.ts"],"sourcesContent":["export const IDB_STORE_NAME = \"FILE_DATA\";\nexport const IDB_DB_VERSION = 21;\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\";\n\nexport const CURRENT_PG_MAJOR = 17;\nexport const SUPPORTED_PG_MAJORS = [16, 17] as const;\nexport type SupportedPgMajor = (typeof SUPPORTED_PG_MAJORS)[number];\nexport type DetectedMajor = SupportedPgMajor | null;\n\ntype CurrentPGliteModule = typeof CurrentPGliteModuleNs;\n\nexport function 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 function isMigratableMajor(\n value: number | null,\n): value is SupportedPgMajor {\n const major = coerceMajor(value);\n return major !== null && major !== CURRENT_PG_MAJOR;\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":";;;AAAA,MAAa,iBAAiB;AAS9B,SAAgB,SACd,KACA,SACO;CACP,MAAM,QAAQ,IAAI,yBAAS,IAAI,MAAM,oBAAoB;AACzD,QAAO,IAAI,MAAM,GAAG,QAAQ,IAAI,MAAM,WAAW,EAAE,OAAO,CAAC;;AAG7D,SAAgB,gBAAgB,MAAgC;AAC9D,KAAI,OAAO,UAAU,cAAc,WACjC,QAAO,UACJ,WAAW,CACX,MAAM,QAAQ,IAAI,MAAM,MAAM,EAAE,SAAS,KAAK,CAAC,CAC/C,YAAY,KAAK;AAEtB,QAAO,QAAQ,QAAQ,KAAK;;AAG9B,SAAgB,QACd,MACA,SACA,SACsB;AACtB,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,MAAM,UAAU,KAAK,MAAM,QAAQ;AACzC,MAAI,gBAAgB,OAAO,SAAS,KAAK,uBAAuB,OAAO,CAAC;AACxE,MAAI,kBAAkB,uBAAO,IAAI,MAAM,wBAAwB,OAAO,CAAC;AACvE,MAAI,wBAAwB,UAAU,IAAI,OAAO;AACjD,MAAI,kBAAkB,QAAQ,IAAI,OAAO;GACzC;;AAGJ,SAAgB,oBAAoB,IAAuB;AACzD,KAAI,CAAC,GAAG,iBAAiB,SAAA,YAAwB,CACjC,IAAG,kBAAkB,eAAe,CAC5C,YAAY,aAAa,aAAa,EAAE,QAAQ,OAAO,CAAC;;AAIlE,eAAsB,kBACpB,SACwB;AACxB,KAAI,CAAE,MAAM,gBAAgB,QAAQ,CAAG,QAAO;CAC9C,IAAI;AACJ,KAAI;AACF,OAAK,MAAM,QAAQ,SAAA,IAAyB,oBAAoB;SAC1D;AACN,SAAO;;AAET,KAAI;AACF,MAAI,CAAC,GAAG,iBAAiB,SAAA,YAAwB,CAAE,QAAO;EAE1D,MAAM,QADK,GAAG,YAAY,gBAAgB,WAAW,CACpC,YAAY,eAAe;EAC5C,MAAM,QAAQ,MAAM,IAAI,SAA+B,SAAS,WAAW;GACzE,MAAM,MAAM,MAAM,YAAY;AAC9B,OAAI,gBACF,OAAO,SAAS,KAAK,+BAA+B,UAAU,CAAC;AACjE,OAAI,kBAAkB;IACpB,MAAM,SAAS,IAAI;AACnB,QAAI,CAAC,OAAQ,QAAO,QAAQ,KAAK;AAEjC,SADY,OAAO,OAAO,QAAQ,WAAW,OAAO,MAAM,IAClD,SAAS,cAAc,CAC7B,SAAQ,OAAO,MAAuB;QAEtC,QAAO,UAAU;;IAGrB;AACF,MAAI,CAAC,MAAO,QAAO;EACnB,MAAM,QACJ,MAAM,oBAAoB,aACtB,MAAM,WACN,IAAI,WAAW,MAAM,SAAS;EACpC,MAAM,OAAO,IAAI,aAAa,CAAC,OAAO,MAAM,CAAC,MAAM;EACnD,MAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,SAAO,OAAO,SAAS,MAAM,GAAG,QAAQ;WAChC;AACR,KAAG,OAAO;;;ACnFd,MAAa,sBAAsB,CAAC,IAAI,GAAG;AAM3C,SAAgB,YAAY,OAAqC;AAC/D,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAQ,oBAA0C,SAAS,MAAM,GAC5D,QACD;;AAGN,SAAgB,kBACd,OAC2B;CAC3B,MAAM,QAAQ,YAAY,MAAM;AAChC,QAAO,UAAU,QAAQ,UAAA;;;;;;AAO3B,SAAgB,yBACd,UACkB;AAClB,QAAO,YAAA;;;;;;;;;;AAWT,eAAsB,iBACpB,OAC8B;AAC9B,KAAI,UAAU,GACZ,QAAQ,MAAM,OAAO;AAEvB,KAAI,UAAU,GAAI,QAAO,OAAO;AAChC,OAAM,IAAI,MAAM,6BAA6B,OAAO,MAAM,GAAG;;;;;;;AAY/D,eAAsB,WAAW,OAA4C;AAC3E,KAAI,UAAU,GAIZ,SAHa,MAAM,OAAO,mCAGf;AAEb,KAAI,UAAU,GAIZ,SAHa,MAAM,OAAO,uCAGf;AAEb,OAAM,IAAI,MAAM,6BAA6B,OAAO,MAAM,GAAG","debug_id":"ddbad278-3c18-5b56-abbb-371faa5f9b3a"}
@@ -0,0 +1,143 @@
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]="5602ae27-0e93-52ce-93a2-befe343f87dd")}catch(e){}}();
3
+ import { c as idbError, l as openIdb, n as isMigratableMajor, o as IDB_STORE_NAME, s as createFileDataStore, u as readPgVersionFile } from "./pglite-major-B39aOEiE.js";
4
+ import { PGlite } from "@electric-sql/pglite";
5
+ //#region src/utils/pglite-migrate-core.ts
6
+ const LEGACY_DUMPERS = { 16: async () => {
7
+ const [{ PGlite: LegacyPGlite }, { pgDump }] = await Promise.all([import("pglite-legacy-02"), import("pglite-tools-legacy-02/pg_dump")]);
8
+ return async (idbName) => {
9
+ const pg = new LegacyPGlite(`idb://${idbName.replace(/^\/pglite\//, "")}`);
10
+ try {
11
+ await pg.waitReady;
12
+ return await (await pgDump({ pg })).text();
13
+ } finally {
14
+ await pg.close();
15
+ }
16
+ };
17
+ } };
18
+ async function clearFileData(idbName) {
19
+ const db = await openIdb(idbName, 21, createFileDataStore);
20
+ try {
21
+ await new Promise((resolve, reject) => {
22
+ const tx = db.transaction(IDB_STORE_NAME, "readwrite");
23
+ tx.oncomplete = () => resolve();
24
+ tx.onerror = () => reject(idbError(tx, `FILE_DATA clear failed for ${idbName}`));
25
+ tx.onabort = () => reject(idbError(tx, `FILE_DATA clear aborted for ${idbName}`));
26
+ tx.objectStore(IDB_STORE_NAME).clear();
27
+ });
28
+ } finally {
29
+ db.close();
30
+ }
31
+ }
32
+ async function readFileData(idbName) {
33
+ const db = await openIdb(idbName, 21, createFileDataStore);
34
+ try {
35
+ return await new Promise((resolve, reject) => {
36
+ const out = [];
37
+ const req = db.transaction(IDB_STORE_NAME, "readonly").objectStore(IDB_STORE_NAME).openCursor();
38
+ req.onerror = () => reject(idbError(req, `FILE_DATA read cursor failed for ${idbName}`));
39
+ req.onsuccess = () => {
40
+ const cursor = req.result;
41
+ if (!cursor) return resolve(out);
42
+ out.push({
43
+ key: cursor.key,
44
+ value: cursor.value
45
+ });
46
+ cursor.continue();
47
+ };
48
+ });
49
+ } finally {
50
+ db.close();
51
+ }
52
+ }
53
+ async function writeFileData(idbName, entries) {
54
+ const db = await openIdb(idbName, 21, createFileDataStore);
55
+ try {
56
+ await new Promise((resolve, reject) => {
57
+ const tx = db.transaction(IDB_STORE_NAME, "readwrite");
58
+ tx.oncomplete = () => resolve();
59
+ tx.onerror = () => reject(idbError(tx, `FILE_DATA write failed for ${idbName}`));
60
+ tx.onabort = () => reject(idbError(tx, `FILE_DATA write aborted for ${idbName}`));
61
+ const store = tx.objectStore(IDB_STORE_NAME);
62
+ store.clear();
63
+ for (const { key, value } of entries) store.put(value, key);
64
+ });
65
+ } finally {
66
+ db.close();
67
+ }
68
+ }
69
+ async function cloneFileData(sourceName, destName) {
70
+ await writeFileData(destName, await readFileData(sourceName));
71
+ }
72
+ function logRestoreFailure(idbName, sql, err) {
73
+ const errObj = err;
74
+ const position = typeof errObj.position === "string" ? parseInt(errObj.position, 10) : typeof errObj.position === "number" ? errObj.position : NaN;
75
+ console.error(`[pglite-migration] Restore failed for ${idbName}`, {
76
+ message: errObj.message,
77
+ code: errObj.code,
78
+ severity: errObj.severity,
79
+ detail: errObj.detail,
80
+ where: errObj.where,
81
+ position: errObj.position,
82
+ sqlLength: sql.length
83
+ });
84
+ if (Number.isFinite(position) && position > 0) {
85
+ const zeroBased = position - 1;
86
+ const start = Math.max(0, zeroBased - 200);
87
+ const end = Math.min(sql.length, zeroBased + 200);
88
+ console.error(`[pglite-migration] SQL context around position ${position}:\n${sql.slice(start, zeroBased)}»${sql.slice(zeroBased, zeroBased + 1)}«${sql.slice(zeroBased + 1, end)}`);
89
+ } else console.error(`[pglite-migration] No position info. First 2000 chars of dump:\n${sql.slice(0, 2e3)}`);
90
+ }
91
+ async function restoreDumpIntoIdb(idbName, sql) {
92
+ const pg = new PGlite(`idb://${idbName.replace(/^\/pglite\//, "")}`, { relaxedDurability: false });
93
+ try {
94
+ await pg.waitReady;
95
+ try {
96
+ await pg.exec("SET standard_conforming_strings = off;");
97
+ } catch (gucErr) {
98
+ console.warn("[pglite-migration] Could not force standard_conforming_strings=off", gucErr);
99
+ }
100
+ try {
101
+ await pg.exec(sql);
102
+ } catch (execErr) {
103
+ logRestoreFailure(idbName, sql, execErr);
104
+ throw execErr;
105
+ }
106
+ } finally {
107
+ await pg.close();
108
+ }
109
+ }
110
+ async function migrateIdb(idbName, publishPhase, backup) {
111
+ const major = await readPgVersionFile(idbName);
112
+ if (major === null || major === 17) return;
113
+ if (!isMigratableMajor(major)) {
114
+ console.warn(`[pglite-migration] Skipping ${idbName}: unsupported PG_VERSION=${major}; no migration path.`);
115
+ return;
116
+ }
117
+ const loader = LEGACY_DUMPERS[major];
118
+ if (!loader) throw new Error(`No legacy dumper for supported PG_VERSION=${major} (${idbName}); SUPPORTED_PG_MAJORS and LEGACY_DUMPERS are out of sync.`);
119
+ publishPhase("clone");
120
+ const handle = await backup.snapshot(idbName);
121
+ let sql;
122
+ try {
123
+ publishPhase("dump");
124
+ sql = await (await loader())(idbName);
125
+ } catch (err) {
126
+ await backup.discard(handle);
127
+ throw err;
128
+ }
129
+ try {
130
+ await clearFileData(idbName);
131
+ publishPhase("restore");
132
+ await restoreDumpIntoIdb(idbName, sql);
133
+ } catch (err) {
134
+ await backup.rollback(handle, idbName, err);
135
+ throw err;
136
+ }
137
+ await backup.commit(handle);
138
+ }
139
+ //#endregion
140
+ export { writeFileData as a, readFileData as i, cloneFileData as n, migrateIdb as r, clearFileData as t };
141
+
142
+ //# sourceMappingURL=pglite-migrate-core-Boxqqx-c.js.map
143
+ //# debugId=5602ae27-0e93-52ce-93a2-befe343f87dd
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pglite-migrate-core-Boxqqx-c.js","sources":["../src/utils/pglite-migrate-core.ts"],"sourcesContent":["import { PGlite } from \"@electric-sql/pglite\";\nimport {\n createFileDataStore,\n IDB_DB_VERSION,\n IDB_STORE_NAME,\n idbError,\n openIdb,\n readPgVersionFile,\n} from \"./pglite-idb.js\";\nimport { CURRENT_PG_MAJOR, isMigratableMajor } from \"./pglite-major.js\";\n\nexport type MigrationPhase = \"clone\" | \"dump\" | \"restore\";\n\nexport type FileDataValue = {\n contents: Uint8Array | number[];\n mode: number;\n timestamp: Date | number;\n};\n\nexport type FileDataEntry = { key: IDBValidKey; value: FileDataValue };\n\n// Snapshots a data dir before migration and restores/discards it after. The\n// flag-off path persists to an IDB backup (with retention); the worker keeps\n// the snapshot in memory for same-run rollback only.\nexport interface BackupStrategy {\n snapshot(idbName: string): Promise<unknown>;\n rollback(handle: unknown, idbName: string, cause: unknown): Promise<void>;\n discard(handle: unknown): Promise<void>;\n commit(handle: unknown): Promise<void>;\n}\n\ntype LegacyDumper = (idbName: string) => Promise<string>;\n\nconst LEGACY_DUMPERS: Partial<Record<number, () => Promise<LegacyDumper>>> = {\n 16: async () => {\n const [{ PGlite: LegacyPGlite }, { pgDump }] = await Promise.all([\n import(\"pglite-legacy-02\"),\n import(\"pglite-tools-legacy-02/pg_dump\"),\n ]);\n return async (idbName: string) => {\n const stripped = idbName.replace(/^\\/pglite\\//, \"\");\n const pg = new LegacyPGlite(`idb://${stripped}`);\n try {\n await pg.waitReady;\n const file = await pgDump({ pg });\n return await file.text();\n } finally {\n await pg.close();\n }\n };\n },\n};\n\nexport async function clearFileData(idbName: string): Promise<void> {\n const db = await openIdb(idbName, IDB_DB_VERSION, createFileDataStore);\n try {\n await new Promise<void>((resolve, reject) => {\n const tx = db.transaction(IDB_STORE_NAME, \"readwrite\");\n tx.oncomplete = () => resolve();\n tx.onerror = () =>\n reject(idbError(tx, `FILE_DATA clear failed for ${idbName}`));\n tx.onabort = () =>\n reject(idbError(tx, `FILE_DATA clear aborted for ${idbName}`));\n tx.objectStore(IDB_STORE_NAME).clear();\n });\n } finally {\n db.close();\n }\n}\n\nexport async function readFileData(idbName: string): Promise<FileDataEntry[]> {\n const db = await openIdb(idbName, IDB_DB_VERSION, createFileDataStore);\n try {\n return await new Promise<FileDataEntry[]>((resolve, reject) => {\n const out: FileDataEntry[] = [];\n const req = db\n .transaction(IDB_STORE_NAME, \"readonly\")\n .objectStore(IDB_STORE_NAME)\n .openCursor();\n req.onerror = () =>\n reject(idbError(req, `FILE_DATA read cursor failed for ${idbName}`));\n req.onsuccess = () => {\n const cursor = req.result;\n if (!cursor) return resolve(out);\n out.push({ key: cursor.key, value: cursor.value as FileDataValue });\n cursor.continue();\n };\n });\n } finally {\n db.close();\n }\n}\n\nexport async function writeFileData(\n idbName: string,\n entries: FileDataEntry[],\n): Promise<void> {\n const db = await openIdb(idbName, IDB_DB_VERSION, createFileDataStore);\n try {\n await new Promise<void>((resolve, reject) => {\n const tx = db.transaction(IDB_STORE_NAME, \"readwrite\");\n tx.oncomplete = () => resolve();\n tx.onerror = () =>\n reject(idbError(tx, `FILE_DATA write failed for ${idbName}`));\n tx.onabort = () =>\n reject(idbError(tx, `FILE_DATA write aborted for ${idbName}`));\n const store = tx.objectStore(IDB_STORE_NAME);\n store.clear();\n for (const { key, value } of entries) {\n store.put(value, key);\n }\n });\n } finally {\n db.close();\n }\n}\n\nexport async function cloneFileData(\n sourceName: string,\n destName: string,\n): Promise<void> {\n await writeFileData(destName, await readFileData(sourceName));\n}\n\nfunction logRestoreFailure(idbName: string, sql: string, err: unknown): void {\n const errObj = err as {\n message?: string;\n position?: string | number;\n severity?: string;\n code?: string;\n detail?: string;\n where?: string;\n };\n const position =\n typeof errObj.position === \"string\"\n ? parseInt(errObj.position, 10)\n : typeof errObj.position === \"number\"\n ? errObj.position\n : NaN;\n\n console.error(`[pglite-migration] Restore failed for ${idbName}`, {\n message: errObj.message,\n code: errObj.code,\n severity: errObj.severity,\n detail: errObj.detail,\n where: errObj.where,\n position: errObj.position,\n sqlLength: sql.length,\n });\n\n if (Number.isFinite(position) && position > 0) {\n const zeroBased = position - 1;\n const start = Math.max(0, zeroBased - 200);\n const end = Math.min(sql.length, zeroBased + 200);\n console.error(\n `[pglite-migration] SQL context around position ${position}:\\n${sql.slice(start, zeroBased)}»${sql.slice(zeroBased, zeroBased + 1)}«${sql.slice(zeroBased + 1, end)}`,\n );\n } else {\n console.error(\n `[pglite-migration] No position info. First 2000 chars of dump:\\n${sql.slice(0, 2000)}`,\n );\n }\n}\n\nasync function restoreDumpIntoIdb(idbName: string, sql: string): Promise<void> {\n const stripped = idbName.replace(/^\\/pglite\\//, \"\");\n const pg = new PGlite(`idb://${stripped}`, { relaxedDurability: false });\n try {\n await pg.waitReady;\n // PG16 pg_dump emits doubled backslashes (escape-string form) without the\n // matching SET; PG17 defaults standard_conforming_strings on, breaking JSONB.\n try {\n await pg.exec(\"SET standard_conforming_strings = off;\");\n } catch (gucErr) {\n console.warn(\n \"[pglite-migration] Could not force standard_conforming_strings=off\",\n gucErr,\n );\n }\n try {\n await pg.exec(sql);\n } catch (execErr) {\n logRestoreFailure(idbName, sql, execErr);\n throw execErr;\n }\n } finally {\n await pg.close();\n }\n}\n\nexport async function migrateIdb(\n idbName: string,\n publishPhase: (phase: MigrationPhase) => void,\n backup: BackupStrategy,\n): Promise<void> {\n const major = await readPgVersionFile(idbName);\n if (major === null || major === CURRENT_PG_MAJOR) return;\n\n if (!isMigratableMajor(major)) {\n console.warn(\n `[pglite-migration] Skipping ${idbName}: unsupported PG_VERSION=${major}; no migration path.`,\n );\n return;\n }\n\n const loader = LEGACY_DUMPERS[major];\n if (!loader) {\n throw new Error(\n `No legacy dumper for supported PG_VERSION=${major} (${idbName}); ` +\n `SUPPORTED_PG_MAJORS and LEGACY_DUMPERS are out of sync.`,\n );\n }\n\n publishPhase(\"clone\");\n const handle = await backup.snapshot(idbName);\n\n let sql: string;\n try {\n publishPhase(\"dump\");\n const dump = await loader();\n sql = await dump(idbName);\n } catch (err) {\n await backup.discard(handle);\n throw err;\n }\n\n try {\n await clearFileData(idbName);\n publishPhase(\"restore\");\n await restoreDumpIntoIdb(idbName, sql);\n } catch (err) {\n await backup.rollback(handle, idbName, err);\n throw err;\n }\n await backup.commit(handle);\n}\n"],"names":[],"mappings":";;;;;AAiCA,MAAM,iBAAuE,EAC3E,IAAI,YAAY;CACd,MAAM,CAAC,EAAE,QAAQ,gBAAgB,EAAE,YAAY,MAAM,QAAQ,IAAI,CAC/D,OAAO,qBACP,OAAO,kCACR,CAAC;AACF,QAAO,OAAO,YAAoB;EAEhC,MAAM,KAAK,IAAI,aAAa,SADX,QAAQ,QAAQ,eAAe,GAAG,GACH;AAChD,MAAI;AACF,SAAM,GAAG;AAET,UAAO,OADM,MAAM,OAAO,EAAE,IAAI,CAAC,EACf,MAAM;YAChB;AACR,SAAM,GAAG,OAAO;;;GAIvB;AAED,eAAsB,cAAc,SAAgC;CAClE,MAAM,KAAK,MAAM,QAAQ,SAAA,IAAyB,oBAAoB;AACtE,KAAI;AACF,QAAM,IAAI,SAAe,SAAS,WAAW;GAC3C,MAAM,KAAK,GAAG,YAAY,gBAAgB,YAAY;AACtD,MAAG,mBAAmB,SAAS;AAC/B,MAAG,gBACD,OAAO,SAAS,IAAI,8BAA8B,UAAU,CAAC;AAC/D,MAAG,gBACD,OAAO,SAAS,IAAI,+BAA+B,UAAU,CAAC;AAChE,MAAG,YAAY,eAAe,CAAC,OAAO;IACtC;WACM;AACR,KAAG,OAAO;;;AAId,eAAsB,aAAa,SAA2C;CAC5E,MAAM,KAAK,MAAM,QAAQ,SAAA,IAAyB,oBAAoB;AACtE,KAAI;AACF,SAAO,MAAM,IAAI,SAA0B,SAAS,WAAW;GAC7D,MAAM,MAAuB,EAAE;GAC/B,MAAM,MAAM,GACT,YAAY,gBAAgB,WAAW,CACvC,YAAY,eAAe,CAC3B,YAAY;AACf,OAAI,gBACF,OAAO,SAAS,KAAK,oCAAoC,UAAU,CAAC;AACtE,OAAI,kBAAkB;IACpB,MAAM,SAAS,IAAI;AACnB,QAAI,CAAC,OAAQ,QAAO,QAAQ,IAAI;AAChC,QAAI,KAAK;KAAE,KAAK,OAAO;KAAK,OAAO,OAAO;KAAwB,CAAC;AACnE,WAAO,UAAU;;IAEnB;WACM;AACR,KAAG,OAAO;;;AAId,eAAsB,cACpB,SACA,SACe;CACf,MAAM,KAAK,MAAM,QAAQ,SAAA,IAAyB,oBAAoB;AACtE,KAAI;AACF,QAAM,IAAI,SAAe,SAAS,WAAW;GAC3C,MAAM,KAAK,GAAG,YAAY,gBAAgB,YAAY;AACtD,MAAG,mBAAmB,SAAS;AAC/B,MAAG,gBACD,OAAO,SAAS,IAAI,8BAA8B,UAAU,CAAC;AAC/D,MAAG,gBACD,OAAO,SAAS,IAAI,+BAA+B,UAAU,CAAC;GAChE,MAAM,QAAQ,GAAG,YAAY,eAAe;AAC5C,SAAM,OAAO;AACb,QAAK,MAAM,EAAE,KAAK,WAAW,QAC3B,OAAM,IAAI,OAAO,IAAI;IAEvB;WACM;AACR,KAAG,OAAO;;;AAId,eAAsB,cACpB,YACA,UACe;AACf,OAAM,cAAc,UAAU,MAAM,aAAa,WAAW,CAAC;;AAG/D,SAAS,kBAAkB,SAAiB,KAAa,KAAoB;CAC3E,MAAM,SAAS;CAQf,MAAM,WACJ,OAAO,OAAO,aAAa,WACvB,SAAS,OAAO,UAAU,GAAG,GAC7B,OAAO,OAAO,aAAa,WACzB,OAAO,WACP;AAER,SAAQ,MAAM,yCAAyC,WAAW;EAChE,SAAS,OAAO;EAChB,MAAM,OAAO;EACb,UAAU,OAAO;EACjB,QAAQ,OAAO;EACf,OAAO,OAAO;EACd,UAAU,OAAO;EACjB,WAAW,IAAI;EAChB,CAAC;AAEF,KAAI,OAAO,SAAS,SAAS,IAAI,WAAW,GAAG;EAC7C,MAAM,YAAY,WAAW;EAC7B,MAAM,QAAQ,KAAK,IAAI,GAAG,YAAY,IAAI;EAC1C,MAAM,MAAM,KAAK,IAAI,IAAI,QAAQ,YAAY,IAAI;AACjD,UAAQ,MACN,kDAAkD,SAAS,KAAK,IAAI,MAAM,OAAO,UAAU,CAAC,GAAG,IAAI,MAAM,WAAW,YAAY,EAAE,CAAC,GAAG,IAAI,MAAM,YAAY,GAAG,IAAI,GACpK;OAED,SAAQ,MACN,mEAAmE,IAAI,MAAM,GAAG,IAAK,GACtF;;AAIL,eAAe,mBAAmB,SAAiB,KAA4B;CAE7E,MAAM,KAAK,IAAI,OAAO,SADL,QAAQ,QAAQ,eAAe,GAAG,IACR,EAAE,mBAAmB,OAAO,CAAC;AACxE,KAAI;AACF,QAAM,GAAG;AAGT,MAAI;AACF,SAAM,GAAG,KAAK,yCAAyC;WAChD,QAAQ;AACf,WAAQ,KACN,sEACA,OACD;;AAEH,MAAI;AACF,SAAM,GAAG,KAAK,IAAI;WACX,SAAS;AAChB,qBAAkB,SAAS,KAAK,QAAQ;AACxC,SAAM;;WAEA;AACR,QAAM,GAAG,OAAO;;;AAIpB,eAAsB,WACpB,SACA,cACA,QACe;CACf,MAAM,QAAQ,MAAM,kBAAkB,QAAQ;AAC9C,KAAI,UAAU,QAAQ,UAAA,GAA4B;AAElD,KAAI,CAAC,kBAAkB,MAAM,EAAE;AAC7B,UAAQ,KACN,+BAA+B,QAAQ,2BAA2B,MAAM,sBACzE;AACD;;CAGF,MAAM,SAAS,eAAe;AAC9B,KAAI,CAAC,OACH,OAAM,IAAI,MACR,6CAA6C,MAAM,IAAI,QAAQ,4DAEhE;AAGH,cAAa,QAAQ;CACrB,MAAM,SAAS,MAAM,OAAO,SAAS,QAAQ;CAE7C,IAAI;AACJ,KAAI;AACF,eAAa,OAAO;AAEpB,QAAM,OADO,MAAM,QAAQ,EACV,QAAQ;UAClB,KAAK;AACZ,QAAM,OAAO,QAAQ,OAAO;AAC5B,QAAM;;AAGR,KAAI;AACF,QAAM,cAAc,QAAQ;AAC5B,eAAa,UAAU;AACvB,QAAM,mBAAmB,SAAS,IAAI;UAC/B,KAAK;AACZ,QAAM,OAAO,SAAS,QAAQ,SAAS,IAAI;AAC3C,QAAM;;AAER,OAAM,OAAO,OAAO,OAAO","debug_id":"5602ae27-0e93-52ce-93a2-befe343f87dd"}
@@ -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]="ff4aaa54-46c4-5a4e-8cea-21e6aab9e806")}catch(e){}}();
3
- import { h as REACTOR_PGLITE_NAME, i as invalidateReactorPgMajorCache } from "./pglite-runtime-toc1-TWa.js";
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]="054edf7c-d911-591f-b470-f06f43e45b93")}catch(e){}}();
3
+ import { l as invalidateReactorPgMajorCache, m as REACTOR_PGLITE_NAME } from "./connection-state-Cig644T0.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-D8oSKkep.js.map
49
- //# debugId=ff4aaa54-46c4-5a4e-8cea-21e6aab9e806
48
+ //# sourceMappingURL=pglite-seed-9rjhdCs5.js.map
49
+ //# debugId=054edf7c-d911-591f-b470-f06f43e45b93
@@ -1 +1 @@
1
- {"version":3,"file":"pglite-seed-D8oSKkep.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":"ff4aaa54-46c4-5a4e-8cea-21e6aab9e806"}
1
+ {"version":3,"file":"pglite-seed-9rjhdCs5.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":"054edf7c-d911-591f-b470-f06f43e45b93"}