@powerhousedao/connect 6.0.0-dev.23 → 6.0.0-dev.230
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +1 -1
- package/dist/AddDriveModal-B9BPORvo.js +89 -0
- package/dist/AddDriveModal-B9BPORvo.js.map +1 -0
- package/dist/ClearStorageModal-K1H6NgT6.js +44 -0
- package/dist/ClearStorageModal-K1H6NgT6.js.map +1 -0
- package/dist/CookiesPolicyModal-CnVx2R_8.js +30 -0
- package/dist/CookiesPolicyModal-CnVx2R_8.js.map +1 -0
- package/dist/CreateDocumentModal-TtG7E62x.js +28 -0
- package/dist/CreateDocumentModal-TtG7E62x.js.map +1 -0
- package/dist/DebugSettingsModal-CriX2NsN.js +169 -0
- package/dist/DebugSettingsModal-CriX2NsN.js.map +1 -0
- package/dist/DeleteDriveModal-Cb43NeNu.js +40 -0
- package/dist/DeleteDriveModal-Cb43NeNu.js.map +1 -0
- package/dist/DeleteItemModal-Brq4QKdd.js +39 -0
- package/dist/DeleteItemModal-Brq4QKdd.js.map +1 -0
- package/dist/DisclaimerModal-Dk6PpkZU.js +21 -0
- package/dist/DisclaimerModal-Dk6PpkZU.js.map +1 -0
- package/dist/DriveSettingsModal-BdcjrRh9.js +48 -0
- package/dist/DriveSettingsModal-BdcjrRh9.js.map +1 -0
- package/dist/ExportDocumentWithErrorsModal-DNRr3cjI.js +41 -0
- package/dist/ExportDocumentWithErrorsModal-DNRr3cjI.js.map +1 -0
- package/dist/InspectorModal-EDrjiXPs.js +372 -0
- package/dist/InspectorModal-EDrjiXPs.js.map +1 -0
- package/dist/MissingPackageModal-BfblPbd8.js +34 -0
- package/dist/MissingPackageModal-BfblPbd8.js.map +1 -0
- package/dist/SettingsModal-5hkkt5lV.js +294 -0
- package/dist/SettingsModal-5hkkt5lV.js.map +1 -0
- package/dist/UpgradeDriveModal-CBLALaaQ.js +31 -0
- package/dist/UpgradeDriveModal-CBLALaaQ.js.map +1 -0
- package/dist/build-info-CMRmLn5Q.js +12 -0
- package/dist/build-info-CMRmLn5Q.js.map +1 -0
- package/dist/connect.config-Cuh0hj_Q.js +139 -0
- package/dist/connect.config-Cuh0hj_Q.js.map +1 -0
- package/dist/i18n-Ch408v5-.js +125 -0
- package/dist/i18n-Ch408v5-.js.map +1 -0
- package/dist/load-Dy0OZx9L.js +109 -0
- package/dist/load-Dy0OZx9L.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +9 -0
- package/dist/main.js.map +1 -0
- package/dist/package-C3I4TZuv.js +114 -0
- package/dist/package-C3I4TZuv.js.map +1 -0
- package/dist/pglite-runtime-C1g-4Jxl.js +132 -0
- package/dist/pglite-runtime-C1g-4Jxl.js.map +1 -0
- package/dist/pglite-seed-BtXWFpHf.js +46 -0
- package/dist/pglite-seed-BtXWFpHf.js.map +1 -0
- package/dist/pglite.worker.d.ts +1 -0
- package/dist/pglite.worker.js +15 -0
- package/dist/pglite.worker.js.map +1 -0
- package/dist/pglite.worker.legacy.d.ts +1 -0
- package/dist/pglite.worker.legacy.js +15 -0
- package/dist/pglite.worker.legacy.js.map +1 -0
- package/dist/reactor-Nm3jOev1.js +783 -0
- package/dist/reactor-Nm3jOev1.js.map +1 -0
- package/dist/registerServiceWorker-LI8_JXt3.js +76 -0
- package/dist/registerServiceWorker-LI8_JXt3.js.map +1 -0
- package/dist/sidebar-BCkxH2f3.js +1566 -0
- package/dist/sidebar-BCkxH2f3.js.map +1 -0
- package/dist/start-connect.d.ts +21 -0
- package/dist/start-connect.d.ts.map +1 -0
- package/dist/start-connect.js +16 -0
- package/dist/start-connect.js.map +1 -0
- package/{lib → dist}/style.css +2185 -311
- package/dist/toast-DnODOv28.js +20 -0
- package/dist/toast-DnODOv28.js.map +1 -0
- package/dist/useRegistryPackages-BOX4NMAb.js +125 -0
- package/dist/useRegistryPackages-BOX4NMAb.js.map +1 -0
- package/package.json +57 -121
- package/public/ph-packages.json +3 -0
- package/dist/assets/AddDriveModal-DBaGaeEv.js +0 -1
- package/dist/assets/ClearStorageModal-C-Eq31x6.js +0 -1
- package/dist/assets/CookiesPolicyModal-DDnLiRMa.js +0 -1
- package/dist/assets/CreateDocumentModal-CCWA7rsK.js +0 -1
- package/dist/assets/DebugSettingsModal-MX6tAmFS.js +0 -1
- package/dist/assets/DeleteDriveModal-BDKQZ4HZ.js +0 -1
- package/dist/assets/DeleteItemModal-B2q5Bzm0.js +0 -1
- package/dist/assets/DisclaimerModal-3N95_i1A.js +0 -1
- package/dist/assets/DriveSettingsModal-6Odc4iBB.js +0 -1
- package/dist/assets/ExportDocumentWithErrorsModal-BxgdM4Cn.js +0 -1
- package/dist/assets/SettingsModal-DxiLUh4m.js +0 -1
- package/dist/assets/UpgradeDriveModal-BNV5YhHT.js +0 -1
- package/dist/assets/_virtual_ph_external-packages-CM1tCR4L.js +0 -1
- package/dist/assets/config-CU-aFfVJ.js +0 -1
- package/dist/assets/connect-loader-CvOC68Ih.mp4 +0 -0
- package/dist/assets/design_system-uuqt99TZ.js +0 -45
- package/dist/assets/design_system_connect-DdtsYVPZ.js +0 -47
- package/dist/assets/design_system_ui-Duj5Ll6i.js +0 -1
- package/dist/assets/document_drive-Bubv8iix.js +0 -316
- package/dist/assets/document_engineering-C09a5UIJ.js +0 -1
- package/dist/assets/document_model-_oCbt5YE.js +0 -230
- package/dist/assets/document_model_editor-ohJ7LI9a.js +0 -25
- package/dist/assets/drive_explorer-gMzxtIW2.js +0 -2
- package/dist/assets/graphql-AKTCpY7l.js +0 -75
- package/dist/assets/graphql-editor-CKzx1Jnw.js +0 -73
- package/dist/assets/graphql_request-BJtmW2JS.js +0 -3
- package/dist/assets/hmr-LMNkvzP7.js +0 -1
- package/dist/assets/home-bg-BEhF9NuW.png +0 -0
- package/dist/assets/home-bg-BRYzhkhi.avif +0 -0
- package/dist/assets/hooks-CsZvAIjq.js +0 -12
- package/dist/assets/index-CiT5oJyj.js +0 -18
- package/dist/assets/index-DYdiZMfn.css +0 -1
- package/dist/assets/index-DZ0uz05k.js +0 -28
- package/dist/assets/json-editor-CN0vAdTn.js +0 -1
- package/dist/assets/nodefs-De9muFtb.js +0 -1
- package/dist/assets/opfs-ahp-DWJ33Mjx.js +0 -3
- package/dist/assets/pg_dump-CW0pN9tG.wasm +0 -0
- package/dist/assets/postgres-CkP7QCDB.data +0 -0
- package/dist/assets/postgres-CyuUVpXN.wasm +0 -0
- package/dist/assets/powerhouse-rounded-CeKGGUG4.png +0 -0
- package/dist/assets/react/jsx-runtime-DldvXD6N.js +0 -1
- package/dist/assets/react-DQSxOgtG.js +0 -1
- package/dist/assets/react-dom/client-BVPiT_FE.js +0 -9
- package/dist/assets/react-dom-D6zQJsh6.js +0 -1
- package/dist/assets/reactor_browser-7kCiebAa.js +0 -129
- package/dist/assets/renown-short-hover-BiSLBV7L.png +0 -0
- package/dist/assets/rwa-report-Bb0W5-ac.png +0 -0
- package/dist/assets/sentry_browser-B4YoBIIG.js +0 -498
- package/dist/assets/sentry_react-cODD7zWc.js +0 -3
- package/dist/assets/state-schemas-Ed8-N-Nl.js +0 -2
- package/dist/assets/tailwind_merge-Dr4f9Rms.js +0 -1
- package/dist/assets/zod-9j67vCAu.js +0 -39
- package/dist/icon.ico +0 -0
- package/dist/index.html +0 -51
- package/dist/robots.txt +0 -3
- package/dist/settings.png +0 -0
- package/heroku/Dockerfile +0 -101
- package/heroku/Procfile +0 -1
- package/heroku/config/nginx.conf.template +0 -77
- package/heroku/heroku-entrypoint.sh +0 -38
- package/lib/cypress/e2e/navigation.cy.d.ts +0 -2
- package/lib/cypress/e2e/navigation.cy.d.ts.map +0 -1
- package/lib/cypress/e2e/navigation.cy.js +0 -221
- package/lib/cypress/e2e/navigation.cy.js.map +0 -1
- package/lib/cypress/e2e/utils/index.d.ts +0 -15
- package/lib/cypress/e2e/utils/index.d.ts.map +0 -1
- package/lib/cypress/e2e/utils/index.js +0 -121
- package/lib/cypress/e2e/utils/index.js.map +0 -1
- package/lib/cypress/support/commands.d.ts +0 -2
- package/lib/cypress/support/commands.d.ts.map +0 -1
- package/lib/cypress/support/commands.js +0 -29
- package/lib/cypress/support/commands.js.map +0 -1
- package/lib/cypress/support/e2e.d.ts +0 -2
- package/lib/cypress/support/e2e.d.ts.map +0 -1
- package/lib/cypress/support/e2e.js +0 -19
- package/lib/cypress/support/e2e.js.map +0 -1
- package/lib/cypress.config.d.ts +0 -3
- package/lib/cypress.config.d.ts.map +0 -1
- package/lib/cypress.config.js +0 -15
- package/lib/cypress.config.js.map +0 -1
- package/lib/package.copy.json +0 -177
- package/lib/scripts/render-skeleton.d.ts +0 -2
- package/lib/scripts/render-skeleton.d.ts.map +0 -1
- package/lib/scripts/render-skeleton.js +0 -11
- package/lib/scripts/render-skeleton.js.map +0 -1
- package/lib/src/components/analytics.d.ts +0 -8
- package/lib/src/components/analytics.d.ts.map +0 -1
- package/lib/src/components/analytics.js +0 -30
- package/lib/src/components/analytics.js.map +0 -1
- package/lib/src/components/app-loader.d.ts +0 -3
- package/lib/src/components/app-loader.d.ts.map +0 -1
- package/lib/src/components/app-loader.js +0 -20
- package/lib/src/components/app-loader.js.map +0 -1
- package/lib/src/components/app-skeleton.d.ts +0 -3
- package/lib/src/components/app-skeleton.d.ts.map +0 -1
- package/lib/src/components/app-skeleton.js +0 -38
- package/lib/src/components/app-skeleton.js.map +0 -1
- package/lib/src/components/app.d.ts +0 -2
- package/lib/src/components/app.d.ts.map +0 -1
- package/lib/src/components/app.js +0 -29
- package/lib/src/components/app.js.map +0 -1
- package/lib/src/components/button.d.ts +0 -3
- package/lib/src/components/button.d.ts.map +0 -1
- package/lib/src/components/button.js +0 -7
- package/lib/src/components/button.js.map +0 -1
- package/lib/src/components/cookie-banner.d.ts +0 -2
- package/lib/src/components/cookie-banner.d.ts.map +0 -1
- package/lib/src/components/cookie-banner.js +0 -48
- package/lib/src/components/cookie-banner.js.map +0 -1
- package/lib/src/components/document-editor-container.d.ts +0 -2
- package/lib/src/components/document-editor-container.d.ts.map +0 -1
- package/lib/src/components/document-editor-container.js +0 -65
- package/lib/src/components/document-editor-container.js.map +0 -1
- package/lib/src/components/dots-loader.d.ts +0 -2
- package/lib/src/components/dots-loader.d.ts.map +0 -1
- package/lib/src/components/dots-loader.js +0 -15
- package/lib/src/components/dots-loader.js.map +0 -1
- package/lib/src/components/drive-editor-container.d.ts +0 -2
- package/lib/src/components/drive-editor-container.d.ts.map +0 -1
- package/lib/src/components/drive-editor-container.js +0 -22
- package/lib/src/components/drive-editor-container.js.map +0 -1
- package/lib/src/components/drive-icon.d.ts +0 -5
- package/lib/src/components/drive-icon.d.ts.map +0 -1
- package/lib/src/components/drive-icon.js +0 -15
- package/lib/src/components/drive-icon.js.map +0 -1
- package/lib/src/components/editor-loader.d.ts +0 -9
- package/lib/src/components/editor-loader.d.ts.map +0 -1
- package/lib/src/components/editor-loader.js +0 -19
- package/lib/src/components/editor-loader.js.map +0 -1
- package/lib/src/components/editors.d.ts +0 -10
- package/lib/src/components/editors.d.ts.map +0 -1
- package/lib/src/components/editors.js +0 -87
- package/lib/src/components/editors.js.map +0 -1
- package/lib/src/components/error-boundary.d.ts +0 -103
- package/lib/src/components/error-boundary.d.ts.map +0 -1
- package/lib/src/components/error-boundary.js +0 -104
- package/lib/src/components/error-boundary.js.map +0 -1
- package/lib/src/components/footer.d.ts +0 -2
- package/lib/src/components/footer.d.ts.map +0 -1
- package/lib/src/components/footer.js +0 -16
- package/lib/src/components/footer.js.map +0 -1
- package/lib/src/components/index.d.ts +0 -22
- package/lib/src/components/index.d.ts.map +0 -1
- package/lib/src/components/index.js +0 -22
- package/lib/src/components/index.js.map +0 -1
- package/lib/src/components/login.d.ts +0 -2
- package/lib/src/components/login.d.ts.map +0 -1
- package/lib/src/components/login.js +0 -12
- package/lib/src/components/login.js.map +0 -1
- package/lib/src/components/modal/index.d.ts +0 -18
- package/lib/src/components/modal/index.d.ts.map +0 -1
- package/lib/src/components/modal/index.js +0 -18
- package/lib/src/components/modal/index.js.map +0 -1
- package/lib/src/components/modal/modals/AddDriveModal.d.ts +0 -2
- package/lib/src/components/modal/modals/AddDriveModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/AddDriveModal.js +0 -121
- package/lib/src/components/modal/modals/AddDriveModal.js.map +0 -1
- package/lib/src/components/modal/modals/ClearStorageModal.d.ts +0 -2
- package/lib/src/components/modal/modals/ClearStorageModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/ClearStorageModal.js +0 -35
- package/lib/src/components/modal/modals/ClearStorageModal.js.map +0 -1
- package/lib/src/components/modal/modals/CookiesPolicyModal.d.ts +0 -2
- package/lib/src/components/modal/modals/CookiesPolicyModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/CookiesPolicyModal.js +0 -16
- package/lib/src/components/modal/modals/CookiesPolicyModal.js.map +0 -1
- package/lib/src/components/modal/modals/CreateDocumentModal.d.ts +0 -2
- package/lib/src/components/modal/modals/CreateDocumentModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/CreateDocumentModal.js +0 -24
- package/lib/src/components/modal/modals/CreateDocumentModal.js.map +0 -1
- package/lib/src/components/modal/modals/DebugSettingsModal.d.ts +0 -2
- package/lib/src/components/modal/modals/DebugSettingsModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/DebugSettingsModal.js +0 -108
- package/lib/src/components/modal/modals/DebugSettingsModal.js.map +0 -1
- package/lib/src/components/modal/modals/DeleteDriveModal.d.ts +0 -2
- package/lib/src/components/modal/modals/DeleteDriveModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/DeleteDriveModal.js +0 -32
- package/lib/src/components/modal/modals/DeleteDriveModal.js.map +0 -1
- package/lib/src/components/modal/modals/DeleteItemModal.d.ts +0 -3
- package/lib/src/components/modal/modals/DeleteItemModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/DeleteItemModal.js +0 -33
- package/lib/src/components/modal/modals/DeleteItemModal.js.map +0 -1
- package/lib/src/components/modal/modals/DisclaimerModal.d.ts +0 -3
- package/lib/src/components/modal/modals/DisclaimerModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/DisclaimerModal.js +0 -12
- package/lib/src/components/modal/modals/DisclaimerModal.js.map +0 -1
- package/lib/src/components/modal/modals/DriveSettingsModal.d.ts +0 -2
- package/lib/src/components/modal/modals/DriveSettingsModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/DriveSettingsModal.js +0 -28
- package/lib/src/components/modal/modals/DriveSettingsModal.js.map +0 -1
- package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.d.ts +0 -2
- package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.js +0 -30
- package/lib/src/components/modal/modals/ExportDocumentWithErrorsModal.js.map +0 -1
- package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts +0 -2
- package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js +0 -29
- package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js.map +0 -1
- package/lib/src/components/modal/modals/InspectorModal/index.d.ts +0 -2
- package/lib/src/components/modal/modals/InspectorModal/index.d.ts.map +0 -1
- package/lib/src/components/modal/modals/InspectorModal/index.js +0 -2
- package/lib/src/components/modal/modals/InspectorModal/index.js.map +0 -1
- package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.d.ts +0 -31
- package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.d.ts.map +0 -1
- package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.js +0 -211
- package/lib/src/components/modal/modals/InspectorModal/useDbExplorer.js.map +0 -1
- package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts +0 -4
- package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts.map +0 -1
- package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js +0 -12
- package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js.map +0 -1
- package/lib/src/components/modal/modals/SettingsModal.d.ts +0 -3
- package/lib/src/components/modal/modals/SettingsModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/SettingsModal.js +0 -45
- package/lib/src/components/modal/modals/SettingsModal.js.map +0 -1
- package/lib/src/components/modal/modals/UpgradeDriveModal.d.ts +0 -3
- package/lib/src/components/modal/modals/UpgradeDriveModal.d.ts.map +0 -1
- package/lib/src/components/modal/modals/UpgradeDriveModal.js +0 -21
- package/lib/src/components/modal/modals/UpgradeDriveModal.js.map +0 -1
- package/lib/src/components/modal/modals/settings/about.d.ts +0 -2
- package/lib/src/components/modal/modals/settings/about.d.ts.map +0 -1
- package/lib/src/components/modal/modals/settings/about.js +0 -10
- package/lib/src/components/modal/modals/settings/about.js.map +0 -1
- package/lib/src/components/modal/modals/settings/danger-zone.d.ts +0 -2
- package/lib/src/components/modal/modals/settings/danger-zone.d.ts.map +0 -1
- package/lib/src/components/modal/modals/settings/danger-zone.js +0 -15
- package/lib/src/components/modal/modals/settings/danger-zone.js.map +0 -1
- package/lib/src/components/modal/modals/settings/default-editor.d.ts +0 -2
- package/lib/src/components/modal/modals/settings/default-editor.d.ts.map +0 -1
- package/lib/src/components/modal/modals/settings/default-editor.js +0 -18
- package/lib/src/components/modal/modals/settings/default-editor.js.map +0 -1
- package/lib/src/components/modal/modals/settings/package-manager.d.ts +0 -3
- package/lib/src/components/modal/modals/settings/package-manager.d.ts.map +0 -1
- package/lib/src/components/modal/modals/settings/package-manager.js +0 -87
- package/lib/src/components/modal/modals/settings/package-manager.js.map +0 -1
- package/lib/src/components/modal/modals-container.d.ts +0 -2
- package/lib/src/components/modal/modals-container.d.ts.map +0 -1
- package/lib/src/components/modal/modals-container.js +0 -66
- package/lib/src/components/modal/modals-container.js.map +0 -1
- package/lib/src/components/ph-logo.d.ts +0 -2
- package/lib/src/components/ph-logo.d.ts.map +0 -1
- package/lib/src/components/ph-logo.js +0 -7
- package/lib/src/components/ph-logo.js.map +0 -1
- package/lib/src/components/reload-connect-toast.d.ts +0 -2
- package/lib/src/components/reload-connect-toast.d.ts.map +0 -1
- package/lib/src/components/reload-connect-toast.js +0 -7
- package/lib/src/components/reload-connect-toast.js.map +0 -1
- package/lib/src/components/root.d.ts +0 -2
- package/lib/src/components/root.d.ts.map +0 -1
- package/lib/src/components/root.js +0 -8
- package/lib/src/components/root.js.map +0 -1
- package/lib/src/components/router.d.ts +0 -2
- package/lib/src/components/router.d.ts.map +0 -1
- package/lib/src/components/router.js +0 -41
- package/lib/src/components/router.js.map +0 -1
- package/lib/src/components/search-bar.d.ts +0 -2
- package/lib/src/components/search-bar.d.ts.map +0 -1
- package/lib/src/components/search-bar.js +0 -36
- package/lib/src/components/search-bar.js.map +0 -1
- package/lib/src/components/sidebar.d.ts +0 -2
- package/lib/src/components/sidebar.d.ts.map +0 -1
- package/lib/src/components/sidebar.js +0 -28
- package/lib/src/components/sidebar.js.map +0 -1
- package/lib/src/connect.config.d.ts +0 -115
- package/lib/src/connect.config.d.ts.map +0 -1
- package/lib/src/connect.config.js +0 -148
- package/lib/src/connect.config.js.map +0 -1
- package/lib/src/context/index.d.ts +0 -4
- package/lib/src/context/index.d.ts.map +0 -1
- package/lib/src/context/index.js +0 -4
- package/lib/src/context/index.js.map +0 -1
- package/lib/src/context/processor-manager.d.ts +0 -3
- package/lib/src/context/processor-manager.d.ts.map +0 -1
- package/lib/src/context/processor-manager.js +0 -189
- package/lib/src/context/processor-manager.js.map +0 -1
- package/lib/src/context/read-mode.d.ts +0 -2
- package/lib/src/context/read-mode.d.ts.map +0 -1
- package/lib/src/context/read-mode.js +0 -219
- package/lib/src/context/read-mode.js.map +0 -1
- package/lib/src/context/sentry-provider.d.ts +0 -6
- package/lib/src/context/sentry-provider.d.ts.map +0 -1
- package/lib/src/context/sentry-provider.js +0 -6
- package/lib/src/context/sentry-provider.js.map +0 -1
- package/lib/src/feature-flags.d.ts +0 -53
- package/lib/src/feature-flags.d.ts.map +0 -1
- package/lib/src/feature-flags.js +0 -186
- package/lib/src/feature-flags.js.map +0 -1
- package/lib/src/globals.d.ts +0 -9
- package/lib/src/globals.d.ts.map +0 -1
- package/lib/src/globals.js +0 -2
- package/lib/src/globals.js.map +0 -1
- package/lib/src/hmr.d.ts +0 -3
- package/lib/src/hmr.d.ts.map +0 -1
- package/lib/src/hmr.js +0 -2
- package/lib/src/hmr.js.map +0 -1
- package/lib/src/hooks/index.d.ts +0 -10
- package/lib/src/hooks/index.d.ts.map +0 -1
- package/lib/src/hooks/index.js +0 -10
- package/lib/src/hooks/index.js.map +0 -1
- package/lib/src/hooks/useAcceptedCookies.d.ts +0 -9
- package/lib/src/hooks/useAcceptedCookies.d.ts.map +0 -1
- package/lib/src/hooks/useAcceptedCookies.js +0 -34
- package/lib/src/hooks/useAcceptedCookies.js.map +0 -1
- package/lib/src/hooks/useCheckLatestVersion.d.ts +0 -2
- package/lib/src/hooks/useCheckLatestVersion.d.ts.map +0 -1
- package/lib/src/hooks/useCheckLatestVersion.js +0 -33
- package/lib/src/hooks/useCheckLatestVersion.js.map +0 -1
- package/lib/src/hooks/useClientErrorHandler.d.ts +0 -6
- package/lib/src/hooks/useClientErrorHandler.d.ts.map +0 -1
- package/lib/src/hooks/useClientErrorHandler.js +0 -131
- package/lib/src/hooks/useClientErrorHandler.js.map +0 -1
- package/lib/src/hooks/useCookieBanner.d.ts +0 -5
- package/lib/src/hooks/useCookieBanner.d.ts.map +0 -1
- package/lib/src/hooks/useCookieBanner.js +0 -32
- package/lib/src/hooks/useCookieBanner.js.map +0 -1
- package/lib/src/hooks/useInitSentry.d.ts +0 -2
- package/lib/src/hooks/useInitSentry.d.ts.map +0 -1
- package/lib/src/hooks/useInitSentry.js +0 -80
- package/lib/src/hooks/useInitSentry.js.map +0 -1
- package/lib/src/hooks/useNodeActions.d.ts +0 -6
- package/lib/src/hooks/useNodeActions.d.ts.map +0 -1
- package/lib/src/hooks/useNodeActions.js +0 -35
- package/lib/src/hooks/useNodeActions.js.map +0 -1
- package/lib/src/hooks/useUndoRedoShortcuts.d.ts +0 -8
- package/lib/src/hooks/useUndoRedoShortcuts.d.ts.map +0 -1
- package/lib/src/hooks/useUndoRedoShortcuts.js +0 -26
- package/lib/src/hooks/useUndoRedoShortcuts.js.map +0 -1
- package/lib/src/hooks/useWindowSize.d.ts +0 -5
- package/lib/src/hooks/useWindowSize.d.ts.map +0 -1
- package/lib/src/hooks/useWindowSize.js +0 -21
- package/lib/src/hooks/useWindowSize.js.map +0 -1
- package/lib/src/hooks/utils.d.ts +0 -7
- package/lib/src/hooks/utils.d.ts.map +0 -1
- package/lib/src/hooks/utils.js +0 -46
- package/lib/src/hooks/utils.js.map +0 -1
- package/lib/src/i18n/index.d.ts +0 -4
- package/lib/src/i18n/index.d.ts.map +0 -1
- package/lib/src/i18n/index.js +0 -26
- package/lib/src/i18n/index.js.map +0 -1
- package/lib/src/i18n/locales/en.json +0 -114
- package/lib/src/index.d.ts +0 -2
- package/lib/src/index.d.ts.map +0 -1
- package/lib/src/index.js +0 -2
- package/lib/src/index.js.map +0 -1
- package/lib/src/main.d.ts +0 -2
- package/lib/src/main.d.ts.map +0 -1
- package/lib/src/main.js +0 -5
- package/lib/src/main.js.map +0 -1
- package/lib/src/pages/content.d.ts +0 -2
- package/lib/src/pages/content.d.ts.map +0 -1
- package/lib/src/pages/content.js +0 -39
- package/lib/src/pages/content.js.map +0 -1
- package/lib/src/pages/demo/atlas-import.d.ts +0 -2
- package/lib/src/pages/demo/atlas-import.d.ts.map +0 -1
- package/lib/src/pages/demo/atlas-import.js +0 -122
- package/lib/src/pages/demo/atlas-import.js.map +0 -1
- package/lib/src/pages/index.d.ts +0 -4
- package/lib/src/pages/index.d.ts.map +0 -1
- package/lib/src/pages/index.js +0 -4
- package/lib/src/pages/index.js.map +0 -1
- package/lib/src/pages/settings.d.ts +0 -4
- package/lib/src/pages/settings.d.ts.map +0 -1
- package/lib/src/pages/settings.js +0 -9
- package/lib/src/pages/settings.js.map +0 -1
- package/lib/src/service-worker.d.ts +0 -2
- package/lib/src/service-worker.d.ts.map +0 -1
- package/lib/src/service-worker.js +0 -58
- package/lib/src/service-worker.js.map +0 -1
- package/lib/src/services/hmr.d.ts +0 -13
- package/lib/src/services/hmr.d.ts.map +0 -1
- package/lib/src/services/hmr.js +0 -85
- package/lib/src/services/hmr.js.map +0 -1
- package/lib/src/services/index.d.ts +0 -10
- package/lib/src/services/index.d.ts.map +0 -1
- package/lib/src/services/index.js +0 -9
- package/lib/src/services/index.js.map +0 -1
- package/lib/src/services/logger.d.ts +0 -2
- package/lib/src/services/logger.d.ts.map +0 -1
- package/lib/src/services/logger.js +0 -28
- package/lib/src/services/logger.js.map +0 -1
- package/lib/src/services/renown/browser.d.ts +0 -2
- package/lib/src/services/renown/browser.d.ts.map +0 -1
- package/lib/src/services/renown/browser.js +0 -6
- package/lib/src/services/renown/browser.js.map +0 -1
- package/lib/src/services/renown/constants.d.ts +0 -130
- package/lib/src/services/renown/constants.d.ts.map +0 -1
- package/lib/src/services/renown/constants.js +0 -41
- package/lib/src/services/renown/constants.js.map +0 -1
- package/lib/src/services/renown/utils.d.ts +0 -7
- package/lib/src/services/renown/utils.d.ts.map +0 -1
- package/lib/src/services/renown/utils.js +0 -20
- package/lib/src/services/renown/utils.js.map +0 -1
- package/lib/src/services/storage/base-storage.d.ts +0 -9
- package/lib/src/services/storage/base-storage.d.ts.map +0 -1
- package/lib/src/services/storage/base-storage.js +0 -21
- package/lib/src/services/storage/base-storage.js.map +0 -1
- package/lib/src/services/storage/browser.d.ts +0 -5
- package/lib/src/services/storage/browser.d.ts.map +0 -1
- package/lib/src/services/storage/browser.js +0 -25
- package/lib/src/services/storage/browser.js.map +0 -1
- package/lib/src/services/storage/types.d.ts +0 -6
- package/lib/src/services/storage/types.d.ts.map +0 -1
- package/lib/src/services/storage/types.js +0 -2
- package/lib/src/services/storage/types.js.map +0 -1
- package/lib/src/services/toast.d.ts +0 -8
- package/lib/src/services/toast.d.ts.map +0 -1
- package/lib/src/services/toast.js +0 -11
- package/lib/src/services/toast.js.map +0 -1
- package/lib/src/store/document-model.d.ts +0 -3
- package/lib/src/store/document-model.d.ts.map +0 -1
- package/lib/src/store/document-model.js +0 -80
- package/lib/src/store/document-model.js.map +0 -1
- package/lib/src/store/editor.d.ts +0 -5
- package/lib/src/store/editor.d.ts.map +0 -1
- package/lib/src/store/editor.js +0 -31
- package/lib/src/store/editor.js.map +0 -1
- package/lib/src/store/external-packages.d.ts +0 -4
- package/lib/src/store/external-packages.d.ts.map +0 -1
- package/lib/src/store/external-packages.js +0 -36
- package/lib/src/store/external-packages.js.map +0 -1
- package/lib/src/store/index.d.ts +0 -7
- package/lib/src/store/index.d.ts.map +0 -1
- package/lib/src/store/index.js +0 -7
- package/lib/src/store/index.js.map +0 -1
- package/lib/src/store/reactor.d.ts +0 -3
- package/lib/src/store/reactor.d.ts.map +0 -1
- package/lib/src/store/reactor.js +0 -272
- package/lib/src/store/reactor.js.map +0 -1
- package/lib/src/store/user.d.ts +0 -2
- package/lib/src/store/user.d.ts.map +0 -1
- package/lib/src/store/user.js +0 -16
- package/lib/src/store/user.js.map +0 -1
- package/lib/src/store/utils.d.ts +0 -2
- package/lib/src/store/utils.d.ts.map +0 -1
- package/lib/src/store/utils.js +0 -59
- package/lib/src/store/utils.js.map +0 -1
- package/lib/src/utils/browser.d.ts +0 -2
- package/lib/src/utils/browser.d.ts.map +0 -1
- package/lib/src/utils/browser.js +0 -9
- package/lib/src/utils/browser.js.map +0 -1
- package/lib/src/utils/document-editor-debug-tools.d.ts +0 -17
- package/lib/src/utils/document-editor-debug-tools.d.ts.map +0 -1
- package/lib/src/utils/document-editor-debug-tools.js +0 -55
- package/lib/src/utils/document-editor-debug-tools.js.map +0 -1
- package/lib/src/utils/drive-preservation.d.ts +0 -19
- package/lib/src/utils/drive-preservation.d.ts.map +0 -1
- package/lib/src/utils/drive-preservation.js +0 -51
- package/lib/src/utils/drive-preservation.js.map +0 -1
- package/lib/src/utils/drive-sections.d.ts +0 -31
- package/lib/src/utils/drive-sections.d.ts.map +0 -1
- package/lib/src/utils/drive-sections.js +0 -63
- package/lib/src/utils/drive-sections.js.map +0 -1
- package/lib/src/utils/index.d.ts +0 -12
- package/lib/src/utils/index.d.ts.map +0 -1
- package/lib/src/utils/index.js +0 -12
- package/lib/src/utils/index.js.map +0 -1
- package/lib/src/utils/join.d.ts +0 -2
- package/lib/src/utils/join.d.ts.map +0 -1
- package/lib/src/utils/join.js +0 -11
- package/lib/src/utils/join.js.map +0 -1
- package/lib/src/utils/openUrl.d.ts +0 -2
- package/lib/src/utils/openUrl.d.ts.map +0 -1
- package/lib/src/utils/openUrl.js +0 -3
- package/lib/src/utils/openUrl.js.map +0 -1
- package/lib/src/utils/path.d.ts +0 -4
- package/lib/src/utils/path.d.ts.map +0 -1
- package/lib/src/utils/path.js +0 -17
- package/lib/src/utils/path.js.map +0 -1
- package/lib/src/utils/reactor.d.ts +0 -26
- package/lib/src/utils/reactor.d.ts.map +0 -1
- package/lib/src/utils/reactor.js +0 -115
- package/lib/src/utils/reactor.js.map +0 -1
- package/lib/src/utils/registerServiceWorker.d.ts +0 -12
- package/lib/src/utils/registerServiceWorker.d.ts.map +0 -1
- package/lib/src/utils/registerServiceWorker.js +0 -97
- package/lib/src/utils/registerServiceWorker.js.map +0 -1
- package/lib/src/utils/signature.d.ts +0 -4
- package/lib/src/utils/signature.d.ts.map +0 -1
- package/lib/src/utils/signature.js +0 -36
- package/lib/src/utils/signature.js.map +0 -1
- package/lib/src/utils/slug.d.ts +0 -2
- package/lib/src/utils/slug.d.ts.map +0 -1
- package/lib/src/utils/slug.js +0 -4
- package/lib/src/utils/slug.js.map +0 -1
- package/lib/src/workers/pglite-worker.d.ts +0 -2
- package/lib/src/workers/pglite-worker.d.ts.map +0 -1
- package/lib/src/workers/pglite-worker.js +0 -32
- package/lib/src/workers/pglite-worker.js.map +0 -1
- package/lib/test/utils/signer.test.d.ts +0 -2
- package/lib/test/utils/signer.test.d.ts.map +0 -1
- package/lib/test/utils/signer.test.js +0 -330
- package/lib/test/utils/signer.test.js.map +0 -1
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/lib/vite.config.d.ts +0 -3
- package/lib/vite.config.d.ts.map +0 -1
- package/lib/vite.config.js +0 -59
- package/lib/vite.config.js.map +0 -1
- package/lib/vitest.config.d.ts +0 -3
- package/lib/vitest.config.d.ts.map +0 -1
- package/lib/vitest.config.js +0 -8
- package/lib/vitest.config.js.map +0 -1
- package/nginx.conf +0 -77
- package/package.copy.json +0 -177
- package/src/index.css +0 -5
|
@@ -0,0 +1,783 @@
|
|
|
1
|
+
import { i as phGlobalConfigFromEnv } from "./connect.config-Cuh0hj_Q.js";
|
|
2
|
+
import { n as toast } from "./toast-DnODOv28.js";
|
|
3
|
+
import { a as loadPGliteModule, n as detectRelationalPgMajor, s as resolvePgMajorForRuntime, t as detectReactorPgMajor } from "./pglite-runtime-C1g-4Jxl.js";
|
|
4
|
+
import { BrowserLocalStorage, ChannelScheme, DocumentCache, DocumentChangeType, ReactorBuilder, ReactorClientBuilder, RegistryClient, addPHEventHandlers, addRemoteDrive, createAnalyticsStore, extractDriveSlugFromPath, extractNodeSlugFromPath, getDrives, login, refreshReactorDataClient, setDefaultPHGlobalConfig, setDocumentCache, setDrives, setFeatures, setPHToast, setPackageDiscoveryService, setReactorClient, setReactorClientModule, setRenown, setSelectedDrive, setSelectedNode, setVetraPackageManager } from "@powerhousedao/reactor-browser";
|
|
5
|
+
import { ConsoleLogger, logger, setLogLevel as setLogLevel$1 } from "document-model";
|
|
6
|
+
import { createRelationalDb } from "@powerhousedao/shared/processors";
|
|
7
|
+
import { BrowserKeyStorage, RenownBuilder, RenownCryptoBuilder, createSignatureVerifier } from "@renown/sdk";
|
|
8
|
+
import { Kysely } from "kysely";
|
|
9
|
+
import { PGliteDialect } from "kysely-pglite-dialect";
|
|
10
|
+
import { OpenFeature } from "@openfeature/web-sdk";
|
|
11
|
+
import * as common from "@powerhousedao/powerhouse-vetra-packages";
|
|
12
|
+
import commonPkg from "@powerhousedao/powerhouse-vetra-packages/package.json" with { type: "json" };
|
|
13
|
+
import * as vetra from "@powerhousedao/vetra";
|
|
14
|
+
import vetraPkg from "@powerhousedao/vetra/package.json" with { type: "json" };
|
|
15
|
+
//#region src/utils/reactor.ts
|
|
16
|
+
/**
|
|
17
|
+
* Creates a Reactor that plugs into legacy storage but syncs through the new
|
|
18
|
+
* Reactor GQL API.
|
|
19
|
+
*/
|
|
20
|
+
async function createBrowserReactor(documentModelModules, upgradeManifests, renown, documentModelLoader) {
|
|
21
|
+
const signerConfig = {
|
|
22
|
+
signer: renown.signer,
|
|
23
|
+
verifier: createSignatureVerifier()
|
|
24
|
+
};
|
|
25
|
+
const jwtHandler = async (url) => {
|
|
26
|
+
if (!renown.user) return;
|
|
27
|
+
return renown.getBearerToken({
|
|
28
|
+
expiresIn: 10,
|
|
29
|
+
aud: url
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const major = resolvePgMajorForRuntime(await detectReactorPgMajor());
|
|
33
|
+
if (major !== 17) console.warn(`[reactor] Running against legacy PGlite data dir (Postgres ${major}). Migrate to PG17 from the banner or the Inspector → Debug tab.`);
|
|
34
|
+
const { PGlite } = await loadPGliteModule(major);
|
|
35
|
+
const pg = new PGlite("idb://reactor", { relaxedDurability: true });
|
|
36
|
+
const logger = new ConsoleLogger(["reactor-client"]);
|
|
37
|
+
const builder = new ReactorClientBuilder().withLogger(logger).withSigner(signerConfig).withReactorBuilder(new ReactorBuilder().withDocumentModels(documentModelModules).withUpgradeManifests(upgradeManifests).withChannelScheme(ChannelScheme.CONNECT).withJwtHandler(jwtHandler).withKysely(new Kysely({ dialect: new PGliteDialect(pg) })));
|
|
38
|
+
if (documentModelLoader) builder.withDocumentModelLoader(documentModelLoader);
|
|
39
|
+
return {
|
|
40
|
+
...await builder.buildModule(),
|
|
41
|
+
pg
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parse default drives from environment variable.
|
|
46
|
+
* Returns an array of drive REST endpoint URLs (e.g., "https://example.com/d/powerhouse").
|
|
47
|
+
*/
|
|
48
|
+
function getDefaultDrivesFromEnv() {
|
|
49
|
+
const envValue = import.meta.env.PH_CONNECT_DEFAULT_DRIVES_URL;
|
|
50
|
+
if (!envValue) return [];
|
|
51
|
+
return envValue.split(",").filter((url) => url.trim().length > 0);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Add default drives for the new reactor via sync manager.
|
|
55
|
+
*
|
|
56
|
+
* Retries with linear backoff to handle the common race where Connect's
|
|
57
|
+
* dev server is ready before the switchboard has finished binding its port.
|
|
58
|
+
*
|
|
59
|
+
* @param defaultDriveUrls - Array of drive REST endpoint URLs (e.g., "https://example.com/d/powerhouse")
|
|
60
|
+
*/
|
|
61
|
+
async function addDefaultDrivesForNewReactor(defaultDriveUrls) {
|
|
62
|
+
const MAX_ATTEMPTS = 3;
|
|
63
|
+
const BACKOFF_MS = 2e3;
|
|
64
|
+
for (const url of defaultDriveUrls) for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) try {
|
|
65
|
+
await addRemoteDrive(url);
|
|
66
|
+
break;
|
|
67
|
+
} catch (error) {
|
|
68
|
+
if (attempt === MAX_ATTEMPTS) console.error(`Failed to add default drive ${url} after ${MAX_ATTEMPTS} attempts:`, error);
|
|
69
|
+
else {
|
|
70
|
+
const delay = BACKOFF_MS * attempt;
|
|
71
|
+
console.warn(`Default drive ${url} not reachable (attempt ${attempt}/${MAX_ATTEMPTS}), retrying in ${delay}ms...`);
|
|
72
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/feature-flags.ts
|
|
78
|
+
/**
|
|
79
|
+
* QueryParamProvider reads feature flags from URL query parameters.
|
|
80
|
+
*
|
|
81
|
+
* Usage:
|
|
82
|
+
* const params = new URLSearchParams(window.location.search);
|
|
83
|
+
* const provider = new QueryParamProvider(params);
|
|
84
|
+
* await OpenFeature.setProviderAndWait(provider);
|
|
85
|
+
*
|
|
86
|
+
* Query parameter format:
|
|
87
|
+
* ?FEATURE_DUAL_ACTION_CREATE_ENABLED=true&FEATURE_FOO=false
|
|
88
|
+
*/
|
|
89
|
+
var QueryParamProvider = class {
|
|
90
|
+
runsOn = "client";
|
|
91
|
+
metadata = { name: "QueryParamProvider" };
|
|
92
|
+
flags;
|
|
93
|
+
constructor(searchParams) {
|
|
94
|
+
this.flags = /* @__PURE__ */ new Map();
|
|
95
|
+
for (const [key, value] of searchParams.entries()) this.flags.set(key, value);
|
|
96
|
+
}
|
|
97
|
+
resolveBooleanEvaluation(flagKey, defaultValue) {
|
|
98
|
+
const value = this.flags.get(flagKey);
|
|
99
|
+
if (value === void 0) return {
|
|
100
|
+
value: defaultValue,
|
|
101
|
+
reason: "DEFAULT"
|
|
102
|
+
};
|
|
103
|
+
return {
|
|
104
|
+
value: value.toLowerCase() === "true" || value === "1",
|
|
105
|
+
reason: "STATIC",
|
|
106
|
+
variant: value
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
resolveStringEvaluation(flagKey, defaultValue) {
|
|
110
|
+
const value = this.flags.get(flagKey);
|
|
111
|
+
if (value === void 0) return {
|
|
112
|
+
value: defaultValue,
|
|
113
|
+
reason: "DEFAULT"
|
|
114
|
+
};
|
|
115
|
+
return {
|
|
116
|
+
value,
|
|
117
|
+
reason: "STATIC",
|
|
118
|
+
variant: value
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
resolveNumberEvaluation(flagKey, defaultValue) {
|
|
122
|
+
const value = this.flags.get(flagKey);
|
|
123
|
+
if (value === void 0) return {
|
|
124
|
+
value: defaultValue,
|
|
125
|
+
reason: "DEFAULT"
|
|
126
|
+
};
|
|
127
|
+
const numValue = Number(value);
|
|
128
|
+
if (isNaN(numValue)) return {
|
|
129
|
+
value: defaultValue,
|
|
130
|
+
reason: "ERROR",
|
|
131
|
+
errorCode: "PARSE_ERROR",
|
|
132
|
+
errorMessage: `Failed to parse "${value}" as a number`
|
|
133
|
+
};
|
|
134
|
+
return {
|
|
135
|
+
value: numValue,
|
|
136
|
+
reason: "STATIC",
|
|
137
|
+
variant: value
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
resolveObjectEvaluation(flagKey, defaultValue) {
|
|
141
|
+
const value = this.flags.get(flagKey);
|
|
142
|
+
if (value === void 0) return {
|
|
143
|
+
value: defaultValue,
|
|
144
|
+
reason: "DEFAULT"
|
|
145
|
+
};
|
|
146
|
+
try {
|
|
147
|
+
return {
|
|
148
|
+
value: JSON.parse(value),
|
|
149
|
+
reason: "STATIC",
|
|
150
|
+
variant: value
|
|
151
|
+
};
|
|
152
|
+
} catch (error) {
|
|
153
|
+
return {
|
|
154
|
+
value: defaultValue,
|
|
155
|
+
reason: "ERROR",
|
|
156
|
+
errorCode: "PARSE_ERROR",
|
|
157
|
+
errorMessage: `Failed to parse JSON: ${error instanceof Error ? error.message : String(error)}`
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Initialize OpenFeature with the QueryParamProvider.
|
|
164
|
+
* Reads feature flags from query parameters.
|
|
165
|
+
*/
|
|
166
|
+
async function initFeatureFlags(searchParams) {
|
|
167
|
+
const params = searchParams ?? (typeof window !== "undefined" ? new URLSearchParams(window.location.search) : new URLSearchParams());
|
|
168
|
+
const provider = new QueryParamProvider(params);
|
|
169
|
+
await OpenFeature.setProviderAndWait(provider);
|
|
170
|
+
const features = /* @__PURE__ */ new Map();
|
|
171
|
+
const logLevelParam = params.get("LOG_LEVEL");
|
|
172
|
+
if (logLevelParam) {
|
|
173
|
+
const validLogLevels = [
|
|
174
|
+
"verbose",
|
|
175
|
+
"debug",
|
|
176
|
+
"info",
|
|
177
|
+
"warn",
|
|
178
|
+
"error"
|
|
179
|
+
];
|
|
180
|
+
if (validLogLevels.includes(logLevelParam.toLowerCase())) {
|
|
181
|
+
setLogLevel$1(logLevelParam.toLowerCase());
|
|
182
|
+
logger.info("Log level set to @level via query param", logLevelParam.toLowerCase());
|
|
183
|
+
} else logger.warn("Invalid LOG_LEVEL query param: @param. Valid values: @validLevels", logLevelParam, validLogLevels.join(", "));
|
|
184
|
+
}
|
|
185
|
+
return features;
|
|
186
|
+
}
|
|
187
|
+
//#endregion
|
|
188
|
+
//#region src/package-discovery.ts
|
|
189
|
+
var PackageDiscoveryService = class {
|
|
190
|
+
#packageManager;
|
|
191
|
+
#registryClient;
|
|
192
|
+
#mode;
|
|
193
|
+
#deferred = /* @__PURE__ */ new Map();
|
|
194
|
+
#pending = /* @__PURE__ */ new Map();
|
|
195
|
+
#pendingMemo = [];
|
|
196
|
+
#pendingSubscribers = /* @__PURE__ */ new Set();
|
|
197
|
+
#eventSubscribers = /* @__PURE__ */ new Set();
|
|
198
|
+
#dismissedStorage;
|
|
199
|
+
#discoveredTypes = /* @__PURE__ */ new Map();
|
|
200
|
+
constructor(packageManager, registryClient, options) {
|
|
201
|
+
this.#packageManager = packageManager;
|
|
202
|
+
this.#registryClient = registryClient;
|
|
203
|
+
this.#mode = options.mode;
|
|
204
|
+
this.#dismissedStorage = new BrowserLocalStorage(options.storageKey + ":PH_DISMISSED_TYPES");
|
|
205
|
+
}
|
|
206
|
+
load(documentType) {
|
|
207
|
+
const existing = this.#findModuleInLoadedPackages(documentType);
|
|
208
|
+
if (existing) return Promise.resolve(existing);
|
|
209
|
+
if (this.#dismissedStorage.has(documentType)) return Promise.reject(/* @__PURE__ */ new Error(`Document type "${documentType}" was dismissed`));
|
|
210
|
+
const tracked = this.#deferred.get(documentType);
|
|
211
|
+
if (tracked) return tracked.promise;
|
|
212
|
+
return this.#discover(documentType);
|
|
213
|
+
}
|
|
214
|
+
promptInstallation(documentType) {
|
|
215
|
+
const packageNames = this.#discoveredTypes.get(documentType);
|
|
216
|
+
if (!packageNames) return;
|
|
217
|
+
if (this.#pending.has(documentType)) return;
|
|
218
|
+
this.#discoveredTypes.delete(documentType);
|
|
219
|
+
this.#addToPending(documentType, packageNames);
|
|
220
|
+
}
|
|
221
|
+
async approveInstallation(packageName) {
|
|
222
|
+
const affectedTypes = this.#findTypesByPackage(packageName);
|
|
223
|
+
if (affectedTypes.length === 0) return;
|
|
224
|
+
const result = await this.#packageManager.addPackage(packageName);
|
|
225
|
+
if (result.type === "error") {
|
|
226
|
+
this.#emitEvent({
|
|
227
|
+
type: "installation-failed",
|
|
228
|
+
packageName,
|
|
229
|
+
error: result.error
|
|
230
|
+
});
|
|
231
|
+
for (const documentType of affectedTypes) {
|
|
232
|
+
const entry = this.#deferred.get(documentType);
|
|
233
|
+
if (entry) {
|
|
234
|
+
entry.reject(result.error);
|
|
235
|
+
this.#deferred.delete(documentType);
|
|
236
|
+
this.#pending.delete(documentType);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
this.#notifyPendingChanged();
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
this.#emitEvent({
|
|
243
|
+
type: "installation-approved",
|
|
244
|
+
packageName,
|
|
245
|
+
documentTypes: affectedTypes
|
|
246
|
+
});
|
|
247
|
+
for (const documentType of affectedTypes) {
|
|
248
|
+
const entry = this.#deferred.get(documentType);
|
|
249
|
+
if (!entry) continue;
|
|
250
|
+
const module = this.#findModuleInLoadedPackages(documentType);
|
|
251
|
+
if (module) entry.resolve(module);
|
|
252
|
+
else entry.reject(/* @__PURE__ */ new Error(`Package "${packageName}" installed but module for "${documentType}" not found`));
|
|
253
|
+
this.#deferred.delete(documentType);
|
|
254
|
+
this.#pending.delete(documentType);
|
|
255
|
+
}
|
|
256
|
+
this.#notifyPendingChanged();
|
|
257
|
+
}
|
|
258
|
+
dismissInstallation(packageName) {
|
|
259
|
+
const affectedTypes = this.#findTypesByPackage(packageName);
|
|
260
|
+
if (affectedTypes.length === 0) return;
|
|
261
|
+
for (const documentType of affectedTypes) {
|
|
262
|
+
this.#dismissedStorage.set(documentType, true);
|
|
263
|
+
const entry = this.#deferred.get(documentType);
|
|
264
|
+
if (entry) entry.reject(/* @__PURE__ */ new Error(`Document type "${documentType}" was dismissed`));
|
|
265
|
+
this.#deferred.delete(documentType);
|
|
266
|
+
this.#pending.delete(documentType);
|
|
267
|
+
this.#discoveredTypes.delete(documentType);
|
|
268
|
+
}
|
|
269
|
+
this.#emitEvent({
|
|
270
|
+
type: "installation-dismissed",
|
|
271
|
+
packageName,
|
|
272
|
+
documentTypes: affectedTypes
|
|
273
|
+
});
|
|
274
|
+
this.#notifyPendingChanged();
|
|
275
|
+
}
|
|
276
|
+
getPendingInstallations() {
|
|
277
|
+
return this.#pendingMemo;
|
|
278
|
+
}
|
|
279
|
+
subscribePending(listener) {
|
|
280
|
+
this.#pendingSubscribers.add(listener);
|
|
281
|
+
return () => {
|
|
282
|
+
this.#pendingSubscribers.delete(listener);
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
subscribeEvents(listener) {
|
|
286
|
+
this.#eventSubscribers.add(listener);
|
|
287
|
+
return () => {
|
|
288
|
+
this.#eventSubscribers.delete(listener);
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
async #discover(documentType) {
|
|
292
|
+
let packageNames;
|
|
293
|
+
try {
|
|
294
|
+
packageNames = await this.#registryClient.getPackagesByDocumentType(documentType);
|
|
295
|
+
} catch (error) {
|
|
296
|
+
this.#emitEvent({
|
|
297
|
+
type: "registry-query-failed",
|
|
298
|
+
documentType,
|
|
299
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
300
|
+
});
|
|
301
|
+
return Promise.reject(error instanceof Error ? error : new Error(String(error)));
|
|
302
|
+
}
|
|
303
|
+
if (packageNames.length === 0) return Promise.reject(/* @__PURE__ */ new Error(`No packages found for document type "${documentType}"`));
|
|
304
|
+
const entry = this.#createDeferredEntry(documentType, packageNames);
|
|
305
|
+
this.#emitEvent({
|
|
306
|
+
type: "type-discovered",
|
|
307
|
+
documentType,
|
|
308
|
+
packageNames
|
|
309
|
+
});
|
|
310
|
+
if (this.#mode === "immediate") this.#addToPending(documentType, packageNames);
|
|
311
|
+
else this.#discoveredTypes.set(documentType, packageNames);
|
|
312
|
+
return entry.promise;
|
|
313
|
+
}
|
|
314
|
+
#createDeferredEntry(documentType, packageNames) {
|
|
315
|
+
let resolve;
|
|
316
|
+
let reject;
|
|
317
|
+
const promise = new Promise((res, rej) => {
|
|
318
|
+
resolve = res;
|
|
319
|
+
reject = rej;
|
|
320
|
+
});
|
|
321
|
+
const entry = {
|
|
322
|
+
packageNames,
|
|
323
|
+
resolve,
|
|
324
|
+
reject,
|
|
325
|
+
promise
|
|
326
|
+
};
|
|
327
|
+
this.#deferred.set(documentType, entry);
|
|
328
|
+
return entry;
|
|
329
|
+
}
|
|
330
|
+
#addToPending(documentType, packageNames) {
|
|
331
|
+
const installation = {
|
|
332
|
+
documentType,
|
|
333
|
+
packageNames
|
|
334
|
+
};
|
|
335
|
+
this.#pending.set(documentType, installation);
|
|
336
|
+
this.#emitEvent({
|
|
337
|
+
type: "installation-prompted",
|
|
338
|
+
documentType,
|
|
339
|
+
packageNames
|
|
340
|
+
});
|
|
341
|
+
this.#notifyPendingChanged();
|
|
342
|
+
}
|
|
343
|
+
#findModuleInLoadedPackages(documentType) {
|
|
344
|
+
return this.#packageManager.packages.flatMap((p) => p.documentModels).find((m) => m.documentModel.global.id === documentType);
|
|
345
|
+
}
|
|
346
|
+
#findTypesByPackage(packageName) {
|
|
347
|
+
const types = [];
|
|
348
|
+
for (const [documentType, entry] of this.#deferred) if (entry.packageNames.includes(packageName)) types.push(documentType);
|
|
349
|
+
return types;
|
|
350
|
+
}
|
|
351
|
+
#notifyPendingChanged() {
|
|
352
|
+
this.#pendingMemo = Array.from(this.#pending.values());
|
|
353
|
+
for (const listener of this.#pendingSubscribers) listener();
|
|
354
|
+
}
|
|
355
|
+
#emitEvent(event) {
|
|
356
|
+
for (const listener of this.#eventSubscribers) listener(event);
|
|
357
|
+
}
|
|
358
|
+
};
|
|
359
|
+
//#endregion
|
|
360
|
+
//#region src/package-manager.ts
|
|
361
|
+
/**
|
|
362
|
+
* Strip any `@tag` / `@version` suffix from a package spec, returning the bare
|
|
363
|
+
* package name. Mirrors `parsePackageSpec` on the UI side.
|
|
364
|
+
*/
|
|
365
|
+
function parseBareName(spec) {
|
|
366
|
+
const trimmed = spec.trim();
|
|
367
|
+
const at = trimmed.startsWith("@") ? trimmed.lastIndexOf("@") : trimmed.indexOf("@");
|
|
368
|
+
return at > 0 ? trimmed.slice(0, at) : trimmed;
|
|
369
|
+
}
|
|
370
|
+
async function fetchPackageJsonVersion(baseUrl) {
|
|
371
|
+
try {
|
|
372
|
+
const res = await fetch(baseUrl);
|
|
373
|
+
if (!res.ok) return void 0;
|
|
374
|
+
const pkg = await res.json();
|
|
375
|
+
return typeof pkg.version === "string" ? pkg.version : void 0;
|
|
376
|
+
} catch {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
const LOCAL_PACKAGE_NAME = "Local";
|
|
381
|
+
var BrowserPackageManager = class {
|
|
382
|
+
registryUrl;
|
|
383
|
+
#storage;
|
|
384
|
+
#packages = /* @__PURE__ */ new Map();
|
|
385
|
+
#subscribers = /* @__PURE__ */ new Set();
|
|
386
|
+
#packagesMemo = [];
|
|
387
|
+
#stylesheets = /* @__PURE__ */ new Map();
|
|
388
|
+
#localPackage;
|
|
389
|
+
#cdnUrl;
|
|
390
|
+
#localPackageVersion;
|
|
391
|
+
#localPackageNames = new Set([LOCAL_PACKAGE_NAME]);
|
|
392
|
+
constructor(namespace, registryUrl) {
|
|
393
|
+
this.#storage = new BrowserLocalStorage(namespace + ":PH_PACKAGES");
|
|
394
|
+
this.registryUrl = registryUrl;
|
|
395
|
+
this.#cdnUrl = registryUrl !== null ? this.#toCdnUrl(registryUrl) : null;
|
|
396
|
+
}
|
|
397
|
+
#toCdnUrl(baseUrl) {
|
|
398
|
+
if (baseUrl.includes("/-/cdn")) return baseUrl;
|
|
399
|
+
return `${baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl}/-/cdn`;
|
|
400
|
+
}
|
|
401
|
+
async init(localPackage, localPackageVersion) {
|
|
402
|
+
this.addLocalPackage(common.manifest.name, common, commonPkg.version);
|
|
403
|
+
this.addLocalPackage(vetra.manifest.name, vetra, vetraPkg.version);
|
|
404
|
+
if (localPackage) this.updateLocalPackage(localPackage, localPackageVersion);
|
|
405
|
+
for (const packageName of this.#storage.keys()) {
|
|
406
|
+
const specForReload = this.#storage.get(packageName)?.spec ?? packageName;
|
|
407
|
+
console.debug(`[Connect][PackageManager] Rehydrating "${packageName}" via spec "${specForReload}"`);
|
|
408
|
+
if ((await this.addPackage(specForReload)).type === "error") this.#storage.delete(packageName);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
addLocalPackage(name, loadedPackage, version) {
|
|
412
|
+
this.#localPackageNames.add(name);
|
|
413
|
+
this.#registerPackage({
|
|
414
|
+
name,
|
|
415
|
+
importUrl: null,
|
|
416
|
+
stylesheetUrl: null,
|
|
417
|
+
loadedPackage,
|
|
418
|
+
version
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
updateLocalPackage(pkg, version) {
|
|
422
|
+
console.debug("Updating local package:", pkg);
|
|
423
|
+
this.#localPackage = pkg;
|
|
424
|
+
this.#registerPackage({
|
|
425
|
+
name: LOCAL_PACKAGE_NAME,
|
|
426
|
+
stylesheetUrl: null,
|
|
427
|
+
importUrl: null,
|
|
428
|
+
loadedPackage: pkg
|
|
429
|
+
});
|
|
430
|
+
if (version) {
|
|
431
|
+
this.#localPackageVersion = version;
|
|
432
|
+
this.#notifyPackagesChanged();
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
fetchPackageJsonVersion("/package.json").then((fetchedVersion) => {
|
|
436
|
+
this.#localPackageVersion = fetchedVersion;
|
|
437
|
+
if (fetchedVersion) this.#notifyPackagesChanged();
|
|
438
|
+
}).catch(() => {});
|
|
439
|
+
}
|
|
440
|
+
get packages() {
|
|
441
|
+
return this.#packagesMemo;
|
|
442
|
+
}
|
|
443
|
+
get cdnUrl() {
|
|
444
|
+
return this.#cdnUrl;
|
|
445
|
+
}
|
|
446
|
+
getPackageSource(packageName) {
|
|
447
|
+
if (this.#localPackageNames.has(packageName)) return "common";
|
|
448
|
+
if (packageName === this.#localPackage?.manifest.name) return "project";
|
|
449
|
+
const packageMeta = this.#storage.get(packageName);
|
|
450
|
+
if (!packageMeta) return null;
|
|
451
|
+
if (packageMeta.importUrl === `/node_modules/${packageName}`) return "local-install";
|
|
452
|
+
return "registry-install";
|
|
453
|
+
}
|
|
454
|
+
getPackageVersion(packageName) {
|
|
455
|
+
if (packageName === this.#localPackage?.manifest.name) return this.#localPackageVersion;
|
|
456
|
+
return this.#storage.get(packageName)?.version;
|
|
457
|
+
}
|
|
458
|
+
async addPackage(packageSpec) {
|
|
459
|
+
const bareName = parseBareName(packageSpec);
|
|
460
|
+
const hasTagOrVersion = bareName !== packageSpec;
|
|
461
|
+
console.debug(`[Connect][PackageManager] addPackage spec="${packageSpec}" bareName="${bareName}"`);
|
|
462
|
+
const existingPackage = this.#packages.get(bareName);
|
|
463
|
+
if (existingPackage) {
|
|
464
|
+
console.debug(`[Connect][PackageManager] "${bareName}" already loaded; skipping re-fetch`);
|
|
465
|
+
return {
|
|
466
|
+
type: "success",
|
|
467
|
+
package: existingPackage
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
try {
|
|
471
|
+
const packageWithMeta = await this.#loadPackage(packageSpec);
|
|
472
|
+
packageWithMeta.name = bareName;
|
|
473
|
+
if (hasTagOrVersion) packageWithMeta.spec = packageSpec;
|
|
474
|
+
this.#registerPackage(packageWithMeta);
|
|
475
|
+
return {
|
|
476
|
+
type: "success",
|
|
477
|
+
package: packageWithMeta.loadedPackage
|
|
478
|
+
};
|
|
479
|
+
} catch (error) {
|
|
480
|
+
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
481
|
+
console.error(`[Connect][PackageManager] Failed to install package "${packageSpec}": ${normalized.message}`, normalized);
|
|
482
|
+
return {
|
|
483
|
+
type: "error",
|
|
484
|
+
error: normalized
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
async addPackages(packageNames) {
|
|
489
|
+
const results = [];
|
|
490
|
+
for (const packageName of packageNames) {
|
|
491
|
+
const result = await this.addPackage(packageName);
|
|
492
|
+
results.push(result);
|
|
493
|
+
}
|
|
494
|
+
return results;
|
|
495
|
+
}
|
|
496
|
+
removePackage(name) {
|
|
497
|
+
this.#packages.delete(name);
|
|
498
|
+
this.#storage.delete(name);
|
|
499
|
+
this.#unmountStylesheet(name);
|
|
500
|
+
this.#notifyPackagesChanged();
|
|
501
|
+
}
|
|
502
|
+
subscribe(handler) {
|
|
503
|
+
this.#subscribers.add(handler);
|
|
504
|
+
return () => {
|
|
505
|
+
this.#subscribers.delete(handler);
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
load(documentType) {
|
|
509
|
+
const documentModelModule = Array.from(this.#packages.values().flatMap((p) => p.documentModels)).find((m) => m.documentModel.global.id === documentType);
|
|
510
|
+
if (documentModelModule) return Promise.resolve(documentModelModule);
|
|
511
|
+
return Promise.reject(/* @__PURE__ */ new Error("Model not available"));
|
|
512
|
+
}
|
|
513
|
+
async #loadPackageFromNodeModules(name) {
|
|
514
|
+
const importUrl = `/node_modules/${name}/browser/index.js`;
|
|
515
|
+
const stylesheetUrl = `/node_modules/${name}/style.css`;
|
|
516
|
+
const packageWithMeta = await this.#importPackage({
|
|
517
|
+
name,
|
|
518
|
+
importUrl,
|
|
519
|
+
stylesheetUrl
|
|
520
|
+
});
|
|
521
|
+
packageWithMeta.version = await fetchPackageJsonVersion(`/node_modules/${name}/package.json`);
|
|
522
|
+
return packageWithMeta;
|
|
523
|
+
}
|
|
524
|
+
async #loadPackageFromRegistry(name) {
|
|
525
|
+
const importUrl = `${this.#cdnUrl}/${name}/browser/index.js`;
|
|
526
|
+
const stylesheetUrl = `${this.#cdnUrl}/${name}/style.css`;
|
|
527
|
+
const packageWithMeta = await this.#importPackage({
|
|
528
|
+
name,
|
|
529
|
+
importUrl,
|
|
530
|
+
stylesheetUrl
|
|
531
|
+
});
|
|
532
|
+
packageWithMeta.version = await fetchPackageJsonVersion(`${this.#cdnUrl}/${name}/package.json`);
|
|
533
|
+
return packageWithMeta;
|
|
534
|
+
}
|
|
535
|
+
async #importPackage(packageMeta) {
|
|
536
|
+
const { name, importUrl, stylesheetUrl } = packageMeta;
|
|
537
|
+
if (!importUrl) throw new Error(`Import url not defined for package "${name}".`);
|
|
538
|
+
return {
|
|
539
|
+
name,
|
|
540
|
+
loadedPackage: await import(
|
|
541
|
+
/* @vite-ignore */
|
|
542
|
+
importUrl
|
|
543
|
+
),
|
|
544
|
+
importUrl,
|
|
545
|
+
stylesheetUrl
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
async #loadPackage(packageName) {
|
|
549
|
+
if (this.#localPackageNames.has(packageName)) throw new Error(`Package "${packageName}" is a local package and cannot be loaded dynamically.`);
|
|
550
|
+
if (!import.meta.env.PROD) try {
|
|
551
|
+
return await this.#loadPackageFromNodeModules(packageName);
|
|
552
|
+
} catch (error) {
|
|
553
|
+
console.warn(`Failed to load package "${packageName}" from node_modules:`, error);
|
|
554
|
+
}
|
|
555
|
+
if (!this.registryUrl) throw new Error("Registry url not defined.");
|
|
556
|
+
return await this.#loadPackageFromRegistry(packageName);
|
|
557
|
+
}
|
|
558
|
+
#registerPackage(packageWithMeta) {
|
|
559
|
+
const { name, loadedPackage, importUrl, stylesheetUrl, version, spec } = packageWithMeta;
|
|
560
|
+
if (stylesheetUrl !== null) this.#mountStylesheet(name, stylesheetUrl);
|
|
561
|
+
this.#packages.set(name, loadedPackage);
|
|
562
|
+
this.#storage.set(name, {
|
|
563
|
+
name,
|
|
564
|
+
importUrl,
|
|
565
|
+
stylesheetUrl,
|
|
566
|
+
version,
|
|
567
|
+
...spec ? { spec } : {}
|
|
568
|
+
});
|
|
569
|
+
console.debug(`[Connect][PackageManager] Registered "${name}" (version=${version ?? "?"}, spec=${spec ?? "—"})`);
|
|
570
|
+
this.#notifyPackagesChanged();
|
|
571
|
+
}
|
|
572
|
+
#mountStylesheet(name, href) {
|
|
573
|
+
const existing = this.#stylesheets.get(name);
|
|
574
|
+
if (existing) return existing;
|
|
575
|
+
const link = document.createElement("link");
|
|
576
|
+
link.rel = "stylesheet";
|
|
577
|
+
link.href = href;
|
|
578
|
+
document.head.appendChild(link);
|
|
579
|
+
this.#stylesheets.set(name, link);
|
|
580
|
+
}
|
|
581
|
+
#unmountStylesheet(name) {
|
|
582
|
+
const link = this.#stylesheets.get(name);
|
|
583
|
+
if (!link) return;
|
|
584
|
+
link.remove();
|
|
585
|
+
this.#stylesheets.delete(name);
|
|
586
|
+
}
|
|
587
|
+
#notifyPackagesChanged() {
|
|
588
|
+
this.#packagesMemo = Array.from(this.#packages.values());
|
|
589
|
+
const packages = this.packages;
|
|
590
|
+
this.#subscribers.forEach((handler) => {
|
|
591
|
+
handler({ packages });
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
};
|
|
595
|
+
//#endregion
|
|
596
|
+
//#region src/packages.config.ts
|
|
597
|
+
function assertPackagesConfig(value) {
|
|
598
|
+
if (typeof value !== "object" || value === null) throw new Error("ph-packages.json must be a JSON object");
|
|
599
|
+
const obj = value;
|
|
600
|
+
if (!Array.isArray(obj.packages)) throw new Error("ph-packages.json: 'packages' must be an array");
|
|
601
|
+
if (!obj.packages.every((item) => typeof item === "string")) throw new Error("ph-packages.json: 'packages' must be an array of strings");
|
|
602
|
+
}
|
|
603
|
+
let cached;
|
|
604
|
+
async function loadPackagesConfig() {
|
|
605
|
+
if (cached) return cached;
|
|
606
|
+
const url = `${import.meta.env.BASE_URL ?? "/"}ph-packages.json`;
|
|
607
|
+
const json = await (await fetch(url)).json();
|
|
608
|
+
assertPackagesConfig(json);
|
|
609
|
+
cached = json;
|
|
610
|
+
return cached;
|
|
611
|
+
}
|
|
612
|
+
//#endregion
|
|
613
|
+
//#region src/pglite.db.ts
|
|
614
|
+
async function createPGliteWorkerForMajor(major) {
|
|
615
|
+
if (major === 16) {
|
|
616
|
+
const [legacyWorker, legacyLive] = await Promise.all([import("pglite-legacy-02/worker"), import("pglite-legacy-02/live")]);
|
|
617
|
+
const worker = new Worker(new URL("./pglite.worker.legacy.js", import.meta.url), { type: "module" });
|
|
618
|
+
return legacyWorker.PGliteWorker.create(worker, { extensions: { live: legacyLive.live } });
|
|
619
|
+
}
|
|
620
|
+
const [{ PGliteWorker }, { live }] = await Promise.all([import("@electric-sql/pglite/worker"), import("@electric-sql/pglite/live")]);
|
|
621
|
+
const worker = new Worker(new URL("./pglite.worker.js", import.meta.url), { type: "module" });
|
|
622
|
+
return PGliteWorker.create(worker, { extensions: { live } });
|
|
623
|
+
}
|
|
624
|
+
async function getDb() {
|
|
625
|
+
const major = resolvePgMajorForRuntime(await detectRelationalPgMajor());
|
|
626
|
+
if (major !== 17) console.warn(`[reactor] Relational worker is opening legacy Postgres ${major} data dir. Migrate to PG17 from the banner or the Inspector → Debug tab.`);
|
|
627
|
+
const pgLite = await createPGliteWorkerForMajor(major);
|
|
628
|
+
return {
|
|
629
|
+
pgLite,
|
|
630
|
+
relationalDb: createRelationalDb(new Kysely({ dialect: new PGliteDialect(pgLite) }))
|
|
631
|
+
};
|
|
632
|
+
}
|
|
633
|
+
//#endregion
|
|
634
|
+
//#region src/store/processor-host-module.ts
|
|
635
|
+
async function createProcessorHostModule(reactorClient, readModels) {
|
|
636
|
+
try {
|
|
637
|
+
const { pgLite, relationalDb } = await getDb();
|
|
638
|
+
const { store: analyticsStore } = await createAnalyticsStore({ pgLite });
|
|
639
|
+
return {
|
|
640
|
+
relationalDb,
|
|
641
|
+
analyticsStore,
|
|
642
|
+
processorApp: "connect",
|
|
643
|
+
dispatch: { async execute(docId, branch, actions, signal) {
|
|
644
|
+
const jobInfo = await reactorClient.executeAsync(docId, branch, actions, signal);
|
|
645
|
+
return {
|
|
646
|
+
id: jobInfo.id,
|
|
647
|
+
status: jobInfo.status
|
|
648
|
+
};
|
|
649
|
+
} },
|
|
650
|
+
getReadModel(name) {
|
|
651
|
+
const model = readModels.find((m) => m.name === name);
|
|
652
|
+
if (!model) throw new Error(`Read model "${name}" not found`);
|
|
653
|
+
return model;
|
|
654
|
+
}
|
|
655
|
+
};
|
|
656
|
+
} catch (error) {
|
|
657
|
+
console.error(`Failed to initialize processor host module:`);
|
|
658
|
+
console.error(error);
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
//#endregion
|
|
662
|
+
//#region src/store/reactor.ts
|
|
663
|
+
async function clearReactorStorage() {
|
|
664
|
+
await window.ph?.reactorClientModule?.pg?.close();
|
|
665
|
+
const targets = (await indexedDB.databases()).map((d) => d.name).filter((n) => !!n && !n.startsWith("ph-pglite-backup::") && /pglite|reactor/i.test(n));
|
|
666
|
+
await Promise.all(targets.map((name) => new Promise((resolve) => {
|
|
667
|
+
const req = indexedDB.deleteDatabase(name);
|
|
668
|
+
req.onsuccess = req.onerror = req.onblocked = () => resolve();
|
|
669
|
+
})));
|
|
670
|
+
}
|
|
671
|
+
async function createReactor(localPackage) {
|
|
672
|
+
if (!window.ph) window.ph = {};
|
|
673
|
+
if (window.ph.loading) return;
|
|
674
|
+
window.ph.loading = true;
|
|
675
|
+
addPHEventHandlers();
|
|
676
|
+
setPHToast(toast);
|
|
677
|
+
const features = await initFeatureFlags();
|
|
678
|
+
logger.info("Features: @features", JSON.stringify(Object.fromEntries(features), null, 2));
|
|
679
|
+
const keyPairStorage = await BrowserKeyStorage.create();
|
|
680
|
+
const renownCrypto = await new RenownCryptoBuilder().withKeyPairStorage(keyPairStorage).build();
|
|
681
|
+
const renown = await new RenownBuilder("connect", {
|
|
682
|
+
basename: phGlobalConfigFromEnv.routerBasename,
|
|
683
|
+
baseUrl: phGlobalConfigFromEnv.renownUrl
|
|
684
|
+
}).withCrypto(renownCrypto).build();
|
|
685
|
+
const packagesConfig = await loadPackagesConfig();
|
|
686
|
+
const packageManager = new BrowserPackageManager(phGlobalConfigFromEnv.routerBasename ?? "", PH_PACKAGE_REGISTRY_URL);
|
|
687
|
+
setVetraPackageManager(packageManager);
|
|
688
|
+
await packageManager.init(localPackage, packagesConfig.localPackage?.version);
|
|
689
|
+
try {
|
|
690
|
+
const { default: registerBundledPackages } = await import("ph-bundled-packages-virtual");
|
|
691
|
+
registerBundledPackages(packageManager);
|
|
692
|
+
} catch {}
|
|
693
|
+
(await packageManager.addPackages(packagesConfig.packages)).map((r) => {
|
|
694
|
+
if (r.type === "error") console.error(r.error);
|
|
695
|
+
});
|
|
696
|
+
const documentModelModules = packageManager.packages.flatMap((pkg) => pkg.documentModels).filter((module, index, modules) => modules.findIndex((m) => m.documentModel.global.id === module.documentModel.global.id && m.version === module.version) === index);
|
|
697
|
+
const upgradeManifests = packageManager.packages.flatMap((pkg) => pkg.upgradeManifests).filter((manifest, index, manifests) => manifest !== void 0 && manifests.findIndex((m) => m && m.documentType === manifest.documentType) === index);
|
|
698
|
+
const discoveryService = packageManager.cdnUrl !== null ? new PackageDiscoveryService(packageManager, new RegistryClient(packageManager.cdnUrl), {
|
|
699
|
+
mode: "immediate",
|
|
700
|
+
storageKey: phGlobalConfigFromEnv.routerBasename ?? ""
|
|
701
|
+
}) : void 0;
|
|
702
|
+
if (discoveryService) setPackageDiscoveryService(discoveryService);
|
|
703
|
+
const reactorClientModule = await createBrowserReactor(documentModelModules, upgradeManifests, renown, discoveryService);
|
|
704
|
+
const drives = await getDrives(reactorClientModule.client);
|
|
705
|
+
const path = window.location.pathname;
|
|
706
|
+
const driveSlug = extractDriveSlugFromPath(path);
|
|
707
|
+
const nodeSlug = extractNodeSlugFromPath(path);
|
|
708
|
+
await login(getDidFromUrl(), renown);
|
|
709
|
+
const documentCache = new DocumentCache(reactorClientModule.client);
|
|
710
|
+
setDefaultPHGlobalConfig(phGlobalConfigFromEnv);
|
|
711
|
+
setReactorClientModule(reactorClientModule);
|
|
712
|
+
setReactorClient(reactorClientModule.client);
|
|
713
|
+
setDocumentCache(documentCache);
|
|
714
|
+
setRenown(renown);
|
|
715
|
+
setDrives(drives);
|
|
716
|
+
setSelectedDrive(driveSlug);
|
|
717
|
+
setSelectedNode(nodeSlug);
|
|
718
|
+
setFeatures(features);
|
|
719
|
+
const defaultDrivesConfig = getDefaultDrivesFromEnv();
|
|
720
|
+
if (defaultDrivesConfig.length > 0) await addDefaultDrivesForNewReactor(defaultDrivesConfig);
|
|
721
|
+
const remoteUrl = getDriveUrl();
|
|
722
|
+
if (remoteUrl) try {
|
|
723
|
+
await addRemoteDrive(remoteUrl);
|
|
724
|
+
} catch (error) {
|
|
725
|
+
console.error(`Failed to add remote drive from ${remoteUrl}:`, error);
|
|
726
|
+
}
|
|
727
|
+
const reactorClient = reactorClientModule.client;
|
|
728
|
+
reactorClient.subscribe({ type: "powerhouse/document-drive" }, (event) => {
|
|
729
|
+
logger.verbose("ReactorClient subscription event: @event", event);
|
|
730
|
+
refreshReactorDataClient(reactorClientModule.client).catch((e) => logger.error("@error", e));
|
|
731
|
+
});
|
|
732
|
+
reactorClient.subscribe({}, (event) => {
|
|
733
|
+
if (event.type !== DocumentChangeType.Deleted) return;
|
|
734
|
+
const deletedId = event.context?.childId;
|
|
735
|
+
if (!deletedId) return;
|
|
736
|
+
const selectedDriveId = window.ph?.selectedDriveId;
|
|
737
|
+
const selectedNodeId = window.ph?.selectedNodeId;
|
|
738
|
+
if (selectedDriveId && deletedId === selectedDriveId) {
|
|
739
|
+
setSelectedDrive(void 0);
|
|
740
|
+
toast("The drive you were viewing has been deleted");
|
|
741
|
+
return;
|
|
742
|
+
}
|
|
743
|
+
if (selectedNodeId && deletedId === selectedNodeId) {
|
|
744
|
+
setSelectedNode(void 0);
|
|
745
|
+
toast("The document you were editing has been deleted");
|
|
746
|
+
}
|
|
747
|
+
});
|
|
748
|
+
await refreshReactorDataClient(reactorClientModule.client);
|
|
749
|
+
const packagesWithProcessorFactories = packageManager.packages.filter((pkg) => pkg.processorFactory !== void 0);
|
|
750
|
+
if (packagesWithProcessorFactories.length > 0) {
|
|
751
|
+
const readModels = reactorClientModule.reactorModule?.readModelCoordinator?.readModels ?? [];
|
|
752
|
+
const processorHostModule = await createProcessorHostModule(reactorClientModule.client, readModels);
|
|
753
|
+
if (processorHostModule !== void 0) await Promise.all(packagesWithProcessorFactories.map(async (pkg) => {
|
|
754
|
+
const { manifest, processorFactory } = pkg;
|
|
755
|
+
const name = manifest.name;
|
|
756
|
+
const id = manifest.name;
|
|
757
|
+
const version = packageManager.getPackageVersion(name);
|
|
758
|
+
const label = version ? `${name}@${version}` : name;
|
|
759
|
+
logger.info("Loading processor factory: @label", label);
|
|
760
|
+
try {
|
|
761
|
+
const factory = await processorFactory?.(processorHostModule);
|
|
762
|
+
if (!factory) return;
|
|
763
|
+
await reactorClientModule.reactorModule?.processorManager.registerFactory(id, factory);
|
|
764
|
+
} catch (error) {
|
|
765
|
+
logger.error(`Error registering processor: @label`, label);
|
|
766
|
+
logger.error("@error", error);
|
|
767
|
+
}
|
|
768
|
+
}));
|
|
769
|
+
}
|
|
770
|
+
window.ph.loading = false;
|
|
771
|
+
}
|
|
772
|
+
function getDidFromUrl() {
|
|
773
|
+
const didComponent = new URLSearchParams(window.location.search).get("user");
|
|
774
|
+
return didComponent ? decodeURIComponent(didComponent) : void 0;
|
|
775
|
+
}
|
|
776
|
+
function getDriveUrl() {
|
|
777
|
+
const driveUrl = new URLSearchParams(window.location.search).get("driveUrl");
|
|
778
|
+
return driveUrl ? decodeURIComponent(driveUrl) : void 0;
|
|
779
|
+
}
|
|
780
|
+
//#endregion
|
|
781
|
+
export { createReactor as n, clearReactorStorage as t };
|
|
782
|
+
|
|
783
|
+
//# sourceMappingURL=reactor-Nm3jOev1.js.map
|