@rocicorp/zero 0.3.2024102800 → 0.5.2024103100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/out/chunk-TBA526RR.js +16475 -0
  2. package/out/chunk-TBA526RR.js.map +7 -0
  3. package/out/chunk-ULOTOBTC.js +1 -0
  4. package/out/internal.js +1 -1
  5. package/out/react.js.map +2 -2
  6. package/out/shared/src/arrays.d.ts +6 -0
  7. package/out/shared/src/arrays.d.ts.map +1 -0
  8. package/out/shared/src/arrays.js +20 -0
  9. package/out/shared/src/arrays.js.map +1 -0
  10. package/out/shared/src/iterables.d.ts +1 -0
  11. package/out/shared/src/iterables.d.ts.map +1 -1
  12. package/out/shared/src/iterables.js +33 -0
  13. package/out/shared/src/iterables.js.map +1 -1
  14. package/out/solid.js +16 -1
  15. package/out/solid.js.map +3 -3
  16. package/out/zero/src/advanced.d.ts +2 -0
  17. package/out/zero/src/advanced.d.ts.map +1 -0
  18. package/out/{zero-internal → zero-advanced}/src/mod.d.ts +2 -1
  19. package/out/{zero-internal → zero-advanced}/src/mod.d.ts.map +1 -1
  20. package/out/zero-cache/src/config/config-query.d.ts +1 -0
  21. package/out/zero-cache/src/config/config-query.d.ts.map +1 -1
  22. package/out/zero-cache/src/config/config-query.js +3 -0
  23. package/out/zero-cache/src/config/config-query.js.map +1 -1
  24. package/out/zero-cache/src/config/zero-config.d.ts +114 -114
  25. package/out/zero-cache/src/db/statements.d.ts +1 -1
  26. package/out/zero-cache/src/server/life-cycle.d.ts +19 -4
  27. package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
  28. package/out/zero-cache/src/server/life-cycle.js +105 -54
  29. package/out/zero-cache/src/server/life-cycle.js.map +1 -1
  30. package/out/zero-cache/src/server/logging.js +2 -2
  31. package/out/zero-cache/src/server/logging.js.map +1 -1
  32. package/out/zero-cache/src/server/main.js +9 -9
  33. package/out/zero-cache/src/server/main.js.map +1 -1
  34. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +3 -9
  35. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  36. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +12 -32
  37. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  38. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
  39. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +4 -4
  40. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
  41. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -1
  42. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js +2 -1
  43. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -1
  44. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts.map +1 -1
  45. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js +4 -3
  46. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js.map +1 -1
  47. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +2 -1
  48. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
  49. package/out/zero-cache/src/services/dispatcher/connect-params.js +4 -4
  50. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
  51. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +3 -8
  52. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +1 -1
  53. package/out/zero-cache/src/services/dispatcher/dispatcher.js +8 -24
  54. package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +1 -1
  55. package/out/zero-cache/src/services/http-service.d.ts +16 -0
  56. package/out/zero-cache/src/services/http-service.d.ts.map +1 -0
  57. package/out/zero-cache/src/services/http-service.js +39 -0
  58. package/out/zero-cache/src/services/http-service.js.map +1 -0
  59. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  60. package/out/zero-cache/src/services/replicator/incremental-sync.js +2 -2
  61. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  62. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  63. package/out/zero-cache/src/services/view-syncer/cvr.js +6 -8
  64. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  65. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
  66. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +6 -0
  67. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  68. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +15 -15
  69. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  70. package/out/zero-cache/src/services/view-syncer/snapshotter.js +6 -6
  71. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  72. package/out/zero-cache/src/services/view-syncer/view-syncer.js +2 -2
  73. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  74. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  75. package/out/zero-cache/src/types/lite.js +5 -0
  76. package/out/zero-cache/src/types/lite.js.map +1 -1
  77. package/out/zero-cache/src/types/processes.d.ts +1 -0
  78. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  79. package/out/zero-cache/src/types/processes.js +3 -2
  80. package/out/zero-cache/src/types/processes.js.map +1 -1
  81. package/out/zero-cache/src/workers/replicator.d.ts +2 -2
  82. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  83. package/out/zero-cache/src/workers/replicator.js +5 -1
  84. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  85. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  86. package/out/zero-cache/src/workers/syncer.js +3 -1
  87. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  88. package/out/zero-client/src/client/context.d.ts +2 -1
  89. package/out/zero-client/src/client/context.d.ts.map +1 -1
  90. package/out/zero-client/src/client/context.js +53 -39
  91. package/out/zero-client/src/client/context.js.map +1 -1
  92. package/out/zero-client/src/client/options.d.ts +37 -0
  93. package/out/zero-client/src/client/options.d.ts.map +1 -1
  94. package/out/zero-client/src/client/zero.d.ts +1 -1
  95. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  96. package/out/zero-client/src/client/zero.js +28 -10
  97. package/out/zero-client/src/client/zero.js.map +1 -1
  98. package/out/zero-client/src/mod.d.ts +1 -0
  99. package/out/zero-client/src/mod.d.ts.map +1 -1
  100. package/out/zero-client/src/mod.js +1 -0
  101. package/out/zero-client/src/mod.js.map +1 -1
  102. package/out/zero-protocol/src/ast.d.ts +18 -10
  103. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  104. package/out/zero-protocol/src/ast.js +80 -12
  105. package/out/zero-protocol/src/ast.js.map +1 -1
  106. package/out/zero-protocol/src/change-desired-queries.d.ts +6 -6
  107. package/out/zero-protocol/src/connect.d.ts +11 -13
  108. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  109. package/out/zero-protocol/src/connect.js +6 -16
  110. package/out/zero-protocol/src/connect.js.map +1 -1
  111. package/out/zero-protocol/src/data.d.ts +2 -2
  112. package/out/zero-protocol/src/data.d.ts.map +1 -1
  113. package/out/zero-protocol/src/data.js +2 -1
  114. package/out/zero-protocol/src/data.js.map +1 -1
  115. package/out/zero-protocol/src/down.d.ts +7 -7
  116. package/out/zero-protocol/src/poke.d.ts +14 -14
  117. package/out/zero-protocol/src/push.d.ts +21 -21
  118. package/out/zero-protocol/src/queries-patch.d.ts +9 -9
  119. package/out/zero-protocol/src/row-patch.d.ts +2 -2
  120. package/out/zero-protocol/src/up.d.ts +9 -9
  121. package/out/zero-react/src/use-query.d.ts.map +1 -1
  122. package/out/zero-solid/src/create-zero.d.ts +3 -0
  123. package/out/zero-solid/src/create-zero.d.ts.map +1 -0
  124. package/out/zero-solid/src/mod.d.ts +1 -0
  125. package/out/zero-solid/src/mod.d.ts.map +1 -1
  126. package/out/zero-solid/src/solid-view.d.ts +1 -1
  127. package/out/zero-solid/src/use-query.d.ts +1 -1
  128. package/out/zero.js +24 -16033
  129. package/out/zero.js.map +4 -4
  130. package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
  131. package/out/zql/src/zql/builder/builder.js +49 -8
  132. package/out/zql/src/zql/builder/builder.js.map +1 -1
  133. package/out/zql/src/zql/builder/filter.d.ts +2 -2
  134. package/out/zql/src/zql/builder/filter.d.ts.map +1 -1
  135. package/out/zql/src/zql/builder/filter.js.map +1 -1
  136. package/out/zql/src/zql/builder/like.js +1 -1
  137. package/out/zql/src/zql/builder/like.js.map +1 -1
  138. package/out/zql/src/zql/ivm/fan-in.d.ts +31 -0
  139. package/out/zql/src/zql/ivm/fan-in.d.ts.map +1 -0
  140. package/out/zql/src/zql/ivm/fan-in.js +61 -0
  141. package/out/zql/src/zql/ivm/fan-in.js.map +1 -0
  142. package/out/zql/src/zql/ivm/fan-out.d.ts +19 -0
  143. package/out/zql/src/zql/ivm/fan-out.d.ts.map +1 -0
  144. package/out/zql/src/zql/ivm/fan-out.js +54 -0
  145. package/out/zql/src/zql/ivm/fan-out.js.map +1 -0
  146. package/out/zql/src/zql/ivm/filter.d.ts +1 -2
  147. package/out/zql/src/zql/ivm/filter.d.ts.map +1 -1
  148. package/out/zql/src/zql/ivm/filter.js +8 -5
  149. package/out/zql/src/zql/ivm/filter.js.map +1 -1
  150. package/out/zql/src/zql/ivm/memory-source.d.ts +22 -4
  151. package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
  152. package/out/zql/src/zql/ivm/memory-source.js +48 -1
  153. package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
  154. package/out/zql/src/zql/ivm/schema.d.ts +1 -1
  155. package/out/zql/src/zql/ivm/schema.d.ts.map +1 -1
  156. package/out/zql/src/zql/ivm/source.d.ts +1 -1
  157. package/out/zql/src/zql/ivm/source.d.ts.map +1 -1
  158. package/out/zql/src/zql/ivm/take.d.ts.map +1 -1
  159. package/out/zql/src/zql/ivm/take.js.map +1 -1
  160. package/out/zql/src/zql/query/expression.d.ts +25 -0
  161. package/out/zql/src/zql/query/expression.d.ts.map +1 -0
  162. package/out/zql/src/zql/query/expression.js +115 -0
  163. package/out/zql/src/zql/query/expression.js.map +1 -0
  164. package/out/zql/src/zql/query/query-impl.d.ts +7 -3
  165. package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
  166. package/out/zql/src/zql/query/query-impl.js +19 -16
  167. package/out/zql/src/zql/query/query-impl.js.map +1 -1
  168. package/out/zql/src/zql/query/query-internal.d.ts +1 -1
  169. package/out/zql/src/zql/query/query.d.ts +15 -4
  170. package/out/zql/src/zql/query/query.d.ts.map +1 -1
  171. package/out/zqlite/src/db.d.ts +1 -1
  172. package/out/zqlite/src/db.js +1 -1
  173. package/out/zqlite/src/table-source.d.ts +2 -2
  174. package/out/zqlite/src/table-source.d.ts.map +1 -1
  175. package/out/zqlite/src/table-source.js +48 -26
  176. package/out/zqlite/src/table-source.js.map +1 -1
  177. package/package.json +5 -5
  178. package/out/chunk-NKGIR6IA.js +0 -1
  179. package/out/zero/src/internal.d.ts +0 -2
  180. package/out/zero/src/internal.d.ts.map +0 -1
  181. /package/out/{chunk-NKGIR6IA.js.map → chunk-ULOTOBTC.js.map} +0 -0
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-ULOTOBTC.js.map
package/out/internal.js CHANGED
@@ -1,4 +1,4 @@
1
- import "./chunk-NKGIR6IA.js";
1
+ import "./chunk-ULOTOBTC.js";
2
2
  import {
3
3
  applyChange
4
4
  } from "./chunk-RCVGGCMG.js";
