@powerhousedao/connect 6.2.3-dev.3 → 6.2.3-dev.31

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 (118) hide show
  1. package/dist/{AddDriveModal-Q-Ffh5XA.js → AddDriveModal-DhNfP94R.js} +6 -21
  2. package/dist/AddDriveModal-DhNfP94R.js.map +1 -0
  3. package/dist/{ClearStorageModal-DJXGvVAy.js → ClearStorageModal-a7dk64ub.js} +5 -5
  4. package/dist/{ClearStorageModal-DJXGvVAy.js.map → ClearStorageModal-a7dk64ub.js.map} +1 -1
  5. package/dist/{ConfirmDocumentUpgradeModal-FUOhZsk7.js → ConfirmDocumentUpgradeModal-DcOZy20m.js} +8 -7
  6. package/dist/{ConfirmDocumentUpgradeModal-FUOhZsk7.js.map → ConfirmDocumentUpgradeModal-DcOZy20m.js.map} +1 -1
  7. package/dist/{CookiesPolicyModal-BpyPPyxS.js → CookiesPolicyModal-BLw4pnhn.js} +4 -4
  8. package/dist/{CookiesPolicyModal-BpyPPyxS.js.map → CookiesPolicyModal-BLw4pnhn.js.map} +1 -1
  9. package/dist/{CreateDocumentModal-C45W8J0V.js → CreateDocumentModal-Bmv0V-kY.js} +6 -5
  10. package/dist/{CreateDocumentModal-C45W8J0V.js.map → CreateDocumentModal-Bmv0V-kY.js.map} +1 -1
  11. package/dist/{DebugSettingsModal-BomehG-z.js → DebugSettingsModal-D_S1LnBH.js} +7 -7
  12. package/dist/{DebugSettingsModal-BomehG-z.js.map → DebugSettingsModal-D_S1LnBH.js.map} +1 -1
  13. package/dist/{DeleteDriveModal-Dug84t1j.js → DeleteDriveModal-CjGnG0ht.js} +5 -5
  14. package/dist/{DeleteDriveModal-Dug84t1j.js.map → DeleteDriveModal-CjGnG0ht.js.map} +1 -1
  15. package/dist/{DeleteItemModal-mMzy3V8o.js → DeleteItemModal-BbY_4_xT.js} +5 -5
  16. package/dist/{DeleteItemModal-mMzy3V8o.js.map → DeleteItemModal-BbY_4_xT.js.map} +1 -1
  17. package/dist/{DisclaimerModal-DvpD5dPM.js → DisclaimerModal-DuglmEwL.js} +4 -4
  18. package/dist/{DisclaimerModal-DvpD5dPM.js.map → DisclaimerModal-DuglmEwL.js.map} +1 -1
  19. package/dist/{DocumentVersionUnsupportedModal-C3Q0V75l.js → DocumentVersionUnsupportedModal-C4fy7fZ6.js} +4 -4
  20. package/dist/{DocumentVersionUnsupportedModal-C3Q0V75l.js.map → DocumentVersionUnsupportedModal-C4fy7fZ6.js.map} +1 -1
  21. package/dist/{DownloadDocumentWithErrorsModal-IKl0ljQb.js → DownloadDocumentWithErrorsModal-BsPQ5qgy.js} +6 -5
  22. package/dist/{DownloadDocumentWithErrorsModal-IKl0ljQb.js.map → DownloadDocumentWithErrorsModal-BsPQ5qgy.js.map} +1 -1
  23. package/dist/{DriveAuthRequiredModal-Cw9eCAQ_.js → DriveAuthRequiredModal-CtsB0kwH.js} +19 -7
  24. package/dist/DriveAuthRequiredModal-CtsB0kwH.js.map +1 -0
  25. package/dist/{DriveSettingsModal-C6-mRQiv.js → DriveSettingsModal-d1L0eYof.js} +4 -4
  26. package/dist/{DriveSettingsModal-C6-mRQiv.js.map → DriveSettingsModal-d1L0eYof.js.map} +1 -1
  27. package/dist/{InspectorModal-CEV4kwcd.js → InspectorModal-sOCQEpKA.js} +12 -10
  28. package/dist/{InspectorModal-CEV4kwcd.js.map → InspectorModal-sOCQEpKA.js.map} +1 -1
  29. package/dist/{LoginModal-CybbOm3N.js → LoginModal-CI0ogC2-.js} +5 -5
  30. package/dist/{LoginModal-CybbOm3N.js.map → LoginModal-CI0ogC2-.js.map} +1 -1
  31. package/dist/{MissingPackageModal-nBnExqO0.js → MissingPackageModal-HFUPQMML.js} +5 -5
  32. package/dist/{MissingPackageModal-nBnExqO0.js.map → MissingPackageModal-HFUPQMML.js.map} +1 -1
  33. package/dist/{OpenFileDocumentsModal-EhXtaNVb.js → OpenFileDocumentsModal-tCrGCLLF.js} +8 -7
  34. package/dist/{OpenFileDocumentsModal-EhXtaNVb.js.map → OpenFileDocumentsModal-tCrGCLLF.js.map} +1 -1
  35. package/dist/{SettingsModal-Celp-x5H.js → SettingsModal-BnQVmt3Z.js} +17 -15
  36. package/dist/{SettingsModal-Celp-x5H.js.map → SettingsModal-BnQVmt3Z.js.map} +1 -1
  37. package/dist/{UpgradeDriveModal-_8t9slxQ.js → UpgradeDriveModal-CXX6D5Au.js} +4 -4
  38. package/dist/{UpgradeDriveModal-_8t9slxQ.js.map → UpgradeDriveModal-CXX6D5Au.js.map} +1 -1
  39. package/dist/{app-loader-wq-dOkb0.js → app-loader-D5-KfjU4.js} +1213 -1136
  40. package/dist/app-loader-D5-KfjU4.js.map +1 -0
  41. package/dist/app-loader-DmJ10OyR.js +4 -0
  42. package/dist/app-skeleton--Me5zlSz.js +112 -0
  43. package/dist/app-skeleton--Me5zlSz.js.map +1 -0
  44. package/dist/app-skeleton-CBN4tenZ.js +4 -0
  45. package/dist/boot-DPNEOI2A.js +210 -0
  46. package/dist/boot-DPNEOI2A.js.map +1 -0
  47. package/dist/buffer-DNTcuap_.js +66 -0
  48. package/dist/buffer-DNTcuap_.js.map +1 -0
  49. package/dist/{build-info-Bc36ZmXD.js → build-info-B31oFKR6.js} +5 -5
  50. package/dist/{build-info-Bc36ZmXD.js.map → build-info-B31oFKR6.js.map} +1 -1
  51. package/dist/components-e-CRRtTY.js +5 -0
  52. package/dist/{connect.config-DaHDEUrw.js → connect.config-Dgs13R1s.js} +7 -6
  53. package/dist/{connect.config-DaHDEUrw.js.map → connect.config-Dgs13R1s.js.map} +1 -1
  54. package/dist/{connection-state-3w4liC1X.js → connection-state-Cy8xRCm_.js} +6 -6
  55. package/dist/{connection-state-3w4liC1X.js.map → connection-state-Cy8xRCm_.js.map} +1 -1
  56. package/dist/{cookie-banner-BH6bIq24.js → cookie-banner-CSF930bl.js} +6 -6
  57. package/dist/{cookie-banner-BH6bIq24.js.map → cookie-banner-CSF930bl.js.map} +1 -1
  58. package/dist/{i18n-CWO0vYVd.js → i18n-CTgT1HG-.js} +3 -3
  59. package/dist/{i18n-CWO0vYVd.js.map → i18n-CTgT1HG-.js.map} +1 -1
  60. package/dist/{load-CognkhXK.js → load-B7_AbI5f.js} +13 -11
  61. package/dist/{load-CognkhXK.js.map → load-B7_AbI5f.js.map} +1 -1
  62. package/dist/main.d.ts +2 -1
  63. package/dist/main.js +8 -8
  64. package/dist/main.js.map +1 -1
  65. package/dist/package-manager-BbzIV9aN.js +485 -0
  66. package/dist/package-manager-BbzIV9aN.js.map +1 -0
  67. package/dist/{pglite-major-B39aOEiE.js → pglite-major-BbmMK26m.js} +3 -3
  68. package/dist/{pglite-major-B39aOEiE.js.map → pglite-major-BbmMK26m.js.map} +1 -1
  69. package/dist/{pglite-migrate-core-Boxqqx-c.js → pglite-migrate-core-o88cWesm.js} +8 -6
  70. package/dist/{pglite-migrate-core-Boxqqx-c.js.map → pglite-migrate-core-o88cWesm.js.map} +1 -1
  71. package/dist/{pglite-seed-BqAUvNFw.js → pglite-seed-D6fqQApT.js} +4 -4
  72. package/dist/{pglite-seed-BqAUvNFw.js.map → pglite-seed-D6fqQApT.js.map} +1 -1
  73. package/dist/pglite.worker.d.ts +2 -1
  74. package/dist/pglite.worker.js +4 -3
  75. package/dist/pglite.worker.js.map +1 -1
  76. package/dist/pglite.worker.legacy.d.ts +2 -1
  77. package/dist/pglite.worker.legacy.js +4 -3
  78. package/dist/pglite.worker.legacy.js.map +1 -1
  79. package/dist/{preferences-store-_5Cw4_YV.js → preferences-store-Bekp7tv-.js} +6 -25
  80. package/dist/preferences-store-Bekp7tv-.js.map +1 -0
  81. package/dist/{pwa-manifest-link-DIgOSo2Q.js → pwa-manifest-link-DQRJpF0r.js} +3 -3
  82. package/dist/{pwa-manifest-link-DIgOSo2Q.js.map → pwa-manifest-link-DQRJpF0r.js.map} +1 -1
  83. package/dist/{reactor-CSAxliEy.js → reactor-BmQPQNmi.js} +56 -435
  84. package/dist/reactor-BmQPQNmi.js.map +1 -0
  85. package/dist/reactor.worker.d.ts +2 -1
  86. package/dist/reactor.worker.js +48 -20
  87. package/dist/reactor.worker.js.map +1 -1
  88. package/dist/{registerServiceWorker-BSzbNfvz.js → registerServiceWorker-Cy1G2rCq.js} +5 -5
  89. package/dist/{registerServiceWorker-BSzbNfvz.js.map → registerServiceWorker-Cy1G2rCq.js.map} +1 -1
  90. package/dist/renown-trust-DRgHpxlZ.js +34 -0
  91. package/dist/renown-trust-DRgHpxlZ.js.map +1 -0
  92. package/dist/{runtime-config-DL3QjcfM.js → runtime-config-DtJIUgYw.js} +3 -3
  93. package/dist/{runtime-config-DL3QjcfM.js.map → runtime-config-DtJIUgYw.js.map} +1 -1
  94. package/dist/{sentry-QXKgQmr2.js → sentry-jfDyrxdX.js} +3 -3
  95. package/dist/{sentry-QXKgQmr2.js.map → sentry-jfDyrxdX.js.map} +1 -1
  96. package/dist/start-connect.d.ts +4 -5
  97. package/dist/start-connect.d.ts.map +1 -1
  98. package/dist/start-connect.js +6 -8
  99. package/dist/start-connect.js.map +1 -1
  100. package/dist/style.css +2910 -1
  101. package/dist/{toast-BXIGd4Eb.js → toast-C6WW-_O-.js} +3 -3
  102. package/dist/{toast-BXIGd4Eb.js.map → toast-C6WW-_O-.js.map} +1 -1
  103. package/dist/{use-renown-login-Cf3va6u_.js → use-renown-login-BzOSQETV.js} +3 -3
  104. package/dist/{use-renown-login-Cf3va6u_.js.map → use-renown-login-BzOSQETV.js.map} +1 -1
  105. package/dist/useIsEmbedded-BWJ0qb7w.js +26 -0
  106. package/dist/useIsEmbedded-BWJ0qb7w.js.map +1 -0
  107. package/dist/{useRegistryPackages-BnUcL_nZ.js → useRegistryPackages-DuoU75ap.js} +73 -10
  108. package/dist/useRegistryPackages-DuoU75ap.js.map +1 -0
  109. package/package.json +19 -19
  110. package/style.css +7 -5
  111. package/dist/AddDriveModal-Q-Ffh5XA.js.map +0 -1
  112. package/dist/DriveAuthRequiredModal-Cw9eCAQ_.js.map +0 -1
  113. package/dist/app-loader-BslURZCB.js +0 -4
  114. package/dist/app-loader-wq-dOkb0.js.map +0 -1
  115. package/dist/components-ChVjT238.js +0 -4
  116. package/dist/preferences-store-_5Cw4_YV.js.map +0 -1
  117. package/dist/reactor-CSAxliEy.js.map +0 -1
  118. package/dist/useRegistryPackages-BnUcL_nZ.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]="d9aeb3c5-0107-5278-ada0-6d670749006d")}catch(e){}}();
