@powerhousedao/reactor-browser 6.2.2-dev.42 → 6.2.2-dev.43
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/{attachment-service-iRAJvtrC.d.ts → attachment-service-CUGe-Rda.d.ts} +3 -3
- package/dist/{attachment-service-iRAJvtrC.d.ts.map → attachment-service-CUGe-Rda.d.ts.map} +1 -1
- package/dist/{document-by-id-BPj6Gd7n.js → document-by-id-DWEQI7wn.js} +2 -2
- package/dist/document-by-id-DWEQI7wn.js.map +1 -0
- package/dist/{document-operations-DvhxGXqI.js → document-operations-D81QJKqH.js} +147 -46
- package/dist/document-operations-D81QJKqH.js.map +1 -0
- package/dist/{global-DscB9Uo3.d.ts → global-CjrUQWHf.d.ts} +11 -2
- package/dist/global-CjrUQWHf.d.ts.map +1 -0
- package/dist/{index-CxZDuIq9.d.ts → index-BM9TVt6u.d.ts} +2 -2
- package/dist/{index-CxZDuIq9.d.ts.map → index-BM9TVt6u.d.ts.map} +1 -1
- package/dist/index.d.ts +75 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +157 -5
- package/dist/index.js.map +1 -1
- package/dist/{relational-DJlbclWB.js → relational-C_0GdGVN.js} +2 -2
- package/dist/{relational-DJlbclWB.js.map → relational-C_0GdGVN.js.map} +1 -1
- package/dist/src/analytics/index.js +1 -1
- package/dist/src/graphql-client/entry.d.ts +2 -2
- package/dist/src/graphql-client/entry.js +2 -2
- package/dist/src/relational/index.js +1 -1
- package/dist/src/renown/index.d.ts +1 -1
- package/dist/src/rpc/index.d.ts +3 -1
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +19 -5
- package/dist/src/rpc/index.js.map +1 -1
- package/package.json +9 -9
- package/dist/document-by-id-BPj6Gd7n.js.map +0 -1
- package/dist/document-operations-DvhxGXqI.js.map +0 -1
- package/dist/global-DscB9Uo3.d.ts.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createRelationalDb } from "@powerhousedao/reactor";
|
|
2
1
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
import { createRelationalDb } from "@powerhousedao/reactor";
|
|
3
3
|
import { Kysely } from "kysely";
|
|
4
4
|
import { PGliteDialect } from "kysely-pglite-dialect";
|
|
5
5
|
import deepEqual from "lodash.isequal";
|
|
@@ -132,4 +132,4 @@ function createProcessorQuery(ProcessorClass) {
|
|
|
132
132
|
//#endregion
|
|
133
133
|
export { setPGliteDB as i, useRelationalQuery as n, useRelationalDb as r, createProcessorQuery as t };
|
|
134
134
|
|
|
135
|
-
//# sourceMappingURL=relational-
|
|
135
|
+
//# sourceMappingURL=relational-C_0GdGVN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relational-DJlbclWB.js","names":[],"sources":["../src/pglite/usePGlite.ts","../src/relational/hooks/useRelationalDb.ts","../src/relational/hooks/useRelationalQuery.ts","../src/relational/utils/createProcessorQuery.ts"],"sourcesContent":["import type { PGliteWithLive } from \"@electric-sql/pglite/live\";\nimport { useEffect, useState } from \"react\";\n\nexport const PGLITE_UPDATE_EVENT = \"ph:pglite-update\";\n\nexport interface PGliteState {\n db: PGliteWithLive | null;\n isLoading: boolean;\n error: Error | null;\n}\n\nconst defaultPGliteState: PGliteState = {\n db: null,\n isLoading: true,\n error: null,\n};\n\nexport const usePGliteDB = () => {\n const [state, setState] = useState<PGliteState>(\n () => window.powerhouse?.pglite ?? defaultPGliteState,\n );\n\n useEffect(() => {\n const handlePgliteUpdate = () =>\n setState(window.powerhouse?.pglite ?? defaultPGliteState);\n\n window.addEventListener(PGLITE_UPDATE_EVENT, handlePgliteUpdate);\n\n return () =>\n window.removeEventListener(PGLITE_UPDATE_EVENT, handlePgliteUpdate);\n }, []);\n\n return state;\n};\n\nexport function setPGliteDB(pglite: Partial<PGliteState>): void {\n const currentPowerhouse = window.powerhouse ?? {};\n const currentPGliteState = window.powerhouse?.pglite ?? defaultPGliteState;\n\n window.powerhouse = {\n ...currentPowerhouse,\n pglite: {\n ...currentPGliteState,\n ...pglite,\n },\n };\n window.dispatchEvent(new CustomEvent(PGLITE_UPDATE_EVENT));\n}\n\nexport const useSetPGliteDB = () => setPGliteDB;\n\nexport const usePGlite = () => {\n const pglite = usePGliteDB();\n const setPGlite = useSetPGliteDB();\n\n return [pglite, setPGlite];\n};\n","import type { PGlite } from \"@electric-sql/pglite\";\nimport type { LiveNamespace, PGliteWithLive } from \"@electric-sql/pglite/live\";\nimport { createRelationalDb } from \"@powerhousedao/reactor\";\nimport type { IRelationalDb as IRelationalDbCore } from \"@powerhousedao/shared/processors\";\nimport { Kysely } from \"kysely\";\nimport { PGliteDialect } from \"kysely-pglite-dialect\";\nimport { useMemo } from \"react\";\nimport { usePGliteDB } from \"../../pglite/usePGlite.js\";\n\n// Type for Relational DB instance enhanced with live capabilities\nexport type RelationalDbWithLive<Schema> = IRelationalDbCore<Schema> & {\n live: LiveNamespace;\n};\n\ninterface IRelationalDbState<Schema> {\n db: RelationalDbWithLive<Schema> | null;\n isLoading: boolean;\n error: Error | null;\n}\n\n// Custom initializer that creates enhanced Kysely instance with live capabilities\nfunction createRelationalDbWithLive<Schema>(\n pgliteInstance: PGliteWithLive,\n): RelationalDbWithLive<Schema> {\n const baseDb = new Kysely<Schema>({\n dialect: new PGliteDialect(pgliteInstance as unknown as PGlite),\n });\n const relationalDb = createRelationalDb(baseDb);\n\n // Inject the live namespace with proper typing\n const relationalDBWithLive =\n relationalDb as unknown as RelationalDbWithLive<Schema>;\n relationalDBWithLive.live = pgliteInstance.live;\n\n return relationalDBWithLive;\n}\n\nexport const useRelationalDb = <Schema>(): IRelationalDbState<Schema> => {\n const pglite = usePGliteDB();\n\n const relationalDb = useMemo<IRelationalDbState<Schema>>(() => {\n if (!pglite.db || pglite.isLoading || pglite.error) {\n return {\n db: null,\n isLoading: pglite.isLoading,\n error: pglite.error,\n };\n }\n\n const db = createRelationalDbWithLive<Schema>(pglite.db);\n\n return {\n db,\n isLoading: false,\n error: null,\n };\n }, [pglite]);\n\n return relationalDb;\n};\n","import type { LiveQueryResults } from \"@electric-sql/pglite/live\";\nimport type {\n IRelationalQueryBuilder,\n RelationalDbProcessorClass,\n} from \"@powerhousedao/shared/processors\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useRelationalDb } from \"./useRelationalDb.js\";\n\nexport type QueryCallbackReturnType = {\n sql: string;\n parameters?: readonly unknown[];\n};\n\nexport type useRelationalQueryOptions = {\n // Whether to hash the namespace to avoid namespace size limit. True by default\n hashNamespace?: boolean;\n};\n\nconst MAX_RETRIES = 5;\nconst RETRY_DELAY = 200;\n\nconst isRelationNotExistError = (error: unknown): boolean => {\n const errorMessage =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : String(error);\n\n return (\n errorMessage.toLowerCase().includes(\"relation\") &&\n errorMessage.toLowerCase().includes(\"does not exist\")\n );\n};\n\ntype LiveQueryType = {\n unsubscribe: () => void;\n};\n\nexport function useRelationalQuery<Schema, T = unknown, TParams = undefined>(\n ProcessorClass: RelationalDbProcessorClass<Schema>,\n driveId: string,\n queryCallback: (\n db: IRelationalQueryBuilder<Schema>,\n parameters?: TParams,\n ) => QueryCallbackReturnType,\n parameters?: TParams,\n _options?: useRelationalQueryOptions,\n) {\n const [result, setResult] = useState<LiveQueryResults<T> | null>(null);\n const [queryLoading, setQueryLoading] = useState(true);\n const [error, setError] = useState<Error | undefined>(undefined);\n const retryCount = useRef(0);\n const retryTimeoutRef = useRef<NodeJS.Timeout>(null);\n\n const relationalDb = useRelationalDb<Schema>();\n\n const executeLiveQuery = async (\n sql: string,\n queryParameters: readonly unknown[] | undefined,\n retryAttempt = 0,\n ): Promise<LiveQueryType | null> => {\n if (!relationalDb.db) {\n return null;\n }\n\n try {\n const live = await relationalDb.db.live.query<T>(\n sql,\n queryParameters ? [...queryParameters] : [],\n (result) => {\n setResult(result);\n setQueryLoading(false);\n retryCount.current = 0; // Reset retry count on success\n },\n );\n\n return live as LiveQueryType;\n } catch (err: unknown) {\n if (isRelationNotExistError(err) && retryAttempt < MAX_RETRIES) {\n return new Promise((resolve) => {\n retryTimeoutRef.current = setTimeout(() => {\n resolve(executeLiveQuery(sql, queryParameters, retryAttempt + 1));\n }, RETRY_DELAY);\n });\n }\n\n setQueryLoading(false);\n setError(err instanceof Error ? err : new Error(String(err)));\n return null;\n }\n };\n\n useEffect(() => {\n setError(undefined);\n setQueryLoading(true);\n retryCount.current = 0;\n\n if (!relationalDb.db) {\n return;\n }\n\n // Use the processor helper to obtain a typed namespaced query builder\n const db = ProcessorClass.query(driveId, relationalDb.db);\n\n const compiledQuery = queryCallback(db, parameters);\n const { sql, parameters: queryParameters } = compiledQuery;\n\n const liveQueryPromise = executeLiveQuery(sql, queryParameters);\n\n return () => {\n if (retryTimeoutRef.current) {\n clearTimeout(retryTimeoutRef.current);\n }\n void liveQueryPromise.then((live) => {\n if (live?.unsubscribe) {\n live.unsubscribe();\n }\n });\n };\n }, [relationalDb.db, ProcessorClass, driveId, queryCallback, parameters]);\n\n return {\n isLoading: relationalDb.isLoading || queryLoading,\n error: error || relationalDb.error,\n result,\n } as const;\n}\n","import type { LiveQueryResults } from \"@electric-sql/pglite/live\";\nimport type {\n QueryCallbackReturnType,\n useRelationalQueryOptions,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n IRelationalQueryBuilder,\n RelationalDbProcessorClass,\n} from \"@powerhousedao/shared/processors\";\nimport type { CompiledQuery } from \"kysely\";\nimport deepEqual from \"lodash.isequal\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { useRelationalQuery } from \"../hooks/useRelationalQuery.js\";\n\n// Custom hook for parameter memoization\nfunction useStableParams<T>(params: T): T {\n const prevParamsRef = useRef<T>(null);\n\n return useMemo(() => {\n if (!deepEqual(prevParamsRef.current, params)) {\n prevParamsRef.current = params;\n }\n return prevParamsRef.current as T;\n }, [params]);\n}\n\nexport function createProcessorQuery<TSchema>(\n ProcessorClass: RelationalDbProcessorClass<TSchema>,\n) {\n // Overload for queries without parameters\n function useQuery<\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n };\n\n // Overload for queries with parameters\n function useQuery<\n TParams,\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n parameters: TParams,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n parameters: TParams,\n options?: useRelationalQueryOptions,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n };\n\n function useQuery<\n TParams,\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n parameters?: TParams,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n parameters?: TParams,\n options?: useRelationalQueryOptions,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n } {\n type InferredResult =\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any;\n\n // Automatically memoize parameters using deep comparison\n const stableParams = useStableParams(parameters);\n\n // Memoize the callback to prevent infinite loops, updating when parameters change\n const memoizedCallback = useCallback(queryCallback, [stableParams]);\n\n return useRelationalQuery<TSchema, InferredResult, TParams>(\n ProcessorClass,\n driveId,\n memoizedCallback,\n stableParams,\n options,\n ) as {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<InferredResult> | null;\n };\n }\n\n return useQuery;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relational-C_0GdGVN.js","names":[],"sources":["../src/pglite/usePGlite.ts","../src/relational/hooks/useRelationalDb.ts","../src/relational/hooks/useRelationalQuery.ts","../src/relational/utils/createProcessorQuery.ts"],"sourcesContent":["import type { PGliteWithLive } from \"@electric-sql/pglite/live\";\nimport { useEffect, useState } from \"react\";\n\nexport const PGLITE_UPDATE_EVENT = \"ph:pglite-update\";\n\nexport interface PGliteState {\n db: PGliteWithLive | null;\n isLoading: boolean;\n error: Error | null;\n}\n\nconst defaultPGliteState: PGliteState = {\n db: null,\n isLoading: true,\n error: null,\n};\n\nexport const usePGliteDB = () => {\n const [state, setState] = useState<PGliteState>(\n () => window.powerhouse?.pglite ?? defaultPGliteState,\n );\n\n useEffect(() => {\n const handlePgliteUpdate = () =>\n setState(window.powerhouse?.pglite ?? defaultPGliteState);\n\n window.addEventListener(PGLITE_UPDATE_EVENT, handlePgliteUpdate);\n\n return () =>\n window.removeEventListener(PGLITE_UPDATE_EVENT, handlePgliteUpdate);\n }, []);\n\n return state;\n};\n\nexport function setPGliteDB(pglite: Partial<PGliteState>): void {\n const currentPowerhouse = window.powerhouse ?? {};\n const currentPGliteState = window.powerhouse?.pglite ?? defaultPGliteState;\n\n window.powerhouse = {\n ...currentPowerhouse,\n pglite: {\n ...currentPGliteState,\n ...pglite,\n },\n };\n window.dispatchEvent(new CustomEvent(PGLITE_UPDATE_EVENT));\n}\n\nexport const useSetPGliteDB = () => setPGliteDB;\n\nexport const usePGlite = () => {\n const pglite = usePGliteDB();\n const setPGlite = useSetPGliteDB();\n\n return [pglite, setPGlite];\n};\n","import type { PGlite } from \"@electric-sql/pglite\";\nimport type { LiveNamespace, PGliteWithLive } from \"@electric-sql/pglite/live\";\nimport { createRelationalDb } from \"@powerhousedao/reactor\";\nimport type { IRelationalDb as IRelationalDbCore } from \"@powerhousedao/shared/processors\";\nimport { Kysely } from \"kysely\";\nimport { PGliteDialect } from \"kysely-pglite-dialect\";\nimport { useMemo } from \"react\";\nimport { usePGliteDB } from \"../../pglite/usePGlite.js\";\n\n// Type for Relational DB instance enhanced with live capabilities\nexport type RelationalDbWithLive<Schema> = IRelationalDbCore<Schema> & {\n live: LiveNamespace;\n};\n\ninterface IRelationalDbState<Schema> {\n db: RelationalDbWithLive<Schema> | null;\n isLoading: boolean;\n error: Error | null;\n}\n\n// Custom initializer that creates enhanced Kysely instance with live capabilities\nfunction createRelationalDbWithLive<Schema>(\n pgliteInstance: PGliteWithLive,\n): RelationalDbWithLive<Schema> {\n const baseDb = new Kysely<Schema>({\n dialect: new PGliteDialect(pgliteInstance as unknown as PGlite),\n });\n const relationalDb = createRelationalDb(baseDb);\n\n // Inject the live namespace with proper typing\n const relationalDBWithLive =\n relationalDb as unknown as RelationalDbWithLive<Schema>;\n relationalDBWithLive.live = pgliteInstance.live;\n\n return relationalDBWithLive;\n}\n\nexport const useRelationalDb = <Schema>(): IRelationalDbState<Schema> => {\n const pglite = usePGliteDB();\n\n const relationalDb = useMemo<IRelationalDbState<Schema>>(() => {\n if (!pglite.db || pglite.isLoading || pglite.error) {\n return {\n db: null,\n isLoading: pglite.isLoading,\n error: pglite.error,\n };\n }\n\n const db = createRelationalDbWithLive<Schema>(pglite.db);\n\n return {\n db,\n isLoading: false,\n error: null,\n };\n }, [pglite]);\n\n return relationalDb;\n};\n","import type { LiveQueryResults } from \"@electric-sql/pglite/live\";\nimport type {\n IRelationalQueryBuilder,\n RelationalDbProcessorClass,\n} from \"@powerhousedao/shared/processors\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useRelationalDb } from \"./useRelationalDb.js\";\n\nexport type QueryCallbackReturnType = {\n sql: string;\n parameters?: readonly unknown[];\n};\n\nexport type useRelationalQueryOptions = {\n // Whether to hash the namespace to avoid namespace size limit. True by default\n hashNamespace?: boolean;\n};\n\nconst MAX_RETRIES = 5;\nconst RETRY_DELAY = 200;\n\nconst isRelationNotExistError = (error: unknown): boolean => {\n const errorMessage =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : String(error);\n\n return (\n errorMessage.toLowerCase().includes(\"relation\") &&\n errorMessage.toLowerCase().includes(\"does not exist\")\n );\n};\n\ntype LiveQueryType = {\n unsubscribe: () => void;\n};\n\nexport function useRelationalQuery<Schema, T = unknown, TParams = undefined>(\n ProcessorClass: RelationalDbProcessorClass<Schema>,\n driveId: string,\n queryCallback: (\n db: IRelationalQueryBuilder<Schema>,\n parameters?: TParams,\n ) => QueryCallbackReturnType,\n parameters?: TParams,\n _options?: useRelationalQueryOptions,\n) {\n const [result, setResult] = useState<LiveQueryResults<T> | null>(null);\n const [queryLoading, setQueryLoading] = useState(true);\n const [error, setError] = useState<Error | undefined>(undefined);\n const retryCount = useRef(0);\n const retryTimeoutRef = useRef<NodeJS.Timeout>(null);\n\n const relationalDb = useRelationalDb<Schema>();\n\n const executeLiveQuery = async (\n sql: string,\n queryParameters: readonly unknown[] | undefined,\n retryAttempt = 0,\n ): Promise<LiveQueryType | null> => {\n if (!relationalDb.db) {\n return null;\n }\n\n try {\n const live = await relationalDb.db.live.query<T>(\n sql,\n queryParameters ? [...queryParameters] : [],\n (result) => {\n setResult(result);\n setQueryLoading(false);\n retryCount.current = 0; // Reset retry count on success\n },\n );\n\n return live as LiveQueryType;\n } catch (err: unknown) {\n if (isRelationNotExistError(err) && retryAttempt < MAX_RETRIES) {\n return new Promise((resolve) => {\n retryTimeoutRef.current = setTimeout(() => {\n resolve(executeLiveQuery(sql, queryParameters, retryAttempt + 1));\n }, RETRY_DELAY);\n });\n }\n\n setQueryLoading(false);\n setError(err instanceof Error ? err : new Error(String(err)));\n return null;\n }\n };\n\n useEffect(() => {\n setError(undefined);\n setQueryLoading(true);\n retryCount.current = 0;\n\n if (!relationalDb.db) {\n return;\n }\n\n // Use the processor helper to obtain a typed namespaced query builder\n const db = ProcessorClass.query(driveId, relationalDb.db);\n\n const compiledQuery = queryCallback(db, parameters);\n const { sql, parameters: queryParameters } = compiledQuery;\n\n const liveQueryPromise = executeLiveQuery(sql, queryParameters);\n\n return () => {\n if (retryTimeoutRef.current) {\n clearTimeout(retryTimeoutRef.current);\n }\n void liveQueryPromise.then((live) => {\n if (live?.unsubscribe) {\n live.unsubscribe();\n }\n });\n };\n }, [relationalDb.db, ProcessorClass, driveId, queryCallback, parameters]);\n\n return {\n isLoading: relationalDb.isLoading || queryLoading,\n error: error || relationalDb.error,\n result,\n } as const;\n}\n","import type { LiveQueryResults } from \"@electric-sql/pglite/live\";\nimport type {\n QueryCallbackReturnType,\n useRelationalQueryOptions,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n IRelationalQueryBuilder,\n RelationalDbProcessorClass,\n} from \"@powerhousedao/shared/processors\";\nimport type { CompiledQuery } from \"kysely\";\nimport deepEqual from \"lodash.isequal\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { useRelationalQuery } from \"../hooks/useRelationalQuery.js\";\n\n// Custom hook for parameter memoization\nfunction useStableParams<T>(params: T): T {\n const prevParamsRef = useRef<T>(null);\n\n return useMemo(() => {\n if (!deepEqual(prevParamsRef.current, params)) {\n prevParamsRef.current = params;\n }\n return prevParamsRef.current as T;\n }, [params]);\n}\n\nexport function createProcessorQuery<TSchema>(\n ProcessorClass: RelationalDbProcessorClass<TSchema>,\n) {\n // Overload for queries without parameters\n function useQuery<\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n };\n\n // Overload for queries with parameters\n function useQuery<\n TParams,\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n parameters: TParams,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n parameters: TParams,\n options?: useRelationalQueryOptions,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n };\n\n function useQuery<\n TParams,\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n parameters?: TParams,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n parameters?: TParams,\n options?: useRelationalQueryOptions,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n } {\n type InferredResult =\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any;\n\n // Automatically memoize parameters using deep comparison\n const stableParams = useStableParams(parameters);\n\n // Memoize the callback to prevent infinite loops, updating when parameters change\n const memoizedCallback = useCallback(queryCallback, [stableParams]);\n\n return useRelationalQuery<TSchema, InferredResult, TParams>(\n ProcessorClass,\n driveId,\n memoizedCallback,\n stableParams,\n options,\n ) as {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<InferredResult> | null;\n };\n }\n\n return useQuery;\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as useDocumentById } from "../../document-by-id-
|
|
1
|
+
import { t as useDocumentById } from "../../document-by-id-DWEQI7wn.js";
|
|
2
2
|
import { i as getGlobal, n as getAnalyticsStore, t as createAnalyticsStore } from "../../store-DAJq6vSs.js";
|
|
3
3
|
import { childLogger } from "document-model";
|
|
4
4
|
import { useEffect } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { rt as IReactorBrowserClient } from "../../global-
|
|
2
|
-
import { $ as GraphQLRequestOptions, A as useGetDocuments, B as stampAction, C as setDocumentCache, D as useDocuments, E as useDocumentSafe, F as startDocumentChangesSubscription, G as GraphQLReactorProvider, H as MutateDocumentWithOperationsResult, I as subscriptionsUrlFromGraphqlUrl, J as useSwitchboardClient, K as GraphQLReactorProviderProps, L as StaticPackageManager, M as DocumentChangesEventPayload, Mt as DocumentCache, N as DocumentChangesSubscriptionOptions, Nt as addPromiseState, O as useGetDocument, P as makeAuthConnectionParams, Pt as readPromiseState, Q as viewFilterInputFromViewFilter, R as packageFromDocumentModels, T as useDocumentCache, U as MutateDocumentWithOperationsVariables, V as MutateDocumentWithOperationsDocument, W as ReactorOperationFieldsFragmentDoc, X as GraphQLReactorClientOptions, Y as GraphQLReactorClient, Z as isGraphQLReactorClient, a as useDocumentOperations, at as BearerTokenProvider, c as DispatchFn, ct as GetDocumentQueryFields, dt as phDocumentFromGetDocument, et as SubgraphSdkFactory, ft as phDocumentFromMutation, i as DocumentOperationsState, it as subgraphUrlFromGraphqlUrl, j as ConnectionParams, k as useGetDocumentAsync, l as UseDispatchResult, lt as GetDocumentQueryResult, nt as TypedGraphQLDocument, o as useDocumentModelModuleById, ot as ambientRenownTokenProvider, p as setReactorClient, pt as revisionMapFromRevisionsList, q as ensurePHEventHandlers, r as useAttachmentService, rt as describeGraphQLDocument, s as useDocumentModelModules, st as makeAuthMiddleware, tt as SubgraphSdkRegistry, u as useDispatch, ut as RevisionsListSelection, v as useReactorClient, w as useDocument, z as signStampedAction } from "../../attachment-service-
|
|
1
|
+
import { rt as IReactorBrowserClient } from "../../global-CjrUQWHf.js";
|
|
2
|
+
import { $ as GraphQLRequestOptions, A as useGetDocuments, B as stampAction, C as setDocumentCache, D as useDocuments, E as useDocumentSafe, F as startDocumentChangesSubscription, G as GraphQLReactorProvider, H as MutateDocumentWithOperationsResult, I as subscriptionsUrlFromGraphqlUrl, J as useSwitchboardClient, K as GraphQLReactorProviderProps, L as StaticPackageManager, M as DocumentChangesEventPayload, Mt as DocumentCache, N as DocumentChangesSubscriptionOptions, Nt as addPromiseState, O as useGetDocument, P as makeAuthConnectionParams, Pt as readPromiseState, Q as viewFilterInputFromViewFilter, R as packageFromDocumentModels, T as useDocumentCache, U as MutateDocumentWithOperationsVariables, V as MutateDocumentWithOperationsDocument, W as ReactorOperationFieldsFragmentDoc, X as GraphQLReactorClientOptions, Y as GraphQLReactorClient, Z as isGraphQLReactorClient, a as useDocumentOperations, at as BearerTokenProvider, c as DispatchFn, ct as GetDocumentQueryFields, dt as phDocumentFromGetDocument, et as SubgraphSdkFactory, ft as phDocumentFromMutation, i as DocumentOperationsState, it as subgraphUrlFromGraphqlUrl, j as ConnectionParams, k as useGetDocumentAsync, l as UseDispatchResult, lt as GetDocumentQueryResult, nt as TypedGraphQLDocument, o as useDocumentModelModuleById, ot as ambientRenownTokenProvider, p as setReactorClient, pt as revisionMapFromRevisionsList, q as ensurePHEventHandlers, r as useAttachmentService, rt as describeGraphQLDocument, s as useDocumentModelModules, st as makeAuthMiddleware, tt as SubgraphSdkRegistry, u as useDispatch, ut as RevisionsListSelection, v as useReactorClient, w as useDocument, z as signStampedAction } from "../../attachment-service-CUGe-Rda.js";
|
|
3
3
|
import { O as SdkFunctionWrapper } from "../../types-Bitg5Z5j.js";
|
|
4
4
|
export { BearerTokenProvider, ConnectionParams, type DispatchFn, DocumentCache, DocumentChangesEventPayload, DocumentChangesSubscriptionOptions, type DocumentOperationsState, GetDocumentQueryFields, GetDocumentQueryResult, GraphQLReactorClient, GraphQLReactorClientOptions, GraphQLReactorProvider, GraphQLReactorProviderProps, GraphQLRequestOptions, type IReactorBrowserClient, MutateDocumentWithOperationsDocument, MutateDocumentWithOperationsResult, MutateDocumentWithOperationsVariables, ReactorOperationFieldsFragmentDoc, RevisionsListSelection, SdkFunctionWrapper, StaticPackageManager, SubgraphSdkFactory, SubgraphSdkRegistry, TypedGraphQLDocument, type UseDispatchResult, addPromiseState, ambientRenownTokenProvider, describeGraphQLDocument, ensurePHEventHandlers, isGraphQLReactorClient, makeAuthConnectionParams, makeAuthMiddleware, packageFromDocumentModels, phDocumentFromGetDocument, phDocumentFromMutation, readPromiseState, revisionMapFromRevisionsList, setDocumentCache, setReactorClient, signStampedAction, stampAction, startDocumentChangesSubscription, subgraphUrlFromGraphqlUrl, subscriptionsUrlFromGraphqlUrl, useAttachmentService, useDispatch, useDocument, useDocumentCache, useDocumentModelModuleById, useDocumentModelModules, useDocumentOperations, useDocumentSafe, useDocuments, useGetDocument, useGetDocumentAsync, useGetDocuments, useReactorClient, useSwitchboardClient, viewFilterInputFromViewFilter };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as setDocumentCache, c as useDocumentSafe, d as useGetDocumentAsync, f as useGetDocuments, h as readPromiseState, l as useDocuments, m as addPromiseState, o as useDocument, p as DocumentCache, r as useDispatch, s as useDocumentCache, u as useGetDocument } from "../../document-by-id-
|
|
2
|
-
import { $i as makeAuthMiddleware, Bi as isGraphQLReactorClient, Gi as SubgraphSdkRegistry, Hi as makeAuthConnectionParams, Ji as signStampedAction, K as useReactorClient, Ki as describeGraphQLDocument, Lt as useAttachmentService, Qi as ambientRenownTokenProvider, Ui as startDocumentChangesSubscription, V as setReactorClient, Vi as viewFilterInputFromViewFilter, Wi as subscriptionsUrlFromGraphqlUrl, Xi as MutateDocumentWithOperationsDocument, Yi as stampAction, Zi as ReactorOperationFieldsFragmentDoc, a as ensurePHEventHandlers, c as packageFromDocumentModels, ea as phDocumentFromGetDocument, i as GraphQLReactorProvider, n as useDocumentModelModuleById, na as revisionMapFromRevisionsList, o as useSwitchboardClient, qi as subgraphUrlFromGraphqlUrl, r as useDocumentModelModules, s as StaticPackageManager, t as useDocumentOperations, ta as phDocumentFromMutation, zi as GraphQLReactorClient } from "../../document-operations-
|
|
1
|
+
import { a as setDocumentCache, c as useDocumentSafe, d as useGetDocumentAsync, f as useGetDocuments, h as readPromiseState, l as useDocuments, m as addPromiseState, o as useDocument, p as DocumentCache, r as useDispatch, s as useDocumentCache, u as useGetDocument } from "../../document-by-id-DWEQI7wn.js";
|
|
2
|
+
import { $i as makeAuthMiddleware, Bi as isGraphQLReactorClient, Gi as SubgraphSdkRegistry, Hi as makeAuthConnectionParams, Ji as signStampedAction, K as useReactorClient, Ki as describeGraphQLDocument, Lt as useAttachmentService, Qi as ambientRenownTokenProvider, Ui as startDocumentChangesSubscription, V as setReactorClient, Vi as viewFilterInputFromViewFilter, Wi as subscriptionsUrlFromGraphqlUrl, Xi as MutateDocumentWithOperationsDocument, Yi as stampAction, Zi as ReactorOperationFieldsFragmentDoc, a as ensurePHEventHandlers, c as packageFromDocumentModels, ea as phDocumentFromGetDocument, i as GraphQLReactorProvider, n as useDocumentModelModuleById, na as revisionMapFromRevisionsList, o as useSwitchboardClient, qi as subgraphUrlFromGraphqlUrl, r as useDocumentModelModules, s as StaticPackageManager, t as useDocumentOperations, ta as phDocumentFromMutation, zi as GraphQLReactorClient } from "../../document-operations-D81QJKqH.js";
|
|
3
3
|
export { DocumentCache, GraphQLReactorClient, GraphQLReactorProvider, MutateDocumentWithOperationsDocument, ReactorOperationFieldsFragmentDoc, StaticPackageManager, SubgraphSdkRegistry, addPromiseState, ambientRenownTokenProvider, describeGraphQLDocument, ensurePHEventHandlers, isGraphQLReactorClient, makeAuthConnectionParams, makeAuthMiddleware, packageFromDocumentModels, phDocumentFromGetDocument, phDocumentFromMutation, readPromiseState, revisionMapFromRevisionsList, setDocumentCache, setReactorClient, signStampedAction, stampAction, startDocumentChangesSubscription, subgraphUrlFromGraphqlUrl, subscriptionsUrlFromGraphqlUrl, useAttachmentService, useDispatch, useDocument, useDocumentCache, useDocumentModelModuleById, useDocumentModelModules, useDocumentOperations, useDocumentSafe, useDocuments, useGetDocument, useGetDocumentAsync, useGetDocuments, useReactorClient, useSwitchboardClient, viewFilterInputFromViewFilter };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as useRelationalQuery, r as useRelationalDb, t as createProcessorQuery } from "../../relational-
|
|
1
|
+
import { n as useRelationalQuery, r as useRelationalDb, t as createProcessorQuery } from "../../relational-C_0GdGVN.js";
|
|
2
2
|
export { createProcessorQuery, useRelationalDb, useRelationalQuery };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as VERIFIABLE_CREDENTIAL_EIP712_TYPE, B as RenownUserButtonMenuItem, C as CREDENTIAL_SUBJECT_TYPE, D as RENOWN_CHAIN_ID, E as ISSUER_TYPE, F as DisconnectIcon, G as RenownAuthButtonProps, H as RenownLoginButton, I as RenownLogo, L as SpinnerIcon, M as initRenownCrypto, N as ChevronDownIcon, O as RENOWN_NETWORK_ID, P as CopyIcon, R as UserIcon, S as CREDENTIAL_SCHEMA_EIP712_TYPE, T as DOMAIN_TYPE, U as RenownLoginButtonProps, V as RenownUserButtonProps, W as RenownAuthButton, X as useRenown, _ as RenownInitialAuth, a as RenownProvider, at as useRenownAuth, b as useRenownInitialAuth, c as RenownProps, d as RenownSessionCookieOptions, et as openRenown, f as RenownSessionCookieState, g as RENOWN_INITIAL_UNKNOWN, h as RENOWN_INITIAL_ANONYMOUS, i as RenownWalletProviderProps, it as RenownAuthStatus, j as initConnectCrypto, k as RENOWN_URL, l as RenownInitOptions, m as useRenownSessionSynced, n as useRenownLoginMethods, nt as RenownAuthAsync, o as RenownProviderProps, ot as useRenownAuthAsync, p as useRenownSessionCookie, r as RenownWalletProvider, rt as RenownAuthResolution, s as Renown, t as RenownLoginMethod, tt as RenownAuth, u as useRenownInit, v as RenownInitialUserProvider, w as CREDENTIAL_TYPES, x as useRenownInitialUser, y as RenownInitialUserProviderProps, z as RenownUserButton } from "../../index-
|
|
1
|
+
import { A as VERIFIABLE_CREDENTIAL_EIP712_TYPE, B as RenownUserButtonMenuItem, C as CREDENTIAL_SUBJECT_TYPE, D as RENOWN_CHAIN_ID, E as ISSUER_TYPE, F as DisconnectIcon, G as RenownAuthButtonProps, H as RenownLoginButton, I as RenownLogo, L as SpinnerIcon, M as initRenownCrypto, N as ChevronDownIcon, O as RENOWN_NETWORK_ID, P as CopyIcon, R as UserIcon, S as CREDENTIAL_SCHEMA_EIP712_TYPE, T as DOMAIN_TYPE, U as RenownLoginButtonProps, V as RenownUserButtonProps, W as RenownAuthButton, X as useRenown, _ as RenownInitialAuth, a as RenownProvider, at as useRenownAuth, b as useRenownInitialAuth, c as RenownProps, d as RenownSessionCookieOptions, et as openRenown, f as RenownSessionCookieState, g as RENOWN_INITIAL_UNKNOWN, h as RENOWN_INITIAL_ANONYMOUS, i as RenownWalletProviderProps, it as RenownAuthStatus, j as initConnectCrypto, k as RENOWN_URL, l as RenownInitOptions, m as useRenownSessionSynced, n as useRenownLoginMethods, nt as RenownAuthAsync, o as RenownProviderProps, ot as useRenownAuthAsync, p as useRenownSessionCookie, r as RenownWalletProvider, rt as RenownAuthResolution, s as Renown, t as RenownLoginMethod, tt as RenownAuth, u as useRenownInit, v as RenownInitialUserProvider, w as CREDENTIAL_TYPES, x as useRenownInitialUser, y as RenownInitialUserProviderProps, z as RenownUserButton } from "../../index-BM9TVt6u.js";
|
|
2
2
|
export { CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ChevronDownIcon, CopyIcon, DOMAIN_TYPE, DisconnectIcon, ISSUER_TYPE, RENOWN_CHAIN_ID, RENOWN_INITIAL_ANONYMOUS, RENOWN_INITIAL_UNKNOWN, RENOWN_NETWORK_ID, RENOWN_URL, Renown, RenownAuth, RenownAuthAsync, RenownAuthButton, RenownAuthButtonProps, RenownAuthResolution, RenownAuthStatus, RenownInitOptions, RenownInitialAuth, RenownInitialUserProvider, RenownInitialUserProviderProps, RenownLoginButton, RenownLoginButtonProps, RenownLoginMethod, RenownLogo, RenownProps, RenownProvider, RenownProviderProps, RenownSessionCookieOptions, RenownSessionCookieState, RenownUserButton, RenownUserButtonMenuItem, RenownUserButtonProps, RenownWalletProvider, RenownWalletProviderProps, SpinnerIcon, UserIcon, VERIFIABLE_CREDENTIAL_EIP712_TYPE, initConnectCrypto, initRenownCrypto, openRenown, useRenown, useRenownAuth, useRenownAuthAsync, useRenownInit, useRenownInitialAuth, useRenownInitialUser, useRenownLoginMethods, useRenownSessionCookie, useRenownSessionSynced };
|
package/dist/src/rpc/index.d.ts
CHANGED
|
@@ -220,7 +220,7 @@ declare class WorkerPackageLoader implements IDocumentModelLoader {
|
|
|
220
220
|
private readonly cdnUrl;
|
|
221
221
|
private readonly importPackage;
|
|
222
222
|
private readonly resolvePackages;
|
|
223
|
-
private readonly
|
|
223
|
+
private readonly modulesByKey;
|
|
224
224
|
private readonly loadedSpecs;
|
|
225
225
|
private readonly failures;
|
|
226
226
|
constructor(options: WorkerPackageLoaderOptions);
|
|
@@ -228,6 +228,8 @@ declare class WorkerPackageLoader implements IDocumentModelLoader {
|
|
|
228
228
|
load(documentType: string): Promise<DocumentModelModule>;
|
|
229
229
|
get models(): DocumentModelModule[];
|
|
230
230
|
get loadFailures(): PackageLoadFailure[];
|
|
231
|
+
/** The highest registered version for a type, which is what a bare load resolves to. */
|
|
232
|
+
private latestForType;
|
|
231
233
|
private notLoadedError;
|
|
232
234
|
private loadPackage;
|
|
233
235
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/rpc/client-proxy.ts","../../../src/rpc/op-channel.ts","../../../src/rpc/host-reply.ts","../../../src/rpc/listeners.ts","../../../src/rpc/subscription.ts","../../../src/rpc/live-query-proxy.ts","../../../src/rpc/relational-db-proxy.ts","../../../src/rpc/event-bus-proxy.ts","../../../src/rpc/forwarded-events.ts","../../../src/rpc/connect-reactor.ts","../../../src/rpc/host-server.ts","../../../src/rpc/reactor-host.ts","../../../src/rpc/sync-manager-proxy.ts","../../../src/rpc/worker-package-loader.ts","../../../src/rpc/error-info.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/rpc/client-proxy.ts","../../../src/rpc/op-channel.ts","../../../src/rpc/host-reply.ts","../../../src/rpc/listeners.ts","../../../src/rpc/subscription.ts","../../../src/rpc/live-query-proxy.ts","../../../src/rpc/relational-db-proxy.ts","../../../src/rpc/event-bus-proxy.ts","../../../src/rpc/forwarded-events.ts","../../../src/rpc/connect-reactor.ts","../../../src/rpc/host-server.ts","../../../src/rpc/reactor-host.ts","../../../src/rpc/sync-manager-proxy.ts","../../../src/rpc/worker-package-loader.ts","../../../src/rpc/error-info.ts"],"mappings":"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"}
|
package/dist/src/rpc/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { t as RegistryClient } from "../../client-Zz_l9QzI.js";
|
|
2
|
+
import { normalizeDocumentModelVersion } from "@powerhousedao/shared/document-model";
|
|
2
3
|
import { DriveCollectionId, ReactorEventTypes, SyncEventTypes } from "@powerhousedao/reactor";
|
|
3
4
|
//#region src/rpc/listeners.ts
|
|
4
5
|
var KeyedListeners = class {
|
|
@@ -295,6 +296,7 @@ function createReactorClientProxy(router, options = {}) {
|
|
|
295
296
|
if (prop === "subscribe") return subscribe;
|
|
296
297
|
if (registry) {
|
|
297
298
|
if (prop === "getDocumentModelModule") return (documentType) => Promise.resolve().then(() => registry.getModule(documentType));
|
|
299
|
+
if (prop === "getDocumentModelModuleForDocument") return (document) => Promise.resolve().then(() => registry.getModule(document.header.documentType, normalizeDocumentModelVersion(document.state.document?.version)));
|
|
298
300
|
if (prop === "getDocumentModelModules") return (_namespace, paging) => Promise.resolve({
|
|
299
301
|
results: registry.getAllModules(),
|
|
300
302
|
options: paging ?? {
|
|
@@ -1069,6 +1071,9 @@ function packageName(spec) {
|
|
|
1069
1071
|
const at = spec.lastIndexOf("@");
|
|
1070
1072
|
return at > 0 ? spec.slice(0, at) : spec;
|
|
1071
1073
|
}
|
|
1074
|
+
function moduleKey(module) {
|
|
1075
|
+
return `${module.documentModel.global.id}@${module.version ?? 1}`;
|
|
1076
|
+
}
|
|
1072
1077
|
function isDocumentModelModule(value) {
|
|
1073
1078
|
if (typeof value !== "object" || value === null) return false;
|
|
1074
1079
|
const candidate = value;
|
|
@@ -1078,7 +1083,7 @@ var WorkerPackageLoader = class {
|
|
|
1078
1083
|
cdnUrl;
|
|
1079
1084
|
importPackage;
|
|
1080
1085
|
resolvePackages;
|
|
1081
|
-
|
|
1086
|
+
modulesByKey = /* @__PURE__ */ new Map();
|
|
1082
1087
|
loadedSpecs = /* @__PURE__ */ new Set();
|
|
1083
1088
|
failures = [];
|
|
1084
1089
|
constructor(options) {
|
|
@@ -1092,21 +1097,30 @@ var WorkerPackageLoader = class {
|
|
|
1092
1097
|
return this.models;
|
|
1093
1098
|
}
|
|
1094
1099
|
async load(documentType) {
|
|
1095
|
-
const existing = this.
|
|
1100
|
+
const existing = this.latestForType(documentType);
|
|
1096
1101
|
if (existing) return existing;
|
|
1097
1102
|
const packageNames = await this.resolvePackages(documentType);
|
|
1098
1103
|
const failuresBefore = this.failures.length;
|
|
1099
1104
|
await Promise.all([...new Set(packageNames)].map((name) => this.loadPackage(name)));
|
|
1100
|
-
const loaded = this.
|
|
1105
|
+
const loaded = this.latestForType(documentType);
|
|
1101
1106
|
if (loaded) return loaded;
|
|
1102
1107
|
throw this.notLoadedError(documentType, packageNames, this.failures.slice(failuresBefore));
|
|
1103
1108
|
}
|
|
1104
1109
|
get models() {
|
|
1105
|
-
return [...new Set(this.
|
|
1110
|
+
return [...new Set(this.modulesByKey.values())];
|
|
1106
1111
|
}
|
|
1107
1112
|
get loadFailures() {
|
|
1108
1113
|
return [...this.failures];
|
|
1109
1114
|
}
|
|
1115
|
+
/** The highest registered version for a type, which is what a bare load resolves to. */
|
|
1116
|
+
latestForType(documentType) {
|
|
1117
|
+
let latest;
|
|
1118
|
+
for (const module of this.modulesByKey.values()) {
|
|
1119
|
+
if (module.documentModel.global.id !== documentType) continue;
|
|
1120
|
+
if (!latest || (module.version ?? 1) > (latest.version ?? 1)) latest = module;
|
|
1121
|
+
}
|
|
1122
|
+
return latest;
|
|
1123
|
+
}
|
|
1110
1124
|
notLoadedError(documentType, packageNames, failures) {
|
|
1111
1125
|
if (packageNames.length === 0) return /* @__PURE__ */ new Error(`No package found for document model: ${documentType}`);
|
|
1112
1126
|
if (failures.length === 0) return /* @__PURE__ */ new Error(`Imported [${packageNames.join(", ")}] but document model not found: ${documentType}`);
|
|
@@ -1119,7 +1133,7 @@ var WorkerPackageLoader = class {
|
|
|
1119
1133
|
const url = `${this.cdnUrl}/${name}/browser/document-models/index.js`;
|
|
1120
1134
|
try {
|
|
1121
1135
|
const namespace = await this.importPackage(url);
|
|
1122
|
-
for (const value of Object.values(namespace)) if (isDocumentModelModule(value)) this.
|
|
1136
|
+
for (const value of Object.values(namespace)) if (isDocumentModelModule(value)) this.modulesByKey.set(moduleKey(value), value);
|
|
1123
1137
|
this.loadedSpecs.add(spec);
|
|
1124
1138
|
} catch (error) {
|
|
1125
1139
|
this.failures.push({
|