package/out/react.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../zero-react/src/use-query.tsx", "../../shared/src/deep-clone.ts", "../../zero-react/src/use-zero.tsx"],
4
- "sourcesContent": ["import {useSyncExternalStore} from 'react';\nimport {deepClone} from '../../shared/src/deep-clone.js';\nimport type {Immutable} from '../../shared/src/immutable.js';\nimport type {\n Query,\n QueryType,\n Smash,\n TableSchema,\n TypedView,\n} from '../../zero-client/src/mod.js';\nimport type {QueryInternal} from '../../zql/src/zql/query/query-internal.js';\nimport {useZero} from './use-zero.js';\n\nexport function useQuery<\n TSchema extends TableSchema,\n TReturn extends QueryType,\n>(q: Query<TSchema, TReturn>, enable: boolean = true): Smash<TReturn> {\n const z = useZero();\n const view = viewStore.getView(\n z.clientID,\n q as QueryInternal<TSchema, TReturn>,\n enable,\n );\n // https://react.dev/reference/react/useSyncExternalStore\n return useSyncExternalStore(view.subscribeReactInternals, view.getSnapshot);\n}\n\nconst emptyArray: unknown[] = [];\nconst disabledSubscriber = () => () => {};\n\n/**\n * A global store of all active views.\n *\n * React subscribes and unsubscribes to these views\n * via `useSyncExternalStore`.\n *\n * Managing views through `useEffect` or `useLayoutEffect` causes\n * inconsistencies because effects run after render.\n *\n * For example, if useQuery used use*Effect in the component below:\n * ```ts\n * function Foo({issueID}) {\n * const issue = useQuery(z.query.issue.where('id', issueID).one());\n * if (issue?.id !== undefined && issue.id !== issueID) {\n * console.log('MISMATCH!', issue.id, issueID);\n * }\n * }\n * ```\n *\n * `MISMATCH` will be printed whenever the `issueID` prop changes.\n *\n * This is because the component will render once with\n * the old state returned from `useQuery`. Then the effect inside\n * `useQuery` will run. The component will render again with the new\n * state. This inconsistent transition can cause unexpected results.\n *\n * Emulating `useEffect` via `useState` and `if` causes resource leaks.\n * That is:\n *\n * ```ts\n * function useQuery(q) {\n * const [oldHash, setOldHash] = useState();\n * if (hash(q) !== oldHash) {\n * // make new view\n * }\n *\n * useEffect(() => {\n * return () => view.destroy();\n * }, []);\n * }\n * ```\n *\n * I'm not sure why but in strict mode the cleanup function\n * fails to be called for the first instance of the view and only\n * cleans up later instances.\n *\n * Swapping `useState` to `useRef` has similar problems.\n */\nclass ViewStore {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #views = new Map<string, ViewWrapper<any, any>>();\n\n getView<TSchema extends TableSchema, TReturn extends QueryType>(\n clientID: string,\n query: QueryInternal<TSchema, TReturn>,\n enabled: boolean,\n ): {\n getSnapshot: () => Smash<TReturn>;\n subscribeReactInternals: (internals: () => void) => () => void;\n } {\n if (!enabled) {\n return {\n getSnapshot: () =>\n (query.format.singular ? undefined : emptyArray) as Smash<TReturn>,\n subscribeReactInternals: disabledSubscriber,\n };\n }\n\n const hash = query.hash() + clientID;\n let existing = this.#views.get(hash);\n if (!existing) {\n existing = new ViewWrapper(\n query,\n view => {\n const lastView = this.#views.get(hash);\n // I don't think this can happen\n // but lets guard against it so we don't\n // leak resources.\n if (lastView && lastView !== view) {\n throw new Error('View already exists');\n }\n this.#views.set(hash, view);\n },\n () => {\n this.#views.delete(hash);\n },\n ) as ViewWrapper<TSchema, TReturn>;\n this.#views.set(hash, existing);\n }\n return existing;\n }\n}\n\nconst viewStore = new ViewStore();\n\n/**\n * This wraps and ref counts a view.\n *\n * The only signal we have from React as to whether or not it is\n * done with a view is when it calls `unsubscribe`.\n *\n * In non-strict-mode we can clean up the view as soon\n * as the listener count goes to 0.\n *\n * In strict-mode, the listener cound will go to 0 then a\n * new listener for the same view is immeidatiely added back.\n *\n * This is why the `onMaterialized` and `onDematerialized` callbacks exist --\n * they allow a view which React is still referencing to be added\n * back into the store when React re-subscribes to it.\n *\n * This wrapper also exists to deal with the various\n * `useSyncExternalStore` caveats that cause excessive\n * re-renders and materializations.\n *\n * See: https://react.dev/reference/react/useSyncExternalStore#caveats\n * Especially:\n * 1. The store snapshot returned by getSnapshot must be immutable. If the underlying store has mutable data, return a new immutable snapshot if the data has changed. Otherwise, return a cached last snapshot.\n * 2. If a different subscribe function is passed during a re-render, React will re-subscribe to the store using the newly passed subscribe function. You can prevent this by declaring subscribe outside the component.\n */\nclass ViewWrapper<TSchema extends TableSchema, TReturn extends QueryType> {\n #view: TypedView<Smash<TReturn>> | undefined;\n readonly #defaultSnapshot: Smash<TReturn>;\n readonly #onDematerialized;\n readonly #onMaterialized;\n readonly #query: QueryInternal<TSchema, TReturn>;\n #snapshot: Smash<TReturn>;\n #reactInternals: Set<() => void>;\n\n constructor(\n query: QueryInternal<TSchema, TReturn>,\n onMaterialized: (view: ViewWrapper<TSchema, TReturn>) => void,\n onDematerialized: () => void,\n ) {\n this.#defaultSnapshot = (query.format.singular\n ? undefined\n : emptyArray) as unknown as Smash<TReturn>;\n this.#snapshot = this.#defaultSnapshot;\n this.#onMaterialized = onMaterialized;\n this.#onDematerialized = onDematerialized;\n this.#reactInternals = new Set();\n this.#query = query;\n }\n\n #onData = (snap: Immutable<Smash<TReturn>>) => {\n this.#snapshot = (\n snap === undefined ? snap : deepClone(snap)\n ) as Smash<TReturn>;\n for (const internals of this.#reactInternals) {\n internals();\n }\n };\n\n #materializeIfNeeded = () => {\n if (this.#view) {\n return;\n }\n\n this.#view = this.#query.materialize();\n this.#view.addListener(this.#onData);\n\n this.#onMaterialized(this);\n };\n\n getSnapshot = () => this.#snapshot;\n\n subscribeReactInternals = (internals: () => void): (() => void) => {\n this.#reactInternals.add(internals);\n this.#materializeIfNeeded();\n return () => {\n this.#reactInternals.delete(internals);\n if (this.#reactInternals.size === 0) {\n this.#view?.destroy();\n this.#view = undefined;\n this.#onDematerialized();\n }\n };\n };\n}\n", "import {hasOwn} from './has-own.js';\nimport type {JSONValue, ReadonlyJSONValue} from './json.js';\n\nexport function deepClone(value: ReadonlyJSONValue): JSONValue {\n const seen: Array<ReadonlyJSONValue> = [];\n return internalDeepClone(value, seen);\n}\n\nexport function internalDeepClone(\n value: ReadonlyJSONValue,\n seen: Array<ReadonlyJSONValue>,\n): JSONValue {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n case 'string':\n case 'undefined':\n return value;\n case 'object': {\n if (value === null) {\n return null;\n }\n if (seen.includes(value)) {\n throw new Error('Cyclic object');\n }\n seen.push(value);\n if (Array.isArray(value)) {\n const rv = value.map(v => internalDeepClone(v, seen));\n seen.pop();\n return rv;\n }\n\n const obj: JSONValue = {};\n\n for (const k in value) {\n if (hasOwn(value, k)) {\n const v = (value as Record<string, ReadonlyJSONValue>)[k];\n if (v !== undefined) {\n obj[k] = internalDeepClone(v, seen);\n }\n }\n }\n seen.pop();\n return obj;\n }\n\n default:\n throw new Error(`Invalid type: ${typeof value}`);\n }\n}\n", "import {createContext, useContext} from 'react';\nimport type {Schema, Zero} from '../../zero-client/src/mod.js';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst ZeroContext = createContext<Zero<Schema> | undefined>(undefined);\n\nexport function useZero<S extends Schema>(): Zero<S> {\n const zero = useContext(ZeroContext);\n if (zero === undefined) {\n throw new Error('useZero must be used within a ZeroProvider');\n }\n return zero as Zero<S>;\n}\n\nexport function createUseZero<S extends Schema>() {\n return () => useZero<S>();\n}\n\nexport function ZeroProvider<S extends Schema>({\n children,\n zero,\n}: {\n children: React.ReactNode;\n zero: Zero<S>;\n}) {\n return (\n <ZeroContext.Provider value={zero as Zero<Schema>}>\n {children}\n </ZeroContext.Provider>\n );\n}\n"],
5
- "mappings": ";;;;;;AAAA,SAAQ,4BAA2B;;;ACG5B,SAAS,UAAU,OAAqC;AAC7D,QAAM,OAAiC,CAAC;AACxC,SAAO,kBAAkB,OAAO,IAAI;AACtC;AAEO,SAAS,kBACd,OACA,MACW;AACX,UAAQ,OAAO,OAAO;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK,UAAU;AACb,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACT;AACA,UAAI,KAAK,SAAS,KAAK,GAAG;AACxB,cAAM,IAAI,MAAM,eAAe;AAAA,MACjC;AACA,WAAK,KAAK,KAAK;AACf,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,cAAM,KAAK,MAAM,IAAI,OAAK,kBAAkB,GAAG,IAAI,CAAC;AACpD,aAAK,IAAI;AACT,eAAO;AAAA,MACT;AAEA,YAAM,MAAiB,CAAC;AAExB,iBAAW,KAAK,OAAO;AACrB,YAAI,OAAO,OAAO,CAAC,GAAG;AACpB,gBAAM,IAAK,MAA4C,CAAC;AACxD,cAAI,MAAM,QAAW;AACnB,gBAAI,CAAC,IAAI,kBAAkB,GAAG,IAAI;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AACA,WAAK,IAAI;AACT,aAAO;AAAA,IACT;AAAA,IAEA;AACE,YAAM,IAAI,MAAM,iBAAiB,OAAO,KAAK,EAAE;AAAA,EACnD;AACF;;;ACjDA,SAAQ,eAAe,kBAAiB;AA0BpC;AAtBJ,IAAM,cAAc,cAAwC,MAAS;AAE9D,SAAS,UAAqC;AACnD,QAAM,OAAO,WAAW,WAAW;AACnC,MAAI,SAAS,QAAW;AACtB,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AACA,SAAO;AACT;AAEO,SAAS,gBAAkC;AAChD,SAAO,MAAM,QAAW;AAC1B;AAEO,SAAS,aAA+B;AAAA,EAC7C;AAAA,EACA;AACF,GAGG;AACD,SACE,oBAAC,YAAY,UAAZ,EAAqB,OAAO,MAC1B,UACH;AAEJ;;;AFjBO,SAAS,SAGd,GAA4B,SAAkB,MAAsB;AACpE,QAAM,IAAI,QAAQ;AAClB,QAAM,OAAO,UAAU;AAAA,IACrB,EAAE;AAAA,IACF;AAAA,IACA;AAAA,EACF;AAEA,SAAO,qBAAqB,KAAK,yBAAyB,KAAK,WAAW;AAC5E;AAEA,IAAM,aAAwB,CAAC;AAC/B,IAAM,qBAAqB,MAAM,MAAM;AAAC;AAkDxC,IAAM,YAAN,MAAgB;AAAA;AAAA,EAEd,SAAS,oBAAI,IAAmC;AAAA,EAEhD,QACE,UACA,OACA,SAIA;AACA,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,QACL,aAAa,MACV,MAAM,OAAO,WAAW,SAAY;AAAA,QACvC,yBAAyB;AAAA,MAC3B;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,KAAK,IAAI;AAC5B,QAAI,WAAW,KAAK,OAAO,IAAI,IAAI;AACnC,QAAI,CAAC,UAAU;AACb,iBAAW,IAAI;AAAA,QACb;AAAA,QACA,UAAQ;AACN,gBAAM,WAAW,KAAK,OAAO,IAAI,IAAI;AAIrC,cAAI,YAAY,aAAa,MAAM;AACjC,kBAAM,IAAI,MAAM,qBAAqB;AAAA,UACvC;AACA,eAAK,OAAO,IAAI,MAAM,IAAI;AAAA,QAC5B;AAAA,QACA,MAAM;AACJ,eAAK,OAAO,OAAO,IAAI;AAAA,QACzB;AAAA,MACF;AACA,WAAK,OAAO,IAAI,MAAM,QAAQ;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AACF;AAEA,IAAM,YAAY,IAAI,UAAU;AA2BhC,IAAM,cAAN,MAA0E;AAAA,EACxE;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACT;AAAA,EACA;AAAA,EAEA,YACE,OACA,gBACA,kBACA;AACA,SAAK,mBAAoB,MAAM,OAAO,WAClC,SACA;AACJ,SAAK,YAAY,KAAK;AACtB,SAAK,kBAAkB;AACvB,SAAK,oBAAoB;AACzB,SAAK,kBAAkB,oBAAI,IAAI;AAC/B,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,UAAU,CAAC,SAAoC;AAC7C,SAAK,YACH,SAAS,SAAY,OAAO,UAAU,IAAI;AAE5C,eAAW,aAAa,KAAK,iBAAiB;AAC5C,gBAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,uBAAuB,MAAM;AAC3B,QAAI,KAAK,OAAO;AACd;AAAA,IACF;AAEA,SAAK,QAAQ,KAAK,OAAO,YAAY;AACrC,SAAK,MAAM,YAAY,KAAK,OAAO;AAEnC,SAAK,gBAAgB,IAAI;AAAA,EAC3B;AAAA,EAEA,cAAc,MAAM,KAAK;AAAA,EAEzB,0BAA0B,CAAC,cAAwC;AACjE,SAAK,gBAAgB,IAAI,SAAS;AAClC,SAAK,qBAAqB;AAC1B,WAAO,MAAM;AACX,WAAK,gBAAgB,OAAO,SAAS;AACrC,UAAI,KAAK,gBAAgB,SAAS,GAAG;AACnC,aAAK,OAAO,QAAQ;AACpB,aAAK,QAAQ;AACb,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import {useSyncExternalStore} from 'react';\nimport {deepClone} from '../../shared/src/deep-clone.js';\nimport type {Immutable} from '../../shared/src/immutable.js';\nimport type {\n Query,\n QueryType,\n ReadonlyJSONValue,\n Smash,\n TableSchema,\n TypedView,\n} from '../../zero-client/src/mod.js';\nimport type {AdvancedQuery} from '../../zql/src/zql/query/query-internal.js';\nimport {useZero} from './use-zero.js';\n\nexport function useQuery<\n TSchema extends TableSchema,\n TReturn extends QueryType,\n>(q: Query<TSchema, TReturn>, enable: boolean = true): Smash<TReturn> {\n const z = useZero();\n const view = viewStore.getView(\n z.clientID,\n q as AdvancedQuery<TSchema, TReturn>,\n enable,\n );\n // https://react.dev/reference/react/useSyncExternalStore\n return useSyncExternalStore(view.subscribeReactInternals, view.getSnapshot);\n}\n\nconst emptyArray: unknown[] = [];\nconst disabledSubscriber = () => () => {};\n\n/**\n * A global store of all active views.\n *\n * React subscribes and unsubscribes to these views\n * via `useSyncExternalStore`.\n *\n * Managing views through `useEffect` or `useLayoutEffect` causes\n * inconsistencies because effects run after render.\n *\n * For example, if useQuery used use*Effect in the component below:\n * ```ts\n * function Foo({issueID}) {\n * const issue = useQuery(z.query.issue.where('id', issueID).one());\n * if (issue?.id !== undefined && issue.id !== issueID) {\n * console.log('MISMATCH!', issue.id, issueID);\n * }\n * }\n * ```\n *\n * `MISMATCH` will be printed whenever the `issueID` prop changes.\n *\n * This is because the component will render once with\n * the old state returned from `useQuery`. Then the effect inside\n * `useQuery` will run. The component will render again with the new\n * state. This inconsistent transition can cause unexpected results.\n *\n * Emulating `useEffect` via `useState` and `if` causes resource leaks.\n * That is:\n *\n * ```ts\n * function useQuery(q) {\n * const [oldHash, setOldHash] = useState();\n * if (hash(q) !== oldHash) {\n * // make new view\n * }\n *\n * useEffect(() => {\n * return () => view.destroy();\n * }, []);\n * }\n * ```\n *\n * I'm not sure why but in strict mode the cleanup function\n * fails to be called for the first instance of the view and only\n * cleans up later instances.\n *\n * Swapping `useState` to `useRef` has similar problems.\n */\nclass ViewStore {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #views = new Map<string, ViewWrapper<any, any>>();\n\n getView<TSchema extends TableSchema, TReturn extends QueryType>(\n clientID: string,\n query: AdvancedQuery<TSchema, TReturn>,\n enabled: boolean,\n ): {\n getSnapshot: () => Smash<TReturn>;\n subscribeReactInternals: (internals: () => void) => () => void;\n } {\n if (!enabled) {\n return {\n getSnapshot: () =>\n (query.format.singular ? undefined : emptyArray) as Smash<TReturn>,\n subscribeReactInternals: disabledSubscriber,\n };\n }\n\n const hash = query.hash() + clientID;\n let existing = this.#views.get(hash);\n if (!existing) {\n existing = new ViewWrapper(\n query,\n view => {\n const lastView = this.#views.get(hash);\n // I don't think this can happen\n // but lets guard against it so we don't\n // leak resources.\n if (lastView && lastView !== view) {\n throw new Error('View already exists');\n }\n this.#views.set(hash, view);\n },\n () => {\n this.#views.delete(hash);\n },\n ) as ViewWrapper<TSchema, TReturn>;\n this.#views.set(hash, existing);\n }\n return existing;\n }\n}\n\nconst viewStore = new ViewStore();\n\n/**\n * This wraps and ref counts a view.\n *\n * The only signal we have from React as to whether or not it is\n * done with a view is when it calls `unsubscribe`.\n *\n * In non-strict-mode we can clean up the view as soon\n * as the listener count goes to 0.\n *\n * In strict-mode, the listener cound will go to 0 then a\n * new listener for the same view is immeidatiely added back.\n *\n * This is why the `onMaterialized` and `onDematerialized` callbacks exist --\n * they allow a view which React is still referencing to be added\n * back into the store when React re-subscribes to it.\n *\n * This wrapper also exists to deal with the various\n * `useSyncExternalStore` caveats that cause excessive\n * re-renders and materializations.\n *\n * See: https://react.dev/reference/react/useSyncExternalStore#caveats\n * Especially:\n * 1. The store snapshot returned by getSnapshot must be immutable. If the underlying store has mutable data, return a new immutable snapshot if the data has changed. Otherwise, return a cached last snapshot.\n * 2. If a different subscribe function is passed during a re-render, React will re-subscribe to the store using the newly passed subscribe function. You can prevent this by declaring subscribe outside the component.\n */\nclass ViewWrapper<TSchema extends TableSchema, TReturn extends QueryType> {\n #view: TypedView<Smash<TReturn>> | undefined;\n readonly #defaultSnapshot: Smash<TReturn>;\n readonly #onDematerialized;\n readonly #onMaterialized;\n readonly #query: AdvancedQuery<TSchema, TReturn>;\n #snapshot: Smash<TReturn>;\n #reactInternals: Set<() => void>;\n\n constructor(\n query: AdvancedQuery<TSchema, TReturn>,\n onMaterialized: (view: ViewWrapper<TSchema, TReturn>) => void,\n onDematerialized: () => void,\n ) {\n this.#defaultSnapshot = (query.format.singular\n ? undefined\n : emptyArray) as unknown as Smash<TReturn>;\n this.#snapshot = this.#defaultSnapshot;\n this.#onMaterialized = onMaterialized;\n this.#onDematerialized = onDematerialized;\n this.#reactInternals = new Set();\n this.#query = query;\n }\n\n #onData = (snap: Immutable<Smash<TReturn>>) => {\n this.#snapshot = (\n snap === undefined ? snap : deepClone(snap as ReadonlyJSONValue)\n ) as Smash<TReturn>;\n for (const internals of this.#reactInternals) {\n internals();\n }\n };\n\n #materializeIfNeeded = () => {\n if (this.#view) {\n return;\n }\n\n this.#view = this.#query.materialize();\n this.#view.addListener(this.#onData);\n\n this.#onMaterialized(this);\n };\n\n getSnapshot = () => this.#snapshot;\n\n subscribeReactInternals = (internals: () => void): (() => void) => {\n this.#reactInternals.add(internals);\n this.#materializeIfNeeded();\n return () => {\n this.#reactInternals.delete(internals);\n if (this.#reactInternals.size === 0) {\n this.#view?.destroy();\n this.#view = undefined;\n this.#onDematerialized();\n }\n };\n };\n}\n", "import {hasOwn} from './has-own.js';\nimport type {JSONValue, ReadonlyJSONValue} from './json.js';\n\nexport function deepClone(value: ReadonlyJSONValue): JSONValue {\n const seen: Array<ReadonlyJSONValue> = [];\n return internalDeepClone(value, seen);\n}\n\nexport function internalDeepClone(\n value: ReadonlyJSONValue,\n seen: Array<ReadonlyJSONValue>,\n): JSONValue {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n case 'string':\n case 'undefined':\n return value;\n case 'object': {\n if (value === null) {\n return null;\n }\n if (seen.includes(value)) {\n throw new Error('Cyclic object');\n }\n seen.push(value);\n if (Array.isArray(value)) {\n const rv = value.map(v => internalDeepClone(v, seen));\n seen.pop();\n return rv;\n }\n\n const obj: JSONValue = {};\n\n for (const k in value) {\n if (hasOwn(value, k)) {\n const v = (value as Record<string, ReadonlyJSONValue>)[k];\n if (v !== undefined) {\n obj[k] = internalDeepClone(v, seen);\n }\n }\n }\n seen.pop();\n return obj;\n }\n\n default:\n throw new Error(`Invalid type: ${typeof value}`);\n }\n}\n", "import {createContext, useContext} from 'react';\nimport type {Schema, Zero} from '../../zero-client/src/mod.js';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst ZeroContext = createContext<Zero<Schema> | undefined>(undefined);\n\nexport function useZero<S extends Schema>(): Zero<S> {\n const zero = useContext(ZeroContext);\n if (zero === undefined) {\n throw new Error('useZero must be used within a ZeroProvider');\n }\n return zero as Zero<S>;\n}\n\nexport function createUseZero<S extends Schema>() {\n return () => useZero<S>();\n}\n\nexport function ZeroProvider<S extends Schema>({\n children,\n zero,\n}: {\n children: React.ReactNode;\n zero: Zero<S>;\n}) {\n return (\n <ZeroContext.Provider value={zero as Zero<Schema>}>\n {children}\n </ZeroContext.Provider>\n );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns `arr` as is if none of the elements are `undefined`.
3
+ * Otherwise returns a new array with only defined elements in `arr`.
4
+ */
5
+ export declare function defined<T>(arr: (T | undefined)[]): T[];
6
+ //# sourceMappingURL=arrays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../../../shared/src/arrays.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CActD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Returns `arr` as is if none of the elements are `undefined`.
3
+ * Otherwise returns a new array with only defined elements in `arr`.
4
+ */
5
+ export function defined(arr) {
6
+ // avoid an array copy if possible
7
+ let i = arr.findIndex(x => x === undefined);
8
+ if (i < 0) {
9
+ return arr;
10
+ }
11
+ const defined = arr.slice(0, i);
12
+ for (i++; i < arr.length; i++) {
13
+ const x = arr[i];
14
+ if (x !== undefined) {
15
+ defined.push(x);
16
+ }
17
+ }
18
+ return defined;
19
+ }
20
+ //# sourceMappingURL=arrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../../../shared/src/arrays.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAI,GAAsB;IAC/C,kCAAkC;IAClC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,OAAO,GAAU,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,GAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAQ,CAAC;IAC5C,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -7,5 +7,6 @@ declare class IterWrapper<T> implements Iterable<T> {
7
7
  filter(p: (t: T, index: number) => boolean): IterWrapper<T>;