3
- import { n as getRuntimeConfig } from "./runtime-config-DL3QjcfM.js";
4
- import { a as resolvePgMajorForRuntime, r as loadPGliteModule } from "./pglite-major-B39aOEiE.js";
5
- import { i as getVersion, n as getGitSha } from "./build-info-Bc36ZmXD.js";
6
- import { n as buildPHGlobalConfig, o as phGlobalConfig } from "./connect.config-DaHDEUrw.js";
7
- import { t as refreshPwaManifestLink } from "./pwa-manifest-link-DIgOSo2Q.js";
8
- import { a as detectReactorPgMajor, h as RELATIONAL_PGLITE_NAME, m as REACTOR_PGLITE_NAME, n as setWorkerConnectionStatus, o as detectRelationalPgMajor, p as REACTOR_INSTANCE_NAMESPACE } from "./connection-state-3w4liC1X.js";
9
- import { r as toast } from "./toast-BXIGd4Eb.js";
10
- import { PWA_IDB_KEY, PWA_IDB_NAME, PWA_IDB_STORE, PWA_IDB_VERSION, mergePwaConfig, withInferredCategory } from "@powerhousedao/shared/connect";
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]="09a0862d-f5b1-5deb-bbd8-b1524cb1b375")}catch(e){}}();
3
+ import { n as getRuntimeConfig } from "./runtime-config-DtJIUgYw.js";
4
+ import { t as createConnectSignerConfig } from "./renown-trust-DRgHpxlZ.js";
5
+ import { a as resolvePgMajorForRuntime, r as loadPGliteModule } from "./pglite-major-BbmMK26m.js";
6
+ import { n as buildPHGlobalConfig, o as phGlobalConfig, r as connectConfig } from "./connect.config-Dgs13R1s.js";
7
+ import { r as toast } from "./toast-C6WW-_O-.js";
8
+ import { r as getSharedDeps, t as BrowserPackageManager } from "./package-manager-BbzIV9aN.js";
9
+ import { i as getVersion, n as getGitSha } from "./build-info-B31oFKR6.js";
10
+ import { a as detectReactorPgMajor, h as RELATIONAL_PGLITE_NAME, m as REACTOR_PGLITE_NAME, n as setWorkerConnectionStatus, o as detectRelationalPgMajor, p as REACTOR_INSTANCE_NAMESPACE } from "./connection-state-Cy8xRCm_.js";
11
11
  import { createRelationalDb } from "@powerhousedao/shared/processors";
