@powerhousedao/connect 3.2.0-dev.6 → 3.2.0-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AddDriveModal.CBl4c-xt.js → AddDriveModal.CC2hJSRy.js} +2 -2
- package/dist/assets/{AddDriveModal.CBl4c-xt.js.map → AddDriveModal.CC2hJSRy.js.map} +1 -1
- package/dist/assets/{CreateDocumentModal.Dmh3ZGua.js → CreateDocumentModal.DrDKZfrO.js} +2 -2
- package/dist/assets/{CreateDocumentModal.Dmh3ZGua.js.map → CreateDocumentModal.DrDKZfrO.js.map} +1 -1
- package/dist/assets/{DebugSettingsModal.CrxchTh8.js → DebugSettingsModal.4wXajvQp.js} +2 -2
- package/dist/assets/{DebugSettingsModal.CrxchTh8.js.map → DebugSettingsModal.4wXajvQp.js.map} +1 -1
- package/dist/assets/{SettingsModal.BarUqtQ-.js → SettingsModal.BofybYkL.js} +2 -2
- package/dist/assets/{SettingsModal.BarUqtQ-.js.map → SettingsModal.BofybYkL.js.map} +1 -1
- package/dist/assets/{app.BsOD-lXF.js → app.DuG_f-mx.js} +5 -5
- package/dist/assets/{app.BsOD-lXF.js.map → app.DuG_f-mx.js.map} +1 -1
- package/dist/assets/{atlas-import.wGPgZoMA.js → atlas-import.CMme7UvZ.js} +2 -2
- package/dist/assets/{atlas-import.wGPgZoMA.js.map → atlas-import.CMme7UvZ.js.map} +1 -1
- package/dist/assets/{connect.config.CLm38tUz.js → connect.config.fV3xZh42.js} +2 -2
- package/dist/assets/{connect.config.CLm38tUz.js.map → connect.config.fV3xZh42.js.map} +1 -1
- package/dist/assets/{content.D3HKOR6l.js → content.BdD9LYF7.js} +2 -2
- package/dist/assets/{content.D3HKOR6l.js.map → content.BdD9LYF7.js.map} +1 -1
- package/dist/assets/{cookie-banner.QfFgUh45.js → cookie-banner.DOGYIXn_.js} +2 -2
- package/dist/assets/{cookie-banner.QfFgUh45.js.map → cookie-banner.DOGYIXn_.js.map} +1 -1
- package/dist/assets/{home.oWPM3opR.js → home.tC_IqglE.js} +2 -2
- package/dist/assets/{home.oWPM3opR.js.map → home.tC_IqglE.js.map} +1 -1
- package/dist/assets/index.B8meivew.js +2 -0
- package/dist/assets/index.B8meivew.js.map +1 -0
- package/dist/assets/{index.xx2Pj5-D.js → index.BciCJA8T.js} +2 -2
- package/dist/assets/{index.xx2Pj5-D.js.map → index.BciCJA8T.js.map} +1 -1
- package/dist/assets/{index.CtG2GLTR.js → index.CbNS7TeL.js} +2 -2
- package/dist/assets/{index.CtG2GLTR.js.map → index.CbNS7TeL.js.map} +1 -1
- package/dist/assets/{index.JS7P29Bg.js → index.CpSz3sir.js} +2 -2
- package/dist/assets/{index.JS7P29Bg.js.map → index.CpSz3sir.js.map} +1 -1
- package/dist/assets/{index.B1AChJCC.js → index.DB4rxyRy.js} +2 -2
- package/dist/assets/{index.B1AChJCC.js.map → index.DB4rxyRy.js.map} +1 -1
- package/dist/assets/{index.CaW_4tj2.js → index.F7_idNEV.js} +3 -3
- package/dist/assets/{index.CaW_4tj2.js.map → index.F7_idNEV.js.map} +1 -1
- package/dist/assets/{index.BALtRGZs.js → index.hk2HVnhk.js} +2 -2
- package/dist/assets/{index.BALtRGZs.js.map → index.hk2HVnhk.js.map} +1 -1
- package/dist/assets/{main.Bkm-wiGs.js → main.DGgB3T-c.js} +3 -3
- package/dist/assets/{main.Bkm-wiGs.js.map → main.DGgB3T-c.js.map} +1 -1
- package/dist/assets/{modal.COtKjPC7.js → modal.j_mJTWzA.js} +3 -3
- package/dist/assets/{modal.COtKjPC7.js.map → modal.j_mJTWzA.js.map} +1 -1
- package/dist/assets/{modals.5EIGEyoz.js → modals.BUocX7Hy.js} +2 -2
- package/dist/assets/{modals.5EIGEyoz.js.map → modals.BUocX7Hy.js.map} +1 -1
- package/dist/assets/nodefs.CEaLl-GZ.js +2 -0
- package/dist/assets/{nodefs.DMn7Exh9.js.map → nodefs.CEaLl-GZ.js.map} +1 -1
- package/dist/assets/{opfs-ahp.C3Q22ZKv.js → opfs-ahp.DmXeVbfj.js} +2 -2
- package/dist/assets/{opfs-ahp.C3Q22ZKv.js.map → opfs-ahp.DmXeVbfj.js.map} +1 -1
- package/dist/assets/{registerServiceWorker.D3I25PpA.js → registerServiceWorker.ChqJS9-K.js} +2 -2
- package/dist/assets/{registerServiceWorker.D3I25PpA.js.map → registerServiceWorker.ChqJS9-K.js.map} +1 -1
- package/dist/assets/{root.BESo_hdj.js → root.Dj2_jXHo.js} +2 -2
- package/dist/assets/{root.BESo_hdj.js.map → root.Dj2_jXHo.js.map} +1 -1
- package/dist/assets/{useAcceptedCookies.CnUPR1fm.js → useAcceptedCookies.CxQX8HZZ.js} +2 -2
- package/dist/assets/{useAcceptedCookies.CnUPR1fm.js.map → useAcceptedCookies.CxQX8HZZ.js.map} +1 -1
- package/dist/assets/useConnectConfig.DCVrvxiH.js +2 -0
- package/dist/assets/{useConnectConfig.GXRodYuW.js.map → useConnectConfig.DCVrvxiH.js.map} +1 -1
- package/dist/assets/{useDefaultDocumentModelEditor.ji384Vtt.js → useDefaultDocumentModelEditor.DAR9hEEc.js} +2 -2
- package/dist/assets/{useDefaultDocumentModelEditor.ji384Vtt.js.map → useDefaultDocumentModelEditor.DAR9hEEc.js.map} +1 -1
- package/dist/assets/{useDocumentDriveServer.CmkRSDng.js → useDocumentDriveServer.CoQf1ag9.js} +2 -2
- package/dist/assets/{useDocumentDriveServer.CmkRSDng.js.map → useDocumentDriveServer.CoQf1ag9.js.map} +1 -1
- package/dist/assets/{useFeatureFlags.B2rj0FVs.js → useFeatureFlags.CIY0TrCD.js} +2 -2
- package/dist/assets/{useFeatureFlags.B2rj0FVs.js.map → useFeatureFlags.CIY0TrCD.js.map} +1 -1
- package/dist/assets/{user.jAwUTdxf.js → user.CuCw8Cfq.js} +4 -4
- package/dist/assets/{user.jAwUTdxf.js.map → user.CuCw8Cfq.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/vite-envs.sh +1 -1
- package/package.json +9 -9
- package/dist/assets/index.CqXwlHs5.js +0 -2
- package/dist/assets/index.CqXwlHs5.js.map +0 -1
- package/dist/assets/nodefs.DMn7Exh9.js +0 -2
- package/dist/assets/useConnectConfig.GXRodYuW.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFeatureFlags.B2rj0FVs.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/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 const atom = _atomWithStorage<T>(\n `${namespace}:${key}`,\n initialValue,\n storage ? storage : undefined,\n options,\n );\n atom.debugLabel = `storageAtom:${namespace}:${key}`;\n return atom;\n};\n\nexport const atomWithStorageCallback = <T>(\n key: string,\n initialValue: T,\n callback: (value: T) => void,\n) => {\n const atom = _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 atom.debugLabel = `storageAtomWithCallback:${namespace}:${key}`;\n return atom;\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 '@powerhousedao/common';\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});\ndocumentModelsAtom.debugLabel = 'documentModelsAtomInConnect';\n\n// blocks rendering until document models are loaded.\nexport const useDocumentModels = () => useAtomValue(documentModelsAtom);\n\nconst unrappedDocumentModelsAtom = unwrap(documentModelsAtom);\nunrappedDocumentModelsAtom.debugLabel = 'unwrappedDocumentModelsAtomInConnect';\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 type IDocumentAdminStorage,\n type IDocumentOperationStorage,\n type IDocumentStorage,\n type 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 { atomStore } from '@powerhousedao/common';\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';\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\nexport async 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));\nstorageAtom.debugLabel = 'storageAtomInConnect';\nexport const reactorAtom = atomWithLazy<Promise<IDocumentDriveServer>>(() =>\n createReactor(),\n);\nreactorAtom.debugLabel = 'reactorAtomInConnect';\nexport const unwrappedReactor = unwrap(reactorAtom);\nunwrappedReactor.debugLabel = 'unwrappedReactorInConnect';\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};\nreactorAsyncAtom.debugLabel = 'reactorAsyncAtomInConnect';\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 { 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 { 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);\ndocumentDrivesAtom.debugLabel = 'documentDrivesAtomInConnect';\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 );\nreadWriteDocumentDrivesAtom.debugLabel = 'readWriteDocumentDrivesAtomInConnect';\n// keeps track of document drives that have been initialized\nexport type IDrivesState = 'INITIAL' | 'LOADING' | 'LOADED' | 'ERROR';\nexport const documentDrivesInitialized = atom<IDrivesState>('INITIAL');\ndocumentDrivesInitialized.debugLabel = 'documentDrivesInitializedInConnect';\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(documentDrivesInitialized);\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 { reactorAtom, useUser } from '#store';\nimport { atomStore } from '@powerhousedao/common';\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');\nloginStatusAtom.debugLabel = 'loginStatusAtomInConnect';\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);\nfeatureFlagAtom.debugLabel = 'featureFlagAtomInConnect';\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","atom","_atomWithStorage","atomWithStorageCallback","callback","value","listener","e","atomEffect","effect","refreshAtom","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","documentDrivesAtom","documentToHash","drive","drivesToHash","drives","readWriteDocumentDrivesAtom","_get","newDrives","map","currentDrives","documentDrivesInitialized","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":"2YAKA,MAAMA,EAAYC,EAAc,eAEnBC,GAAkB,CAC3BC,EACAC,EACAC,EACAC,IAGC,CACD,MAAMC,EAAOC,EACT,GAAGR,CAAS,IAAIG,CAAG,GACnBC,EACoB,MAExB,EACA,OAAAG,EAAK,WAAa,eAAeP,CAAS,IAAIG,CAAG,GAC1CI,CACX,EAEaE,GAA0B,CACnCN,EACAC,EACAM,IACC,CACK,MAAAH,EAAOC,EAAoBL,EAAKC,EAAc,CAChD,QAAQD,EAAKC,EAAc,CACvB,MAAMO,EAAQ,aAAa,QAAQ,GAAGX,CAAS,IAAIG,CAAG,EAAE,EACxD,OAAOQ,EAAS,KAAK,MAAMA,CAAK,EAAUP,CAC9C,EACA,QAAQD,EAAKQ,EAAO,CACH,aAAA,QAAQ,GAAGX,CAAS,IAAIG,CAAG,GAAI,KAAK,UAAUQ,CAAK,CAAC,EACjED,EAASC,CAAK,CAClB,EACA,WAAWR,EAAK,CACZ,aAAa,WAAW,GAAGH,CAAS,IAAIG,CAAG,EAAE,CACjD,EACA,UAAUA,EAAKO,EAAU,CACjB,GAAA,OAAO,OAAO,iBAAqB,IACnC,MAAO,IAAM,KAGjB,SAASE,EAASC,EAAiB,CAE3BA,EAAE,cAAgB,cAClBA,EAAE,MAAQ,GAAGb,CAAS,IAAIG,CAAG,IAE7BO,EAAUG,EAAE,UAAY,EAAQ,CACpC,CAEG,cAAA,iBAAiB,UAAWD,CAAQ,EAEpC,IAAM,OAAO,oBAAoB,UAAWA,CAAQ,CAAA,CAC/D,CACH,EACD,OAAAL,EAAK,WAAa,2BAA2BP,CAAS,IAAIG,CAAG,GACtDI,CACX,EC7DO,SAASO,GAAWC,EAAQ,CACzB,MAAAC,EAAcT,EAAK,CAAC,EACpBU,EAAUV,EAAK,KAAO,CAAE,EAAG,IAAM,CAACW,EAAKC,IAAQ,CAC3C,MAAAC,EAAMF,EAAID,CAAO,EAChB,cAAA,OAAOG,EAAK,CAAE,EAAG,GAAM,KAAMF,EAAK,IAAAC,EAAK,EAC9CA,EAAIH,EAAcK,GAAMA,EAAI,CAAC,EACtB,IAAM,CACTD,EAAI,EAAI,GACRE,EAAQF,CAAG,EACXG,EAAkBH,CAAG,CACzB,CAAA,CACH,EACOH,EAAA,QAAWO,GAAUA,EAAM,EAC7B,MAAAC,EAAWlB,EAAMW,GAAQ,CAC3BA,EAAIF,CAAW,EACT,MAAAI,EAAMF,EAAID,CAAO,EACnB,GAAA,CAACG,EAAI,GAAKA,EAAI,KAAQA,EAAI,GAAK,CAACA,EAAI,IACpC,OAAOA,EAAI,EAEfG,EAAkBH,CAAG,EACf,MAAAM,MAAe,IACfC,EAAUC,GAAM,CACZ,MAAAjB,EAAQO,EAAIU,CAAC,EACV,OAAAF,EAAA,IAAIE,EAAGjB,CAAK,EACdA,CACX,EACAgB,EAAO,KAAOP,EAAI,KACZ,MAAAS,EAAS,IAAIC,IAAS,CACpB,GAAA,CACA,QAAEV,EAAI,EACCA,EAAI,IAAI,GAAGU,CAAI,CAAA,QAE1B,CACI,MAAM,KAAKJ,EAAS,KAAK,EAAGR,CAAG,EAC/B,EAAEE,EAAI,CAAA,CAEd,EACOS,EAAA,QAAU,CAACE,KAAWD,IAAS,CAClC,GAAI,CAAAV,EAAI,GAMJ,GAAA,CACA,OAAAA,EAAI,IAAM,GACHA,EAAI,IAAIW,EAAQ,GAAGD,CAAI,CAAA,QAElC,CACIV,EAAI,IAAM,GACU,MAAM,KAAKM,CAAQ,EAAE,KAAKM,CAAY,GAEtDC,EAAQb,CAAG,CACf,CAER,EACA,SAASY,EAAa,CAACJ,EAAGM,CAAC,EAAG,CACnB,OAAAhB,EAAIU,CAAC,IAAMM,CAAA,CAEtB,EAAEd,EAAI,EACN,SAASe,GAAY,CACb,GAAA,CAEA,GADAf,EAAI,IAAM,GACN,CAACA,EAAI,EACL,OACJE,EAAQF,CAAG,EACXA,EAAI,EAAIgB,EAAW,OAAOT,EAAQE,CAAM,QAErCQ,EAAO,CACVjB,EAAI,EAAIiB,EACRJ,EAAQb,CAAG,CAAA,QAEf,CACIA,EAAI,EAAI,OACR,EAAEA,EAAI,CAAA,CACV,CAEG,OAAAA,EAAI,IAAMe,EAAA,EAAef,EAAI,EAAI,QAAQ,QAAA,EAAU,KAAKe,CAAS,CAAA,CAC3E,EAYKC,EAAa7B,EAAMW,GAAQ,KAAKA,EAAIO,CAAQ,CAAC,EACnD,OAAAW,EAAW,OAASrB,EACbqB,EACP,SAASH,EAAQb,EAAK,CACd,GAAA,CACAA,EAAI,IAAM,GACVA,EAAI,IAAIJ,EAAcK,GAAMA,EAAI,CAAC,CAAA,QAErC,CACID,EAAI,IAAM,EAAA,CACd,CAEJ,SAASE,EAAQF,EAAK,CACd,GAAA,OAAOA,EAAI,GAAM,WAEjB,GAAA,CACAA,EAAI,GAAK,GACTA,EAAI,EAAE,CAAA,QAEV,CACIA,EAAI,GAAK,GACTA,EAAI,EAAI,MAAA,CACZ,CAEJ,SAASG,EAAkBH,EAAK,CAC5B,GAAI,MAAOA,EAAK,CACZ,MAAMiB,EAAQjB,EAAI,EAClB,aAAOA,EAAI,EACLiB,CAAA,CACV,CAER,CCxHA,MAAMC,EAAe,IAAI,QAClB,SAASC,EAAQxB,EAAQyB,EAAQC,IAAmB,CAClDH,EAAa,IAAIE,CAAK,GACvBF,EAAa,IAAIE,EAAO,IAAI,GAAK,EAErC,MAAME,EAAsBJ,EAAa,IAAIE,CAAK,EAClD,IAAIG,EAAYD,EAAoB,IAAI3B,CAAM,EAC9C,GAAI,CAAC4B,EAAW,CACZ,MAAMP,EAAatB,GAAWC,CAAM,EACpC,IAAI6B,EAAcJ,EAAM,IAAIJ,EAAY,IAAM,CAAA,CAAG,EACjDO,EAAY,IAAM,CACVC,IACAF,EAAoB,OAAO3B,CAAM,EAC7B2B,EAAoB,OAAS,GAC7BJ,EAAa,OAAOE,CAAK,EAE7BI,EAAc,KAAKA,EAAa,EAEvC,EACDF,EAAoB,IAAI3B,EAAQ4B,CAAS,CACjD,CACI,OAAOA,CACX,CCxBa,MAAAE,GACT,OAAA,YAAA,uBAAyC,wBAChCC,GACT,OAAgD,YAAA,8BAAA,SACvCC,GACT,OAAA,YAAA,4BAA8C,ICSrCC,GAAqB,CAC9BC,EACAC,CACJ,EAGA,SAASC,MACFC,EACkB,CACf,MAAAC,MAAmB,IAEzB,UAAWC,KAASF,EAChBC,EAAa,IAAIC,EAAM,cAAc,GAAIA,CAAK,EAGlD,OAAO,MAAM,KAAKD,EAAa,OAAA,CAAQ,CAC3C,CAEA,SAASE,GAA6BC,EAA6B,CAC/D,OAAOA,EACF,IAAcC,GAAAA,EAAO,cAAc,EACnC,OAAO,CAACC,EAAKC,IAAQD,EAAI,OAAOC,CAAG,EAAG,CAAA,CAAE,CACjD,CAEa,MAAAC,EAAqBrD,EAAK,MAAMW,GAAO,CAChD,MAAM2C,EAAmB,MAAM3C,EAC3B4C,EACJ,EACMC,EACFR,GAA6BM,CAAe,EAMzC,OAJQV,GACX,GAAGH,GACH,GAAGe,CACP,CAEJ,CAAC,EACDH,EAAmB,WAAa,8BAKhC,MAAMI,EAA6BC,EAAOL,CAAkB,EAC5DI,EAA2B,WAAa,uCAG3B,MAAAE,EAAmC,IAC5CC,EAAaH,CAA0B,EAE9BI,GAA0B,SACnCxD,EACF,CAEQ,MAAA+B,EAAYJ,EAAerB,GAAA,CACNA,EAAI0C,CAAkB,EAC9B,KAAKhD,CAAQ,EAAE,MAAWC,GAAA,CAC/B,MAAAA,CAAA,CACT,GACFwD,CAAS,EAGZ,MAAO,IAAM1B,EAAU,CAC3B,EAEA,SAAS2B,GACLC,EACAnB,EACF,CACE,OAAOA,GAAA,YAAAA,EAAgB,KAAKoB,GAAKA,EAAE,cAAc,KAAOD,EAG5D,CAYO,MAAME,GAA4B,IAAoC,CACzE,MAAMC,EAAuBR,EAAiC,EAC9D,OAAQK,GACJD,GAAkCC,EAAcG,CAAoB,CAC5E,EAUaC,GAA4B,IAAM,CAC3C,MAAMvB,EAAiBc,EAAiC,EAClD,CAAE,OAAAU,CAAO,EAAIC,GAAe,EAC5B,CAAE,eAAAC,EAAgB,gBAAAC,CAAgB,EAAIH,EAAO,QAEnD,GAAI,CAACxB,EACM,OAGX,MAAM4B,EAAyB5B,EAAe,OAC1CE,GAASA,EAAM,cAAc,KAAO,2BACxC,EAEA,OAAIwB,IAAmB,IACZ1B,EAGP2B,IAAoB,IACb,CAAC,EAGRA,EACOC,EAAuB,UACrB,CAACD,EAAgB,SAASP,EAAE,cAAc,EAAE,CACrD,EAGAM,EACOE,EAAuB,OAC1BR,GAAAM,EAAe,SAASN,EAAE,cAAc,EAAE,CAC9C,EAGGQ,CACX,EChIMC,EACD,OACD,YAAA,+BAAA,OACEC,EAAmBD,EACnBA,EAAmB,MAAM,GAAG,EAC5B,CAAC,EAEME,GAAgC,KAkClC,CACH,cAAe,CACX,aAhCwCD,EAAiB,IAChDE,IAAA,CACT,IAAKA,EACL,QAAS,CACL,YAAa,SACb,iBAAkB,GAClB,UAAW,CACP,CACI,MAAO,GACP,SAAU,CACN,KAAMA,EACN,KAAM,mBACN,gBAAiB,iBACrB,EACA,OAAQ,CACJ,OAAQ,CAAC,MAAM,EACf,WAAY,CAAC,GAAG,EAChB,aAAc,CAAC,GAAG,EAClB,MAAO,CAAC,QAAQ,CACpB,EACA,MAAO,mBACP,WAAY,IACZ,OAAQ,EAAA,CAEhB,EACA,SAAU,CAAA,CAAC,CAEnB,EACJ,EAKQ,sBACIF,EAAiB,OAAS,EACpB,CACI,SAAU,6BACV,KAAMA,CAAA,EAEV,CAAE,SAAU,cAAe,CAAA,CAE7C,GAGG,SAASG,GACZC,EAIsB,CACf,OAAA,IAAIC,EAAeD,CAAc,CAC5C,CAEgB,SAAAE,GACZpC,EACA/C,EACoB,CACb,OAAA,IAAIoF,GAAerC,CAAc,EACnC,YAAY/C,CAAO,EACnB,UAAU,IAAIqF,EAAe,EAC7B,iBAAiB,IAAIC,GAAiB,EAAG,EAAE,CAAC,EAC5C,YAAY,CAAE,GAAGR,GAA8B,EAAG,EAClD,MAAM,CACf,CCtEA,eAAeS,GAAYC,EAA+B,CACtD,MAAMC,GAAeD,CAAO,EAEtB,MAAAE,EAAS,MAAMF,EAAQ,WAAW,EAClCxD,EAAQ0D,GAAA,YAAAA,EAAQ,GAAG,GACzB,GAAI1D,EACM,MAAAA,EAIV,GAAI,EADW,MAAMwD,EAAQ,UAAU,GAC3B,QAAU5F,EAAc,OAAO,SAAS,MAAM,QACtD,OAAO4F,EACF,SAAS,CACN,GAAIG,GAAW,EACf,KAAM,iBACN,OAAQ,CACJ,KAAM,iBACN,KAAM,IACV,EACA,MAAO,CACH,iBAAkB,GAClB,YAAa,UACb,UAAW,CAAC,EACZ,SAAU,CAAA,CAAC,CACf,CACH,EACA,MAAMC,EAAO,KAAK,CAE/B,CAEA,eAAeH,GAAeI,EAA8B,CACxD,MAAMC,EAAS,MAAM9B,EAAU,IAAI+B,EAAU,EACvCC,EAAO,MAAMF,GAAA,YAAAA,EAAQ,QACrBG,EAAS,MAAMC,GAAiB,EAElCF,GAAA,MAAAA,EAAM,SACCH,EAAA,sBAAsB,MAAMd,GACxBkB,EAAO,eAAelB,EAAUiB,EAAK,OAAO,CACtD,CAET,CAGA,eAAeG,IAA+B,CACtC,IAAA5D,EAGJ,OAAO,QAAQ,KAAK,CAChB,IAAI,QAAc,CAAC6D,EAASC,KACxB9D,EAAcL,EAAerB,GAAA,CACrB,GAAA,CACM,MAAAyF,EAASzF,EAAI0F,EAAgB,GAC/BD,IAAW,YAAcA,IAAW,UAC5BF,EAAA,QAEPI,EAAK,CAEVH,EACI,IAAI,MACA,kCACIG,aAAe,MACTA,EAAI,QACJ,eACV,EAAA,CAER,CAAA,GAELxC,CAAS,EACL,IAAMzB,GAAA,YAAAA,IAChB,EACD,IAAI,QAAc,CAACkE,EAAGJ,IAAW,CAE7B,WAAW,IAAM,CACC9D,GAAA,MAAAA,IACP8D,EAAA,IAAI,MAAM,4CAA4C,CAAC,GAC/D,GAAI,CACV,CAAA,CAAA,CACJ,EAAE,MAAOrE,GAAmB,CACXO,GAAA,MAAAA,IACdqD,EAAO,KAAK5D,CAAK,CAAA,CACpB,CACL,CAEA,eAAsB0E,IAAgB,OAClC,MAAMP,GAAc,EAEd,MAAAnG,EAAUgE,EAAU,IAAI2C,CAAW,EAGnC5D,EAAiB,MAAMiB,EAAU,IAAIT,CAAkB,EACvDsC,IACDe,EAAA,OAAO,cAAP,YAAAA,EAAoB,gBAGrBzB,GAAiCpC,EAAgB/C,CAAO,EAC5D,aAAMuF,GAAYM,CAAM,EACjBA,CACX,CAEO,MAAMc,EAAczG,EAKzB8E,GAAqBpF,EAAc,cAAc,CAAC,EACpD+G,EAAY,WAAa,uBAClB,MAAME,EAAcC,GAA4C,IACnEJ,GAAc,CAClB,EACAG,EAAY,WAAa,uBACZ,MAAAE,EAAmBnD,EAAOiD,CAAW,EAClDE,EAAiB,WAAa,4BAKjB,MAAAC,GAA0B,IACnClD,EAAa6C,CAAW,EAGfM,GAAsB,IAC/BnD,EAAaiD,CAAgB,EAGpBG,GAAkB,IAC3BpD,EAAaqD,CAAgB,EAE3BA,EAAmBjH,EAAuC,MAAS,EACzEiH,EAAiB,QAAqBC,GAAA,CAClCC,GAAiBD,CAAO,CAC5B,EACAD,EAAiB,WAAa,4BAE9B,IAAIG,EACJT,EAAY,QAAqBO,GAAA,CACzBE,GACJF,EAAQ,MAAMG,GAAe,CACzB,MAAM/B,EAAU,MAAM+B,EAEtB,OAAKD,IAC2BA,EAAAvD,GACNhB,GAAA,CACdyC,EAAQ,wBAAwBzC,CAAc,CAAA,CAEtD,GAEGyC,CAAA,CACV,CACL,EAEa,MAAA6B,GAAmB,SAC5B9G,EACF,CAEQ,MAAA+B,EAAYJ,EAAerB,GAAA,CACbA,EAAIgG,CAAW,EACvB,KAAKtG,CAAQ,EAAE,MAAWC,GAAA,CACxB,MAAAA,CAAA,CACT,GACFwD,CAAS,EAGZ,MAAO,IAAM1B,EAAU,CAC3B,EC/KMkF,EAAqBtH,MACnB,GACR,EACAsH,EAAmB,WAAa,8BAEzB,SAASC,GAAeC,EAA2B,CACtD,OAAO,OAAO,KAAKA,EAAM,UAAU,EAC9B,OAEO,OAAA,SAAG5H,CAAG,IAAI4H,EAAM,WAAW5H,CAAqB,EAAE,MAAM,KAAI8G,EAAAc,EAAM,WAAW5H,CAAqB,EAAE,GAAG,EAAE,IAA7C,YAAA8G,EAAgD,IAAI,GAAA,EAEvH,KAAK,GAAG,CACjB,CAEO,SAASe,EAAaC,EAAyC,CAClE,OAAOA,EAAO,IAAIH,EAAc,EAAE,KAAK,GAAG,CAC9C,CAGA,MAAMI,EAA+BhC,GAAkC,IACnE3F,EACIW,GAAQgF,EAAUhF,EAAI2G,CAAkB,EAAE,IAAI3B,CAAM,GAAK,CAAA,EAAM,CAAC,EAChE,CAACiC,EAAMhH,EAAKiH,IAAuC,CAC/CjH,EAAI0G,EAA2BQ,GAAA,CAC3B,GAAI,CAACnC,EACD,WAAW,IAEf,MAAMoC,EAAgBD,EAAI,IAAInC,CAAM,GAAK,CAAC,EAEtC,OAAAoC,EAAc,SAAWF,EAAU,QACnCJ,EAAaM,CAAa,IAAMN,EAAaI,CAAS,EAE/C,IAAI,IAAIC,CAAG,EAAE,IAAInC,EAAQkC,CAAS,EAElCC,CACX,CACH,CAAA,CAET,EACJH,EAA4B,WAAa,uCAG5B,MAAAK,EAA4BhI,EAAmB,SAAS,EACrEgI,EAA0B,WAAa,qCAIhC,SAASC,IAAoB,CAChC,MAAM3C,EAAUyB,GAAoB,EAC9B,CAACmB,EAAgBC,CAAiB,EAAIC,EACxCC,EAAQV,EAA4BrC,CAAO,EAAG,CAACA,CAAO,CAAC,CAC3D,EAEMgD,EAAwBC,EAAY,SAAY,CAClD,GAAI,CAACjD,EACD,OAGJ,MAAM4C,EAA0C,CAAC,EAC7C,GAAA,CACM,MAAAM,EAAW,MAAMlD,EAAQ,UAAU,EACzC,UAAWmD,KAAMD,EACT,GAAA,CACA,MAAMhB,EAAQ,MAAMlC,EAAQ,SAASmD,CAAE,EACvCP,EAAe,KAAKV,CAAK,QACpB1F,EAAO,CACZ4D,EAAO,MAAM5D,CAAK,CAAA,QAGrBA,EAAO,CACZ4D,EAAO,MAAM5D,CAAK,CAAA,QACpB,CACEqG,EAAkBD,CAAc,CAAA,CACpC,EACD,CAAC5C,CAAO,CAAC,EAIN,CAACc,EAAQsC,CAAS,EAAIN,EAAQJ,CAAyB,EAEzD5B,IAAW,WAAad,IACxBoD,EAAU,SAAS,EACGJ,EAAA,EACjB,KAAK,IAAMI,EAAU,QAAQ,CAAC,EAC9B,MAAM,IAAMA,EAAU,OAAO,CAAC,GAGvC,MAAMC,EAAyBJ,EAC1BK,GAA2C,CACxC,GAAI,CAACtD,EACD,OAEJ,MAAMuD,EAASvD,EAAQ,GACnB,aACA,MAAOwD,EAAQC,EAASjH,IAAU,CAC1BA,GACA4D,EAAO,MAAM5D,CAAK,EAEtB,MAAMwG,EAAsB,CAAA,CAEpC,EACMU,EAAS1D,EAAQ,GAAG,eAAgB,IACtCgD,EAAsB,CAC1B,EACMW,EAAmB3D,EAAQ,GAC7B,qBACAsD,EAAmB,mBACvB,EAEMM,EAAS5D,EAAQ,GAAG,qBAAsB,IAC5CgD,EAAsB,CAC1B,EAEA,MAAO,IAAM,CACFO,EAAA,EACAG,EAAA,EACUC,EAAA,EACVC,EAAA,CACX,CACJ,EACA,CAAC5D,EAASgD,CAAqB,CACnC,EAEO,OAAAD,EACH,IACI,CACIH,EACAI,EACAK,EACAvC,CACJ,EACJ,CAAC8B,EAAgB9B,CAAM,CAC3B,CACJ,CCnIA,MAAM+C,EAAkBnJ,EAAkB,SAAS,EACnDmJ,EAAgB,WAAa,2BAEtB,MAAMC,GAAW,IAAM,CAC1B,KAAM,CAAChD,EAAQsC,CAAS,EAAIN,EAAQe,CAAe,EAC7CrD,EAAOuD,GAAQ,EACfzD,EAAS0D,GAAU,EACnB,CAAE,IAAAC,EAAK,eAAAC,CAAe,EAAIC,GAAiB,EAE3CC,EAAanB,EAAY,SAAY,OACjC,MAAAoB,EAAY,MAAMJ,EAAI,EACtBK,EAAM,IAAI,IAAItH,EAAU,EAK9B,GAJIsH,EAAA,aAAa,IAAI,UAAWD,CAAS,EACrCC,EAAA,aAAa,IAAI,UAAWrH,EAAiB,EAC7CqH,EAAA,aAAa,IAAI,QAASpH,EAAe,EAEzC,OAAO,YAAa,CACpB,MAAMqH,EAAW,MAAM,OAAO,YAAY,SAAS,EAC/CD,EAAA,aAAa,IAAI,WAAYC,CAAQ,EACzC,MAAM,OAAO,YAAY,QAAQD,EAAI,UAAU,CAAA,KAC5C,CACH,MAAME,EAAY,IAAI,IAClB,OAAO,SAAS,SAChB,OAAO,SAAS,MACpB,EACAF,EAAI,aAAa,IAAI,YAAaE,EAAU,QAAQ,GACpDpD,EAAA,OAAO,KAAKkD,EAAK,OAAO,IAAxB,MAAAlD,EAA2B,OAAM,CACrC,EACD,CAAC6C,CAAG,CAAC,EAEFQ,EAAQxB,EACV,MAAOyB,GAAoB,CACvB,GAAKpE,EAGD,GAAA,CACA8C,EAAU,UAAU,EACd5C,MAAAA,EAAO,MAAMF,EAAO,KAAK,EAE3BE,IAAAA,GAAAA,YAAAA,EAAM,OAAQkE,EACd,OAAAtB,EAAU,YAAY,EACf5C,EAEX,MAAMmE,EAAU,MAAMrE,EAAO,MAAMoE,CAAO,EAC1C,GAAIC,EACA,OAAAvB,EAAU,YAAY,EAEtB5E,EACK,IAAI6C,CAAW,EACf,KAAgBrB,GAAA,CACLA,EAAA,sBAAsB,MAAMT,GAChC2E,EAAe3E,EAAUoF,EAAQ,OAAO,CAC5C,CAAA,CACH,EACA,SAAa,QAAQ,MAAM3D,CAAG,CAAC,EAE7B2D,EAEPvB,EAAU,gBAAgB,QAEzB5G,EAAO,CACZ4G,EAAU,gBAAgB,EAC1BhD,EAAO,MAAM5D,CAAK,CAAA,CAE1B,EACA,CAAC8D,CAAM,CACX,EAEAsE,EAAU,IAAM,CACRpE,GAAQM,IAAW,cACnBsC,EAAU,YAAY,CAC1B,EACD,CAAC5C,EAAMM,CAAM,CAAC,EAEX,MAAA+D,EAAS5B,EAAY,SAAY,CACnCG,EAAU,SAAS,EACnB,MAAM9C,GAAA,YAAAA,EAAQ,UACd9B,EACK,IAAI6C,CAAW,EACf,KAAgBrB,GAAA,CACbA,EAAQ,iBAAiB,CAAA,CAC5B,EACA,SAAa,QAAQ,MAAMgB,CAAG,CAAC,CAAA,EACrC,CAACV,CAAM,CAAC,EAEJ,OAAAyC,EACH,KACK,CACG,WAAAqB,EACA,KAAA5D,EACA,OAAQA,EAAO,aAAeM,EAC9B,MAAOR,EAASmE,EAAQ,OACxB,OAAAI,CAAA,GAER,CAACvE,EAAQ8D,EAAY5D,EAAMM,EAAQ2D,EAAOI,CAAM,CACpD,CACJ,ECxGO,SAASC,IAKA,CACZ,KAAM,CAAE,KAAAtE,EAAM,OAAAM,CAAO,EAAIgD,GAAS,EAE5BiB,EAA6B,kDAE7BC,EAAwB,6CAExBC,EACF,CAAC,CAACF,GAA8BA,IAA+B,GAC7DG,EACF,CAAC,CAACF,GAAyBA,IAA0B,GAEzD,GAAIC,GAA8BC,EAC9B,MAAM,IAAI,MACN,wEACJ,EAIA,GAAA,CAACD,GAA8B,CAACC,EACzB,MAAA,CACH,UAAW,GACX,cAAe,MACnB,EAIJ,GAAI1E,IAAS,OAIb,IAAIyE,EAA4B,CACtB,MAAAE,EAAoBJ,EAA2B,MAAM,GAAG,EAE1D,OAAAjE,IAAW,cAAgB,CAACN,EACrB,CACH,UAAW,GACX,cAAe,UACnB,EAE6B2E,EAAkB,SAC/C3E,EAAK,OACT,EAGW,CACH,UAAW,GACX,cAAe,UACnB,EAEG,CACH,UAAW,GACX,cAAe,UACnB,CAAA,CAGJ,GAAI0E,EAAuB,CACjB,MAAAE,EAAeJ,EAAsB,MAAM,GAAG,EAEhD,OAAAlE,IAAW,cAAgB,CAACN,EACrB,CACH,UAAW,GACX,cAAe,KACnB,EAE6B4E,EAAa,SAAS5E,EAAK,OAAO,EAGxD,CACH,UAAW,GACX,cAAe,KACnB,EAEG,CACH,UAAW,GACX,cAAe,KACnB,CAAA,CAGG,MAAA,CACH,UAAW,GACX,cAAe,MACnB,EACJ,CCzFO,SAAS6E,IAAqB,CACjC,MAAMC,EAAYR,GAAa,EAE/B,GAAI,CAACQ,EACM,OAGL,KAAA,CAAE,cAAAC,EAAe,UAAAC,CAAA,EAAcF,EAErC,OAAIC,IAAkB,WACX,CACH,2BAA4BC,EAC5B,yBAA0B,EAC9B,EAGAD,IAAkB,MACX,CACH,2BAA4BC,EAC5B,yBAA0BA,CAC9B,EAGG,CACH,2BAA4B,GAC5B,yBAA0B,EAC9B,CACJ,CC7BO,MAAMC,GAA2B,uBAElCC,EAAkB,+CAA8C,OAChEzG,GAAiByG,GAAA,YAAAA,EAAiB,MAAM,KAExCC,EACF,OAA+C,YAAA,6BAAA,4BAC7CzG,GAAkByG,GAAA,YAAAA,EAAkB,MAAM,KAS1CC,EAA6B,CAC/B,QAAS,CACL,eAAgBF,IAAoB,IAAM,IAAMzG,GAChD,gBAAiB0G,IAAqB,IAAM,IAAMzG,EAAA,CAE1D,ECfa2G,EAAkBxL,GAC3BoL,GACAG,CACJ,EACAC,EAAgB,WAAa,2BCNtB,MAAM7G,GAAiB,IAAM,CAChC,KAAM,CAACD,EAAQ+G,CAAS,EAAIhD,EAAQ+C,CAAe,EAE5C,MAAA,CACH,OAAQ,CACJ,GAAGD,EACH,GAAG7G,CACP,EACA,UAAA+G,CACJ,CACJ","x_google_ignoreList":[1,2]}
|
|
1
|
+
{"version":3,"file":"useFeatureFlags.CIY0TrCD.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/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 const atom = _atomWithStorage<T>(\n `${namespace}:${key}`,\n initialValue,\n storage ? storage : undefined,\n options,\n );\n atom.debugLabel = `storageAtom:${namespace}:${key}`;\n return atom;\n};\n\nexport const atomWithStorageCallback = <T>(\n key: string,\n initialValue: T,\n callback: (value: T) => void,\n) => {\n const atom = _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 atom.debugLabel = `storageAtomWithCallback:${namespace}:${key}`;\n return atom;\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 '@powerhousedao/common';\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});\ndocumentModelsAtom.debugLabel = 'documentModelsAtomInConnect';\n\n// blocks rendering until document models are loaded.\nexport const useDocumentModels = () => useAtomValue(documentModelsAtom);\n\nconst unrappedDocumentModelsAtom = unwrap(documentModelsAtom);\nunrappedDocumentModelsAtom.debugLabel = 'unwrappedDocumentModelsAtomInConnect';\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 type IDocumentAdminStorage,\n type IDocumentOperationStorage,\n type IDocumentStorage,\n type 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 { atomStore } from '@powerhousedao/common';\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';\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\nexport async 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));\nstorageAtom.debugLabel = 'storageAtomInConnect';\nexport const reactorAtom = atomWithLazy<Promise<IDocumentDriveServer>>(() =>\n createReactor(),\n);\nreactorAtom.debugLabel = 'reactorAtomInConnect';\nexport const unwrappedReactor = unwrap(reactorAtom);\nunwrappedReactor.debugLabel = 'unwrappedReactorInConnect';\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};\nreactorAsyncAtom.debugLabel = 'reactorAsyncAtomInConnect';\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 { 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 { 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);\ndocumentDrivesAtom.debugLabel = 'documentDrivesAtomInConnect';\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 );\nreadWriteDocumentDrivesAtom.debugLabel = 'readWriteDocumentDrivesAtomInConnect';\n// keeps track of document drives that have been initialized\nexport type IDrivesState = 'INITIAL' | 'LOADING' | 'LOADED' | 'ERROR';\nexport const documentDrivesInitialized = atom<IDrivesState>('INITIAL');\ndocumentDrivesInitialized.debugLabel = 'documentDrivesInitializedInConnect';\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(documentDrivesInitialized);\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 { reactorAtom, useUser } from '#store';\nimport { atomStore } from '@powerhousedao/common';\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');\nloginStatusAtom.debugLabel = 'loginStatusAtomInConnect';\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);\nfeatureFlagAtom.debugLabel = 'featureFlagAtomInConnect';\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","atom","_atomWithStorage","atomWithStorageCallback","callback","value","listener","e","atomEffect","effect","refreshAtom","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","documentDrivesAtom","documentToHash","drive","drivesToHash","drives","readWriteDocumentDrivesAtom","_get","newDrives","map","currentDrives","documentDrivesInitialized","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]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index.
|
|
2
|
-
import{c as ne}from"./connect.config.CLm38tUz.js";import{useCallback as re,useMemo as vt,useEffect as et}from"react";import{O as _,_ as N,h as it,N as B,l as se}from"./index.CP03D3n8.js";const v={},ie=Symbol((v?"production":void 0)!=="production"?"RESET":""),oe=e=>typeof(e==null?void 0:e.then)=="function";function ae(e=()=>{try{return window.localStorage}catch(n){(v?"production":void 0)!=="production"&&typeof window<"u"&&console.warn(n);return}},t){var n;let r,s;const i={getItem:(c,u)=>{var f,d;const g=y=>{if(y=y||"",r!==y){try{s=JSON.parse(y,void 0)}catch{return u}r=y}return s},l=(d=(f=e())==null?void 0:f.getItem(c))!=null?d:null;return oe(l)?l.then(g):g(l)},setItem:(c,u)=>{var f;return(f=e())==null?void 0:f.setItem(c,JSON.stringify(u,void 0))},removeItem:c=>{var u;return(u=e())==null?void 0:u.removeItem(c)}},o=c=>(u,f,d)=>c(u,g=>{let l;try{l=JSON.parse(g||"")}catch{l=d}f(l)});let a;try{a=(n=e())==null?void 0:n.subscribe}catch{}return!a&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(a=(c,u)=>{if(!(e()instanceof window.Storage))return()=>{};const f=d=>{d.storageArea===e()&&d.key===c&&u(d.newValue)};return window.addEventListener("storage",f),()=>{window.removeEventListener("storage",f)}}),a&&(i.subscribe=o(a)),i}const ce=ae();function Gn(e,t,n=ce,r){const s=_(t);return(v?"production":void 0)!=="production"&&(s.debugPrivate=!0),s.onMount=o=>{o(n.getItem(e,t));let a;return n.subscribe&&(a=n.subscribe(e,o,t)),a},_(o=>o(s),(o,a,c)=>{const u=typeof c=="function"?c(o(s)):c;return u===ie?(a(s,t),n.removeItem(e)):u instanceof Promise?u.then(f=>(a(s,f),n.setItem(e,f))):(a(s,u),n.setItem(e,u))})}const X=new WeakMap,ue=(e,t)=>(X.has(t)?X:X.set(t,e())).get(t),fe=e=>e instanceof Promise,dt={state:"loading"};function Un(e){return ue(()=>{const t=new WeakMap,n=_(0);(v?"production":void 0)!=="production"&&(n.debugPrivate=!0);const r=_((s,{setSelf:i})=>{s(n);let o;try{o=s(e)}catch(f){return{state:"hasError",error:f}}if(!fe(o))return{state:"hasData",data:o};const a=o,c=t.get(a);if(c)return c;a.then(f=>{t.set(a,{state:"hasData",data:f}),i()},f=>{t.set(a,{state:"hasError",error:f}),i()});const u=t.get(a);return u||(t.set(a,dt),dt)},(s,i)=>{i(n,o=>o+1)});return(v?"production":void 0)!=="production"&&(r.debugPrivate=!0),_(s=>s(r))},e)}const lt=(e,t,n)=>(t.has(n)?t:t.set(n,e())).get(n),de=new WeakMap,le=(e,t,n)=>{const r=lt(()=>new WeakMap,de,t);return lt(e,r,n)},pe=e=>e instanceof Promise,ge=()=>{};function Bn(e,t=ge){return le(()=>{const n=new WeakMap,r=new WeakMap,s=_(0);(v?"production":void 0)!=="production"&&(s.debugPrivate=!0);const i=_((o,{setSelf:a})=>{o(s);const c=o(i),u=o(e);if(!pe(u))return{v:u};if(u!==(c==null?void 0:c.p)&&u.then(f=>{r.set(u,f),a()},f=>{n.set(u,f),a()}),n.has(u))throw n.get(u);return r.has(u)?{p:u,v:r.get(u)}:c&&"v"in c?{p:u,f:t(c.v),v:c.v}:{p:u,f:t()}},(o,a)=>{a(s,c=>c+1)});return i.init=void 0,(v?"production":void 0)!=="production"&&(i.debugPrivate=!0),_(o=>{const a=o(i);return"f"in a?a.f:a.v},(o,a,...c)=>a(e,...c))},e,t)}function he(e){const t=_(void 0);return delete t.init,Object.defineProperty(t,"init",{get(){return e()}}),t}async function Y(){if(import.meta.hot)return import.meta.hot;try{return(await N(()=>import("../hmr.js"),[],import.meta.url)).hmr}catch{return}}async function Fn(e){const t=await Y();if(!t)throw new Error("HMR not available.");return new Promise(n=>{function r(s){e===s.name&&(n(),t==null||t.off("studio:external-package-added",r))}t.on("studio:external-package-added",r),t.send("studio:add-external-package",{name:e})})}async function Hn(e){const t=await Y();if(!t)throw new Error("HMR not available.");return new Promise(n=>{function r(s){e===s.name&&(n(),t==null||t.off("studio:external-package-removed",r))}t.on("studio:external-package-removed",r),t.send("studio:remove-external-package",{name:e})})}async function _e(e){const t=await Y(),n=r=>{const s=N(()=>import(`${r.url}?t=${r.timestamp}`),[],import.meta.url);e(s.then(i=>i.default))};return t==null||t.on("studio:external-packages-updated",n),()=>{t==null||t.off("studio:external-packages-updated",n)}}const It=Object.prototype.toString;function me(e){switch(It.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return z(e,Error)}}function A(e,t){return It.call(e)===`[object ${t}]`}function Yn(e){return A(e,"ErrorEvent")}function zn(e){return A(e,"DOMError")}function Vn(e){return A(e,"DOMException")}function F(e){return A(e,"String")}function ye(e){return typeof e=="object"&&e!==null&&"__sentry_template_string__"in e&&"__sentry_template_values__"in e}function Jn(e){return e===null||ye(e)||typeof e!="object"&&typeof e!="function"}function ot(e){return A(e,"Object")}function Se(e){return typeof Event<"u"&&z(e,Event)}function Ee(e){return typeof Element<"u"&&z(e,Element)}function be(e){return A(e,"RegExp")}function at(e){return!!(e&&e.then&&typeof e.then=="function")}function xe(e){return ot(e)&&"nativeEvent"in e&&"preventDefault"in e&&"stopPropagation"in e}function we(e){return typeof e=="number"&&e!==e}function z(e,t){try{return e instanceof t}catch{return!1}}function Ot(e){return!!(typeof e=="object"&&e!==null&&(e.__isVue||e._isVue))}function R(e,t=0){return typeof e!="string"||t===0||e.length<=t?e:`${e.slice(0,t)}...`}function Q(e,t){let n=e;const r=n.length;if(r<=150)return n;t>r&&(t=r);let s=Math.max(t-60,0);s<5&&(s=0);let i=Math.min(s+140,r);return i>r-5&&(i=r),i===r&&(s=Math.max(i-140,0)),n=n.slice(s,i),s>0&&(n=`'{snip} ${n}`),i<r&&(n+=" {snip}"),n}function Wn(e,t){if(!Array.isArray(e))return"";const n=[];for(let r=0;r<e.length;r++){const s=e[r];try{Ot(s)?n.push("[VueViewModel]"):n.push(String(s))}catch{n.push("[value cannot be serialized]")}}return n.join(t)}function Ce(e,t,n=!1){return F(e)?be(t)?t.test(e):F(t)?n?e===t:e.includes(t):!1:!1}function qn(e,t=[],n=!1){return t.some(r=>Ce(e,r,n))}function $(e){return e&&e.Math==Math?e:void 0}const m=typeof globalThis=="object"&&$(globalThis)||typeof window=="object"&&$(window)||typeof self=="object"&&$(self)||typeof global=="object"&&$(global)||function(){return this}()||{};function Te(){return m}function Pt(e,t,n){const r=n||m,s=r.__SENTRY__=r.__SENTRY__||{};return s[e]||(s[e]=t())}const O=Te(),ve=80;function Ie(e,t={}){if(!e)return"<unknown>";try{let n=e;const r=5,s=[];let i=0,o=0;const a=" > ",c=a.length;let u;const f=Array.isArray(t)?t:t.keyAttrs,d=!Array.isArray(t)&&t.maxStringLength||ve;for(;n&&i++<r&&(u=Oe(n,f),!(u==="html"||i>1&&o+s.length*c+u.length>=d));)s.push(u),o+=u.length,n=n.parentNode;return s.reverse().join(a)}catch{return"<unknown>"}}function Oe(e,t){const n=e,r=[];let s,i,o,a,c;if(!n||!n.tagName)return"";if(O.HTMLElement&&n instanceof HTMLElement&&n.dataset&&n.dataset.sentryComponent)return n.dataset.sentryComponent;r.push(n.tagName.toLowerCase());const u=t&&t.length?t.filter(d=>n.getAttribute(d)).map(d=>[d,n.getAttribute(d)]):null;if(u&&u.length)u.forEach(d=>{r.push(`[${d[0]}="${d[1]}"]`)});else if(n.id&&r.push(`#${n.id}`),s=n.className,s&&F(s))for(i=s.split(/\s+/),c=0;c<i.length;c++)r.push(`.${i[c]}`);const f=["aria-label","type","name","title","alt"];for(c=0;c<f.length;c++)o=f[c],a=n.getAttribute(o),a&&r.push(`[${o}="${a}"]`);return r.join("")}function Kn(){try{return O.document.location.href}catch{return""}}function Xn(e){return O.document&&O.document.querySelector?O.document.querySelector(e):null}function Qn(e){if(!O.HTMLElement)return null;let t=e;const n=5;for(let r=0;r<n;r++){if(!t)return null;if(t instanceof HTMLElement&&t.dataset.sentryComponent)return t.dataset.sentryComponent;t=t.parentNode}return null}const ct=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,Pe="Sentry Logger ",pt=["debug","info","warn","error","log","assert","trace"],gt={};function At(e){if(!("console"in m))return e();const t=m.console,n={},r=Object.keys(gt);r.forEach(s=>{const i=gt[s];n[s]=t[s],t[s]=i});try{return e()}finally{r.forEach(s=>{t[s]=n[s]})}}function Ae(){let e=!1;const t={enable:()=>{e=!0},disable:()=>{e=!1},isEnabled:()=>e};return ct?pt.forEach(n=>{t[n]=(...r)=>{e&&At(()=>{m.console[n](`${Pe}[${n}]:`,...r)})}}):pt.forEach(n=>{t[n]=()=>{}}),t}const S=Ae();function Zn(e,t,n){if(!(t in e))return;const r=e[t],s=n(r);typeof s=="function"&&De(s,r),e[t]=s}function Dt(e,t,n){try{Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}catch{ct&&S.log(`Failed to add non-enumerable property "${t}" to object`,e)}}function De(e,t){try{const n=t.prototype||{};e.prototype=t.prototype=n,Dt(e,"__sentry_original__",t)}catch{}}function tr(e){return e.__sentry_original__}function er(e){return Object.keys(e).map(t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`).join("&")}function kt(e){if(me(e))return{message:e.message,name:e.name,stack:e.stack,..._t(e)};if(Se(e)){const t={type:e.type,target:ht(e.target),currentTarget:ht(e.currentTarget),..._t(e)};return typeof CustomEvent<"u"&&z(e,CustomEvent)&&(t.detail=e.detail),t}else return e}function ht(e){try{return Ee(e)?Ie(e):Object.prototype.toString.call(e)}catch{return"<unknown>"}}function _t(e){if(typeof e=="object"&&e!==null){const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}else return{}}function nr(e,t=40){const n=Object.keys(kt(e));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=t)return R(n[0],t);for(let r=n.length;r>0;r--){const s=n.slice(0,r).join(", ");if(!(s.length>t))return r===n.length?s:R(s,t)}return""}function T(e){return nt(e,new Map)}function nt(e,t){if(ke(e)){const n=t.get(e);if(n!==void 0)return n;const r={};t.set(e,r);for(const s of Object.keys(e))typeof e[s]<"u"&&(r[s]=nt(e[s],t));return r}if(Array.isArray(e)){const n=t.get(e);if(n!==void 0)return n;const r=[];return t.set(e,r),e.forEach(s=>{r.push(nt(s,t))}),r}return e}function ke(e){if(!ot(e))return!1;try{const t=Object.getPrototypeOf(e).constructor.name;return!t||t==="Object"}catch{return!0}}const Rt=50,mt=/\(error: (.*)\)/,yt=/captureMessage|captureException/;function Re(...e){const t=e.sort((n,r)=>n[0]-r[0]).map(n=>n[1]);return(n,r=0)=>{const s=[],i=n.split(`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index.BciCJA8T.js","./index.CP03D3n8.js","./index.DB4rxyRy.js","./useFeatureFlags.CIY0TrCD.js","./connect.config.fV3xZh42.js","./browser.BkwNmV2Z.js","./index.F7_idNEV.js","./app-skeleton.js","./index-B7k827uL.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as ne}from"./connect.config.fV3xZh42.js";import{useCallback as re,useMemo as vt,useEffect as et}from"react";import{O as _,_ as N,h as it,N as B,l as se}from"./index.CP03D3n8.js";const v={},ie=Symbol((v?"production":void 0)!=="production"?"RESET":""),oe=e=>typeof(e==null?void 0:e.then)=="function";function ae(e=()=>{try{return window.localStorage}catch(n){(v?"production":void 0)!=="production"&&typeof window<"u"&&console.warn(n);return}},t){var n;let r,s;const i={getItem:(c,u)=>{var f,d;const g=y=>{if(y=y||"",r!==y){try{s=JSON.parse(y,void 0)}catch{return u}r=y}return s},l=(d=(f=e())==null?void 0:f.getItem(c))!=null?d:null;return oe(l)?l.then(g):g(l)},setItem:(c,u)=>{var f;return(f=e())==null?void 0:f.setItem(c,JSON.stringify(u,void 0))},removeItem:c=>{var u;return(u=e())==null?void 0:u.removeItem(c)}},o=c=>(u,f,d)=>c(u,g=>{let l;try{l=JSON.parse(g||"")}catch{l=d}f(l)});let a;try{a=(n=e())==null?void 0:n.subscribe}catch{}return!a&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(a=(c,u)=>{if(!(e()instanceof window.Storage))return()=>{};const f=d=>{d.storageArea===e()&&d.key===c&&u(d.newValue)};return window.addEventListener("storage",f),()=>{window.removeEventListener("storage",f)}}),a&&(i.subscribe=o(a)),i}const ce=ae();function Gn(e,t,n=ce,r){const s=_(t);return(v?"production":void 0)!=="production"&&(s.debugPrivate=!0),s.onMount=o=>{o(n.getItem(e,t));let a;return n.subscribe&&(a=n.subscribe(e,o,t)),a},_(o=>o(s),(o,a,c)=>{const u=typeof c=="function"?c(o(s)):c;return u===ie?(a(s,t),n.removeItem(e)):u instanceof Promise?u.then(f=>(a(s,f),n.setItem(e,f))):(a(s,u),n.setItem(e,u))})}const X=new WeakMap,ue=(e,t)=>(X.has(t)?X:X.set(t,e())).get(t),fe=e=>e instanceof Promise,dt={state:"loading"};function Un(e){return ue(()=>{const t=new WeakMap,n=_(0);(v?"production":void 0)!=="production"&&(n.debugPrivate=!0);const r=_((s,{setSelf:i})=>{s(n);let o;try{o=s(e)}catch(f){return{state:"hasError",error:f}}if(!fe(o))return{state:"hasData",data:o};const a=o,c=t.get(a);if(c)return c;a.then(f=>{t.set(a,{state:"hasData",data:f}),i()},f=>{t.set(a,{state:"hasError",error:f}),i()});const u=t.get(a);return u||(t.set(a,dt),dt)},(s,i)=>{i(n,o=>o+1)});return(v?"production":void 0)!=="production"&&(r.debugPrivate=!0),_(s=>s(r))},e)}const lt=(e,t,n)=>(t.has(n)?t:t.set(n,e())).get(n),de=new WeakMap,le=(e,t,n)=>{const r=lt(()=>new WeakMap,de,t);return lt(e,r,n)},pe=e=>e instanceof Promise,ge=()=>{};function Bn(e,t=ge){return le(()=>{const n=new WeakMap,r=new WeakMap,s=_(0);(v?"production":void 0)!=="production"&&(s.debugPrivate=!0);const i=_((o,{setSelf:a})=>{o(s);const c=o(i),u=o(e);if(!pe(u))return{v:u};if(u!==(c==null?void 0:c.p)&&u.then(f=>{r.set(u,f),a()},f=>{n.set(u,f),a()}),n.has(u))throw n.get(u);return r.has(u)?{p:u,v:r.get(u)}:c&&"v"in c?{p:u,f:t(c.v),v:c.v}:{p:u,f:t()}},(o,a)=>{a(s,c=>c+1)});return i.init=void 0,(v?"production":void 0)!=="production"&&(i.debugPrivate=!0),_(o=>{const a=o(i);return"f"in a?a.f:a.v},(o,a,...c)=>a(e,...c))},e,t)}function he(e){const t=_(void 0);return delete t.init,Object.defineProperty(t,"init",{get(){return e()}}),t}async function Y(){if(import.meta.hot)return import.meta.hot;try{return(await N(()=>import("../hmr.js"),[],import.meta.url)).hmr}catch{return}}async function Fn(e){const t=await Y();if(!t)throw new Error("HMR not available.");return new Promise(n=>{function r(s){e===s.name&&(n(),t==null||t.off("studio:external-package-added",r))}t.on("studio:external-package-added",r),t.send("studio:add-external-package",{name:e})})}async function Hn(e){const t=await Y();if(!t)throw new Error("HMR not available.");return new Promise(n=>{function r(s){e===s.name&&(n(),t==null||t.off("studio:external-package-removed",r))}t.on("studio:external-package-removed",r),t.send("studio:remove-external-package",{name:e})})}async function _e(e){const t=await Y(),n=r=>{const s=N(()=>import(`${r.url}?t=${r.timestamp}`),[],import.meta.url);e(s.then(i=>i.default))};return t==null||t.on("studio:external-packages-updated",n),()=>{t==null||t.off("studio:external-packages-updated",n)}}const It=Object.prototype.toString;function me(e){switch(It.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return z(e,Error)}}function A(e,t){return It.call(e)===`[object ${t}]`}function Yn(e){return A(e,"ErrorEvent")}function zn(e){return A(e,"DOMError")}function Vn(e){return A(e,"DOMException")}function F(e){return A(e,"String")}function ye(e){return typeof e=="object"&&e!==null&&"__sentry_template_string__"in e&&"__sentry_template_values__"in e}function Jn(e){return e===null||ye(e)||typeof e!="object"&&typeof e!="function"}function ot(e){return A(e,"Object")}function Se(e){return typeof Event<"u"&&z(e,Event)}function Ee(e){return typeof Element<"u"&&z(e,Element)}function be(e){return A(e,"RegExp")}function at(e){return!!(e&&e.then&&typeof e.then=="function")}function xe(e){return ot(e)&&"nativeEvent"in e&&"preventDefault"in e&&"stopPropagation"in e}function we(e){return typeof e=="number"&&e!==e}function z(e,t){try{return e instanceof t}catch{return!1}}function Ot(e){return!!(typeof e=="object"&&e!==null&&(e.__isVue||e._isVue))}function R(e,t=0){return typeof e!="string"||t===0||e.length<=t?e:`${e.slice(0,t)}...`}function Q(e,t){let n=e;const r=n.length;if(r<=150)return n;t>r&&(t=r);let s=Math.max(t-60,0);s<5&&(s=0);let i=Math.min(s+140,r);return i>r-5&&(i=r),i===r&&(s=Math.max(i-140,0)),n=n.slice(s,i),s>0&&(n=`'{snip} ${n}`),i<r&&(n+=" {snip}"),n}function Wn(e,t){if(!Array.isArray(e))return"";const n=[];for(let r=0;r<e.length;r++){const s=e[r];try{Ot(s)?n.push("[VueViewModel]"):n.push(String(s))}catch{n.push("[value cannot be serialized]")}}return n.join(t)}function Ce(e,t,n=!1){return F(e)?be(t)?t.test(e):F(t)?n?e===t:e.includes(t):!1:!1}function qn(e,t=[],n=!1){return t.some(r=>Ce(e,r,n))}function $(e){return e&&e.Math==Math?e:void 0}const m=typeof globalThis=="object"&&$(globalThis)||typeof window=="object"&&$(window)||typeof self=="object"&&$(self)||typeof global=="object"&&$(global)||function(){return this}()||{};function Te(){return m}function Pt(e,t,n){const r=n||m,s=r.__SENTRY__=r.__SENTRY__||{};return s[e]||(s[e]=t())}const O=Te(),ve=80;function Ie(e,t={}){if(!e)return"<unknown>";try{let n=e;const r=5,s=[];let i=0,o=0;const a=" > ",c=a.length;let u;const f=Array.isArray(t)?t:t.keyAttrs,d=!Array.isArray(t)&&t.maxStringLength||ve;for(;n&&i++<r&&(u=Oe(n,f),!(u==="html"||i>1&&o+s.length*c+u.length>=d));)s.push(u),o+=u.length,n=n.parentNode;return s.reverse().join(a)}catch{return"<unknown>"}}function Oe(e,t){const n=e,r=[];let s,i,o,a,c;if(!n||!n.tagName)return"";if(O.HTMLElement&&n instanceof HTMLElement&&n.dataset&&n.dataset.sentryComponent)return n.dataset.sentryComponent;r.push(n.tagName.toLowerCase());const u=t&&t.length?t.filter(d=>n.getAttribute(d)).map(d=>[d,n.getAttribute(d)]):null;if(u&&u.length)u.forEach(d=>{r.push(`[${d[0]}="${d[1]}"]`)});else if(n.id&&r.push(`#${n.id}`),s=n.className,s&&F(s))for(i=s.split(/\s+/),c=0;c<i.length;c++)r.push(`.${i[c]}`);const f=["aria-label","type","name","title","alt"];for(c=0;c<f.length;c++)o=f[c],a=n.getAttribute(o),a&&r.push(`[${o}="${a}"]`);return r.join("")}function Kn(){try{return O.document.location.href}catch{return""}}function Xn(e){return O.document&&O.document.querySelector?O.document.querySelector(e):null}function Qn(e){if(!O.HTMLElement)return null;let t=e;const n=5;for(let r=0;r<n;r++){if(!t)return null;if(t instanceof HTMLElement&&t.dataset.sentryComponent)return t.dataset.sentryComponent;t=t.parentNode}return null}const ct=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,Pe="Sentry Logger ",pt=["debug","info","warn","error","log","assert","trace"],gt={};function At(e){if(!("console"in m))return e();const t=m.console,n={},r=Object.keys(gt);r.forEach(s=>{const i=gt[s];n[s]=t[s],t[s]=i});try{return e()}finally{r.forEach(s=>{t[s]=n[s]})}}function Ae(){let e=!1;const t={enable:()=>{e=!0},disable:()=>{e=!1},isEnabled:()=>e};return ct?pt.forEach(n=>{t[n]=(...r)=>{e&&At(()=>{m.console[n](`${Pe}[${n}]:`,...r)})}}):pt.forEach(n=>{t[n]=()=>{}}),t}const S=Ae();function Zn(e,t,n){if(!(t in e))return;const r=e[t],s=n(r);typeof s=="function"&&De(s,r),e[t]=s}function Dt(e,t,n){try{Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}catch{ct&&S.log(`Failed to add non-enumerable property "${t}" to object`,e)}}function De(e,t){try{const n=t.prototype||{};e.prototype=t.prototype=n,Dt(e,"__sentry_original__",t)}catch{}}function tr(e){return e.__sentry_original__}function er(e){return Object.keys(e).map(t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`).join("&")}function kt(e){if(me(e))return{message:e.message,name:e.name,stack:e.stack,..._t(e)};if(Se(e)){const t={type:e.type,target:ht(e.target),currentTarget:ht(e.currentTarget),..._t(e)};return typeof CustomEvent<"u"&&z(e,CustomEvent)&&(t.detail=e.detail),t}else return e}function ht(e){try{return Ee(e)?Ie(e):Object.prototype.toString.call(e)}catch{return"<unknown>"}}function _t(e){if(typeof e=="object"&&e!==null){const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}else return{}}function nr(e,t=40){const n=Object.keys(kt(e));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=t)return R(n[0],t);for(let r=n.length;r>0;r--){const s=n.slice(0,r).join(", ");if(!(s.length>t))return r===n.length?s:R(s,t)}return""}function T(e){return nt(e,new Map)}function nt(e,t){if(ke(e)){const n=t.get(e);if(n!==void 0)return n;const r={};t.set(e,r);for(const s of Object.keys(e))typeof e[s]<"u"&&(r[s]=nt(e[s],t));return r}if(Array.isArray(e)){const n=t.get(e);if(n!==void 0)return n;const r=[];return t.set(e,r),e.forEach(s=>{r.push(nt(s,t))}),r}return e}function ke(e){if(!ot(e))return!1;try{const t=Object.getPrototypeOf(e).constructor.name;return!t||t==="Object"}catch{return!0}}const Rt=50,mt=/\(error: (.*)\)/,yt=/captureMessage|captureException/;function Re(...e){const t=e.sort((n,r)=>n[0]-r[0]).map(n=>n[1]);return(n,r=0)=>{const s=[],i=n.split(`
|
|
3
3
|
`);for(let o=r;o<i.length;o++){const a=i[o];if(a.length>1024)continue;const c=mt.test(a)?a.replace(mt,"$1"):a;if(!c.match(/\S*Error: /)){for(const u of t){const f=u(c);if(f){s.push(f);break}}if(s.length>=Rt)break}}return Ne(s)}}function rr(e){return Array.isArray(e)?Re(...e):e}function Ne(e){if(!e.length)return[];const t=Array.from(e);return/sentryWrapped/.test(t[t.length-1].function||"")&&t.pop(),t.reverse(),yt.test(t[t.length-1].function||"")&&(t.pop(),yt.test(t[t.length-1].function||"")&&t.pop()),t.slice(0,Rt).map(n=>({...n,filename:n.filename||t[t.length-1].filename,function:n.function||"?"}))}const Z="<anonymous>";function Me(e){try{return!e||typeof e!="function"?Z:e.name||Z}catch{return Z}}function p(){const e=m,t=e.crypto||e.msCrypto;let n=()=>Math.random()*16;try{if(t&&t.randomUUID)return t.randomUUID().replace(/-/g,"");t&&t.getRandomValues&&(n=()=>{const r=new Uint8Array(1);return t.getRandomValues(r),r[0]})}catch{}return("10000000100040008000"+1e11).replace(/[018]/g,r=>(r^(n()&15)>>r/4).toString(16))}function Nt(e){return e.exception&&e.exception.values?e.exception.values[0]:void 0}function sr(e){const{message:t,event_id:n}=e;if(t)return t;const r=Nt(e);return r?r.type&&r.value?`${r.type}: ${r.value}`:r.type||r.value||n||"<unknown>":n||"<unknown>"}function ir(e,t,n){const r=e.exception=e.exception||{},s=r.values=r.values||[],i=s[0]=s[0]||{};i.value||(i.value=t||""),i.type||(i.type="Error")}function Le(e,t){const n=Nt(e);if(!n)return;const r={type:"generic",handled:!0},s=n.mechanism;if(n.mechanism={...r,...s,...t},t&&"data"in t){const i={...s&&s.data,...t.data};n.mechanism.data=i}}function or(e,t,n=5){if(t.lineno===void 0)return;const r=e.length,s=Math.max(Math.min(r-1,t.lineno-1),0);t.pre_context=e.slice(Math.max(0,s-n),s).map(i=>Q(i,0)),t.context_line=Q(e[Math.min(r-1,s)],t.colno||0),t.post_context=e.slice(Math.min(s+1,r),s+1+n).map(i=>Q(i,0))}function ar(e){if(e&&e.__sentry_captured__)return!0;try{Dt(e,"__sentry_captured__",!0)}catch{}return!1}function je(e){return Array.isArray(e)?e:[e]}function $e(){const e=typeof WeakSet=="function",t=e?new WeakSet:[];function n(s){if(e)return t.has(s)?!0:(t.add(s),!1);for(let i=0;i<t.length;i++)if(t[i]===s)return!0;return t.push(s),!1}function r(s){if(e)t.delete(s);else for(let i=0;i<t.length;i++)if(t[i]===s){t.splice(i,1);break}}return[n,r]}function C(e,t=100,n=1/0){try{return rt("",e,t,n)}catch(r){return{ERROR:`**non-serializable** (${r})`}}}function Ge(e,t=3,n=100*1024){const r=C(e,t);return He(r)>n?Ge(e,t-1,n):r}function rt(e,t,n=1/0,r=1/0,s=$e()){const[i,o]=s;if(t==null||["number","boolean","string"].includes(typeof t)&&!we(t))return t;const a=Ue(e,t);if(!a.startsWith("[object "))return a;if(t.__sentry_skip_normalization__)return t;const c=typeof t.__sentry_override_normalization_depth__=="number"?t.__sentry_override_normalization_depth__:n;if(c===0)return a.replace("object ","");if(i(t))return"[Circular ~]";const u=t;if(u&&typeof u.toJSON=="function")try{const l=u.toJSON();return rt("",l,c-1,r,s)}catch{}const f=Array.isArray(t)?[]:{};let d=0;const g=kt(t);for(const l in g){if(!Object.prototype.hasOwnProperty.call(g,l))continue;if(d>=r){f[l]="[MaxProperties ~]";break}const y=g[l];f[l]=rt(l,y,c-1,r,s),d++}return o(t),f}function Ue(e,t){try{if(e==="domain"&&t&&typeof t=="object"&&t._events)return"[Domain]";if(e==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&t===global)return"[Global]";if(typeof window<"u"&&t===window)return"[Window]";if(typeof document<"u"&&t===document)return"[Document]";if(Ot(t))return"[VueViewModel]";if(xe(t))return"[SyntheticEvent]";if(typeof t=="number"&&t!==t)return"[NaN]";if(typeof t=="function")return`[Function: ${Me(t)}]`;if(typeof t=="symbol")return`[${String(t)}]`;if(typeof t=="bigint")return`[BigInt: ${String(t)}]`;const n=Be(t);return/^HTML(\w*)Element$/.test(n)?`[HTMLElement: ${n}]`:`[object ${n}]`}catch(n){return`**non-serializable** (${n})`}}function Be(e){const t=Object.getPrototypeOf(e);return t?t.constructor.name:"null prototype"}function Fe(e){return~-encodeURI(e).split(/%..|./).length}function He(e){return Fe(JSON.stringify(e))}var x;(function(e){e[e.PENDING=0]="PENDING";const n=1;e[e.RESOLVED=n]="RESOLVED";const r=2;e[e.REJECTED=r]="REJECTED"})(x||(x={}));function cr(e){return new b(t=>{t(e)})}function ur(e){return new b((t,n)=>{n(e)})}class b{constructor(t){b.prototype.__init.call(this),b.prototype.__init2.call(this),b.prototype.__init3.call(this),b.prototype.__init4.call(this),this._state=x.PENDING,this._handlers=[];try{t(this._resolve,this._reject)}catch(n){this._reject(n)}}then(t,n){return new b((r,s)=>{this._handlers.push([!1,i=>{if(!t)r(i);else try{r(t(i))}catch(o){s(o)}},i=>{if(!n)s(i);else try{r(n(i))}catch(o){s(o)}}]),this._executeHandlers()})}catch(t){return this.then(n=>n,t)}finally(t){return new b((n,r)=>{let s,i;return this.then(o=>{i=!1,s=o,t&&t()},o=>{i=!0,s=o,t&&t()}).then(()=>{if(i){r(s);return}n(s)})})}__init(){this._resolve=t=>{this._setResult(x.RESOLVED,t)}}__init2(){this._reject=t=>{this._setResult(x.REJECTED,t)}}__init3(){this._setResult=(t,n)=>{if(this._state===x.PENDING){if(at(n)){n.then(this._resolve,this._reject);return}this._state=t,this._value=n,this._executeHandlers()}}}__init4(){this._executeHandlers=()=>{if(this._state===x.PENDING)return;const t=this._handlers.slice();this._handlers=[],t.forEach(n=>{n[0]||(this._state===x.RESOLVED&&n[1](this._value),this._state===x.REJECTED&&n[2](this._value),n[0]=!0)})}}}const Mt=1e3;function V(){return Date.now()/Mt}function Ye(){const{performance:e}=m;if(!e||!e.now)return V;const t=Date.now()-e.now(),n=e.timeOrigin==null?t:e.timeOrigin;return()=>(n+e.now())/Mt}const ut=Ye(),fr=(()=>{const{performance:e}=m;if(!e||!e.now)return;const t=3600*1e3,n=e.now(),r=Date.now(),s=e.timeOrigin?Math.abs(e.timeOrigin+n-r):t,i=s<t,o=e.timing&&e.timing.navigationStart,c=typeof o=="number"?Math.abs(o+n-r):t,u=c<t;return i||u?s<=c?e.timeOrigin:o:r})(),dr="baggage",Lt="sentry-",ze=/^sentry-/,Ve=8192;function jt(e){if(!F(e)&&!Array.isArray(e))return;let t={};if(Array.isArray(e))t=e.reduce((r,s)=>{const i=St(s);for(const o of Object.keys(i))r[o]=i[o];return r},{});else{if(!e)return;t=St(e)}const n=Object.entries(t).reduce((r,[s,i])=>{if(s.match(ze)){const o=s.slice(Lt.length);r[o]=i}return r},{});if(Object.keys(n).length>0)return n}function lr(e){if(!e)return;const t=Object.entries(e).reduce((n,[r,s])=>(s&&(n[`${Lt}${r}`]=s),n),{});return Je(t)}function St(e){return e.split(",").map(t=>t.split("=").map(n=>decodeURIComponent(n.trim()))).reduce((t,[n,r])=>(t[n]=r,t),{})}function Je(e){if(Object.keys(e).length!==0)return Object.entries(e).reduce((t,[n,r],s)=>{const i=`${encodeURIComponent(n)}=${encodeURIComponent(r)}`,o=s===0?i:`${t},${i}`;return o.length>Ve?(ct&&S.warn(`Not adding key: ${n} with val: ${r} to baggage header due to exceeding baggage size limits.`),t):o},"")}const We=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function $t(e){if(!e)return;const t=e.match(We);if(!t)return;let n;return t[3]==="1"?n=!0:t[3]==="0"&&(n=!1),{traceId:t[1],parentSampled:n,parentSpanId:t[2]}}function pr(e,t){const n=$t(e),r=jt(t),{traceId:s,parentSpanId:i,parentSampled:o}=n||{};return n?{traceparentData:n,dynamicSamplingContext:r||{},propagationContext:{traceId:s||p(),parentSpanId:i||p().substring(16),spanId:p().substring(16),sampled:o,dsc:r||{}}}:{traceparentData:n,dynamicSamplingContext:void 0,propagationContext:{traceId:s||p(),spanId:p().substring(16)}}}function gr(e,t){const n=$t(e),r=jt(t),{traceId:s,parentSpanId:i,parentSampled:o}=n||{};return n?{traceId:s||p(),parentSpanId:i||p().substring(16),spanId:p().substring(16),sampled:o,dsc:r||{}}:{traceId:s||p(),spanId:p().substring(16)}}function qe(e=p(),t=p().substring(16),n){let r="";return n!==void 0&&(r=n?"-1":"-0"),`${e}-${t}${r}`}const P=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__,J="production";function ft(){return Pt("globalEventProcessors",()=>[])}function hr(e){ft().push(e)}function H(e,t,n,r=0){return new b((s,i)=>{const o=e[r];if(t===null||typeof o!="function")s(t);else{const a=o({...t},n);P&&o.id&&a===null&&S.log(`Event processor "${o.id}" dropped event`),at(a)?a.then(c=>H(e,c,n,r+1).then(s)).then(null,i):H(e,a,n,r+1).then(s).then(null,i)}})}function Gt(e){const t=ut(),n={sid:p(),init:!0,timestamp:t,started:t,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>Ke(n)};return e&&L(n,e),n}function L(e,t={}){if(t.user&&(!e.ipAddress&&t.user.ip_address&&(e.ipAddress=t.user.ip_address),!e.did&&!t.did&&(e.did=t.user.id||t.user.email||t.user.username)),e.timestamp=t.timestamp||ut(),t.abnormal_mechanism&&(e.abnormal_mechanism=t.abnormal_mechanism),t.ignoreDuration&&(e.ignoreDuration=t.ignoreDuration),t.sid&&(e.sid=t.sid.length===32?t.sid:p()),t.init!==void 0&&(e.init=t.init),!e.did&&t.did&&(e.did=`${t.did}`),typeof t.started=="number"&&(e.started=t.started),e.ignoreDuration)e.duration=void 0;else if(typeof t.duration=="number")e.duration=t.duration;else{const n=e.timestamp-e.started;e.duration=n>=0?n:0}t.release&&(e.release=t.release),t.environment&&(e.environment=t.environment),!e.ipAddress&&t.ipAddress&&(e.ipAddress=t.ipAddress),!e.userAgent&&t.userAgent&&(e.userAgent=t.userAgent),typeof t.errors=="number"&&(e.errors=t.errors),t.status&&(e.status=t.status)}function Ut(e,t){let n={};e.status==="ok"&&(n={status:"exited"}),L(e,n)}function Ke(e){return T({sid:`${e.sid}`,init:e.init,started:new Date(e.started*1e3).toISOString(),timestamp:new Date(e.timestamp*1e3).toISOString(),status:e.status,errors:e.errors,did:typeof e.did=="number"||typeof e.did=="string"?`${e.did}`:void 0,duration:e.duration,abnormal_mechanism:e.abnormal_mechanism,attrs:{release:e.release,environment:e.environment,ip_address:e.ipAddress,user_agent:e.userAgent}})}const _r=0,Xe=1;function Qe(e){const{spanId:t,traceId:n}=e.spanContext(),{data:r,op:s,parent_span_id:i,status:o,tags:a,origin:c}=M(e);return T({data:r,op:s,parent_span_id:i,span_id:t,status:o,tags:a,trace_id:n,origin:c})}function mr(e){const{traceId:t,spanId:n}=e.spanContext(),r=Bt(e);return qe(t,n,r)}function yr(e){return typeof e=="number"?Et(e):Array.isArray(e)?e[0]+e[1]/1e9:e instanceof Date?Et(e.getTime()):ut()}function Et(e){return e>9999999999?e/1e3:e}function M(e){return Ze(e)?e.getSpanJSON():typeof e.toJSON=="function"?e.toJSON():{}}function Ze(e){return typeof e.getSpanJSON=="function"}function Bt(e){const{traceFlags:t}=e.spanContext();return!!(t&Xe)}function Sr(e,t,n,r,s,i){const{normalizeDepth:o=3,normalizeMaxBreadth:a=1e3}=e,c={...t,event_id:t.event_id||n.event_id||p(),timestamp:t.timestamp||V()},u=n.integrations||e.integrations.map(E=>E.name);tn(c,e),rn(c,u),t.type===void 0&&en(c,e.stackParser);const f=on(r,n.captureContext);n.mechanism&&Le(c,n.mechanism);const d=s&&s.getEventProcessors?s.getEventProcessors():[],g=bn().getScopeData();if(i){const E=i.getScopeData();xt(g,E)}if(f){const E=f.getScopeData();xt(g,E)}const l=[...n.attachments||[],...g.attachments];l.length&&(n.attachments=l),zt(c,g);const y=[...d,...ft(),...g.eventProcessors];return H(y,c,n).then(E=>(E&&nn(E),typeof o=="number"&&o>0?sn(E,o,a):E))}function tn(e,t){const{environment:n,release:r,dist:s,maxValueLength:i=250}=t;"environment"in e||(e.environment="environment"in t?n:J),e.release===void 0&&r!==void 0&&(e.release=r),e.dist===void 0&&s!==void 0&&(e.dist=s),e.message&&(e.message=R(e.message,i));const o=e.exception&&e.exception.values&&e.exception.values[0];o&&o.value&&(o.value=R(o.value,i));const a=e.request;a&&a.url&&(a.url=R(a.url,i))}const bt=new WeakMap;function en(e,t){const n=m._sentryDebugIds;if(!n)return;let r;const s=bt.get(t);s?r=s:(r=new Map,bt.set(t,r));const i=Object.keys(n).reduce((o,a)=>{let c;const u=r.get(a);u?c=u:(c=t(a),r.set(a,c));for(let f=c.length-1;f>=0;f--){const d=c[f];if(d.filename){o[d.filename]=n[a];break}}return o},{});try{e.exception.values.forEach(o=>{o.stacktrace.frames.forEach(a=>{a.filename&&(a.debug_id=i[a.filename])})})}catch{}}function nn(e){const t={};try{e.exception.values.forEach(r=>{r.stacktrace.frames.forEach(s=>{s.debug_id&&(s.abs_path?t[s.abs_path]=s.debug_id:s.filename&&(t[s.filename]=s.debug_id),delete s.debug_id)})})}catch{}if(Object.keys(t).length===0)return;e.debug_meta=e.debug_meta||{},e.debug_meta.images=e.debug_meta.images||[];const n=e.debug_meta.images;Object.keys(t).forEach(r=>{n.push({type:"sourcemap",code_file:r,debug_id:t[r]})})}function rn(e,t){t.length>0&&(e.sdk=e.sdk||{},e.sdk.integrations=[...e.sdk.integrations||[],...t])}function sn(e,t,n){if(!e)return null;const r={...e,...e.breadcrumbs&&{breadcrumbs:e.breadcrumbs.map(s=>({...s,...s.data&&{data:C(s.data,t,n)}}))},...e.user&&{user:C(e.user,t,n)},...e.contexts&&{contexts:C(e.contexts,t,n)},...e.extra&&{extra:C(e.extra,t,n)}};return e.contexts&&e.contexts.trace&&r.contexts&&(r.contexts.trace=e.contexts.trace,e.contexts.trace.data&&(r.contexts.trace.data=C(e.contexts.trace.data,t,n))),e.spans&&(r.spans=e.spans.map(s=>{const i=M(s).data;return i&&(s.data=C(i,t,n)),s})),r}function on(e,t){if(!t)return e;const n=e?e.clone():new w;return n.update(t),n}function an(e){if(e)return cn(e)?{captureContext:e}:fn(e)?{captureContext:e}:e}function cn(e){return e instanceof w||typeof e=="function"}const un=["user","level","extra","contexts","tags","fingerprint","requestSession","propagationContext"];function fn(e){return Object.keys(e).some(t=>un.includes(t))}function Er(e,t){return h().captureException(e,an(t))}function br(e,t){const n=typeof t=="string"?t:void 0,r=typeof t!="string"?{captureContext:t}:void 0;return h().captureMessage(e,n,r)}function xr(e,t){return h().captureEvent(e,t)}function wr(e){h().configureScope(e)}function Cr(e,t){h().addBreadcrumb(e,t)}function Tr(e,t){h().setContext(e,t)}function vr(e){h().setExtras(e)}function Ir(e,t){h().setExtra(e,t)}function Or(e){h().setTags(e)}function Pr(e,t){h().setTag(e,t)}function dn(e){h().setUser(e)}function ln(...e){const t=h();if(e.length===2){const[n,r]=e;return n?t.withScope(()=>(t.getStackTop().scope=n,r(n))):t.withScope(r)}return t.withScope(e[0])}function Ar(e){return Tn(()=>e(q()))}function Dr(e,t){return ln(n=>(n.setSpan(e),t(n)))}function kr(e,t){return h().startTransaction({...e},t)}async function Rr(e){const t=D();return t?t.flush(e):(P&&S.warn("Cannot flush events. No client defined."),Promise.resolve(!1))}async function Nr(e){const t=D();return t?t.close(e):(P&&S.warn("Cannot flush events and disable SDK. No client defined."),Promise.resolve(!1))}function Mr(){return h().lastEventId()}function D(){return h().getClient()}function Lr(){return!!D()}function W(){return h().getScope()}function jr(e){const t=D(),n=q(),r=W(),{release:s,environment:i=J}=t&&t.getOptions()||{},{userAgent:o}=m.navigator||{},a=Gt({release:s,environment:i,user:r.getUser()||n.getUser(),...o&&{userAgent:o},...e}),c=n.getSession();return c&&c.status==="ok"&&L(c,{status:"exited"}),Ft(),n.setSession(a),r.setSession(a),a}function Ft(){const e=q(),t=W(),n=t.getSession()||e.getSession();n&&Ut(n),Ht(),e.setSession(),t.setSession()}function Ht(){const e=q(),t=W(),n=D(),r=t.getSession()||e.getSession();r&&n&&n.captureSession&&n.captureSession(r)}function $r(e=!1){if(e){Ft();return}Ht()}function Yt(e){return e.transaction}function pn(e,t,n){const r=t.getOptions(),{publicKey:s}=t.getDsn()||{},{segment:i}=n&&n.getUser()||{},o=T({environment:r.environment||J,release:r.release,user_segment:i,public_key:s,trace_id:e});return t.emit&&t.emit("createDsc",o),o}function gn(e){const t=D();if(!t)return{};const n=pn(M(e).trace_id||"",t,W()),r=Yt(e);if(!r)return n;const s=r&&r._frozenDynamicSamplingContext;if(s)return s;const{sampleRate:i,source:o}=r.metadata;i!=null&&(n.sample_rate=`${i}`);const a=M(r);return o&&o!=="url"&&(n.transaction=a.description),n.sampled=String(Bt(r)),t.emit&&t.emit("createDsc",n),n}function zt(e,t){const{fingerprint:n,span:r,breadcrumbs:s,sdkProcessingMetadata:i}=t;hn(e,t),r&&yn(e,r),Sn(e,n),_n(e,s),mn(e,i)}function xt(e,t){const{extra:n,tags:r,user:s,contexts:i,level:o,sdkProcessingMetadata:a,breadcrumbs:c,fingerprint:u,eventProcessors:f,attachments:d,propagationContext:g,transactionName:l,span:y}=t;k(e,"extra",n),k(e,"tags",r),k(e,"user",s),k(e,"contexts",i),k(e,"sdkProcessingMetadata",a),o&&(e.level=o),l&&(e.transactionName=l),y&&(e.span=y),c.length&&(e.breadcrumbs=[...e.breadcrumbs,...c]),u.length&&(e.fingerprint=[...e.fingerprint,...u]),f.length&&(e.eventProcessors=[...e.eventProcessors,...f]),d.length&&(e.attachments=[...e.attachments,...d]),e.propagationContext={...e.propagationContext,...g}}function k(e,t,n){if(n&&Object.keys(n).length){e[t]={...e[t]};for(const r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[t][r]=n[r])}}function hn(e,t){const{extra:n,tags:r,user:s,contexts:i,level:o,transactionName:a}=t,c=T(n);c&&Object.keys(c).length&&(e.extra={...c,...e.extra});const u=T(r);u&&Object.keys(u).length&&(e.tags={...u,...e.tags});const f=T(s);f&&Object.keys(f).length&&(e.user={...f,...e.user});const d=T(i);d&&Object.keys(d).length&&(e.contexts={...d,...e.contexts}),o&&(e.level=o),a&&(e.transaction=a)}function _n(e,t){const n=[...e.breadcrumbs||[],...t];e.breadcrumbs=n.length?n:void 0}function mn(e,t){e.sdkProcessingMetadata={...e.sdkProcessingMetadata,...t}}function yn(e,t){e.contexts={trace:Qe(t),...e.contexts};const n=Yt(t);if(n){e.sdkProcessingMetadata={dynamicSamplingContext:gn(t),...e.sdkProcessingMetadata};const r=M(n).description;r&&(e.tags={transaction:r,...e.tags})}}function Sn(e,t){e.fingerprint=e.fingerprint?je(e.fingerprint):[],t&&(e.fingerprint=e.fingerprint.concat(t)),e.fingerprint&&!e.fingerprint.length&&delete e.fingerprint}const En=100;let tt;class w{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext=wt()}static clone(t){return t?t.clone():new w}clone(){const t=new w;return t._breadcrumbs=[...this._breadcrumbs],t._tags={...this._tags},t._extra={...this._extra},t._contexts={...this._contexts},t._user=this._user,t._level=this._level,t._span=this._span,t._session=this._session,t._transactionName=this._transactionName,t._fingerprint=this._fingerprint,t._eventProcessors=[...this._eventProcessors],t._requestSession=this._requestSession,t._attachments=[...this._attachments],t._sdkProcessingMetadata={...this._sdkProcessingMetadata},t._propagationContext={...this._propagationContext},t._client=this._client,t}setClient(t){this._client=t}getClient(){return this._client}addScopeListener(t){this._scopeListeners.push(t)}addEventProcessor(t){return this._eventProcessors.push(t),this}setUser(t){return this._user=t||{email:void 0,id:void 0,ip_address:void 0,segment:void 0,username:void 0},this._session&&L(this._session,{user:t}),this._notifyScopeListeners(),this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(t){return this._requestSession=t,this}setTags(t){return this._tags={...this._tags,...t},this._notifyScopeListeners(),this}setTag(t,n){return this._tags={...this._tags,[t]:n},this._notifyScopeListeners(),this}setExtras(t){return this._extra={...this._extra,...t},this._notifyScopeListeners(),this}setExtra(t,n){return this._extra={...this._extra,[t]:n},this._notifyScopeListeners(),this}setFingerprint(t){return this._fingerprint=t,this._notifyScopeListeners(),this}setLevel(t){return this._level=t,this._notifyScopeListeners(),this}setTransactionName(t){return this._transactionName=t,this._notifyScopeListeners(),this}setContext(t,n){return n===null?delete this._contexts[t]:this._contexts[t]=n,this._notifyScopeListeners(),this}setSpan(t){return this._span=t,this._notifyScopeListeners(),this}getSpan(){return this._span}getTransaction(){const t=this._span;return t&&t.transaction}setSession(t){return t?this._session=t:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(t){if(!t)return this;const n=typeof t=="function"?t(this):t;if(n instanceof w){const r=n.getScopeData();this._tags={...this._tags,...r.tags},this._extra={...this._extra,...r.extra},this._contexts={...this._contexts,...r.contexts},r.user&&Object.keys(r.user).length&&(this._user=r.user),r.level&&(this._level=r.level),r.fingerprint.length&&(this._fingerprint=r.fingerprint),n.getRequestSession()&&(this._requestSession=n.getRequestSession()),r.propagationContext&&(this._propagationContext=r.propagationContext)}else if(ot(n)){const r=t;this._tags={...this._tags,...r.tags},this._extra={...this._extra,...r.extra},this._contexts={...this._contexts,...r.contexts},r.user&&(this._user=r.user),r.level&&(this._level=r.level),r.fingerprint&&(this._fingerprint=r.fingerprint),r.requestSession&&(this._requestSession=r.requestSession),r.propagationContext&&(this._propagationContext=r.propagationContext)}return this}clear(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._requestSession=void 0,this._span=void 0,this._session=void 0,this._notifyScopeListeners(),this._attachments=[],this._propagationContext=wt(),this}addBreadcrumb(t,n){const r=typeof n=="number"?n:En;if(r<=0)return this;const s={timestamp:V(),...t},i=this._breadcrumbs;return i.push(s),this._breadcrumbs=i.length>r?i.slice(-r):i,this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(t){return this._attachments.push(t),this}getAttachments(){return this.getScopeData().attachments}clearAttachments(){return this._attachments=[],this}getScopeData(){const{_breadcrumbs:t,_attachments:n,_contexts:r,_tags:s,_extra:i,_user:o,_level:a,_fingerprint:c,_eventProcessors:u,_propagationContext:f,_sdkProcessingMetadata:d,_transactionName:g,_span:l}=this;return{breadcrumbs:t,attachments:n,contexts:r,tags:s,extra:i,user:o,level:a,fingerprint:c||[],eventProcessors:u,propagationContext:f,sdkProcessingMetadata:d,transactionName:g,span:l}}applyToEvent(t,n={},r=[]){zt(t,this.getScopeData());const s=[...r,...ft(),...this._eventProcessors];return H(s,t,n)}setSDKProcessingMetadata(t){return this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...t},this}setPropagationContext(t){return this._propagationContext=t,this}getPropagationContext(){return this._propagationContext}captureException(t,n){const r=n&&n.event_id?n.event_id:p();if(!this._client)return S.warn("No client configured on scope - will not capture exception!"),r;const s=new Error("Sentry syntheticException");return this._client.captureException(t,{originalException:t,syntheticException:s,...n,event_id:r},this),r}captureMessage(t,n,r){const s=r&&r.event_id?r.event_id:p();if(!this._client)return S.warn("No client configured on scope - will not capture message!"),s;const i=new Error(t);return this._client.captureMessage(t,n,{originalException:t,syntheticException:i,...r,event_id:s},this),s}captureEvent(t,n){const r=n&&n.event_id?n.event_id:p();return this._client?(this._client.captureEvent(t,{...n,event_id:r},this),r):(S.warn("No client configured on scope - will not capture event!"),r)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(t=>{t(this)}),this._notifyingListeners=!1)}}function bn(){return tt||(tt=new w),tt}function wt(){return{traceId:p(),spanId:p().substring(16)}}const xn="7.120.3",Vt=parseFloat(xn),wn=100;class Jt{constructor(t,n,r,s=Vt){this._version=s;let i;n?i=n:(i=new w,i.setClient(t));let o;r?o=r:(o=new w,o.setClient(t)),this._stack=[{scope:i}],t&&this.bindClient(t),this._isolationScope=o}isOlderThan(t){return this._version<t}bindClient(t){const n=this.getStackTop();n.client=t,n.scope.setClient(t),t&&t.setupIntegrations&&t.setupIntegrations()}pushScope(){const t=this.getScope().clone();return this.getStack().push({client:this.getClient(),scope:t}),t}popScope(){return this.getStack().length<=1?!1:!!this.getStack().pop()}withScope(t){const n=this.pushScope();let r;try{r=t(n)}catch(s){throw this.popScope(),s}return at(r)?r.then(s=>(this.popScope(),s),s=>{throw this.popScope(),s}):(this.popScope(),r)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}captureException(t,n){const r=this._lastEventId=n&&n.event_id?n.event_id:p(),s=new Error("Sentry syntheticException");return this.getScope().captureException(t,{originalException:t,syntheticException:s,...n,event_id:r}),r}captureMessage(t,n,r){const s=this._lastEventId=r&&r.event_id?r.event_id:p(),i=new Error(t);return this.getScope().captureMessage(t,n,{originalException:t,syntheticException:i,...r,event_id:s}),s}captureEvent(t,n){const r=n&&n.event_id?n.event_id:p();return t.type||(this._lastEventId=r),this.getScope().captureEvent(t,{...n,event_id:r}),r}lastEventId(){return this._lastEventId}addBreadcrumb(t,n){const{scope:r,client:s}=this.getStackTop();if(!s)return;const{beforeBreadcrumb:i=null,maxBreadcrumbs:o=wn}=s.getOptions&&s.getOptions()||{};if(o<=0)return;const c={timestamp:V(),...t},u=i?At(()=>i(c,n)):c;u!==null&&(s.emit&&s.emit("beforeAddBreadcrumb",u,n),r.addBreadcrumb(u,o))}setUser(t){this.getScope().setUser(t),this.getIsolationScope().setUser(t)}setTags(t){this.getScope().setTags(t),this.getIsolationScope().setTags(t)}setExtras(t){this.getScope().setExtras(t),this.getIsolationScope().setExtras(t)}setTag(t,n){this.getScope().setTag(t,n),this.getIsolationScope().setTag(t,n)}setExtra(t,n){this.getScope().setExtra(t,n),this.getIsolationScope().setExtra(t,n)}setContext(t,n){this.getScope().setContext(t,n),this.getIsolationScope().setContext(t,n)}configureScope(t){const{scope:n,client:r}=this.getStackTop();r&&t(n)}run(t){const n=Ct(this);try{t(this)}finally{Ct(n)}}getIntegration(t){const n=this.getClient();if(!n)return null;try{return n.getIntegration(t)}catch{return P&&S.warn(`Cannot retrieve integration ${t.id} from the current Hub`),null}}startTransaction(t,n){const r=this._callExtensionMethod("startTransaction",t,n);return P&&!r&&(this.getClient()?S.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':
|
|
4
4
|
Sentry.addTracingExtensions();
|
|
5
5
|
Sentry.init({...});
|
|
6
|
-
`):S.warn("Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'")),r}traceHeaders(){return this._callExtensionMethod("traceHeaders")}captureSession(t=!1){if(t)return this.endSession();this._sendSessionUpdate()}endSession(){const n=this.getStackTop().scope,r=n.getSession();r&&Ut(r),this._sendSessionUpdate(),n.setSession()}startSession(t){const{scope:n,client:r}=this.getStackTop(),{release:s,environment:i=J}=r&&r.getOptions()||{},{userAgent:o}=m.navigator||{},a=Gt({release:s,environment:i,user:n.getUser(),...o&&{userAgent:o},...t}),c=n.getSession&&n.getSession();return c&&c.status==="ok"&&L(c,{status:"exited"}),this.endSession(),n.setSession(a),a}shouldSendDefaultPii(){const t=this.getClient(),n=t&&t.getOptions();return!!(n&&n.sendDefaultPii)}_sendSessionUpdate(){const{scope:t,client:n}=this.getStackTop(),r=t.getSession();r&&n&&n.captureSession&&n.captureSession(r)}_callExtensionMethod(t,...n){const s=j().__SENTRY__;if(s&&s.extensions&&typeof s.extensions[t]=="function")return s.extensions[t].apply(this,n);P&&S.warn(`Extension method ${t} couldn't be found, doing nothing.`)}}function j(){return m.__SENTRY__=m.__SENTRY__||{extensions:{},hub:void 0},m}function Ct(e){const t=j(),n=st(t);return Wt(t,e),n}function h(){const e=j();if(e.__SENTRY__&&e.__SENTRY__.acs){const t=e.__SENTRY__.acs.getCurrentHub();if(t)return t}return Cn(e)}function q(){return h().getIsolationScope()}function Cn(e=j()){return(!vn(e)||st(e).isOlderThan(Vt))&&Wt(e,new Jt),st(e)}function Tn(e,t={}){const n=j();return n.__SENTRY__&&n.__SENTRY__.acs?n.__SENTRY__.acs.runWithAsyncContext(e,t):e()}function vn(e){return!!(e&&e.__SENTRY__&&e.__SENTRY__.hub)}function st(e){return Pt("hub",()=>new Jt,e)}function Wt(e,t){if(!e)return!1;const n=e.__SENTRY__=e.__SENTRY__||{};return n.hub=t,!0}const In=ne.routerBasename+"external-packages.js",On=window.__VITE_ENVS.PROD;async function Pn(){try{return On?(await import(In)).default??[]:[]}catch(e){return console.error(e),[]}}const qt=_(async()=>typeof await Y()<"u");qt.debugLabel="hmrAvailableAtom";const Gr=()=>it(qt),K=he(Pn);K.debugLabel="externalPackagesAtomInConnect";let Tt;K.onMount=e=>{Tt||(Tt=_e(t=>{e(t)}))};const An=()=>it(K),Dn={id:"powerhouse/common",name:"Generic Drive Explorer",driveEditor:"GenericDriveExplorer"},Kt=_(async e=>{const t=await e(K);return[Dn,...t.map(n=>n.manifest.apps).filter(n=>n!==void 0).flat()]});Kt.debugLabel="appsAtomInConnect";const kn=()=>it(Kt),Ur=()=>{const e=kn();return re(t=>{if(!t)return;const n=e.find(r=>r.driveEditor===t);return n==null?void 0:n.name},[e])},Br=e=>{const t=An();return vt(()=>{if(!e)return;const n=t.find(r=>{var s;return(s=r.manifest.apps)==null?void 0:s.find(i=>i.driveEditor===e)});return n==null?void 0:n.editors.find(r=>r.config.id===e)},[t,e])};let G;async function Rn(){const{ConnectCrypto:e}=await N(async()=>{const{ConnectCrypto:r}=await import("./index.
|
|
7
|
-
//# sourceMappingURL=user.
|
|
6
|
+
`):S.warn("Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'")),r}traceHeaders(){return this._callExtensionMethod("traceHeaders")}captureSession(t=!1){if(t)return this.endSession();this._sendSessionUpdate()}endSession(){const n=this.getStackTop().scope,r=n.getSession();r&&Ut(r),this._sendSessionUpdate(),n.setSession()}startSession(t){const{scope:n,client:r}=this.getStackTop(),{release:s,environment:i=J}=r&&r.getOptions()||{},{userAgent:o}=m.navigator||{},a=Gt({release:s,environment:i,user:n.getUser(),...o&&{userAgent:o},...t}),c=n.getSession&&n.getSession();return c&&c.status==="ok"&&L(c,{status:"exited"}),this.endSession(),n.setSession(a),a}shouldSendDefaultPii(){const t=this.getClient(),n=t&&t.getOptions();return!!(n&&n.sendDefaultPii)}_sendSessionUpdate(){const{scope:t,client:n}=this.getStackTop(),r=t.getSession();r&&n&&n.captureSession&&n.captureSession(r)}_callExtensionMethod(t,...n){const s=j().__SENTRY__;if(s&&s.extensions&&typeof s.extensions[t]=="function")return s.extensions[t].apply(this,n);P&&S.warn(`Extension method ${t} couldn't be found, doing nothing.`)}}function j(){return m.__SENTRY__=m.__SENTRY__||{extensions:{},hub:void 0},m}function Ct(e){const t=j(),n=st(t);return Wt(t,e),n}function h(){const e=j();if(e.__SENTRY__&&e.__SENTRY__.acs){const t=e.__SENTRY__.acs.getCurrentHub();if(t)return t}return Cn(e)}function q(){return h().getIsolationScope()}function Cn(e=j()){return(!vn(e)||st(e).isOlderThan(Vt))&&Wt(e,new Jt),st(e)}function Tn(e,t={}){const n=j();return n.__SENTRY__&&n.__SENTRY__.acs?n.__SENTRY__.acs.runWithAsyncContext(e,t):e()}function vn(e){return!!(e&&e.__SENTRY__&&e.__SENTRY__.hub)}function st(e){return Pt("hub",()=>new Jt,e)}function Wt(e,t){if(!e)return!1;const n=e.__SENTRY__=e.__SENTRY__||{};return n.hub=t,!0}const In=ne.routerBasename+"external-packages.js",On=window.__VITE_ENVS.PROD;async function Pn(){try{return On?(await import(In)).default??[]:[]}catch(e){return console.error(e),[]}}const qt=_(async()=>typeof await Y()<"u");qt.debugLabel="hmrAvailableAtom";const Gr=()=>it(qt),K=he(Pn);K.debugLabel="externalPackagesAtomInConnect";let Tt;K.onMount=e=>{Tt||(Tt=_e(t=>{e(t)}))};const An=()=>it(K),Dn={id:"powerhouse/common",name:"Generic Drive Explorer",driveEditor:"GenericDriveExplorer"},Kt=_(async e=>{const t=await e(K);return[Dn,...t.map(n=>n.manifest.apps).filter(n=>n!==void 0).flat()]});Kt.debugLabel="appsAtomInConnect";const kn=()=>it(Kt),Ur=()=>{const e=kn();return re(t=>{if(!t)return;const n=e.find(r=>r.driveEditor===t);return n==null?void 0:n.name},[e])},Br=e=>{const t=An();return vt(()=>{if(!e)return;const n=t.find(r=>{var s;return(s=r.manifest.apps)==null?void 0:s.find(i=>i.driveEditor===e)});return n==null?void 0:n.editors.find(r=>r.config.id===e)},[t,e])};let G;async function Rn(){const{ConnectCrypto:e}=await N(async()=>{const{ConnectCrypto:r}=await import("./index.BciCJA8T.js");return{ConnectCrypto:r}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),{BrowserKeyStorage:t}=await N(async()=>{const{BrowserKeyStorage:r}=await import("./index.BciCJA8T.js");return{BrowserKeyStorage:r}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),n=new e(new t);return await n.did(),n}function I(){return window.connectCrypto?Promise.resolve(window.connectCrypto):G||(G=Rn(),G)}function Nn(){return vt(()=>({async regenerateDid(){return(await I()).regenerateDid()},async did(){return(await I()).did()},sign:async e=>await(await I()).sign(e),async getIssuer(){return(await I()).getIssuer()},async getBearerToken(e,t,n=!1){return(await I()).getBearerToken(e,t,n)}}),[])}const Xt=_(void 0);Xt.debugLabel="didAtomInConnect";function Fr(){const[e,t]=B(Xt);return et(()=>{e||I().then(n=>n.did()).then(n=>t(n)).catch(se.error)}),e}const Qt=_("idle");Qt.debugLabel="renownStatusAtomInConnect";const Zt=_(window.renown?Promise.resolve(window.renown):void 0);Zt.debugLabel="renownAtomInConnect";function Mn(){const[e,t]=B(Zt),[n,r]=B(Qt),{did:s}=Nn();async function i(o){r("loading");try{const a=await o();if(!a){r("error");return}const{initRenownBrowser:c}=await N(async()=>{const{initRenownBrowser:d}=await import("./index.DB4rxyRy.js").then(g=>g.b);return{initRenownBrowser:d}},__vite__mapDeps([2,1,3,4,5,6,7,8]),import.meta.url),u=c(a),f={user:function(){return Promise.resolve(u.user)},login:function(d){return u.login(d)},logout(){return Promise.resolve(u.logout())},on:{user(d){return u.on("user",d)}}};return r("finished"),f}catch(a){console.error("Error initializing renown:",a instanceof Error?a.message:"Unknown error"),r("error");return}}return!e&&n==="idle"&&t(i(s)),e}let U=!1;const te=_(void 0);te.debugLabel="userAtomInConnect";const Hr=()=>{const[e,t]=B(te),n=Mn();return et(()=>{var s;let r=null;if(e){const{credential:i,...o}=e;r={id:o.did,username:(s=o.ens)==null?void 0:s.name,...o}}dn(r)},[e]),et(()=>{if(U)return;U=!0,n==null||n.user().then(s=>{t(s||null)}).catch(()=>{t(null)});const r=n==null?void 0:n.on.user(s=>{t(s||null)});return()=>{r==null||r(),U=!1}},[n,U]),e};export{mr as $,cr as A,ur as B,pt as C,ct as D,T as E,C as F,m as G,V as H,$t as I,h as J,P as K,at as L,D as M,W as N,pr as O,Tn as P,yr as Q,q as R,b as S,gn as T,Bt as U,ln as V,M as W,ut as X,Xe as Y,_r as Z,Yt as _,he as a,Or as a$,Qe as a0,we as a1,j as a2,er as a3,je as a4,hr as a5,ar as a6,Jn as a7,L as a8,Sr as a9,Re as aA,Cr as aB,Wn as aC,xr as aD,Kn as aE,rr as aF,jr as aG,$r as aH,Tr as aI,br as aJ,or as aK,J as aL,Dr as aM,bn as aN,Jt as aO,w as aP,Nr as aQ,wr as aR,Ft as aS,Rr as aT,st as aU,Lr as aV,Mr as aW,Ct as aX,Ir as aY,vr as aZ,Pr as a_,pn as aa,ye as ab,ot as ac,xn as ad,sr as ae,qn as af,tr as ag,fr as ah,Ie as ai,Qn as aj,qe as ak,lr as al,dr as am,gr as an,Xn as ao,De as ap,ir as aq,Le as ar,Er as as,Yn as at,zn as au,Vn as av,me as aw,Se as ax,Ge as ay,nr as az,Mn as b,dn as b0,kr as b1,Ar as b2,An as b3,Gr as b4,Gn as b5,Zt as b6,I as b7,Qt as b8,Ur as c,Hr as d,K as e,Fr as f,Nn as g,Br as h,kn as i,Y as j,Fn as k,Un as l,z as m,At as n,S as o,Me as p,Zn as q,Hn as r,_e as s,R as t,Bn as u,gt as v,Dt as w,p as x,Te as y,F as z};
|
|
7
|
+
//# sourceMappingURL=user.CuCw8Cfq.js.map
|