8
8
  }
9
9
  export declare function wrapIterable<T>(iter: Iterable<T>): IterWrapper<T>;
10
+ export declare function mergeIterables<T>(iterables: Iterable<T>[], comparator: (l: T, r: T) => number, distinct?: boolean): IterableIterator<T>;
10
11
  export {};
11
12
  //# sourceMappingURL=iterables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iterables.d.ts","sourceRoot":"","sources":["../../../../shared/src/iterables.ts"],"names":[],"mappings":"AAAA,wBAAiB,aAAa,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,2BAIxD;AA2BD,cAAM,WAAW,CAAC,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACN,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAI7B,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAIrD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;CAG5D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEjE"}
1
+ {"version":3,"file":"iterables.d.ts","sourceRoot":"","sources":["../../../../shared/src/iterables.ts"],"names":[],"mappings":"AAEA,wBAAiB,aAAa,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,2BAIxD;AA2BD,cAAM,WAAW,CAAC,CAAC,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IACzC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACN,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAI7B,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAIrD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;CAG5D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEjE;AAED,wBAAiB,cAAc,CAAC,CAAC,EAC/B,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EACxB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,EAClC,QAAQ,UAAQ,GACf,gBAAgB,CAAC,CAAC,CAAC,CAoCrB"}
@@ -1,3 +1,4 @@
1
+ import { assert } from './asserts.js';
1
2
  export function* joinIterables(...iters) {
2
3
  for (const iter of iters) {
3
4
  yield* iter;
@@ -37,4 +38,36 @@ class IterWrapper {
37
38
  export function wrapIterable(iter) {
38
39
  return new IterWrapper(iter);
39
40
  }
41
+ export function* mergeIterables(iterables, comparator, distinct = false) {
42
+ const iterators = iterables.map(i => i[Symbol.iterator]());
43
+ try {
44
+ const current = iterators.map(i => i.next());
45
+ let lastYielded;
46
+ while (current.some(c => !c.done)) {
47
+ const min = current.reduce((acc, c, i) => {
48
+ if (c.done) {
49
+ return acc;
50
+ }
51
+ if (acc === undefined || comparator(c.value, acc[0]) < 0) {
52
+ return [c.value, i];
53
+ }
54
+ return acc;
55
+ }, undefined);
56
+ assert(min !== undefined, 'min is undefined');
57
+ current[min[1]] = iterators[min[1]].next();
58
+ if (lastYielded !== undefined &&
59
+ distinct &&
60
+ comparator(lastYielded, min[0]) === 0) {
61
+ continue;
62
+ }
63
+ lastYielded = min[0];
64
+ yield min[0];
65
+ }
66
+ }
67
+ finally {
68
+ for (const it of iterators) {
69
+ it.return?.();
70
+ }
71
+ }
72
+ }
40
73
  //# sourceMappingURL=iterables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"iterables.js","sourceRoot":"","sources":["../../../../shared/src/iterables.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,CAAC,CAAC,aAAa,CAAI,GAAG,KAAoB;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,CAAC,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,CAAC,UAAU,CAClB,IAAiB,EACjB,CAAmC;IAEnC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,CAAC,OAAO,CACf,IAAiB,EACjB,CAA6B;IAE7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,oDAAoD;AAEpD,MAAM,WAAW;IACf,IAAI,CAAc;IAClB,YAAY,IAAiB;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtC,CAAC;IAED,GAAG,CAAI,CAA6B;QAClC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,CAAmC;QACxC,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAI,IAAiB;IAC/C,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"iterables.js","sourceRoot":"","sources":["../../../../shared/src/iterables.ts"],"names":[],"mappings":"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"}
package/out/solid.js CHANGED
@@ -1,9 +1,23 @@
1
- import "./chunk-NKGIR6IA.js";
1
+ import {
2
+ Zero
3
+ } from "./chunk-TBA526RR.js";
4
+ import "./chunk-HARIWJ2J.js";
5
+ import "./chunk-ULOTOBTC.js";
2
6
  import {
3
7
  applyChange
4
8
  } from "./chunk-RCVGGCMG.js";
5
9
  import "./chunk-F5QR3K72.js";
6
10
 
11
+ // ../zero-solid/src/create-zero.ts
12
+ import { batch } from "solid-js";
13
+ function createZero(options) {
14
+ const opts = {
15
+ ...options,
16
+ batchViewUpdates: batch
17
+ };
18
+ return new Zero(opts);
19
+ }
20
+
7
21
  // ../zero-solid/src/use-query.ts
8
22
  import { createMemo, onCleanup } from "solid-js";
9
23
 
@@ -79,6 +93,7 @@ function useQuery(querySignal) {
79
93
  });
80
94
  }
81
95
  export {
96
+ createZero,
82
97
  useQuery
83
98
  };
84
99
  //# sourceMappingURL=solid.js.map
package/out/solid.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../zero-solid/src/use-query.ts", "../../zero-solid/src/solid-view.ts"],
4
- "sourcesContent": ["import {type Accessor, createMemo, onCleanup} from 'solid-js';\nimport type {\n Query,\n QueryInternal,\n QueryType,\n Smash,\n TableSchema,\n} from '../../zero-internal/src/mod.js';\nimport {solidViewFactory} from './solid-view.js';\n\nexport function useQuery<\n TSchema extends TableSchema,\n TReturn extends QueryType,\n>(querySignal: () => Query<TSchema, TReturn>): Accessor<Smash<TReturn>> {\n return createMemo(() => {\n const query = querySignal();\n const view = (query as QueryInternal<TSchema, TReturn>).materialize(\n solidViewFactory,\n );\n\n onCleanup(() => {\n view.destroy();\n });\n\n return view.data;\n });\n}\n", "import {createStore, produce, type SetStoreFunction} from 'solid-js/store';\nimport {\n applyChange,\n type Change,\n type Entry,\n type Format,\n type Input,\n type Output,\n type Query,\n type QueryType,\n type Smash,\n type TableSchema,\n type View,\n} from '../../zero-internal/src/mod.js';\n\nexport class SolidView<V extends View> implements Output {\n readonly #input: Input;\n readonly #format: Format;\n readonly #onDestroy: () => void;\n\n // Synthetic \"root\" entry that has a single \"\" relationship, so that we can\n // treat all changes, including the root change, generically.\n readonly #root: Entry;\n readonly #setRoot: SetStoreFunction<Entry>;\n\n constructor(\n input: Input,\n format: Format = {singular: false, relationships: {}},\n onDestroy: () => void = () => {},\n ) {\n this.#input = input;\n this.#format = format;\n this.#onDestroy = onDestroy;\n this.#input.setOutput(this);\n [this.#root, this.#setRoot] = createStore({\n '': format.singular ? undefined : [],\n });\n\n this.#setRoot(\n produce(draftRoot => {\n for (const node of this.#input.fetch({})) {\n applyChange(\n draftRoot,\n {type: 'add', node},\n this.#input.getSchema(),\n '',\n this.#format,\n );\n }\n }),\n );\n }\n\n get data() {\n return this.#root[''] as V;\n }\n\n destroy() {\n this.#onDestroy();\n }\n\n push(change: Change): void {\n this.#setRoot(\n produce(draftRoot => {\n applyChange(\n draftRoot,\n change,\n this.#input.getSchema(),\n '',\n this.#format,\n );\n }),\n );\n }\n}\n\nexport function solidViewFactory<\n TSchema extends TableSchema,\n TReturn extends QueryType,\n>(\n _query: Query<TSchema, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n): SolidView<Smash<TReturn>> {\n const v = new SolidView<Smash<TReturn>>(input, format, onDestroy);\n\n return v;\n}\n"],
5
- "mappings": ";;;;;;;AAAA,SAAuB,YAAY,iBAAgB;;;ACAnD,SAAQ,aAAa,eAAqC;AAenD,IAAM,YAAN,MAAkD;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EAET,YACE,OACA,SAAiB,EAAC,UAAU,OAAO,eAAe,CAAC,EAAC,GACpD,YAAwB,MAAM;AAAA,EAAC,GAC/B;AACA,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,OAAO,UAAU,IAAI;AAC1B,KAAC,KAAK,OAAO,KAAK,QAAQ,IAAI,YAAY;AAAA,MACxC,IAAI,OAAO,WAAW,SAAY,CAAC;AAAA,IACrC,CAAC;AAED,SAAK;AAAA,MACH,QAAQ,eAAa;AACnB,mBAAW,QAAQ,KAAK,OAAO,MAAM,CAAC,CAAC,GAAG;AACxC;AAAA,YACE;AAAA,YACA,EAAC,MAAM,OAAO,KAAI;AAAA,YAClB,KAAK,OAAO,UAAU;AAAA,YACtB;AAAA,YACA,KAAK;AAAA,UACP;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,IAAI,OAAO;AACT,WAAO,KAAK,MAAM,EAAE;AAAA,EACtB;AAAA,EAEA,UAAU;AACR,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,KAAK,QAAsB;AACzB,SAAK;AAAA,MACH,QAAQ,eAAa;AACnB;AAAA,UACE;AAAA,UACA;AAAA,UACA,KAAK,OAAO,UAAU;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,SAAS,iBAId,QACA,OACA,QACA,WAC2B;AAC3B,QAAM,IAAI,IAAI,UAA0B,OAAO,QAAQ,SAAS;AAEhE,SAAO;AACT;;;AD9EO,SAAS,SAGd,aAAsE;AACtE,SAAO,WAAW,MAAM;AACtB,UAAM,QAAQ,YAAY;AAC1B,UAAM,OAAQ,MAA0C;AAAA,MACtD;AAAA,IACF;AAEA,cAAU,MAAM;AACd,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,WAAO,KAAK;AAAA,EACd,CAAC;AACH;",
3
+ "sources": ["../../zero-solid/src/create-zero.ts", "../../zero-solid/src/use-query.ts", "../../zero-solid/src/solid-view.ts"],
4
+ "sourcesContent": ["import {batch} from 'solid-js';\nimport {\n Zero,\n type Schema,\n type ZeroOptions,\n} from '../../zero-client/src/mod.js';\nimport type {ZeroAdvancedOptions} from '../../zero-advanced/src/mod.js';\n\nexport function createZero<S extends Schema>(options: ZeroOptions<S>): Zero<S> {\n const opts: ZeroAdvancedOptions<S> = {\n ...options,\n batchViewUpdates: batch,\n };\n return new Zero(opts);\n}\n", "import {type Accessor, createMemo, onCleanup} from 'solid-js';\nimport type {\n Query,\n AdvancedQuery,\n QueryType,\n Smash,\n TableSchema,\n} from '../../zero-advanced/src/mod.js';\nimport {solidViewFactory} from './solid-view.js';\n\nexport function useQuery<\n TSchema extends TableSchema,\n TReturn extends QueryType,\n>(querySignal: () => Query<TSchema, TReturn>): Accessor<Smash<TReturn>> {\n return createMemo(() => {\n const query = querySignal();\n const view = (query as AdvancedQuery<TSchema, TReturn>).materialize(\n solidViewFactory,\n );\n\n onCleanup(() => {\n view.destroy();\n });\n\n return view.data;\n });\n}\n", "import {createStore, produce, type SetStoreFunction} from 'solid-js/store';\nimport {\n applyChange,\n type Change,\n type Entry,\n type Format,\n type Input,\n type Output,\n type Query,\n type QueryType,\n type Smash,\n type TableSchema,\n type View,\n} from '../../zero-advanced/src/mod.js';\n\nexport class SolidView<V extends View> implements Output {\n readonly #input: Input;\n readonly #format: Format;\n readonly #onDestroy: () => void;\n\n // Synthetic \"root\" entry that has a single \"\" relationship, so that we can\n // treat all changes, including the root change, generically.\n readonly #root: Entry;\n readonly #setRoot: SetStoreFunction<Entry>;\n\n constructor(\n input: Input,\n format: Format = {singular: false, relationships: {}},\n onDestroy: () => void = () => {},\n ) {\n this.#input = input;\n this.#format = format;\n this.#onDestroy = onDestroy;\n this.#input.setOutput(this);\n [this.#root, this.#setRoot] = createStore({\n '': format.singular ? undefined : [],\n });\n\n this.#setRoot(\n produce(draftRoot => {\n for (const node of this.#input.fetch({})) {\n applyChange(\n draftRoot,\n {type: 'add', node},\n this.#input.getSchema(),\n '',\n this.#format,\n );\n }\n }),\n );\n }\n\n get data() {\n return this.#root[''] as V;\n }\n\n destroy() {\n this.#onDestroy();\n }\n\n push(change: Change): void {\n this.#setRoot(\n produce(draftRoot => {\n applyChange(\n draftRoot,\n change,\n this.#input.getSchema(),\n '',\n this.#format,\n );\n }),\n );\n }\n}\n\nexport function solidViewFactory<\n TSchema extends TableSchema,\n TReturn extends QueryType,\n>(\n _query: Query<TSchema, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n): SolidView<Smash<TReturn>> {\n const v = new SolidView<Smash<TReturn>>(input, format, onDestroy);\n\n return v;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;AAAA,SAAQ,aAAY;AAQb,SAAS,WAA6B,SAAkC;AAC7E,QAAM,OAA+B;AAAA,IACnC,GAAG;AAAA,IACH,kBAAkB;AAAA,EACpB;AACA,SAAO,IAAI,KAAK,IAAI;AACtB;;;ACdA,SAAuB,YAAY,iBAAgB;;;ACAnD,SAAQ,aAAa,eAAqC;AAenD,IAAM,YAAN,MAAkD;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EAET,YACE,OACA,SAAiB,EAAC,UAAU,OAAO,eAAe,CAAC,EAAC,GACpD,YAAwB,MAAM;AAAA,EAAC,GAC/B;AACA,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,OAAO,UAAU,IAAI;AAC1B,KAAC,KAAK,OAAO,KAAK,QAAQ,IAAI,YAAY;AAAA,MACxC,IAAI,OAAO,WAAW,SAAY,CAAC;AAAA,IACrC,CAAC;AAED,SAAK;AAAA,MACH,QAAQ,eAAa;AACnB,mBAAW,QAAQ,KAAK,OAAO,MAAM,CAAC,CAAC,GAAG;AACxC;AAAA,YACE;AAAA,YACA,EAAC,MAAM,OAAO,KAAI;AAAA,YAClB,KAAK,OAAO,UAAU;AAAA,YACtB;AAAA,YACA,KAAK;AAAA,UACP;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,IAAI,OAAO;AACT,WAAO,KAAK,MAAM,EAAE;AAAA,EACtB;AAAA,EAEA,UAAU;AACR,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,KAAK,QAAsB;AACzB,SAAK;AAAA,MACH,QAAQ,eAAa;AACnB;AAAA,UACE;AAAA,UACA;AAAA,UACA,KAAK,OAAO,UAAU;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,SAAS,iBAId,QACA,OACA,QACA,WAC2B;AAC3B,QAAM,IAAI,IAAI,UAA0B,OAAO,QAAQ,SAAS;AAEhE,SAAO;AACT;;;AD9EO,SAAS,SAGd,aAAsE;AACtE,SAAO,WAAW,MAAM;AACtB,UAAM,QAAQ,YAAY;AAC1B,UAAM,OAAQ,MAA0C;AAAA,MACtD;AAAA,IACF;AAEA,cAAU,MAAM;AACd,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,WAAO,KAAK;AAAA,EACd,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,2 @@
1
+ export * from '../../zero-advanced/src/mod.js';
2
+ //# sourceMappingURL=advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../../src/advanced.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
@@ -2,7 +2,8 @@ export type { Change } from '../../zql/src/zql/ivm/change.js';
2
2
  export type { Input, Output } from '../../zql/src/zql/ivm/operator.js';
3
3
  export { applyChange } from '../../zql/src/zql/ivm/view-apply-change.js';
4
4
  export type { Entry, Format, View } from '../../zql/src/zql/ivm/view.js';
5
- export type { QueryInternal } from '../../zql/src/zql/query/query-internal.js';
5
+ export type { AdvancedQuery } from '../../zql/src/zql/query/query-internal.js';
6
6
  export type { Query, QueryType, Smash } from '../../zql/src/zql/query/query.js';
7
7
  export type { TableSchema } from '../../zql/src/zql/query/schema.js';
8
+ export type { ZeroAdvancedOptions } from '../../zero-client/src/client/options.js';
8
9
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../zero-internal/src/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,MAAM,EAAC,MAAM,iCAAiC,CAAC;AAC5D,YAAY,EAAC,KAAK,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAC,WAAW,EAAC,MAAM,4CAA4C,CAAC;AACvE,YAAY,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAC,aAAa,EAAC,MAAM,2CAA2C,CAAC;AAC7E,YAAY,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAC,MAAM,kCAAkC,CAAC;AAC9E,YAAY,EAAC,WAAW,EAAC,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../zero-advanced/src/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,MAAM,EAAC,MAAM,iCAAiC,CAAC;AAC5D,YAAY,EAAC,KAAK,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAC,WAAW,EAAC,MAAM,4CAA4C,CAAC;AACvE,YAAY,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,+BAA+B,CAAC;AACvE,YAAY,EAAC,aAAa,EAAC,MAAM,2CAA2C,CAAC;AAC7E,YAAY,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAC,MAAM,kCAAkC,CAAC;AAC9E,YAAY,EAAC,WAAW,EAAC,MAAM,mCAAmC,CAAC;AACnE,YAAY,EAAC,mBAAmB,EAAC,MAAM,yCAAyC,CAAC"}
@@ -10,6 +10,7 @@ export declare class ConfigQuery<TTableSchema extends TableSchema, TReturn exten
10
10
  get ast(): AST;
11
11
  protected _newQuery<TSchema extends TableSchema, TReturn extends QueryType>(schema: NormalizedTableSchema, ast: AST, format: Format | undefined): Query<TSchema, TReturn>;
12
12
  materialize(): TypedView<Smash<TReturn>>;
13
+ run(): Smash<TReturn>;
13
14
  preload(): {
14
15
  cleanup: () => void;
15
16
  complete: Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"config-query.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/config/config-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAC,aAAa,EAAC,MAAM,0CAA0C,CAAC;AACvE,OAAO,KAAK,EACV,qBAAqB,EACrB,KAAK,EACL,SAAS,EACT,KAAK,EACN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,0CAA0C,CAAC;AAExE,qBAAa,WAAW,CACtB,YAAY,SAAS,WAAW,EAChC,OAAO,SAAS,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAC/D,SAAQ,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC;gBAE1C,MAAM,EAAE,qBAAqB,EAC7B,GAAG,GAAE,GAA+B,EACpC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS;IAK7B,IAAI,GAAG,QAEN;IAED,SAAS,CAAC,SAAS,CAAC,OAAO,SAAS,WAAW,EAAE,OAAO,SAAS,SAAS,EACxE,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAI1B,WAAW,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAIxC,OAAO,IAAI;QACT,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB;CAGF"}
1
+ {"version":3,"file":"config-query.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/config/config-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AAC7D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAC,aAAa,EAAC,MAAM,0CAA0C,CAAC;AACvE,OAAO,KAAK,EACV,qBAAqB,EACrB,KAAK,EACL,SAAS,EACT,KAAK,EACN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sCAAsC,CAAC;AACtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,0CAA0C,CAAC;AAExE,qBAAa,WAAW,CACtB,YAAY,SAAS,WAAW,EAChC,OAAO,SAAS,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAC/D,SAAQ,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC;gBAE1C,MAAM,EAAE,qBAAqB,EAC7B,GAAG,GAAE,GAA+B,EACpC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS;IAK7B,IAAI,GAAG,QAEN;IAED,SAAS,CAAC,SAAS,CAAC,OAAO,SAAS,WAAW,EAAE,OAAO,SAAS,SAAS,EACxE,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAI1B,WAAW,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAIxC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;IAIrB,OAAO,IAAI;QACT,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB;CAGF"}
@@ -12,6 +12,9 @@ export class ConfigQuery extends AbstractQuery {
12
12
  materialize() {
13
13
  throw new Error('ConfigQuery cannot be materialized');
14
14
  }
15
+ run() {
16
+ throw new Error('ConfigQuery cannot be run');
17
+ }
15
18
  preload() {
16
19
  throw new Error('ConfigQuery cannot be preloaded');
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-query.js","sourceRoot":"","sources":["../../../../../zero-cache/src/config/config-query.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,aAAa,EAAC,MAAM,0CAA0C,CAAC;AAUvE,MAAM,OAAO,WAGX,SAAQ,aAAoC;IAC5C,YACE,MAA6B,EAC7B,MAAW,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAC,EACpC,MAA2B;QAE3B,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAES,SAAS,CACjB,MAA6B,EAC7B,GAAQ,EACR,MAA0B;QAE1B,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QAIL,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;CACF"}
1
+ {"version":3,"file":"config-query.js","sourceRoot":"","sources":["../../../../../zero-cache/src/config/config-query.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,aAAa,EAAC,MAAM,0CAA0C,CAAC;AAUvE,MAAM,OAAO,WAGX,SAAQ,aAAoC;IAC5C,YACE,MAA6B,EAC7B,MAAW,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAC,EACpC,MAA2B;QAE3B,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAES,SAAS,CACjB,MAA6B,EAC7B,GAAQ,EACR,MAA0B;QAE1B,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,GAAG;QACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QAIL,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;CACF"}