12
12
  import { DocumentModelRegistry, DocumentModelResolver, ReactorEventTypes, createReactorHostModuleBase } from "@powerhousedao/reactor";
13
13
  import { MessageRouter, RPC_PROTOCOL_VERSION, SyncManagerProxy, connectReactorClient, createInspectorProxy, createPortTransport, createReactorEventBusProxy, createRelationalPgliteProxy, createWorkerAdminClient, postReactorIdentity } from "@powerhousedao/reactor-browser/rpc";
@@ -15,90 +15,9 @@ import { Kysely } from "kysely";
15
15
  import { PGliteDialect } from "kysely-pglite-dialect";
16
16
  import { BrowserLocalStorage, ChannelScheme as ChannelScheme$1, DRIVE_DOCUMENT_TYPES, DocumentCache, DocumentChangeType, ReactorBuilder as ReactorBuilder$1, ReactorClientBuilder as ReactorClientBuilder$1, RegistryClient, addDrive, addPHEventHandlers, addRemoteDrive, createAnalyticsStore, extractDriveSlugFromPath, extractNodeSlugFromPath, getDrives, isDriveAuthError, login, refreshReactorDataClient, setAttachmentService, setDefaultPHGlobalConfig, setDocumentCache, setDriveMetadata, setDrives, setFeatures, setPGliteDB, setPHToast, setPackageDiscoveryService, setReactorClient, setReactorClientModule, setRenown, setSelectedDrive, setSelectedNode, setVetraPackageManager, waitForDocumentReady } from "@powerhousedao/reactor-browser";
17
17
  import { ConsoleLogger, logger, setLogLevel as setLogLevel$1 } from "document-model";
18
- import { BrowserKeyStorage, RenownBuilder, RenownCryptoBuilder, createSignatureVerifier } from "@renown/sdk";
19
- import { PwaConfigSchema } from "@powerhousedao/shared/document-model";
20
18
  import { createAttachmentClient, createRemoteAttachmentService, createXhrUploadTransport } from "@powerhousedao/reactor-attachments/client";
