@powerhousedao/connect 3.2.0-dev.2 → 3.2.0-dev.4
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/README.md +26 -6
- package/dist/.env +1 -0
- package/dist/assets/{AddDriveModal.Dg8qI7zF.js → AddDriveModal.DU0-1Gwj.js} +2 -2
- package/dist/assets/{AddDriveModal.Dg8qI7zF.js.map → AddDriveModal.DU0-1Gwj.js.map} +1 -1
- package/dist/assets/{AddLocalDriveModal.n1mqr4Ur.js → AddLocalDriveModal.BmWt-zqx.js} +2 -2
- package/dist/assets/{AddLocalDriveModal.n1mqr4Ur.js.map → AddLocalDriveModal.BmWt-zqx.js.map} +1 -1
- package/dist/assets/{AddRemoteDriveModal.wFq1V4ak.js → AddRemoteDriveModal.B2dLszvc.js} +2 -2
- package/dist/assets/{AddRemoteDriveModal.wFq1V4ak.js.map → AddRemoteDriveModal.B2dLszvc.js.map} +1 -1
- package/dist/assets/{ConfirmationModal.C8RDHYs4.js → ConfirmationModal.BeBmQkT4.js} +2 -2
- package/dist/assets/{ConfirmationModal.C8RDHYs4.js.map → ConfirmationModal.BeBmQkT4.js.map} +1 -1
- package/dist/assets/{CookiesPolicyModal.A--L98Lz.js → CookiesPolicyModal.Da5Eremm.js} +2 -2
- package/dist/assets/{CookiesPolicyModal.A--L98Lz.js.map → CookiesPolicyModal.Da5Eremm.js.map} +1 -1
- package/dist/assets/{CreateDocumentModal.CTlEAIeE.js → CreateDocumentModal.BfyfQ4CP.js} +2 -2
- package/dist/assets/{CreateDocumentModal.CTlEAIeE.js.map → CreateDocumentModal.BfyfQ4CP.js.map} +1 -1
- package/dist/assets/{DebugSettingsModal.ge9vSvds.js → DebugSettingsModal.D1RjRPeP.js} +2 -2
- package/dist/assets/{DebugSettingsModal.ge9vSvds.js.map → DebugSettingsModal.D1RjRPeP.js.map} +1 -1
- package/dist/assets/{DeleteDriveModal.ChVVlip-.js → DeleteDriveModal.CTBCQ3Gm.js} +2 -2
- package/dist/assets/{DeleteDriveModal.ChVVlip-.js.map → DeleteDriveModal.CTBCQ3Gm.js.map} +1 -1
- package/dist/assets/{DeleteItemModal.DITFrzCI.js → DeleteItemModal.iAY-B9YV.js} +2 -2
- package/dist/assets/{DeleteItemModal.DITFrzCI.js.map → DeleteItemModal.iAY-B9YV.js.map} +1 -1
- package/dist/assets/{DisclaimerModal.COSJ5Mb3.js → DisclaimerModal.5nyrmZzU.js} +2 -2
- package/dist/assets/{DisclaimerModal.COSJ5Mb3.js.map → DisclaimerModal.5nyrmZzU.js.map} +1 -1
- package/dist/assets/{DriveSettingsModal._ieV-khA.js → DriveSettingsModal.BswCtDqR.js} +2 -2
- package/dist/assets/{DriveSettingsModal._ieV-khA.js.map → DriveSettingsModal.BswCtDqR.js.map} +1 -1
- package/dist/assets/{SettingsModal.CNXhJSAQ.js → SettingsModal.xtmwrOuz.js} +2 -2
- package/dist/assets/{SettingsModal.CNXhJSAQ.js.map → SettingsModal.xtmwrOuz.js.map} +1 -1
- package/dist/assets/{Trans.DPLArfzj.js → Trans.kFe2S0Wk.js} +2 -2
- package/dist/assets/{Trans.DPLArfzj.js.map → Trans.kFe2S0Wk.js.map} +1 -1
- package/dist/assets/{UpgradeDriveModal.BQJxekDN.js → UpgradeDriveModal.B7mUnNcD.js} +2 -2
- package/dist/assets/{UpgradeDriveModal.BQJxekDN.js.map → UpgradeDriveModal.B7mUnNcD.js.map} +1 -1
- package/dist/assets/app-skeleton.js +1 -1
- package/dist/assets/{app.BbnOcTCG.js → app.i8BXWBLI.js} +6 -6
- package/dist/assets/app.i8BXWBLI.js.map +1 -0
- package/dist/assets/{atlas-import.CdAYrAZm.js → atlas-import.BlRucXow.js} +2 -2
- package/dist/assets/{atlas-import.CdAYrAZm.js.map → atlas-import.BlRucXow.js.map} +1 -1
- package/dist/assets/connect.config.BIqjxCXL.js +2 -0
- package/dist/assets/connect.config.BIqjxCXL.js.map +1 -0
- package/dist/assets/{content.DPtgj4TX.js → content.wJSU5SX4.js} +3 -3
- package/dist/assets/{content.DPtgj4TX.js.map → content.wJSU5SX4.js.map} +1 -1
- package/dist/assets/{cookie-banner.DzQhdZ6U.js → cookie-banner.OUQb8XFD.js} +2 -2
- package/dist/assets/{cookie-banner.DzQhdZ6U.js.map → cookie-banner.OUQb8XFD.js.map} +1 -1
- package/dist/assets/{home.iojpFGDx.js → home.BPNW5daP.js} +2 -2
- package/dist/assets/{home.iojpFGDx.js.map → home.BPNW5daP.js.map} +1 -1
- package/dist/assets/{index.DgnEqb-9.js → index.BZv9HHlY.js} +2 -2
- package/dist/assets/{index.DgnEqb-9.js.map → index.BZv9HHlY.js.map} +1 -1
- package/dist/assets/{index.BUc_gRsw.js → index.BnnhHj1x.js} +2 -2
- package/dist/assets/{index.BUc_gRsw.js.map → index.BnnhHj1x.js.map} +1 -1
- package/dist/assets/{index.BuA9SEd_.js → index.CgUigIc1.js} +2 -2
- package/dist/assets/{index.BuA9SEd_.js.map → index.CgUigIc1.js.map} +1 -1
- package/dist/assets/index.DIldf0L8.js +3 -0
- package/dist/assets/{index.DZzWpM-P.js.map → index.DIldf0L8.js.map} +1 -1
- package/dist/assets/index.DkcL7UzK.js +2 -0
- package/dist/assets/{index.DbeWebdN.js.map → index.DkcL7UzK.js.map} +1 -1
- package/dist/assets/{index.CEQRMIAY.js → index.DlyZ17HN.js} +2 -2
- package/dist/assets/{index.CEQRMIAY.js.map → index.DlyZ17HN.js.map} +1 -1
- package/dist/assets/index.Do_wXic0.js +2 -0
- package/dist/assets/index.Do_wXic0.js.map +1 -0
- package/dist/assets/{index.Dc5HlSvp.js → index.DxrAJM8l.js} +2 -2
- package/dist/assets/{index.Dc5HlSvp.js.map → index.DxrAJM8l.js.map} +1 -1
- package/dist/assets/{index.DieAEcFX.js → index.dIkm5cjz.js} +3 -3
- package/dist/assets/{index.DieAEcFX.js.map → index.dIkm5cjz.js.map} +1 -1
- package/dist/assets/{main.CFKvF5tB.js → main.B9faieT7.js} +3 -3
- package/dist/assets/{main.CFKvF5tB.js.map → main.B9faieT7.js.map} +1 -1
- package/dist/assets/modal.DnfLqdig.js +3 -0
- package/dist/assets/{modal.CeUChdl1.js.map → modal.DnfLqdig.js.map} +1 -1
- package/dist/assets/{modals.alORtB6s.js → modals.JWX5rpFT.js} +2 -2
- package/dist/assets/{modals.alORtB6s.js.map → modals.JWX5rpFT.js.map} +1 -1
- package/dist/assets/nodefs.DBLOWKOu.js +2 -0
- package/dist/assets/{nodefs.CGG4X8-i.js.map → nodefs.DBLOWKOu.js.map} +1 -1
- package/dist/assets/{opfs-ahp.C0sHT0wj.js → opfs-ahp.CcP1RoS9.js} +2 -2
- package/dist/assets/{opfs-ahp.C0sHT0wj.js.map → opfs-ahp.CcP1RoS9.js.map} +1 -1
- package/dist/assets/{react-error-boundary.esm.uEuLAO53.js → react-error-boundary.esm.DcWSXRDX.js} +2 -2
- package/dist/assets/{react-error-boundary.esm.uEuLAO53.js.map → react-error-boundary.esm.DcWSXRDX.js.map} +1 -1
- package/dist/assets/{registerServiceWorker.qetnHJss.js → registerServiceWorker.CK34OHp2.js} +2 -2
- package/dist/assets/{registerServiceWorker.qetnHJss.js.map → registerServiceWorker.CK34OHp2.js.map} +1 -1
- package/dist/assets/{root.bg2pg9lY.js → root.dhXDMo9v.js} +3 -3
- package/dist/assets/{root.bg2pg9lY.js.map → root.dhXDMo9v.js.map} +1 -1
- package/dist/assets/{toast.Dz6iiaGE.js → toast.Dw86T5dF.js} +2 -2
- package/dist/assets/{toast.Dz6iiaGE.js.map → toast.Dw86T5dF.js.map} +1 -1
- package/dist/assets/{useAcceptedCookies.CrdlDQVI.js → useAcceptedCookies.8vhwrcp8.js} +2 -2
- package/dist/assets/{useAcceptedCookies.CrdlDQVI.js.map → useAcceptedCookies.8vhwrcp8.js.map} +1 -1
- package/dist/assets/useConnectConfig.DSamQwGk.js +2 -0
- package/dist/assets/{useConnectConfig.BjHck5jY.js.map → useConnectConfig.DSamQwGk.js.map} +1 -1
- package/dist/assets/useDefaultDocumentModelEditor.VXhuetiN.js +2 -0
- package/dist/assets/{useDefaultDocumentModelEditor.CFfkP7hf.js.map → useDefaultDocumentModelEditor.VXhuetiN.js.map} +1 -1
- package/dist/assets/useDocumentDriveServer.ZRZSrNVE.js +2 -0
- package/dist/assets/{useDocumentDriveServer.CpN4RUGw.js.map → useDocumentDriveServer.ZRZSrNVE.js.map} +1 -1
- package/dist/assets/{useFeatureFlags.PE3FavSR.js → useFeatureFlags.8avcsZhG.js} +2 -2
- package/dist/assets/useFeatureFlags.8avcsZhG.js.map +1 -0
- package/dist/assets/{user.LueWOWdv.js → user.D7qu66vB.js} +5 -5
- package/dist/assets/user.D7qu66vB.js.map +1 -0
- package/dist/external-packages.js +1 -1
- package/dist/index.html +2 -1
- package/dist/swEnv.js +1 -0
- package/dist/vite-envs.sh +10 -1
- package/nginx.conf +13 -0
- package/package.json +13 -11
- package/dist/assets/app.BbnOcTCG.js.map +0 -1
- package/dist/assets/connect.config.D1B0yrHQ.js +0 -2
- package/dist/assets/connect.config.D1B0yrHQ.js.map +0 -1
- package/dist/assets/index.DZzWpM-P.js +0 -3
- package/dist/assets/index.DbeWebdN.js +0 -2
- package/dist/assets/modal.CeUChdl1.js +0 -3
- package/dist/assets/nodefs.CGG4X8-i.js +0 -2
- package/dist/assets/useConnectConfig.BjHck5jY.js +0 -2
- package/dist/assets/useDefaultDocumentModelEditor.CFfkP7hf.js +0 -2
- package/dist/assets/useDocumentDriveServer.CpN4RUGw.js +0 -2
- package/dist/assets/useFeatureFlags.PE3FavSR.js.map +0 -1
- package/dist/assets/user.LueWOWdv.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{bn as o,l as _,ac as t,ah as n,bo as s,bp as r}from"./index.Dc5HlSvp.js";import{g as E}from"./browser.BkwNmV2Z.js";const i="@powerhousedao/connect",c="Powerhouse-Connect",l="3.2.0-dev.2",a="Powerhouse Connect",d="./dist/index.html",N="module",w={node:">=22.0.0"},C=["dist","nginx.conf","nginx.sh","scripts"],D="AGPL-3.0-only",p="acaldas@powerhouse.inc",u={type:"git",url:"https://github.com/powerhouse-inc/powerhouse"},S={url:"https://github.com/powerhouse-inc/powerhouse/issues"},T="https://github.com/powerhouse-inc/powerhouse#readme",I={"build:tsc":"tsc --build",start:"electron-forge start",package:"electron-forge package",make:"PH_CONNECT_BASE_HREF=./ electron-forge make","make:mac":"PH_CONNECT_BASE_HREF=./ electron-forge make -p darwin","make:linux":"PH_CONNECT_BASE_HREF=./ electron-forge make -p linux","make:windows":"PH_CONNECT_BASE_HREF=./ electron-forge make -p win32","publish:electron":"electron-forge publish",prepublishOnly:"npm run build",lint:"eslint .","lint:fix":"eslint --fix .","lint:nx":"eslint --quiet --fix .",format:'prettier --write "**/*.+(js|ts|jsx|tsx|json)"',dev:"vite -c vite.renderer.config.mts","dev:nocache":"rm -rf node_modules/.vite && rm -rf node_modules/.cache && npm run dev",prebuild:"npm run clean && tsc --build --noEmit",build:"NODE_OPTIONS=--max-old-space-size=6144 vite build -c vite.renderer.config.mts",preview:"vite preview -c vite.renderer.config.mts",e2e:"playwright test","cy:open":"cypress open","build:service-worker":"tsc --build ./tsconfig.sw.json",clean:"rimraf dist","clean:node_modules":"rimraf node_modules"},A={"@didtools/key-webcrypto":"^0.2.0","@electric-sql/pglite":"^0.2.17","@electron-forge/cli":"^6.1.1","@electron-forge/maker-deb":"^6.1.1","@electron-forge/maker-rpm":"^6.1.1","@electron-forge/maker-squirrel":"^6.1.1","@electron-forge/maker-zip":"^6.1.1","@electron-forge/plugin-vite":"^6.1.1","@electron-forge/publisher-electron-release-server":"^6.2.1","@electron-forge/publisher-github":"^7.2.0","@electron-forge/shared-types":"^7.7.0","@playwright/test":"^1.41.2","@powerhousedao/builder-tools":"workspace:*","@powerhousedao/common":"workspace:*","@powerhousedao/config":"workspace:*","@powerhousedao/design-system":"workspace:*","@powerhousedao/diff-analyzer":"^0.0.0-dev.7","@powerhousedao/reactor-browser":"workspace:*","@renown/sdk":"workspace:*","@rollup/plugin-node-resolve":"^15.2.3","@sentry/browser":"^9.1.0","@sentry/react":"^7.109.0","@sentry/vite-plugin":"^2.23.0","@tailwindcss/vite":"^4.1.4","@tanstack/react-virtual":"^3.8.1","@types/node":"^22.15.17","@types/react":"^18.2.79","@types/react-dom":"^18.2.18","@types/uuid":"^9.0.7","@types/wicg-file-system-access":"^2020.9.6","@vitejs/plugin-basic-ssl":"^2.0.0","@vitejs/plugin-react":"^4.4.1",asar:"^3.2.0","did-jwt":"^8.0.14","did-jwt-vc":"^4.0.12","did-key-creator":"^1.2.0","document-drive":"workspace:*","document-model":"workspace:*",electron:"30.0.0","electron-is-dev":"^3.0.1","electron-playwright-helpers":"^1.7.1","electron-squirrel-startup":"^1.0.0","electron-store":"^8.1.0",esbuild:"^0.24.0",graphql:"^16.11.0","graphql-request":"^6.1.0",i18next:"^23.7.6",jotai:"^2.1.0","jotai-effect":"^1.1.6",localforage:"^1.10.0",playwright:"^1.41.2","playwright-core":"^1.41.2",react:"^18.3.1","react-dom":"^18.3.1","react-error-boundary":"^4.0.11","react-hotkeys-hook":"^4.5.0","react-i18next":"^13.5.0","react-router-dom":"^6.11.2","tailwind-merge":"^3.0.2",tailwindcss:"^4.1.4",uint8arrays:"^5.1.0",uuid:"^9.0.1",viem:"^2.8.13",vite:"^6.3.3","vite-envs":"^4.6.0","vite-plugin-html":"^3.2.2","vite-plugin-node-polyfills":"^0.23.0","vite-plugin-svgr":"^4.3.0","vite-tsconfig-paths":"^5.1.4","xvfb-maybe":"^0.2.1"},L={"@esbuild/linux-x64":"^0.21.4","@rollup/rollup-linux-x64-musl":"4.14.3"},V={name:i,productName:c,version:l,description:a,main:d,type:N,engines:w,files:C,license:D,author:p,repository:u,bugs:S,homepage:T,scripts:I,devDependencies:A,optionalDependencies:L},O=V.version,g=window.__VITE_ENVS.APP_VERSION||O,m=window.__VITE_ENVS.PH_CONNECT_WARN_OUTDATED_APP||"false",v=window.__VITE_ENVS.PH_CONNECT_STUDIO_MODE||"false",f=window.__VITE_ENVS.PH_CONNECT_DISABLE_ADD_DRIVE||"false",h=window.__VITE_ENVS.PH_CONNECT_DISABLE_ADD_PUBLIC_DRIVES||void 0,P=window.__VITE_ENVS.PH_CONNECT_DISABLE_ADD_CLOUD_DRIVES||void 0,R=window.__VITE_ENVS.PH_CONNECT_DISABLE_ADD_LOCAL_DRIVES||void 0,B=window.__VITE_ENVS.PH_CONNECT_DISABLE_DELETE_PUBLIC_DRIVES||void 0,H=window.__VITE_ENVS.PH_CONNECT_DISABLE_DELETE_CLOUD_DRIVES||void 0,b=window.__VITE_ENVS.PH_CONNECT_DISABLE_DELETE_LOCAL_DRIVES||void 0,y=window.__VITE_ENVS.PH_CONNECT_LOCAL_DRIVES_ENABLED||void 0,k=window.__VITE_ENVS.PH_CONNECT_CLOUD_DRIVES_ENABLED||void 0,U=window.__VITE_ENVS.PH_CONNECT_PUBLIC_DRIVES_ENABLED||void 0,x=window.__VITE_ENVS.PH_CONNECT_SEARCH_BAR_ENABLED||void 0,G=window.__VITE_ENVS.PH_CONNECT_HIDE_DOCUMENT_MODEL_SELECTION_SETTINGS||"false",e=E()||"/",M=window.__VITE_ENVS.PH_CONNECT_SENTRY_DSN||"",j=window.__VITE_ENVS.PH_CONNECT_SENTRY_ENV||"dev",Y=window.__VITE_ENVS.PH_CONNECT_SENTRY_TRACING_ENABLED||"false",q=window.__VITE_ENVS.PH_CONNECT_GA_TRACKING_ID,W=window.__VITE_ENVS.PH_CONNECT_CLI_VERSION||void 0,F=window.__VITE_ENVS.PH_CONNECT_ANALYTICS_DATABASE_NAME||`${e.replace(/\//g,"")}:analytics`,K=window.__VITE_ENVS.PH_CONNECT_ANALYTICS_DATABASE_WORKER_DISABLED||"false",z=r(window.__VITE_ENVS.LOG_LEVEL)?window.__VITE_ENVS.LOG_LEVEL:"info";o(z);_.debug(`Setting log level to ${window.__VITE_ENVS.LOG_LEVEL}.`);const Q={appVersion:g,studioMode:v.toString()==="true",warnOutdatedApp:m==="true",routerBasename:e,analytics:{databaseName:F,useWorker:K!=="true"},sentry:{dsn:M,env:j,tracing:Y==="true"},content:{showSearchBar:x!=="false",showDocumentModelSelectionSetting:G!=="true"},drives:{addDriveEnabled:f!=="true",sections:{[t]:{enabled:y!=="false",allowAdd:R!=="true",allowDelete:b!=="true"},[s]:{enabled:k!=="false",allowAdd:P!=="true",allowDelete:H!=="true"},[n]:{enabled:U!=="false",allowAdd:h!=="true",allowDelete:B!=="true"}}},gaTrackingId:q,phCliVersion:W};export{Q as c,V as p};
|
|
2
|
-
//# sourceMappingURL=connect.config.D1B0yrHQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connect.config.D1B0yrHQ.js","sources":["../../src/connect.config.ts"],"sourcesContent":["import { CLOUD, LOCAL, PUBLIC } from '@powerhousedao/design-system';\nimport { isLogLevel, logger, setLogLevel } from 'document-drive/utils/logger';\nimport pkg from '../package.json' with { type: 'json' };\nimport { getBasePath } from './utils/browser';\n\nconst version = pkg.version;\nconst APP_VERSION = import.meta.env.APP_VERSION || version;\nconst WARN_OUTDATED_APP =\n import.meta.env.PH_CONNECT_WARN_OUTDATED_APP || 'false';\nconst PH_CONNECT_STUDIO_MODE =\n import.meta.env.PH_CONNECT_STUDIO_MODE || 'false';\n\nconst DISABLE_ADD_DRIVE =\n import.meta.env.PH_CONNECT_DISABLE_ADD_DRIVE || 'false';\nconst DISABLE_ADD_PUBLIC_DRIVES =\n import.meta.env.PH_CONNECT_DISABLE_ADD_PUBLIC_DRIVES || undefined;\nconst DISABLE_ADD_CLOUD_DRIVES =\n import.meta.env.PH_CONNECT_DISABLE_ADD_CLOUD_DRIVES || undefined;\nconst DISABLE_ADD_LOCAL_DRIVES =\n import.meta.env.PH_CONNECT_DISABLE_ADD_LOCAL_DRIVES || undefined;\nconst DISABLE_DELETE_PUBLIC_DRIVES =\n import.meta.env.PH_CONNECT_DISABLE_DELETE_PUBLIC_DRIVES || undefined;\nconst DISABLE_DELETE_CLOUD_DRIVES =\n import.meta.env.PH_CONNECT_DISABLE_DELETE_CLOUD_DRIVES || undefined;\nconst DISABLE_DELETE_LOCAL_DRIVES =\n import.meta.env.PH_CONNECT_DISABLE_DELETE_LOCAL_DRIVES || undefined;\n\nconst LOCAL_DRIVES_ENABLED =\n import.meta.env.PH_CONNECT_LOCAL_DRIVES_ENABLED || undefined;\nconst CLOUD_DRIVES_ENABLED =\n import.meta.env.PH_CONNECT_CLOUD_DRIVES_ENABLED || undefined;\nconst PUBLIC_DRIVES_ENABLED =\n import.meta.env.PH_CONNECT_PUBLIC_DRIVES_ENABLED || undefined;\n\nconst SEARCH_BAR_ENABLED =\n import.meta.env.PH_CONNECT_SEARCH_BAR_ENABLED || undefined;\n\nconst HIDE_DOCUMENT_MODEL_SELECTION_SETTINGS =\n import.meta.env.PH_CONNECT_HIDE_DOCUMENT_MODEL_SELECTION_SETTINGS ||\n 'false';\n\nconst PH_CONNECT_ROUTER_BASENAME = getBasePath() || '/';\n\nconst PH_CONNECT_SENTRY_DSN = import.meta.env.PH_CONNECT_SENTRY_DSN || '';\nconst PH_CONNECT_SENTRY_ENV = import.meta.env.PH_CONNECT_SENTRY_ENV || 'dev';\nconst PH_CONNECT_SENTRY_TRACING_ENABLED =\n import.meta.env.PH_CONNECT_SENTRY_TRACING_ENABLED || 'false';\n\nconst GA_TRACKING_ID = import.meta.env.PH_CONNECT_GA_TRACKING_ID;\nconst PH_CONNECT_CLI_VERSION =\n import.meta.env.PH_CONNECT_CLI_VERSION || undefined;\n\nconst PH_CONNECT_ANALYTICS_DATABASE_NAME =\n import.meta.env.PH_CONNECT_ANALYTICS_DATABASE_NAME ||\n `${PH_CONNECT_ROUTER_BASENAME.replace(/\\//g, '')}:analytics`; // remove ending slash\nconst PH_CONNECT_ANALYTICS_DATABASE_WORKER_DISABLED =\n import.meta.env.PH_CONNECT_ANALYTICS_DATABASE_WORKER_DISABLED || 'false';\n\nconst LOG_LEVEL = isLogLevel(import.meta.env.LOG_LEVEL)\n ? import.meta.env.LOG_LEVEL\n : 'info';\nsetLogLevel(LOG_LEVEL);\nlogger.debug(`Setting log level to ${import.meta.env.LOG_LEVEL}.`);\n\nexport default {\n appVersion: APP_VERSION,\n studioMode: PH_CONNECT_STUDIO_MODE.toString() === 'true',\n warnOutdatedApp: WARN_OUTDATED_APP === 'true',\n routerBasename: PH_CONNECT_ROUTER_BASENAME,\n analytics: {\n databaseName: PH_CONNECT_ANALYTICS_DATABASE_NAME,\n useWorker: PH_CONNECT_ANALYTICS_DATABASE_WORKER_DISABLED !== 'true',\n },\n sentry: {\n dsn: PH_CONNECT_SENTRY_DSN,\n env: PH_CONNECT_SENTRY_ENV,\n tracing: PH_CONNECT_SENTRY_TRACING_ENABLED === 'true',\n },\n content: {\n showSearchBar: SEARCH_BAR_ENABLED !== 'false',\n showDocumentModelSelectionSetting:\n HIDE_DOCUMENT_MODEL_SELECTION_SETTINGS !== 'true',\n },\n drives: {\n addDriveEnabled: DISABLE_ADD_DRIVE === 'true' ? false : true,\n sections: {\n [LOCAL]: {\n enabled: LOCAL_DRIVES_ENABLED !== 'false',\n allowAdd: DISABLE_ADD_LOCAL_DRIVES !== 'true',\n allowDelete: DISABLE_DELETE_LOCAL_DRIVES !== 'true',\n },\n [CLOUD]: {\n enabled: CLOUD_DRIVES_ENABLED !== 'false',\n allowAdd: DISABLE_ADD_CLOUD_DRIVES !== 'true',\n allowDelete: DISABLE_DELETE_CLOUD_DRIVES !== 'true',\n },\n [PUBLIC]: {\n enabled: PUBLIC_DRIVES_ENABLED !== 'false',\n allowAdd: DISABLE_ADD_PUBLIC_DRIVES !== 'true',\n allowDelete: DISABLE_DELETE_PUBLIC_DRIVES !== 'true',\n },\n },\n },\n gaTrackingId: GA_TRACKING_ID,\n phCliVersion: PH_CONNECT_CLI_VERSION,\n};\n"],"names":["version","pkg","APP_VERSION","WARN_OUTDATED_APP","PH_CONNECT_STUDIO_MODE","DISABLE_ADD_DRIVE","DISABLE_ADD_PUBLIC_DRIVES","DISABLE_ADD_CLOUD_DRIVES","DISABLE_ADD_LOCAL_DRIVES","DISABLE_DELETE_PUBLIC_DRIVES","DISABLE_DELETE_CLOUD_DRIVES","DISABLE_DELETE_LOCAL_DRIVES","LOCAL_DRIVES_ENABLED","CLOUD_DRIVES_ENABLED","PUBLIC_DRIVES_ENABLED","SEARCH_BAR_ENABLED","HIDE_DOCUMENT_MODEL_SELECTION_SETTINGS","PH_CONNECT_ROUTER_BASENAME","getBasePath","PH_CONNECT_SENTRY_DSN","PH_CONNECT_SENTRY_ENV","PH_CONNECT_SENTRY_TRACING_ENABLED","GA_TRACKING_ID","PH_CONNECT_CLI_VERSION","PH_CONNECT_ANALYTICS_DATABASE_NAME","PH_CONNECT_ANALYTICS_DATABASE_WORKER_DISABLED","LOG_LEVEL","isLogLevel","setLogLevel","logger","connectConfig","LOCAL","CLOUD","PUBLIC"],"mappings":"k1HAKMA,EAAUC,EAAI,QACdC,EAAc,OAA+B,YAAA,aAAAF,EAC7CG,EACF,iDAAgD,QAC9CC,EACF,OAA0C,YAAA,wBAAA,QAExCC,EACF,iDAAgD,QAC9CC,EACF,OAAA,YAAA,sCAAwD,OACtDC,EACF,OAAA,YAAA,qCAAuD,OACrDC,EACF,OAAA,YAAA,qCAAuD,OACrDC,EACF,4DAA2D,OACzDC,EACF,2DAA0D,OACxDC,EACF,2DAA0D,OAExDC,EACF,OAAmD,YAAA,iCAAA,OACjDC,EACF,OAAmD,YAAA,iCAAA,OACjDC,EACF,OAAoD,YAAA,kCAAA,OAElDC,EACF,OAAiD,YAAA,+BAAA,OAE/CC,EACF,OACA,YAAA,mDAAA,QAEEC,EAA6BC,KAAiB,IAE9CC,EAAwB,OAAA,YAAA,uBAAyC,GACjEC,EAAwB,OAAA,YAAA,uBAAyC,MACjEC,EACF,OAAqD,YAAA,mCAAA,QAEnDC,EAAiB,OAAA,YAAA,0BACjBC,EACF,OAAA,YAAA,wBAA0C,OAExCC,EACF,OAAgB,YAAA,oCAChB,GAAGP,EAA2B,QAAQ,MAAO,EAAE,CAAC,aAC9CQ,EACF,OAAiE,YAAA,+CAAA,QAE/DC,EAAYC,EAAW,OAAyB,YAAA,SAAA,EAChD,6BACA,OACNC,EAAYF,CAAS,EACrBG,EAAO,MAAM,wBAAwB,OAAA,YAAA,SAAyB,GAAG,EAEjE,MAAeC,EAAA,CACX,WAAY5B,EACZ,WAAYE,EAAuB,SAAA,IAAe,OAClD,gBAAiBD,IAAsB,OACvC,eAAgBc,EAChB,UAAW,CACP,aAAcO,EACd,UAAWC,IAAkD,MACjE,EACA,OAAQ,CACJ,IAAKN,EACL,IAAKC,EACL,QAASC,IAAsC,MACnD,EACA,QAAS,CACL,cAAeN,IAAuB,QACtC,kCACIC,IAA2C,MACnD,EACA,OAAQ,CACJ,gBAAiBX,IAAsB,OACvC,SAAU,CACN,CAAC0B,CAAK,EAAG,CACL,QAASnB,IAAyB,QAClC,SAAUJ,IAA6B,OACvC,YAAaG,IAAgC,MACjD,EACA,CAACqB,CAAK,EAAG,CACL,QAASnB,IAAyB,QAClC,SAAUN,IAA6B,OACvC,YAAaG,IAAgC,MACjD,EACA,CAACuB,CAAM,EAAG,CACN,QAASnB,IAA0B,QACnC,SAAUR,IAA8B,OACxC,YAAaG,IAAiC,MAAA,CAClD,CAER,EACA,aAAca,EACd,aAAcC,CAClB"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app.BbnOcTCG.js","./useFeatureFlags.PE3FavSR.js","./index.Dc5HlSvp.js","./user.LueWOWdv.js","./connect.config.D1B0yrHQ.js","./browser.BkwNmV2Z.js","./useAcceptedCookies.CrdlDQVI.js","./useConnectConfig.BjHck5jY.js","./index.CAUjMUXb.js","./registerServiceWorker.qetnHJss.js","./cookie-banner.DzQhdZ6U.js","./i18next.CqOP20KE.js","./useTranslation.BpVv6XIW.js","./modal.CeUChdl1.js","./Trans.DPLArfzj.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{createRoot as a}from"react-dom/client";import{_ as r}from"./index.Dc5HlSvp.js";import{jsxs as i,jsx as o}from"react/jsx-runtime";import{StrictMode as m,Suspense as n,lazy as t}from"react";import{A as d}from"./app-skeleton.js";import"react-dom";import"./browser.BkwNmV2Z.js";const l=t(()=>r(()=>import("./app.BbnOcTCG.js").then(e=>e.j),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url)),_=t(()=>r(()=>import("./cookie-banner.DzQhdZ6U.js"),__vite__mapDeps([10,6,4,2,5,11,12,13,14]),import.meta.url).then(e=>({default:e.CookieBanner}))),c=t(()=>r(()=>import("./modal.CeUChdl1.js"),__vite__mapDeps([13,2]),import.meta.url).then(e=>({default:e.ModalManager}))),s=i(m,{children:[o(n,{fallback:o(d,{}),name:"AppLoader",children:o(l,{})}),o(n,{name:"CookieBanner",children:o(c,{children:o(_,{})})})]});function u(e){a(e).render(s)}const p=document.getElementById("app");if(!p)throw new Error("#app element not found!");u(p);
|
|
3
|
-
//# sourceMappingURL=index.DZzWpM-P.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var m=Object.defineProperty;var y=(s,t,e)=>t in s?m(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var d=(s,t,e)=>y(s,typeof t!="symbol"?t+"":t,e);import{A as g,D as $}from"./app.BbnOcTCG.js";import{e as S,m as w}from"./index.Dc5HlSvp.js";import"react/jsx-runtime";import"./useFeatureFlags.PE3FavSR.js";import"react";import"./user.LueWOWdv.js";import"./connect.config.D1B0yrHQ.js";import"./browser.BkwNmV2Z.js";import"./useAcceptedCookies.CrdlDQVI.js";import"./useConnectConfig.BjHck5jY.js";import"react-dom";import"./index.CAUjMUXb.js";import"./registerServiceWorker.qetnHJss.js";function A(s,t){const e=[],i=h(s,t,"state.global","global");e.push(...i);const o=e.filter(l=>l.type==="add").length,a=e.filter(l=>l.type==="remove").length,r={global:e.filter(l=>l.scope==="global")};return{totalChanges:e.length,additions:o,removals:a,changesByScope:r,changes:e}}function h(s,t,e,i){const o=[];if(Array.isArray(s)&&Array.isArray(t)){let n=0;for(;n<s.length;n++){const c=s[n];if(!t[n])o.push(...h(c,typeof c=="string"?"":null,`${e}[${n}]`,i));else{const u=h(c,t[n],`${e}[${n}]`,i);o.push(...u)}}for(;n<t.length;n++){const c=t[n];if(!s[n])o.push(...h(typeof c=="string"?"":null,c,`${e}[${n}]`,i));else{const u=h(s[n],c,`${e}[${n}]`,i);o.push(...u)}}return o}if(typeof s!="object"||typeof t!="object"||s===null||t===null){if(s!==t){if(typeof s=="string"&&typeof t=="string")return V(s,t,e,i);o.push({type:"remove",path:e,oldValue:s,scope:i}),o.push({type:"add",path:e,newValue:t,scope:i})}return o}const a=s,r=t,l=Object.keys(a),f=Object.keys(r);for(const n of l)n in r||o.push({type:"remove",path:`${e}.${n}`,oldValue:a[n],scope:i});for(const n of f)if(!(n in a))o.push({type:"add",path:`${e}.${n}`,newValue:r[n],scope:i});else if(a[n]!==r[n]){const c=h(a[n],r[n],`${e}.${n}`,i);o.push(...c)}return o}function V(s,t,e,i){const o=[],a=Math.max(s.length,t.length);for(let r=0;r<a;r++)r>=s.length?o.push({type:"add",path:`${e}[${r}]`,newValue:t[r],scope:i}):r>=t.length?o.push({type:"remove",path:`${e}[${r}]`,oldValue:s[r],scope:i}):s[r]!==t[r]&&(o.push({type:"remove",path:`${e}[${r}]`,oldValue:s[r],scope:i}),o.push({type:"add",path:`${e}[${r}]`,newValue:t[r],scope:i}));return o}class v{constructor(t,e=S(["processor","diff-analytics"])){d(this,"analyticsStore");d(this,"logger");this.analyticsStore=t,this.logger=e}async onStrands(t){if(t.length!==0)for(const e of t){if(e.operations.length===0)continue;const i=e.operations[0],o=g.fromString(`ph/${e.documentId}/${e.branch}/${e.scope}`);i.index===0&&await this.clearSource(o);const a=50;for(let r=0;r<e.operations.length;r+=a){const l=e.operations.slice(r,r+a),f=[];for(const n of l){const u=(await w(async()=>A(n.previousState,n.state))).changes.map(p=>this.generateInput(e.documentId,e.branch,e.scope,n.index,p.type,1,o,n.timestamp,p.path));for(f.push(...u);f.length>=a;){const p=f.splice(0,a);await this.analyticsStore.addSeriesValues(p)}}f.length>0&&await this.analyticsStore.addSeriesValues(f)}}}async onDisconnect(){}async clearSource(t){try{await this.analyticsStore.clearSeriesBySource(t,!0)}catch(e){this.logger.error("Failed to clear source",e)}}generateInput(t,e,i,o,a,r,l,f,n){const c={},u=n.split("[")[0].replaceAll(".","/");return c.changes=g.fromString(`changes/${a}`),c.document=g.fromString(`document/${t}/${e}/${i}/${o}`),c.path=g.fromString(`path/${u}`),{dimensions:c,metric:"Count",start:$.fromISO(f),source:l,value:r}}}const H=s=>t=>[{processor:new v(s.analyticsStore),filter:{branch:["main"],documentId:["*"],scope:["*"],documentType:["*"]}}];export{H as processorFactory};
|
|
2
|
-
//# sourceMappingURL=index.DbeWebdN.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DeleteItemModal.DITFrzCI.js","./useTranslation.BpVv6XIW.js","./index.Dc5HlSvp.js","./UpgradeDriveModal.BQJxekDN.js","./CreateDocumentModal.CTlEAIeE.js","./useDocumentDriveServer.CpN4RUGw.js","./user.LueWOWdv.js","./connect.config.D1B0yrHQ.js","./browser.BkwNmV2Z.js","./useFeatureFlags.PE3FavSR.js","./slug.C6xW_7Wm.js","./AddDriveModal.Dg8qI7zF.js","./AddLocalDriveModal.n1mqr4Ur.js","./AddRemoteDriveModal.wFq1V4ak.js","./DriveSettingsModal._ieV-khA.js","./SettingsModal.CNXhJSAQ.js","./i18next.CqOP20KE.js","./useConnectConfig.BjHck5jY.js","./index.CAUjMUXb.js","./useDefaultDocumentModelEditor.CFfkP7hf.js","./ConfirmationModal.C8RDHYs4.js","./DeleteDriveModal.ChVVlip-.js","./DebugSettingsModal.ge9vSvds.js","./registerServiceWorker.qetnHJss.js","./DisclaimerModal.COSJ5Mb3.js","./CookiesPolicyModal.A--L98Lz.js","./Trans.DPLArfzj.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{jsxs as P,jsx as m}from"react/jsx-runtime";import h,{lazy as t,useContext as A,useState as a,useCallback as n,useMemo as R,Suspense as I}from"react";import{_ as o}from"./index.Dc5HlSvp.js";import"react-dom";const L={deleteItem:t(()=>o(()=>import("./DeleteItemModal.DITFrzCI.js"),__vite__mapDeps([0,1,2]),import.meta.url).then(e=>({default:e.DeleteItemModal}))),upgradeDrive:t(()=>o(()=>import("./UpgradeDriveModal.BQJxekDN.js"),__vite__mapDeps([3,1,2]),import.meta.url).then(e=>({default:e.UpgradeDriveModal}))),createDocument:t(()=>o(()=>import("./CreateDocumentModal.CTlEAIeE.js"),__vite__mapDeps([4,2,5,6,7,8,9,10]),import.meta.url).then(e=>({default:e.CreateDocumentModal}))),addDriveModal:t(()=>o(()=>import("./AddDriveModal.Dg8qI7zF.js"),__vite__mapDeps([11,2,6,7,8]),import.meta.url).then(e=>({default:e.AddDriveModal}))),addLocalDrive:t(()=>o(()=>import("./AddLocalDriveModal.n1mqr4Ur.js"),__vite__mapDeps([12,2]),import.meta.url).then(e=>({default:e.AddLocalDriveModal}))),addRemoteDrive:t(()=>o(()=>import("./AddRemoteDriveModal.wFq1V4ak.js"),__vite__mapDeps([13,2]),import.meta.url).then(e=>({default:e.AddRemoteDriveModal}))),driveSettings:t(()=>o(()=>import("./DriveSettingsModal._ieV-khA.js"),__vite__mapDeps([14,2]),import.meta.url).then(e=>({default:e.DriveSettingsModal}))),settingsModal:t(()=>o(()=>import("./SettingsModal.CNXhJSAQ.js"),__vite__mapDeps([15,16,7,2,8,17,1,18,5,6,9,19]),import.meta.url).then(e=>({default:e.SettingsModal}))),confirmationModal:t(()=>o(()=>import("./ConfirmationModal.C8RDHYs4.js"),__vite__mapDeps([20,2]),import.meta.url).then(e=>({default:e.ConfirmationModal}))),deleteDriveModal:t(()=>o(()=>import("./DeleteDriveModal.ChVVlip-.js"),__vite__mapDeps([21,1,2]),import.meta.url).then(e=>({default:e.DeleteDriveModal}))),debugSettingsModal:t(()=>o(()=>import("./DebugSettingsModal.ge9vSvds.js"),__vite__mapDeps([22,17,7,2,8,23,5,6,9]),import.meta.url).then(e=>({default:e.DebugSettingsModal}))),disclaimerModal:t(()=>o(()=>import("./DisclaimerModal.COSJ5Mb3.js"),__vite__mapDeps([24,1,2]),import.meta.url).then(e=>({default:e.DisclaimerModal}))),cookiesPolicy:t(()=>o(()=>import("./CookiesPolicyModal.A--L98Lz.js"),__vite__mapDeps([25,1,26,2]),import.meta.url).then(e=>({default:e.CookiesPolicyModal})))},u=h.createContext({showModal:()=>{},closeModal:()=>{}}),C=()=>A(u),x=e=>{const{children:s}=e,[p,c]=a(),[l,M]=a(),[D,d]=a(!1),i=n((E,f)=>{d(!0),c(f),M(E)},[]),r=n(()=>{d(!1)},[]),_=l?L[l]:null,v=R(()=>({showModal:i,closeModal:r}),[r,i]);return P(u.Provider,{value:v,children:[s,m(I,{name:"ModalManager",children:_&&m(_,{...p,open:D,onClose:r})})]})};export{u as ModalContext,x as ModalManager,C as useModal};
|
|
3
|
-
//# sourceMappingURL=modal.CeUChdl1.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{f as e,g as o,u as p}from"./app.BbnOcTCG.js";import"react/jsx-runtime";import"./useFeatureFlags.PE3FavSR.js";import"react";import"./index.Dc5HlSvp.js";import"react-dom";import"./user.LueWOWdv.js";import"./connect.config.D1B0yrHQ.js";import"./browser.BkwNmV2Z.js";import"./useAcceptedCookies.CrdlDQVI.js";import"./useConnectConfig.BjHck5jY.js";import"./index.CAUjMUXb.js";import"./registerServiceWorker.qetnHJss.js";p();var y=class extends e{constructor(t){super(t),this.rootDir=(void 0)(t),(void 0)((void 0)(this.rootDir))||(void 0)(this.rootDir)}async init(t,r){return this.pg=t,{emscriptenOpts:{...r,preRun:[...r.preRun||[],i=>{let s=i.FS.filesystems.NODEFS;i.FS.mkdir(o),i.FS.mount(s,{root:this.rootDir},o)}]}}}async closeFs(){this.pg.Module.FS.quit()}};export{y as NodeFS};
|
|
2
|
-
//# sourceMappingURL=nodefs.CGG4X8-i.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{e as se,a$ as ce,b0 as le,b1 as we,l as ie,b2 as ue,b3 as W,b4 as fe,f as U,b5 as pe,b6 as ee,b7 as he,b8 as me,b9 as ge,ba as ye,bb as De,M as te,bc as Ee,bd as ve,be,bf as Se,bg as Te,bh as $e,bi as Fe,ac as oe,bj as re,af as ne,bk as Ne,bl as Ue,bm as Re}from"./index.Dc5HlSvp.js";import{useState as ae,useEffect as Oe,useCallback as c,useMemo as Ae}from"react";import{b as Ie,c as Le,d as Me}from"./user.LueWOWdv.js";import{a as Pe,h as Ce,n as xe,f as _e,i as He}from"./useFeatureFlags.PE3FavSR.js";const R=se(["utils/document-model",Math.floor(Math.random()*999).toString()]),je=parseInt(window.__VITE_ENVS.FILE_UPLOAD_OPERATIONS_CHUNK_SIZE||"50");function Be(a,n,w=R.error){const[f,g]=ae(n),[y,t]=ae(),D=u=>{t(u),w(u)};return Oe(()=>{g(n),t(void 0)},[n]),[f,(u,p,v)=>{t(void 0),g(T=>{if(!a||!T)return T;try{const S=a(T,u),O=u.scope??"global",l=S.operations[O],$=l[l.length-1];if($.error){const F=new Error($.error);D(F),v==null||v(F)}return p==null||p($,{prevState:{...T},newState:{...S}}),S}catch(S){return D(S),v==null||v(S),T}})},y]}async function ze(a,n,w,f,g,y){const t=(y==null?void 0:y.operationsLimit)||je;R.verbose(`uploadDocumentOperations(drive: ${a}, documentId:${n}, ops: ${Object.keys(w.operations).join(",")}, limit:${t})`);for(const D of Object.values(w.operations))for(let b=0;b<D.length;b+=t){R.verbose(`uploadDocumentOperations:for(i:${b}, ops:${D.length}, limit:${t}): START`);const u=D.slice(b,b+t),p=u.at(-1);if(!p)break;const{scope:v}=p;await g(a,n,u),R.verbose(`uploadDocumentOperations:for:waitForUpdate(${n}:${v} rev ${p.index}): NEXT`)}R.verbose(`uploadDocumentOperations:for:waitForUpdate(${n}): END`)}const ke=async a=>{we(a).generateAsync({type:"blob"}).then(w=>{const f=window.document.createElement("a");f.style.display="none",f.href=URL.createObjectURL(w),f.download=`${a.name||"Untitled"}.zip`,window.document.body.appendChild(f),f.click(),window.document.body.removeChild(f)}).catch(ie.error)};async function Je(a,n){var g,y;const w=n(a.documentType);if(!w)throw new Error(`Document model not supported: ${a.documentType}`);const f=w.documentModel.extension;if(!window.showSaveFilePicker){await ke(a);return}try{const t=await window.showSaveFilePicker({suggestedName:`${a.name||((g=a.state.global)==null?void 0:g.name)||"Untitled"}.${f?`${f}.`:""}zip`});await le(a,t);const D=(await t.getFile()).path;return typeof window<"u"&&((y=window.electronAPI)==null||y.fileSaved(a,D)),D}catch(t){if(!(t instanceof DOMException&&t.name==="AbortError"))throw t}}async function qe(a,n){const w=await ce(a,g=>g,{checkHashes:!0}),f=n(w.documentType);if(!f)throw new Error(`Document "${w.documentType}" is not supported`);return f.utils.loadFromInput(a)}async function Ze(a,n,w,f,g,y){if(!y||!a.context||!a.context.signer)return a;if(!g)return ie.error(`Document model '${f.documentType}' does not have a reducer`),a;const t={documentId:w,signer:a.context.signer};return await ue(a,g,f,t,n)}function Ke(a,n,w){return w?{context:{signer:{app:{name:"Connect",key:n||""},user:{address:w.address,networkId:w.networkId,chainId:w.chainId},signatures:[]}},...a}:a}function Qe(){const a=se(["useDocumentDriveServer",Math.floor(Math.random()*999).toString()]),{isAllowedToCreateDocuments:n,isAllowedToEditDocuments:w}=Pe()||{isAllowedToCreateDocuments:!1,isAllowedToEditDocuments:!1},f=Ie()||void 0,g=Le(),{sign:y}=Me(),t=Ce(),D=xe(),b=_e(),[u,p,,v]=He(),T=!!t,S=c(async(e,o,r)=>{if(!t)throw new Error("Reactor is not loaded");const d=await t.getDocument(e,o,r);if(!d)throw new Error(`There was an error opening file with id ${o} on drive ${e}`);return d},[t]),O=c(async e=>{if(!t)throw new Error("Reactor is not loaded");return await t.getDocuments(e)},[t]),l=c(async(e,o)=>{if(!t)throw new Error("Reactor is not loaded");let r=u.find(m=>m.id===e);if(!r)throw new Error(`Drive with id ${e} not found`);const d={...r};r=W(r,Ke(o,g,f));const s=o.scope??"global",h=r.operations[s].findLast(m=>m.type===o.type);if(!h)throw new Error("There was an error applying the operation");const E=await Ze(h,y,e,d,W,f);try{const m=await t.queueDriveOperation(e,E);if(m.status!=="SUCCESS"&&a.error(m.error),m.operations.length&&await p(),m.document&&!fe(m.document))throw new Error("Received document is not a Document Drive");return m.document}catch(m){return a.error(m),r}},[u,p,t,y,f,g]),$=c(async(e,o,r,d,s)=>{if(!n)throw new Error("User is not allowed to create documents");let i=u.find(N=>N.id===e);if(!i)throw new Error(`Drive with id ${e} not found`);const h=U(),E=pe(i.state.global,{id:h,name:o,parentFolder:d??null,documentType:r,document:s},["global"]);i=await l(e,E);const m=i==null?void 0:i.state.global.nodes.find(N=>N.id===h);if(!m||!ee(m))throw new Error("There was an error adding document");return m},[l,u,n]),F=c(async(e,o,r)=>{if(!w)throw new Error("User is not allowed to edit documents");if(!t)throw new Error("Reactor is not loaded");if(!u.find(i=>i.id===e))throw new Error(`Drive with id ${e} not found`);const s=o!==void 0?await t.queueOperations(e,o,r):await t.queueDriveOperations(e,r);return s.operations.length&&await p(),p().catch(a.error),s.document},[u,w,t]),A=c(async(e,o,r,d)=>{if(a.verbose(`addFile(drive: ${o}, name: ${r}, folder: ${d})`),!t)throw new Error("Reactor is not loaded");if(!n)throw new Error("User is not allowed to create files");const s=await qe(e,b),i={...s.initialState,initialState:s.initialState,operations:{global:[],local:[]},clipboard:[]},h=await $(o,r||(typeof e=="string"?s.name:e.name),s.documentType,d,i);u.find(E=>E.id===o),ze(o,h.id,s,t,F,{}).catch(E=>{throw E})},[$,F,b,n,t]),I=c(async(e,o,r,d,s)=>{if(!n)throw new Error("User is not allowed to update files");const i=await l(e,he({id:o,name:d||void 0,parentFolder:s,documentType:r})),h=i==null?void 0:i.state.global.nodes.find(E=>E.id===o);if(!h||!ee(h))throw new Error("There was an error updating document");return h},[l,n]),L=c(async(e,o,r)=>{if(!n)throw new Error("User is not allowed to create folders");const d=U(),s=await l(e,me({id:d,name:o,parentFolder:r})),i=s==null?void 0:s.state.global.nodes.find(h=>h.id===d);if(!i||!ge(i))throw new Error("There was an error adding folder");return i},[l,n]),M=c(async(e,o)=>{if(!n)throw new Error("User is not allowed to delete documents");await l(e,ye({id:o}))},[l,n]),P=c(async(e,o,r)=>{if(!n)throw new Error("User is not allowed to rename documents");const d=await l(e,De({id:o,name:r})),s=d==null?void 0:d.state.global.nodes.find(i=>i.id===o);if(!s)throw new Error("There was an error renaming node");return s},[l,n]),C=c(async(e,o)=>{if(!n)throw new Error("User is not allowed to move documents");o.kind===te||e.parentFolder===o.id||await l(o.driveId,Ee({srcFolder:e.id,targetParentFolder:o.id}))},[l,n]),x=c(async(e,o)=>{if(!t)throw new Error("Reactor is not loaded");if(!n)throw new Error("User is not allowed to copy documents");if(o.kind===te)return;const r=u.find(h=>h.id===e.driveId);if(!r)return;const s=ve({srcId:e.id,targetParentFolder:o.id,targetName:e.name},()=>U(),r.state.global.nodes).map(h=>be(h)),i=await t.addDriveActions(e.driveId,s);i.operations.length?await p():i.status!=="SUCCESS"&&a.error(`Error copying files: ${i.status}`,i.error)},[u,n,p,t]),_=c(async(e,o,r)=>{if(!w)throw new Error("User is not allowed to edit documents");if(!t)throw new Error("Reactor is not loaded");if(!u.find(i=>i.id===e))throw new Error(`Drive with id ${e} not found`);return(await t.addOperation(e,o,r)).document},[u,w,t]),H=c(async(e,o)=>{if(!t)throw new Error("Reactor is not loaded");if(!n)throw new Error("User is not allowed to create drives");const r=e.id||U();e=Se(e);const d=await t.addDrive({global:e.global,local:e.local,id:r},o);return await p(),d},[n,p,t]),j=c(async(e,o)=>{if(!t)throw new Error("Reactor is not loaded");const r=await t.addRemoteDrive(e,o);return await p(),r},[p,t]),z=c(async e=>{if(!n)throw new Error("User is not allowed to delete drives");if(!t)throw new Error("Reactor is not loaded");if(!u.find(r=>r.id===e))throw new Error(`Drive with id ${e} not found`);return await t.deleteDrive(e),p()},[u,n,p,t]),k=c(async(e,o)=>{if(!n)throw new Error("User is not allowed to rename drives");return l(e,Te({name:o}))},[l,n]),q=c(async(e,o)=>{if(!n)throw new Error("User is not allowed to change drive availability");return l(e,$e({availableOffline:o}))},[l,n]),Z=c(async(e,o)=>{if(!n)throw new Error("User is not allowed to change drive availability");return l(e,Fe({type:o}))},[l,n]),K=c(async(e,o)=>{if(o!==oe){if(!t)throw new Error("Reactor is not loaded");try{const r=t.getSyncStatus(e);return r instanceof re?"INITIAL_SYNC":r}catch(r){return console.error(r),ne}}},[t]),V=c((e,o)=>{if(o!==oe){if(!t)throw new Error("Reactor is not loaded");try{const r=t.getSyncStatus(e);return r instanceof re?"INITIAL_SYNC":r}catch(r){return console.error(r),ne}}},[t]),Y=c(e=>{if(!t)throw new Error("Reactor is not loaded");return t.on("strandUpdate",e)},[t]),G=c(e=>{if(!t)throw new Error("Reactor is not loaded");return t.on("syncStatus",e)},[t]),X=c(async()=>{t&&(await D.clear(),await p())},[p,t,D]),B=c(async(e,o)=>{const r=await l(e,Ne({triggerId:o}));if(r==null?void 0:r.state.local.triggers.find(s=>s.id===o))throw new Error(`There was an error removing trigger ${o}`)},[l]),J=c(async(e,o,r)=>{var h,E,m,N;if(!t)throw new Error("Reactor is not loaded");const d=U(),s={driveId:e,listenerId:d,block:!1,filter:{branch:((h=r.pullFilter)==null?void 0:h.branch)??[],documentId:((E=r.pullFilter)==null?void 0:E.documentId)??[],documentType:((m=r.pullFilter)==null?void 0:m.documentType)??[],scope:((N=r.pullFilter)==null?void 0:N.scope)??[]},system:!1,label:`Pullresponder #${d}`,callInfo:{data:"",name:"PullResponder",transmitterType:"PullResponder"}},i=t.listeners;s.transmitter=new Ue(s,i);try{await i.setListener(e,s)}catch(de){throw new Error(`Listener couldn't be registered: ${de}`)}return{driveId:e,filter:s.filter,data:{interval:`${r.pullInterval}`||"1000",listenerId:d,url:o},id:d,type:"PullResponder"}},[t]),Q=c(async(e,o)=>{const r=await l(e,Re({trigger:o}));if(!(r==null?void 0:r.state.local.triggers.find(s=>s.id===s.id)))throw new Error(`There was an error adding the trigger ${o.id}`)},[l]);return Ae(()=>({reactorLoaded:T,documentDrives:u,documentDrivesStatus:v,addDocument:$,openFile:S,addFile:A,updateFile:I,addFolder:L,deleteNode:M,renameNode:P,moveNode:C,copyNode:x,addOperation:_,addOperations:F,addDrive:H,addRemoteDrive:j,deleteDrive:z,renameDrive:k,setDriveAvailableOffline:q,setDriveSharingType:Z,getSyncStatus:K,getSyncStatusSync:V,onStrandUpdate:Y,onSyncStatus:G,clearStorage:X,removeTrigger:B,addTrigger:Q,registerNewPullResponderTrigger:J,getDocumentsIds:O}),[T,$,H,A,L,_,F,j,Q,X,x,z,M,u,v,K,V,C,Y,G,S,J,B,k,P,q,Z,I,O])}export{Be as a,Ke as b,Je as e,Ze as s,Qe as u};
|
|
2
|
-
//# sourceMappingURL=useDocumentDriveServer.CpN4RUGw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFeatureFlags.PE3FavSR.js","sources":["../../src/store/utils.ts","../../../../node_modules/.pnpm/jotai-effect@1.1.6_jotai@2.12.4_@types+react@18.3.22_react@18.3.1_/node_modules/jotai-effect/dist/atomEffect.js","../../../../node_modules/.pnpm/jotai-effect@1.1.6_jotai@2.12.4_@types+react@18.3.22_react@18.3.1_/node_modules/jotai-effect/dist/observe.js","../../src/services/renown/constants.ts","../../src/store/document-model.ts","../../src/utils/reactor.ts","../../src/store/reactor.tsx","../../src/store/index.ts","../../src/hooks/useDocumentDrives.ts","../../src/hooks/useLogin.ts","../../src/hooks/useAllowList.ts","../../src/hooks/useUserPermissions.ts","../../src/hooks/useFeatureFlags/default-config.ts","../../src/hooks/useFeatureFlags/atom.ts","../../src/hooks/useFeatureFlags/useFeatureFlags.ts"],"sourcesContent":["import connectConfig from '#connect-config';\n\nimport { atomWithStorage as _atomWithStorage } from 'jotai/utils';\nimport type { SyncStorage } from 'jotai/vanilla/utils/atomWithStorage';\n\nconst namespace = connectConfig.routerBasename;\n\nexport const atomWithStorage = <T>(\n key: string,\n initialValue: T,\n storage?: SyncStorage<T>,\n options?: {\n getOnInit?: boolean;\n },\n) =>\n _atomWithStorage<T>(\n `${namespace}:${key}`,\n initialValue,\n storage ? storage : undefined,\n options,\n );\n\nexport const atomWithStorageCallback = <T>(\n key: string,\n initialValue: T,\n callback: (value: T) => void,\n) =>\n _atomWithStorage<T>(key, initialValue, {\n getItem(key, initialValue) {\n const value = localStorage.getItem(`${namespace}:${key}`);\n return value ? (JSON.parse(value) as T) : initialValue;\n },\n setItem(key, value) {\n localStorage.setItem(`${namespace}:${key}`, JSON.stringify(value));\n callback(value);\n },\n removeItem(key) {\n localStorage.removeItem(`${namespace}:${key}`);\n },\n subscribe(key, callback) {\n if (typeof window.addEventListener === 'undefined') {\n return () => null;\n }\n\n function listener(e: StorageEvent) {\n if (\n e.storageArea === localStorage &&\n e.key === `${namespace}:${key}`\n ) {\n callback((e.newValue ?? '') as T);\n }\n }\n window.addEventListener('storage', listener);\n\n return () => window.removeEventListener('storage', listener);\n },\n });\n","import { atom } from 'jotai/vanilla';\nexport function atomEffect(effect) {\n const refreshAtom = atom(0);\n const refAtom = atom(() => ({ i: 0 }), (get, set) => {\n const ref = get(refAtom);\n Object.assign(ref, { m: true, peek: get, set });\n set(refreshAtom, (c) => c + 1);\n return () => {\n ref.m = false;\n cleanup(ref);\n throwPendingError(ref);\n };\n });\n refAtom.onMount = (mount) => mount();\n const baseAtom = atom((get) => {\n get(refreshAtom);\n const ref = get(refAtom);\n if (!ref.m || ref.irc || (ref.i && !ref.irf)) {\n return ref.p;\n }\n throwPendingError(ref);\n const currDeps = new Map();\n const getter = (a) => {\n const value = get(a);\n currDeps.set(a, value);\n return value;\n };\n getter.peek = ref.peek;\n const setter = (...args) => {\n try {\n ++ref.i;\n return ref.set(...args);\n }\n finally {\n Array.from(currDeps.keys(), get);\n --ref.i;\n }\n };\n setter.recurse = (anAtom, ...args) => {\n if (ref.fc) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('set.recurse is not allowed in cleanup');\n }\n return undefined;\n }\n try {\n ref.irc = true;\n return ref.set(anAtom, ...args);\n }\n finally {\n ref.irc = false;\n const depsChanged = Array.from(currDeps).some(areDifferent);\n if (depsChanged) {\n refresh(ref);\n }\n }\n };\n function areDifferent([a, v]) {\n return get(a) !== v;\n }\n ++ref.i;\n function runEffect() {\n try {\n ref.irf = false;\n if (!ref.m)\n return;\n cleanup(ref);\n ref.c = effectAtom.effect(getter, setter);\n }\n catch (error) {\n ref.e = error;\n refresh(ref);\n }\n finally {\n ref.p = undefined;\n --ref.i;\n }\n }\n return ref.irf ? runEffect() : (ref.p = Promise.resolve().then(runEffect));\n });\n if (process.env.NODE_ENV !== 'production') {\n function setLabel(atom, label) {\n Object.defineProperty(atom, 'debugLabel', {\n get: () => `${effectAtom.debugLabel ?? 'effect'}:${label}`,\n });\n atom.debugPrivate = true;\n }\n setLabel(refreshAtom, 'refresh');\n setLabel(refAtom, 'ref');\n setLabel(baseAtom, 'base');\n }\n const effectAtom = atom((get) => void get(baseAtom));\n effectAtom.effect = effect;\n return effectAtom;\n function refresh(ref) {\n try {\n ref.irf = true;\n ref.set(refreshAtom, (c) => c + 1);\n }\n finally {\n ref.irf = false;\n }\n }\n function cleanup(ref) {\n if (typeof ref.c !== 'function')\n return;\n try {\n ref.fc = true;\n ref.c();\n }\n finally {\n ref.fc = false;\n ref.c = undefined;\n }\n }\n function throwPendingError(ref) {\n if ('e' in ref) {\n const error = ref.e;\n delete ref.e;\n throw error;\n }\n }\n}\n//# sourceMappingURL=atomEffect.js.map","import { getDefaultStore } from 'jotai/vanilla';\nimport { atomEffect } from './atomEffect.js';\nconst storeEffects = new WeakMap();\nexport function observe(effect, store = getDefaultStore()) {\n if (!storeEffects.has(store)) {\n storeEffects.set(store, new Map());\n }\n const effectSubscriptions = storeEffects.get(store);\n let unobserve = effectSubscriptions.get(effect);\n if (!unobserve) {\n const effectAtom = atomEffect(effect);\n let unsubscribe = store.sub(effectAtom, () => { });\n unobserve = () => {\n if (unsubscribe) {\n effectSubscriptions.delete(effect);\n if (effectSubscriptions.size === 0) {\n storeEffects.delete(store);\n }\n unsubscribe = void unsubscribe();\n }\n };\n effectSubscriptions.set(effect, unobserve);\n }\n return unobserve;\n}\n//# sourceMappingURL=observe.js.map","export const RENOWN_URL =\n import.meta.env.PH_CONNECT_RENOWN_URL || 'https://www.renown.id';\nexport const RENOWN_NETWORK_ID =\n import.meta.env.PH_CONNECT_RENOWN_NETWORK_ID || 'eip155';\nexport const RENOWN_CHAIN_ID =\n import.meta.env.PH_CONNECT_RENOWN_CHAIN_ID || '1';\n\nexport const DOMAIN_TYPE = [\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n] as const;\n\nexport const VERIFIABLE_CREDENTIAL_EIP712_TYPE = [\n { name: '@context', type: 'string[]' },\n { name: 'type', type: 'string[]' },\n { name: 'id', type: 'string' },\n { name: 'issuer', type: 'Issuer' },\n { name: 'credentialSubject', type: 'CredentialSubject' },\n { name: 'credentialSchema', type: 'CredentialSchema' },\n { name: 'issuanceDate', type: 'string' },\n { name: 'expirationDate', type: 'string' },\n] as const;\n\nexport const CREDENTIAL_SCHEMA_EIP712_TYPE = [\n { name: 'id', type: 'string' },\n { name: 'type', type: 'string' },\n] as const;\n\nexport const CREDENTIAL_SUBJECT_TYPE = [\n { name: 'app', type: 'string' },\n { name: 'id', type: 'string' },\n { name: 'name', type: 'string' },\n] as const;\n\nexport const ISSUER_TYPE = [\n { name: 'id', type: 'string' },\n { name: 'ethereumAddress', type: 'string' },\n] as const;\n\nexport const CREDENTIAL_TYPES = {\n EIP712Domain: DOMAIN_TYPE,\n VerifiableCredential: VERIFIABLE_CREDENTIAL_EIP712_TYPE,\n CredentialSchema: CREDENTIAL_SCHEMA_EIP712_TYPE,\n CredentialSubject: CREDENTIAL_SUBJECT_TYPE,\n Issuer: ISSUER_TYPE,\n} as const;\n","import { useFeatureFlag } from '#hooks';\nimport { driveDocumentModelModule } from 'document-drive';\nimport {\n documentModelDocumentModelModule,\n type DocumentModelLib,\n type DocumentModelModule,\n type PHDocument,\n} from 'document-model';\nimport { atom, useAtomValue } from 'jotai';\nimport { observe } from 'jotai-effect';\nimport { unwrap } from 'jotai/utils';\nimport { externalPackagesAtom } from './external-packages.js';\nimport { atomStore } from './index.js';\n\nexport const baseDocumentModels = [\n driveDocumentModelModule,\n documentModelDocumentModelModule,\n] as DocumentModelModule[];\n\n// removes document models with the same id, keeping the one that appears later\nfunction getUniqueDocumentModels(\n ...documentModels: DocumentModelModule[]\n): DocumentModelModule[] {\n const uniqueModels = new Map<string, DocumentModelModule>();\n\n for (const model of documentModels) {\n uniqueModels.set(model.documentModel.id, model);\n }\n\n return Array.from(uniqueModels.values());\n}\n\nfunction getDocumentModelsFromModules(modules: DocumentModelLib[]) {\n return modules\n .map(module => module.documentModels)\n .reduce((acc, val) => acc.concat(val), []);\n}\n\nexport const documentModelsAtom = atom(async get => {\n const externalModules = (await get(\n externalPackagesAtom,\n )) as DocumentModelLib[];\n const externalDocumentModels =\n getDocumentModelsFromModules(externalModules);\n\n const result = getUniqueDocumentModels(\n ...baseDocumentModels,\n ...externalDocumentModels,\n );\n return result;\n});\n\n// blocks rendering until document models are loaded.\nexport const useDocumentModels = () => useAtomValue(documentModelsAtom);\n\nconst unrappedDocumentModelsAtom = unwrap(documentModelsAtom);\n\n// will return undefined until document models are initialized. Does not block rendering.\nexport const useUnwrappedDocumentModelModules = () =>\n useAtomValue(unrappedDocumentModelsAtom);\n\nexport const subscribeDocumentModels = function (\n listener: (documentModels: DocumentModelModule[]) => void,\n) {\n // activate the effect on the default store\n const unobserve = observe(get => {\n const documentModels = get(documentModelsAtom);\n documentModels.then(listener).catch(e => {\n throw e;\n });\n }, atomStore);\n\n // Clean up the effect\n return () => unobserve();\n};\n\nfunction getDocumentModelModule<TDocument extends PHDocument>(\n documentType: string,\n documentModels: DocumentModelModule[] | undefined,\n) {\n return documentModels?.find(d => d.documentModel.id === documentType) as\n | DocumentModelModule<TDocument>\n | undefined;\n}\n\nexport function useDocumentModelModule<TDocument extends PHDocument>(\n documentType: string,\n) {\n const documentModelModules = useUnwrappedDocumentModelModules();\n return getDocumentModelModule<TDocument>(\n documentType,\n documentModelModules,\n );\n}\n\nexport const useGetDocumentModelModule = <TDocument extends PHDocument>() => {\n const documentModelModules = useUnwrappedDocumentModelModules();\n return (documentType: string) =>\n getDocumentModelModule<TDocument>(documentType, documentModelModules);\n};\n\n/**\n * Returns an array of filtered document models based on the enabled and disabled editors (feature flag).\n * If enabledEditors is set to '*', returns all document models.\n * If disabledEditors is set to '*', returns an empty array.\n * If disabledEditors is an array, filters out document models whose IDs are included in the disabledEditors array.\n * If enabledEditors is an array, filters document models whose IDs are included in the enabledEditors array.\n * @returns {Array<DocumentModel>} The filtered document models.\n */\nexport const useFilteredDocumentModels = () => {\n const documentModels = useUnwrappedDocumentModelModules();\n const { config } = useFeatureFlag();\n const { enabledEditors, disabledEditors } = config.editors;\n\n if (!documentModels) {\n return undefined;\n }\n\n const filteredDocumentModels = documentModels.filter(\n model => model.documentModel.id !== 'powerhouse/document-drive',\n );\n\n if (enabledEditors === '*') {\n return documentModels;\n }\n\n if (disabledEditors === '*') {\n return [];\n }\n\n if (disabledEditors) {\n return filteredDocumentModels.filter(\n d => !disabledEditors.includes(d.documentModel.id),\n );\n }\n\n if (enabledEditors) {\n return filteredDocumentModels.filter(d =>\n enabledEditors.includes(d.documentModel.id),\n );\n }\n\n return filteredDocumentModels;\n};\n","import {\n BaseQueueManager,\n type DefaultRemoteDriveInput,\n type DocumentDriveServerOptions,\n type IDocumentDriveServer,\n InMemoryCache,\n ReactorBuilder,\n} from 'document-drive';\nimport { BrowserStorage } from 'document-drive/storage/browser';\nimport {\n IDocumentAdminStorage,\n IDocumentOperationStorage,\n IDocumentStorage,\n IDriveOperationStorage,\n} from 'document-drive/storage/types';\nimport { type DocumentModelModule } from 'document-model';\n\nconst DEFAULT_DRIVES_URL =\n (import.meta.env.PH_CONNECT_DEFAULT_DRIVES_URL as string | undefined) ||\n undefined;\nconst defaultDrivesUrl = DEFAULT_DRIVES_URL\n ? DEFAULT_DRIVES_URL.split(',')\n : [];\n\nexport const getReactorDefaultDrivesConfig = (): Pick<\n DocumentDriveServerOptions,\n 'defaultDrives'\n> => {\n const remoteDrives: DefaultRemoteDriveInput[] = defaultDrivesUrl.map(\n driveUrl => ({\n url: driveUrl,\n options: {\n sharingType: 'PUBLIC',\n availableOffline: true,\n listeners: [\n {\n block: true,\n callInfo: {\n data: driveUrl,\n name: 'switchboard-push',\n transmitterType: 'SwitchboardPush',\n },\n filter: {\n branch: ['main'],\n documentId: ['*'],\n documentType: ['*'],\n scope: ['global'],\n },\n label: 'Switchboard Sync',\n listenerId: '1',\n system: true,\n },\n ],\n triggers: [],\n },\n }),\n );\n\n return {\n defaultDrives: {\n remoteDrives,\n removeOldRemoteDrives:\n defaultDrivesUrl.length > 0\n ? {\n strategy: 'preserve-by-url-and-detach',\n urls: defaultDrivesUrl,\n }\n : { strategy: 'preserve-all' },\n },\n };\n};\n\nexport function createBrowserStorage(\n routerBasename: string,\n): IDriveOperationStorage &\n IDocumentOperationStorage &\n IDocumentStorage &\n IDocumentAdminStorage {\n return new BrowserStorage(routerBasename);\n}\n\nexport function createBrowserDocumentDriveServer(\n documentModels: DocumentModelModule[],\n storage: IDriveOperationStorage,\n): IDocumentDriveServer {\n return new ReactorBuilder(documentModels)\n .withStorage(storage)\n .withCache(new InMemoryCache())\n .withQueueManager(new BaseQueueManager(1, 10))\n .withOptions({ ...getReactorDefaultDrivesConfig() })\n .build();\n}\n","import connectConfig from '#connect-config';\nimport { createBrowserDocumentDriveServer, createBrowserStorage } from '#utils';\nimport { type IDocumentDriveServer, logger } from 'document-drive';\nimport {\n type IDocumentAdminStorage,\n type IDocumentOperationStorage,\n type IDocumentStorage,\n type IDriveOperationStorage,\n} from 'document-drive/storage/types';\nimport { generateId } from 'document-model';\nimport { atom, useAtomValue } from 'jotai';\nimport { observe } from 'jotai-effect';\nimport { atomWithLazy, unwrap } from 'jotai/utils';\nimport { getConnectCrypto } from '../hooks/useConnectCrypto.js';\nimport { renownAtom, renownStatusAtom } from '../hooks/useRenown.js';\nimport {\n documentModelsAtom,\n subscribeDocumentModels,\n} from './document-model.js';\nimport { atomStore } from './index.js';\n\nasync function initReactor(reactor: IDocumentDriveServer) {\n await initJwtHandler(reactor);\n\n const errors = await reactor.initialize();\n const error = errors?.at(0);\n if (error) {\n throw error;\n }\n\n const drives = await reactor.getDrives();\n if (!drives.length && connectConfig.drives.sections.LOCAL.enabled) {\n return reactor\n .addDrive({\n id: generateId(),\n slug: 'my-local-drive',\n global: {\n name: 'My Local Drive',\n icon: null,\n },\n local: {\n availableOffline: false,\n sharingType: 'private',\n listeners: [],\n triggers: [],\n },\n })\n .catch(logger.error);\n }\n}\n\nasync function initJwtHandler(server: IDocumentDriveServer) {\n const renown = await atomStore.get(renownAtom);\n const user = await renown?.user();\n const crypto = await getConnectCrypto();\n\n if (user?.address) {\n server.setGenerateJwtHandler(async driveUrl => {\n return crypto.getBearerToken(driveUrl, user.address);\n });\n }\n}\n\n// Helper function to wait for renown to be initialized\nasync function waitForRenown(): Promise<void> {\n let unsubscribe: (() => void) | undefined;\n\n // Wait for renown status to be 'finished'\n return Promise.race([\n new Promise<void>((resolve, reject) => {\n unsubscribe = observe(get => {\n try {\n const status = get(renownStatusAtom);\n if (status === 'finished' || status === 'error') {\n resolve();\n }\n } catch (err) {\n // In case of any error during the observation, proceed with reactor initialization\n reject(\n new Error(\n `Error observing renown status: ${\n err instanceof Error\n ? err.message\n : 'Unknown error'\n }`,\n ),\n );\n }\n }, atomStore);\n return () => unsubscribe?.();\n }),\n new Promise<void>((_, reject) => {\n // Set a maximum timeout (5 seconds) to avoid blocking indefinitely\n setTimeout(() => {\n unsubscribe?.();\n reject(new Error('Timed out waiting for renown to initialize'));\n }, 5000);\n }),\n ]).catch((error: unknown) => {\n unsubscribe?.();\n logger.warn(error);\n });\n}\n\nasync function createReactor() {\n await waitForRenown();\n // get storage\n const storage = atomStore.get(storageAtom);\n\n // waits for document models to be loaded\n const documentModels = await atomStore.get(documentModelsAtom);\n const server =\n (window.electronAPI?.documentDrive as\n | IDocumentDriveServer\n | undefined) ??\n createBrowserDocumentDriveServer(documentModels, storage);\n await initReactor(server);\n return server;\n}\n\nexport const storageAtom = atom<\n IDriveOperationStorage &\n IDocumentOperationStorage &\n IDocumentStorage &\n IDocumentAdminStorage\n>(createBrowserStorage(connectConfig.routerBasename));\nexport const reactorAtom = atomWithLazy<Promise<IDocumentDriveServer>>(() =>\n createReactor(),\n);\nexport const unwrappedReactor = unwrap(reactorAtom);\n\n// blocks rendering until reactor is initialized.\nexport const useReactor = (): IDocumentDriveServer | undefined =>\n useAtomValue(reactorAtom);\n\nexport const useDocumentAdminStorage = (): IDocumentAdminStorage =>\n useAtomValue(storageAtom);\n\n// will return undefined until reactor is initialized. Does not block rendering.\nexport const useUnwrappedReactor = (): IDocumentDriveServer | undefined =>\n useAtomValue(unwrappedReactor);\n\n// will return undefined until reactor is initialized. Does not block rendering or trigger the reactor to be initialized.\nexport const useAsyncReactor = (): IDocumentDriveServer | undefined =>\n useAtomValue(reactorAsyncAtom);\n\nconst reactorAsyncAtom = atom<IDocumentDriveServer | undefined>(undefined);\nreactorAsyncAtom.onMount = setAtom => {\n subscribeReactor(setAtom);\n};\n\n// updates the reactor when the available document models change\nlet documentModelsSubscripion: (() => void) | undefined;\nreactorAtom.onMount = setAtom => {\n if (documentModelsSubscripion) return;\n setAtom(async prevReactor => {\n const reactor = await prevReactor;\n\n if (!documentModelsSubscripion) {\n documentModelsSubscripion = subscribeDocumentModels(\n documentModels => {\n reactor.setDocumentModelModules(documentModels);\n },\n );\n }\n return reactor;\n });\n};\n\nexport const subscribeReactor = function (\n listener: (reactor: IDocumentDriveServer) => void,\n) {\n // activate the effect on the default store\n const unobserve = observe(get => {\n const reactor = get(reactorAtom);\n reactor.then(listener).catch(e => {\n throw e;\n });\n }, atomStore);\n\n // Clean up the effect\n return () => unobserve();\n};\n","import { atom, createStore } from 'jotai';\nimport { themeAtom } from './theme.js';\n\nexport type Store = ReturnType<typeof createStore>;\n\nexport const atomStore: Store = createStore();\n\nexport const sidebarDisableHoverStyles = atom(false);\n\nexport const atoms = {\n themeAtom,\n};\n\nexport * from './document-drive.js';\nexport * from './document-model.js';\nexport * from './editor.js';\nexport * from './external-packages.js';\nexport * from './reactor.js';\nexport * from './theme.js';\nexport * from './user.js';\nexport * from './utils.js';\n\n","import { useUnwrappedReactor } from '#store';\nimport type { IDocumentDriveServer } from 'document-drive';\nimport { type DocumentDriveDocument, logger } from 'document-drive';\nimport { type OperationScope, type PHDocument } from 'document-model';\nimport { atom, useAtom } from 'jotai';\nimport { atomFamily } from 'jotai/utils';\nimport { useCallback, useMemo } from 'react';\nimport { type ClientErrorHandler } from './useClientErrorHandler.js';\n\n// map of DocumentDriveServer objects and their Document Drives\nconst documentDrivesAtom = atom(\n new Map<IDocumentDriveServer, DocumentDriveDocument[]>(),\n);\n\nexport function documentToHash(drive: PHDocument): string {\n return Object.keys(drive.operations)\n .map(\n key =>\n `${key}:${drive.operations[key as OperationScope].length}:${drive.operations[key as OperationScope].at(-1)?.hash}`,\n )\n .join(':');\n}\n\nexport function drivesToHash(drives: DocumentDriveDocument[]): string {\n return drives.map(documentToHash).join('&');\n}\n\n// creates a derived atom that encapsulates the Map of Document Drives\nconst readWriteDocumentDrivesAtom = (server?: IDocumentDriveServer) => () =>\n atom(\n get => (server ? (get(documentDrivesAtom).get(server) ?? []) : []),\n (_get, set, newDrives: DocumentDriveDocument[]) => {\n set(documentDrivesAtom, map => {\n if (!server) {\n return new Map();\n }\n const currentDrives = map.get(server) ?? [];\n if (\n currentDrives.length !== newDrives.length ||\n drivesToHash(currentDrives) !== drivesToHash(newDrives)\n ) {\n return new Map(map).set(server, newDrives);\n } else {\n return map;\n }\n });\n },\n );\n// keeps track of document drives that have been initialized\nexport type IDrivesState = 'INITIAL' | 'LOADING' | 'LOADED' | 'ERROR';\nexport const documentDrivesInitializedMapAtomFamily = atomFamily(() =>\n atom<IDrivesState>('INITIAL'),\n);\n\n// returns an array with the document drives of a\n// server and a method to fetch the document drives\nexport function useDocumentDrives() {\n const reactor = useUnwrappedReactor();\n const [documentDrives, setDocumentDrives] = useAtom(\n useMemo(readWriteDocumentDrivesAtom(reactor), [reactor]),\n );\n\n const refreshDocumentDrives = useCallback(async () => {\n if (!reactor) {\n return;\n }\n\n const documentDrives: DocumentDriveDocument[] = [];\n try {\n const driveIds = await reactor.getDrives();\n for (const id of driveIds) {\n try {\n const drive = await reactor.getDrive(id);\n documentDrives.push(drive);\n } catch (error) {\n logger.error(error);\n }\n }\n } catch (error) {\n logger.error(error);\n } finally {\n setDocumentDrives(documentDrives);\n }\n }, [reactor]);\n\n // if the server has not been initialized then\n // fetches the drives for the first time\n const [status, setStatus] = useAtom(\n documentDrivesInitializedMapAtomFamily(reactor),\n );\n\n if (status === 'INITIAL' && reactor) {\n setStatus('LOADING');\n refreshDocumentDrives()\n .then(() => setStatus('LOADED'))\n .catch(() => setStatus('ERROR'));\n }\n\n const serverSubscribeUpdates = useCallback(\n (clientErrorhandler: ClientErrorHandler) => {\n if (!reactor) {\n return;\n }\n const unsub1 = reactor.on(\n 'syncStatus',\n async (_event, _status, error) => {\n if (error) {\n logger.error(error);\n }\n await refreshDocumentDrives();\n },\n );\n const unsub2 = reactor.on('strandUpdate', () =>\n refreshDocumentDrives(),\n );\n const unsubOnSyncError = reactor.on(\n 'clientStrandsError',\n clientErrorhandler.strandsErrorHandler,\n );\n\n const unsub3 = reactor.on('defaultRemoteDrive', () =>\n refreshDocumentDrives(),\n );\n\n return () => {\n unsub1();\n unsub2();\n unsubOnSyncError();\n unsub3();\n };\n },\n [reactor, refreshDocumentDrives],\n );\n\n return useMemo(\n () =>\n [\n documentDrives,\n refreshDocumentDrives,\n serverSubscribeUpdates,\n status,\n ] as const,\n [documentDrives, status],\n );\n}\n","import { RENOWN_CHAIN_ID, RENOWN_NETWORK_ID, RENOWN_URL } from '#services';\nimport { atomStore, reactorAtom, useUser } from '#store';\nimport { logger } from 'document-drive';\nimport { atom, useAtom } from 'jotai';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useConnectCrypto } from './useConnectCrypto.js';\nimport { useRenown } from './useRenown.js';\n\ntype LoginStatus = 'initial' | 'checking' | 'not-authorized' | 'authorized';\n\nconst loginStatusAtom = atom<LoginStatus>('initial');\n\nexport const useLogin = () => {\n const [status, setStatus] = useAtom(loginStatusAtom);\n const user = useUser();\n const renown = useRenown();\n const { did, getBearerToken } = useConnectCrypto();\n\n const openRenown = useCallback(async () => {\n const connectId = await did();\n const url = new URL(RENOWN_URL);\n url.searchParams.set('connect', connectId);\n url.searchParams.set('network', RENOWN_NETWORK_ID);\n url.searchParams.set('chain', RENOWN_CHAIN_ID);\n\n if (window.electronAPI) {\n const protocol = await window.electronAPI.protocol();\n url.searchParams.set('deeplink', protocol);\n await window.electronAPI.openURL(url.toString());\n } else {\n const returnUrl = new URL(\n window.location.pathname,\n window.location.origin,\n );\n url.searchParams.set('returnUrl', returnUrl.toJSON());\n window.open(url, '_self')?.focus();\n }\n }, [did]);\n\n const login = useCallback(\n async (userDid: string) => {\n if (!renown) {\n return;\n }\n try {\n setStatus('checking');\n const user = await renown.user();\n\n if (user?.did === userDid) {\n setStatus('authorized');\n return user;\n }\n const newUser = await renown.login(userDid);\n if (newUser) {\n setStatus('authorized');\n\n atomStore\n .get(reactorAtom)\n .then(reactor => {\n reactor.setGenerateJwtHandler(async driveUrl =>\n getBearerToken(driveUrl, newUser.address),\n );\n })\n .catch(err => console.error(err));\n\n return newUser;\n } else {\n setStatus('not-authorized');\n }\n } catch (error) {\n setStatus('not-authorized');\n logger.error(error);\n }\n },\n [renown],\n );\n\n useEffect(() => {\n if (user && status !== 'authorized') {\n setStatus('authorized');\n }\n }, [user, status]);\n\n const logout = useCallback(async () => {\n setStatus('initial');\n await renown?.logout();\n atomStore\n .get(reactorAtom)\n .then(reactor => {\n reactor.removeJwtHandler();\n })\n .catch(err => console.error(err));\n }, [renown]);\n\n return useMemo(\n () =>\n ({\n openRenown,\n user,\n status: user ? 'authorized' : status,\n login: renown ? login : undefined,\n logout,\n }) as const,\n [renown, openRenown, user, status, login, logout],\n );\n};\n","import { useLogin } from './useLogin.js';\n\ntype AllowListType = 'arbitrum' | 'rwa' | 'none';\nexport function useAllowList():\n | {\n isAllowed: boolean;\n allowListType: AllowListType;\n }\n | undefined {\n const { user, status } = useLogin();\n\n const arbitrumAllowListEnvString = import.meta.env\n .PH_CONNECT_ARBITRUM_ALLOW_LIST;\n const rwaAllowListEnvString = import.meta.env.PH_CONNECT_RWA_ALLOW_LIST;\n\n const arbitrumAllowListIsDefined =\n !!arbitrumAllowListEnvString && arbitrumAllowListEnvString !== '';\n const rwaAllowListIsDefined =\n !!rwaAllowListEnvString && rwaAllowListEnvString !== '';\n\n if (arbitrumAllowListIsDefined && rwaAllowListIsDefined) {\n throw new Error(\n 'Both Arbitrum and RWA allow lists are defined. Please only define one.',\n );\n }\n\n // if none of the lists are defined then allow all\n if (!arbitrumAllowListIsDefined && !rwaAllowListIsDefined) {\n return {\n isAllowed: true,\n allowListType: 'none',\n };\n }\n\n // if the user is not yet loaded then wait\n if (user === undefined) {\n return undefined;\n }\n\n if (arbitrumAllowListIsDefined) {\n const arbitrumAllowList = arbitrumAllowListEnvString.split(',');\n\n if (status !== 'authorized' || !user)\n return {\n isAllowed: false,\n allowListType: 'arbitrum',\n };\n\n const userAddressIsOnAllowList = arbitrumAllowList.includes(\n user.address,\n );\n\n if (userAddressIsOnAllowList)\n return {\n isAllowed: true,\n allowListType: 'arbitrum',\n };\n\n return {\n isAllowed: false,\n allowListType: 'arbitrum',\n };\n }\n\n if (rwaAllowListIsDefined) {\n const rwaAllowList = rwaAllowListEnvString.split(',');\n\n if (status !== 'authorized' || !user)\n return {\n isAllowed: false,\n allowListType: 'rwa',\n };\n\n const userAddressIsOnAllowList = rwaAllowList.includes(user.address);\n\n if (userAddressIsOnAllowList)\n return {\n isAllowed: true,\n allowListType: 'rwa',\n };\n\n return {\n isAllowed: false,\n allowListType: 'rwa',\n };\n }\n\n return {\n isAllowed: true,\n allowListType: 'none',\n };\n}\n","import { useAllowList } from './useAllowList.js';\n\nexport function useUserPermissions() {\n const allowList = useAllowList();\n\n if (!allowList) {\n return undefined;\n }\n\n const { allowListType, isAllowed } = allowList;\n\n if (allowListType === 'arbitrum') {\n return {\n isAllowedToCreateDocuments: isAllowed,\n isAllowedToEditDocuments: true,\n };\n }\n\n if (allowListType === 'rwa') {\n return {\n isAllowedToCreateDocuments: isAllowed,\n isAllowedToEditDocuments: isAllowed,\n };\n }\n\n return {\n isAllowedToCreateDocuments: true,\n isAllowedToEditDocuments: true,\n };\n}\n","export const FEATURE_FLAG_KEY_STORAGE = 'feature-flags-config';\n\nconst ENABLED_EDITORS = import.meta.env.PH_CONNECT_ENABLED_EDITORS || undefined;\nconst enabledEditors = ENABLED_EDITORS?.split(',');\n\nconst DISABLED_EDITORS =\n import.meta.env.PH_CONNECT_DISABLED_EDITORS || 'powerhouse/document-drive';\nconst disabledEditors = DISABLED_EDITORS?.split(',');\n\nexport interface FeatureFlag {\n editors: {\n enabledEditors?: '*' | string[];\n disabledEditors?: '*' | string[];\n };\n}\n\nconst defaultConfig: FeatureFlag = {\n editors: {\n enabledEditors: ENABLED_EDITORS === '*' ? '*' : enabledEditors,\n disabledEditors: DISABLED_EDITORS === '*' ? '*' : disabledEditors,\n },\n};\n\nexport default defaultConfig;\n","import { atomWithStorage } from '#store';\nimport defaultConfig, {\n FEATURE_FLAG_KEY_STORAGE,\n type FeatureFlag,\n} from './default-config.js';\n\nexport const featureFlagAtom = atomWithStorage<FeatureFlag>(\n FEATURE_FLAG_KEY_STORAGE,\n defaultConfig,\n);\n","import { useAtom } from 'jotai';\nimport { featureFlagAtom } from './atom.js';\nimport defaultConfig from './default-config.js';\n\nexport const useFeatureFlag = () => {\n const [config, setConfig] = useAtom(featureFlagAtom);\n\n return {\n config: {\n ...defaultConfig,\n ...config,\n },\n setConfig,\n };\n};\n"],"names":["namespace","connectConfig","atomWithStorage","key","initialValue","storage","options","_atomWithStorage","atomWithStorageCallback","callback","value","listener","e","atomEffect","effect","refreshAtom","atom","refAtom","get","set","ref","c","cleanup","throwPendingError","mount","baseAtom","currDeps","getter","a","setter","args","anAtom","areDifferent","refresh","v","runEffect","effectAtom","error","storeEffects","observe","store","getDefaultStore","effectSubscriptions","unobserve","unsubscribe","RENOWN_URL","RENOWN_NETWORK_ID","RENOWN_CHAIN_ID","baseDocumentModels","driveDocumentModelModule","documentModelDocumentModelModule","getUniqueDocumentModels","documentModels","uniqueModels","model","getDocumentModelsFromModules","modules","module","acc","val","documentModelsAtom","externalModules","externalPackagesAtom","externalDocumentModels","unrappedDocumentModelsAtom","unwrap","useUnwrappedDocumentModelModules","useAtomValue","subscribeDocumentModels","atomStore","getDocumentModelModule","documentType","d","useGetDocumentModelModule","documentModelModules","useFilteredDocumentModels","config","useFeatureFlag","enabledEditors","disabledEditors","filteredDocumentModels","DEFAULT_DRIVES_URL","defaultDrivesUrl","getReactorDefaultDrivesConfig","driveUrl","createBrowserStorage","routerBasename","BrowserStorage","createBrowserDocumentDriveServer","ReactorBuilder","InMemoryCache","BaseQueueManager","initReactor","reactor","initJwtHandler","errors","generateId","logger","server","renown","renownAtom","user","crypto","getConnectCrypto","waitForRenown","resolve","reject","status","renownStatusAtom","err","_","createReactor","storageAtom","_a","reactorAtom","atomWithLazy","unwrappedReactor","useDocumentAdminStorage","useUnwrappedReactor","useAsyncReactor","reactorAsyncAtom","setAtom","subscribeReactor","documentModelsSubscripion","prevReactor","createStore","documentDrivesAtom","documentToHash","drive","drivesToHash","drives","readWriteDocumentDrivesAtom","_get","newDrives","map","currentDrives","documentDrivesInitializedMapAtomFamily","atomFamily","useDocumentDrives","documentDrives","setDocumentDrives","useAtom","useMemo","refreshDocumentDrives","useCallback","driveIds","id","setStatus","serverSubscribeUpdates","clientErrorhandler","unsub1","_event","_status","unsub2","unsubOnSyncError","unsub3","loginStatusAtom","useLogin","useUser","useRenown","did","getBearerToken","useConnectCrypto","openRenown","connectId","url","protocol","returnUrl","login","userDid","newUser","useEffect","logout","useAllowList","arbitrumAllowListEnvString","rwaAllowListEnvString","arbitrumAllowListIsDefined","rwaAllowListIsDefined","arbitrumAllowList","rwaAllowList","useUserPermissions","allowList","allowListType","isAllowed","FEATURE_FLAG_KEY_STORAGE","ENABLED_EDITORS","DISABLED_EDITORS","defaultConfig","featureFlagAtom","setConfig"],"mappings":"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","x_google_ignoreList":[1,2]}
|