19
+ import { BrowserKeyStorage, RenownBuilder, RenownCryptoBuilder } from "@renown/sdk";
21
20
  import { OpenFeature } from "@openfeature/web-sdk";
22
- import * as common from "@powerhousedao/powerhouse-vetra-packages";
23
- import commonPkg from "@powerhousedao/powerhouse-vetra-packages/package.json" with { type: "json" };
24
- import { toCdnUrl } from "@powerhousedao/shared/registry/urls";
25
- import vetraPkg from "@powerhousedao/vetra/package.json" with { type: "json" };
26
- //#region src/utils/pwa-idb.ts
27
- function openPwaIdb() {
28
- return new Promise((resolve, reject) => {
29
- const req = indexedDB.open(PWA_IDB_NAME, PWA_IDB_VERSION);
30
- req.onupgradeneeded = () => {
31
- if (!req.result.objectStoreNames.contains(PWA_IDB_STORE)) req.result.createObjectStore(PWA_IDB_STORE);
32
- };
33
- req.onerror = () => reject(req.error ?? /* @__PURE__ */ new Error("ph-pwa open failed"));
34
- req.onblocked = () => reject(/* @__PURE__ */ new Error("ph-pwa open blocked"));
35
- req.onsuccess = () => resolve(req.result);
36
- });
37
- }
38
- /** Write (replace) the single merged fragment record. Best-effort: a failure to
39
- * mirror the manifest must never break package installation, so callers ignore
40
- * rejections. No-op when IndexedDB is unavailable (SSR/tests). */
41
- async function writeMergedPwaFragment(fragment) {
42
- if (typeof indexedDB === "undefined") return;
43
- const db = await openPwaIdb();
44
- try {
45
- await new Promise((resolve, reject) => {
46
- const tx = db.transaction(PWA_IDB_STORE, "readwrite");
47
- tx.oncomplete = () => resolve();
48
- tx.onerror = () => reject(tx.error ?? /* @__PURE__ */ new Error("PWA fragment write failed"));
49
- tx.objectStore(PWA_IDB_STORE).put({
50
- version: 1,
51
- fragment,
52
- updatedAt: Date.now()
53
- }, PWA_IDB_KEY);
54
- });
55
- } finally {
56
- db.close();
57
- }
58
- }
59
- /** Resolve `src` against the package `baseUrl`, absolute srcs passing through.
60
- * `baseUrl` may itself be relative (e.g. a same-origin-proxied registry, or the
61
- * dev `/node_modules/…` path), so it is first made absolute against the app
62
- * origin — `new URL(src, relativeBase)` would otherwise throw and silently
63
- * leave the src unresolved. A malformed src is left untouched. */
64
- function toAbsoluteAssetUrl(src, baseUrl) {
65
- try {
66
- const origin = typeof location !== "undefined" ? location.href : "http://localhost/";
67
- return new URL(src, new URL(baseUrl, origin)).toString();
68
- } catch {
69
- return src;
70
- }
71
- }
72
- function resolveIconSrc(icon, baseUrl) {
73
- return {
74
- ...icon,
75
- src: toAbsoluteAssetUrl(icon.src, baseUrl)
76
- };
77
- }
78
- /**
79
- * Rewrite a package fragment's relative asset srcs (manifest icons and
80
- * file-handler icons) to absolute URLs against the package's base — a runtime
81
- * package's assets live on the registry CDN, not the app origin, so the served
82
- * manifest must point there. `baseUrl` null (a local/bundled package whose
83
- * assets are app-origin-relative) leaves srcs untouched.
84
- */
85
- function resolveFragmentAssetUrls(config, baseUrl) {
86
- if (!baseUrl || !config.manifest) return config;
87
- const m = config.manifest;
88
- const resolveIcons = (icons) => icons?.map((icon) => resolveIconSrc(icon, baseUrl));
89
- return {
90
- ...config,
91
- manifest: {
92
- ...m,
93
- icons: resolveIcons(m.icons),
94
- file_handlers: m.file_handlers?.map((handler) => ({
95
- ...handler,
96
- icons: resolveIcons(handler.icons)
97
- }))
98
- }
99
- };
100
- }
101
- //#endregion
102
21
  //#region src/pglite.db.ts
103
22
  async function createMainThreadPGlite(major, dbName) {
104
23
  const { PGlite } = await loadPGliteModule(major);
@@ -153,11 +72,8 @@ async function getDb() {
153
72
  * Creates a Reactor that plugs into legacy storage but syncs through the new
154
73
  * Reactor GQL API.
155
74
  */
156
- async function createBrowserReactor(documentModelModules, upgradeManifests, renown, featureFlags, documentModelLoader) {
157
- const signerConfig = {
158
- signer: renown.signer,
159
- verifier: createSignatureVerifier()
160
- };
75
+ async function createBrowserReactor(documentModelModules, upgradeManifests, renown, featureFlags, documentModelLoader, createSignaturePolicy, renownEndpoints = {}) {
76
+ const signerConfig = await createConnectSignerConfig(renown.signer, featureFlags, renownEndpoints);
161
77
  const jwtHandler = async (_url) => {
162
78
  if (!renown.user) return;
163
79
  return renown.getBearerToken({ expiresIn: 10 });
@@ -166,6 +82,7 @@ async function createBrowserReactor(documentModelModules, upgradeManifests, reno
166
82
  const logger = new ConsoleLogger(["reactor-client"]);
167
83
  const builder = new ReactorClientBuilder$1().withLogger(logger).withSigner(signerConfig).withReactorBuilder(new ReactorBuilder$1().withDocumentModelSources(documentModelModules).withUpgradeManifests(upgradeManifests).withChannelScheme(ChannelScheme$1.CONNECT).withExecutorConfig({ featureFlags }).withJwtHandler(jwtHandler).withKysely(new Kysely({ dialect: new PGliteDialect(pg) })));
168
84
  if (documentModelLoader) builder.withDocumentModelLoader(documentModelLoader);
85
+ if (createSignaturePolicy) builder.withCreateSignaturePolicy(createSignaturePolicy);
169
86
  const module = await builder.buildModule();
170
87
  return {
171
88
  ...module,
@@ -683,325 +600,6 @@ var PackageDiscoveryService = class {
683
600
  }
684
601
  };
685
602
  //#endregion
686
- //#region src/package-manager.ts
687
- /**
688
- * Strip any `@tag` / `@version` suffix from a package spec, returning the bare
689
- * package name. Mirrors `parsePackageSpec` on the UI side.
690
- */
691
- function parseBareName(spec) {
692
- const trimmed = spec.trim();
693
- const at = trimmed.startsWith("@") ? trimmed.lastIndexOf("@") : trimmed.indexOf("@");
694
- return at > 0 ? trimmed.slice(0, at) : trimmed;
695
- }
696
- async function fetchPackageJsonVersion(baseUrl) {
697
- try {
698
- const res = await fetch(baseUrl);
699
- if (!res.ok) return void 0;
700
- const pkg = await res.json();
701
- return typeof pkg.version === "string" ? pkg.version : void 0;
702
- } catch {
703
- return;
704
- }
705
- }
706
- const LOCAL_PACKAGE_NAME = "Local";
707
- var BrowserPackageManager = class {
708
- registryUrl;
709
- #storage;
710
- #packages = /* @__PURE__ */ new Map();
711
- #subscribers = /* @__PURE__ */ new Set();
712
- #packagesMemo = [];
713
- #stylesheets = /* @__PURE__ */ new Map();
714
- #localPackage;
715
- #cdnUrl;
716
- #localPackageVersion;
717
- #localPackageNames = new Set([LOCAL_PACKAGE_NAME]);
718
- #pwaSyncTimer;
719
- /** Serialized last-mirrored PWA fragment; lets a sync skip the IndexedDB
720
- * write + manifest re-attach when nothing PWA-relevant changed. */
721
- #lastSyncedFragmentJson;
722
- constructor(namespace, registryUrl) {
723
- this.#storage = new BrowserLocalStorage(namespace + ":PH_PACKAGES");
724
- this.registryUrl = registryUrl;
725
- this.#cdnUrl = registryUrl !== null ? toCdnUrl(registryUrl) : null;
726
- }
727
- async init(localPackage, localPackageVersion, studioMode) {
728
- this.addLocalPackage(common.manifest.name, common, commonPkg.version);
729
- if (studioMode) {
730
- const vetra = await import("@powerhousedao/vetra");
731
- this.addLocalPackage(vetra.manifest.name, vetra, vetraPkg.version);
732
- }
733
- if (localPackage) this.updateLocalPackage(localPackage, localPackageVersion);
734
- for (const packageName of this.#storage.keys()) {
735
- const specForReload = this.#storage.get(packageName)?.spec ?? packageName;
736
- console.debug(`[Connect][PackageManager] Rehydrating "${packageName}" via spec "${specForReload}"`);
737
- if ((await this.addPackage(specForReload)).type === "error") this.#storage.delete(packageName);
738
- }
739
- }
740
- addLocalPackage(name, loadedPackage, version) {
741
- this.#localPackageNames.add(name);
742
- this.#registerPackage({
743
- name,
744
- importUrl: null,
745
- stylesheetUrl: null,
746
- loadedPackage,
747
- version
748
- });
749
- }
750
- updateLocalPackage(pkg, version) {
751
- console.debug("Updating local package:", pkg);
752
- this.#localPackage = pkg;
753
- this.#registerPackage({
754
- name: LOCAL_PACKAGE_NAME,
755
- stylesheetUrl: null,
756
- importUrl: null,
757
- loadedPackage: pkg
758
- });
759
- if (version) {
760
- this.#localPackageVersion = version;
761
- this.#notifyPackagesChanged();
762
- return;
763
- }
764
- fetchPackageJsonVersion("/package.json").then((fetchedVersion) => {
765
- this.#localPackageVersion = fetchedVersion;
766
- if (fetchedVersion) this.#notifyPackagesChanged();
767
- }).catch(() => {});
768
- }
769
- get packages() {
770
- return this.#packagesMemo;
771
- }
772
- get cdnUrl() {
773
- return this.#cdnUrl;
774
- }
775
- getPackageSource(packageName) {
776
- if (this.#localPackageNames.has(packageName)) return "common";
777
- if (packageName === this.#localPackage?.manifest.name) return "project";
778
- const packageMeta = this.#storage.get(packageName);
779
- if (!packageMeta) return null;
780
- if (packageMeta.importUrl === `/node_modules/${packageName}`) return "local-install";
781
- return "registry-install";
782
- }
783
- /**
784
- * Return the registry-installed packages keyed by their storage name (which
785
- * is the registry spec, e.g. "@powerhousedao/clint-common"), with the
786
- * installed version when known. Excludes bundled (common) packages, the
787
- * local project package, and packages resolved out of `/node_modules/`.
788
- */
789
- getRegistryPackages() {
790
- const out = [];
791
- for (const [name, meta] of this.#storage) {
792
- if (this.#localPackageNames.has(name)) continue;
793
- if (name === LOCAL_PACKAGE_NAME) continue;
794
- if (meta.importUrl === `/node_modules/${name}`) continue;
795
- out.push({
796
- name,
797
- version: meta.version
798
- });
799
- }
800
- return out;
801
- }
802
- getPackageVersion(packageName) {
803
- if (packageName === this.#localPackage?.manifest.name) return this.#localPackageVersion;
804
- return this.#storage.get(packageName)?.version;
805
- }
806
- /**
807
- * The spec the user requested when this package was installed (e.g.
808
- * `name@dev` or `name@6.2.1`). Undefined for bare-name installs, legacy
809
- * entries, and local packages — the Package Manager treats that as the
810
- * `latest` stream when picking update targets.
811
- */
812
- getPackageSpec(packageName) {
813
- return this.#storage.get(packageName)?.spec;
814
- }
815
- async addPackage(packageSpec) {
816
- const bareName = parseBareName(packageSpec);
817
- const hasTagOrVersion = bareName !== packageSpec;
818
- console.debug(`[Connect][PackageManager] addPackage spec="${packageSpec}" bareName="${bareName}"`);
819
- const existingPackage = this.#packages.get(bareName);
820
- if (existingPackage) {
821
- const requestedVersion = hasTagOrVersion ? packageSpec.slice(bareName.length + 1) : void 0;
822
- const currentVersion = this.#storage.get(bareName)?.version;
823
- if (this.#localPackageNames.has(bareName) || !requestedVersion || !currentVersion || requestedVersion === currentVersion) {
824
- console.debug(`[Connect][PackageManager] "${bareName}" already loaded; skipping re-fetch`);
825
- return {
826
- type: "success",
827
- package: existingPackage
828
- };
829
- }
830
- console.debug(`[Connect][PackageManager] "${bareName}" version bump ${currentVersion} → ${requestedVersion}; refetching`);
831
- }
832
- try {
833
- const packageWithMeta = await this.#loadPackage(packageSpec);
834
- packageWithMeta.name = bareName;
835
- if (hasTagOrVersion) packageWithMeta.spec = packageSpec;
836
- if (existingPackage) this.#unmountStylesheet(bareName);
837
- this.#registerPackage(packageWithMeta);
838
- return {
839
- type: "success",
840
- package: packageWithMeta.loadedPackage
841
- };
842
- } catch (error) {
843
- const normalized = error instanceof Error ? error : new Error(String(error));
844
- console.error(`[Connect][PackageManager] Failed to install package "${packageSpec}": ${normalized.message}`, normalized);
845
- return {
846
- type: "error",
847
- error: normalized
848
- };
849
- }
850
- }
851
- async addPackages(packageNames) {
852
- const results = [];
853
- for (const packageName of packageNames) {
854
- const result = await this.addPackage(packageName);
855
- results.push(result);
856
- }
857
- return results;
858
- }
859
- removePackage(name) {
860
- this.#packages.delete(name);
861
- this.#storage.delete(name);
862
- this.#unmountStylesheet(name);
863
- this.#notifyPackagesChanged();
864
- }
865
- subscribe(handler) {
866
- this.#subscribers.add(handler);
867
- return () => {
868
- this.#subscribers.delete(handler);
869
- };
870
- }
871
- load(documentType) {
872
- const documentModelModule = Array.from(this.#packages.values().flatMap((p) => p.documentModels)).find((m) => m.documentModel.global.id === documentType);
873
- if (documentModelModule) return Promise.resolve(documentModelModule);
874
- return Promise.reject(/* @__PURE__ */ new Error("Model not available"));
875
- }
876
- async #loadPackageFromNodeModules(name) {
877
- const importUrl = `/node_modules/${name}/browser/index.js`;
878
- const stylesheetUrl = `/node_modules/${name}/style.css`;
879
- const packageWithMeta = await this.#importPackage({
880
- name,
881
- importUrl,
882
- stylesheetUrl
883
- });
884
- packageWithMeta.version = await fetchPackageJsonVersion(`/node_modules/${name}/package.json`);
885
- return packageWithMeta;
886
- }
887
- async #loadPackageFromRegistry(name) {
888
- const importUrl = `${this.#cdnUrl}/${name}/browser/index.js`;
889
- const stylesheetUrl = `${this.#cdnUrl}/${name}/style.css`;
890
- const packageWithMeta = await this.#importPackage({
891
- name,
892
- importUrl,
893
- stylesheetUrl
894
- });
895
- packageWithMeta.version = await fetchPackageJsonVersion(`${this.#cdnUrl}/${name}/package.json`);
896
- return packageWithMeta;
897
- }
898
- async #importPackage(packageMeta) {
899
- const { name, importUrl, stylesheetUrl } = packageMeta;
900
- if (!importUrl) throw new Error(`Import url not defined for package "${name}".`);
901
- return {
902
- name,
903
- loadedPackage: await import(
904
- /* @vite-ignore */
905
- importUrl
906
- ),
907
- importUrl,
908
- stylesheetUrl
909
- };
910
- }
911
- async #loadPackage(packageName) {
912
- if (this.#localPackageNames.has(packageName)) throw new Error(`Package "${packageName}" is a local package and cannot be loaded dynamically.`);
913
- if (!import.meta.env.PROD) try {
914
- return await this.#loadPackageFromNodeModules(packageName);
915
- } catch (error) {
916
- console.warn(`Failed to load package "${packageName}" from node_modules:`, error);
917
- }
918
- if (!this.registryUrl) throw new Error("Registry url not defined.");
919
- return await this.#loadPackageFromRegistry(packageName);
920
- }
921
- #registerPackage(packageWithMeta) {
922
- const { name, loadedPackage, importUrl, stylesheetUrl, version, spec } = packageWithMeta;
923
- if (stylesheetUrl !== null) this.#mountStylesheet(name, stylesheetUrl);
924
- this.#packages.set(name, loadedPackage);
925
- this.#storage.set(name, {
926
- name,
927
- importUrl,
928
- stylesheetUrl,
929
- version,
930
- ...spec ? { spec } : {}
931
- });
932
- console.debug(`[Connect][PackageManager] Registered "${name}" (version=${version ?? "?"}, spec=${spec ?? "—"})`);
933
- this.#notifyPackagesChanged();
934
- }
935
- #mountStylesheet(name, href) {
936
- const existing = this.#stylesheets.get(name);
937
- if (existing) return existing;
938
- const style = document.createElement("style");
939
- style.textContent = `@import url("${href}") layer(external-packages);`;
940
- document.head.appendChild(style);
941
- this.#stylesheets.set(name, style);
942
- }
943
- #unmountStylesheet(name) {
944
- const style = this.#stylesheets.get(name);
945
- if (!style) return;
946
- style.remove();
947
- this.#stylesheets.delete(name);
948
- }
949
- #notifyPackagesChanged() {
950
- this.#packagesMemo = Array.from(this.#packages.values());
951
- const packages = this.packages;
952
- this.#subscribers.forEach((handler) => {
953
- handler({ packages });
954
- });
955
- this.#schedulePwaSync();
956
- }
957
- /**
958
- * Debounced mirror of every loaded package's PWA fragment into IndexedDB, so
959
- * the service worker can serve a web-app manifest that reflects packages
960
- * installed AT RUNTIME (a SW can't read localStorage, where the package list
961
- * lives). Debounced because `init()` rehydrates many packages in a burst;
962
- * coalescing collapses that into a single write.
963
- */
964
- #schedulePwaSync() {
965
- if (typeof indexedDB === "undefined") return;
966
- clearTimeout(this.#pwaSyncTimer);
967
- this.#pwaSyncTimer = setTimeout(() => {
968
- this.#syncPwaFragments();
969
- }, 50);
970
- }
971
- async #syncPwaFragments() {
972
- const contributions = [];
973
- for (const [name, loadedPackage] of this.#packages) {
974
- const manifest = loadedPackage.manifest;
975
- let config = {};
976
- if (manifest.pwa) {
977
- const parsed = PwaConfigSchema.safeParse(manifest.pwa);
978
- if (parsed.success) {
979
- const importUrl = this.#storage.get(name)?.importUrl ?? null;
980
- const baseUrl = importUrl ? importUrl.replace(/browser\/index\.js$/, "") : null;
981
- config = resolveFragmentAssetUrls(parsed.data, baseUrl);
982
- } else console.warn(`[Connect][PWA] "${name}" ships an invalid pwa fragment; skipped.`, parsed.error);
983
- }
984
- config = withInferredCategory(config, manifest.category);
985
- if (Object.keys(config).length === 0) continue;
986
- contributions.push({
987
- source: name,
988
- config
989
- });
990
- }
991
- const merged = mergePwaConfig(contributions);
992
- const mergedJson = JSON.stringify(merged);
993
- if (mergedJson === this.#lastSyncedFragmentJson) return;
994
- try {
995
- await writeMergedPwaFragment(merged);
996
- } catch (error) {
997
- console.debug("[Connect][PWA] fragment mirror to IndexedDB failed:", error);
998
- return;
999
- }
1000
- this.#lastSyncedFragmentJson = mergedJson;
1001
- refreshPwaManifestLink();
1002
- }
1003
- };
1004
- //#endregion
1005
603
  //#region src/reactor-worker-name.ts
1006
604
  const GEN_KEY_PREFIX = "ph-reactor-gen:";
1007
605
  function reactorWorkerName(namespace) {
@@ -1072,9 +670,13 @@ function createWorkerReactorClientModule(args) {
1072
670
  relationalNamespace: args.relationalNamespace,
1073
671
  cdnUrl: args.cdnUrl,
1074
672
  packageSpecs: args.packageSpecs,
673
+ sharedImports: args.sharedImports,
1075
674
  studioMode: args.studioMode,
675
+ workflowsEnabled: args.workflowsEnabled,
1076
676
  renownChainId: args.renownChainId,
1077
- featureFlags: args.featureFlags
677
+ featureFlags: args.featureFlags,
678
+ createSignaturePolicy: args.createSignaturePolicy,
679
+ renownEndpoints: args.renownEndpoints
1078
680
  },
1079
681
  packages: args.packageSpecs
1080
682
  }, args.onReload, documentModelRegistry);
@@ -1305,9 +907,12 @@ async function createReactor(localPackage) {
1305
907
  const runtimeConfig = getRuntimeConfig();
1306
908
  const packageManager = new BrowserPackageManager(phGlobalConfig.routerBasename ?? "", runtimeConfig.packageRegistryUrl ?? null);
1307
909
  setVetraPackageManager(packageManager);
1308
- await packageManager.init(localPackage, runtimeConfig.localPackage?.version, phGlobalConfig.studioMode);
910
+ await packageManager.init(localPackage, runtimeConfig.localPackage?.version, phGlobalConfig.studioMode, connectConfig.workflowsEnabled);
1309
911
  try {
1310
- const { default: registerBundledPackages } = await import("ph-bundled-packages-virtual");
912
+ const { default: registerBundledPackages } = await import(
913
+ /* @vite-ignore */
914
+ "ph-bundled-packages-virtual"
915
+ );
1311
916
  registerBundledPackages(packageManager);
1312
917
  } catch {}
1313
918
  const remotePackages = runtimeConfig.packages.filter((p) => p.provider !== "local").map((p) => p.version ? `${p.packageName}@${p.version}` : p.packageName);
@@ -1325,30 +930,41 @@ async function createReactor(localPackage) {
1325
930
  const reactorFeatureFlags = runtimeConfig.connect?.reactor?.featureFlags ?? {};
1326
931
  const enabledReactorFlags = Object.entries(reactorFeatureFlags).filter(([, enabled]) => enabled).map(([name]) => name);
1327
932
  if (enabledReactorFlags.length > 0) logger.info(`Reactor feature flags: ${enabledReactorFlags.join(", ")}`);
933
+ const createSignaturePolicy = runtimeConfig.connect?.reactor?.createSignaturePolicy;
934
+ const renownEndpoints = {
935
+ renownUrl: phGlobalConfig.renownUrl,
936
+ switchboardUrl: phGlobalConfig.switchboardUrl
937
+ };
1328
938
  let reactorClientModule;
1329
939
  if (isReactorWorkerEnabled()) {
1330
940
  const packageSpecs = packageManager.getRegistryPackages().map((p) => p.version ? `${p.name}@${p.version}` : p.name);
1331
941
  const registryClient = new RegistryClient(packageManager.cdnUrl ?? "");
942
+ const documentModelLoader = { async load(documentType) {
943
+ const names = packageManager.cdnUrl ? await registryClient.getPackagesByDocumentType(documentType) : [];
944
+ for (const name of names) {
945
+ const result = await packageManager.addPackage(name);
946
+ if (result.type === "error") throw new Error(`Failed to install package "${name}" for document model: ${documentType}`, { cause: result.error });
947
+ }
948
+ const module = packageManager.packages.flatMap((p) => p.documentModels).find((m) => m.documentModel.global.id === documentType);
949
+ if (!module) throw new Error(names.length > 0 ? `Installed [${names.join(", ")}] but document model not available: ${documentType}` : `No package found for document model: ${documentType} (cdnUrl: ${packageManager.cdnUrl ?? "none"})`);
950
+ return module;
951
+ } };
952
+ const sharedImports = (await getSharedDeps())?.imports;
1332
953
  const workerClient = createWorkerReactorClientModule({
1333
954
  namespace: REACTOR_INSTANCE_NAMESPACE,
1334
955
  relationalNamespace: RELATIONAL_PGLITE_NAME,
1335
956
  cdnUrl: packageManager.cdnUrl ?? "",
1336
957
  packageSpecs,
958
+ sharedImports,
1337
959
  studioMode: phGlobalConfig.studioMode,
960
+ workflowsEnabled: connectConfig.workflowsEnabled,
1338
961
  renownChainId,
1339
962
  featureFlags: reactorFeatureFlags,
963
+ createSignaturePolicy,
964
+ renownEndpoints,
1340
965
  documentModelModules,
1341
966
  upgradeManifests,
1342
- documentModelLoader: { async load(documentType) {
1343
- const names = packageManager.cdnUrl ? await registryClient.getPackagesByDocumentType(documentType) : [];
1344
- for (const name of names) {
1345
- const result = await packageManager.addPackage(name);
1346
- if (result.type === "error") throw new Error(`Failed to install package "${name}" for document model: ${documentType}`, { cause: result.error });
1347
- }
1348
- const module = packageManager.packages.flatMap((p) => p.documentModels).find((m) => m.documentModel.global.id === documentType);
1349
- if (!module) throw new Error(names.length > 0 ? `Installed [${names.join(", ")}] but document model not available: ${documentType}` : `No package found for document model: ${documentType} (cdnUrl: ${packageManager.cdnUrl ?? "none"})`);
1350
- return module;
1351
- } },
967
+ documentModelLoader,
1352
968
  renown,
1353
969
  onReload: (reason, workerGen) => {
1354
970
  logger.warn("Reactor worker requested reload: @reason", reason);
@@ -1364,11 +980,15 @@ async function createReactor(localPackage) {
1364
980
  logger.error("Reactor worker failed to start: @error", error);
1365
981
  throw error;
1366
982
  }
1367
- } else reactorClientModule = await createBrowserReactor(documentModelModules, upgradeManifests, renown, reactorFeatureFlags, discoveryService);
983
+ } else reactorClientModule = await createBrowserReactor(documentModelModules, upgradeManifests, renown, reactorFeatureFlags, discoveryService, createSignaturePolicy, renownEndpoints);
1368
984
  const drives = await getDrives(reactorClientModule.client);
1369
- await login(getDidFromUrl(), renown);
985
+ const didFromUrl = getDidFromUrl();
986
+ await login(didFromUrl, renown);
1370
987
  const documentCache = new DocumentCache(reactorClientModule.client);
1371
- setDefaultPHGlobalConfig(buildPHGlobalConfig(phGlobalConfig.basePath ?? "/", phGlobalConfig.routerBasename ?? "/", runtimeConfig.connect ?? {}));
988
+ const basePath = phGlobalConfig.basePath ?? "/";
989
+ const routerBasename = phGlobalConfig.routerBasename ?? "/";
990
+ const mergedGlobalConfig = buildPHGlobalConfig(basePath, routerBasename, runtimeConfig.connect ?? {});
991
+ setDefaultPHGlobalConfig(mergedGlobalConfig);
1372
992
  const path = window.location.pathname;
1373
993
  const driveSlug = extractDriveSlugFromPath(path);
1374
994
  const nodeSlug = extractNodeSlugFromPath(path);
@@ -1385,11 +1005,12 @@ async function createReactor(localPackage) {
1385
1005
  if (!renown.user) return void 0;
1386
1006
  return renown.getBearerToken({ expiresIn: 10 });
1387
1007
  };
1388
- setAttachmentService(createRemoteAttachmentService({
1008
+ const attachmentService = createRemoteAttachmentService({
1389
1009
  remoteUrl: switchboardOrigin,
1390
1010
  jwtHandler: attachmentJwtHandler,
1391
1011
  uploadTransport: createXhrUploadTransport()
1392
- }));
1012
+ });
1013
+ setAttachmentService(attachmentService);
1393
1014
  }
1394
1015
  }
1395
1016
  setDocumentCache(documentCache);
@@ -1460,5 +1081,5 @@ function getDriveUrl() {
1460
1081
  //#endregion
1461
1082
  export { createReactor as n, clearReactorStorage as t };
1462
1083
 
1463
- //# sourceMappingURL=reactor-CSAxliEy.js.map
1464
- //# debugId=d9aeb3c5-0107-5278-ada0-6d670749006d
1084
+ //# sourceMappingURL=reactor-BmQPQNmi.js.map
1085
+ //# debugId=09a0862d-f5b1-5deb-bbd8-b1524cb1b375