@rocicorp/zero 0.18.2025032401 → 0.18.2025032800

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 (234) hide show
  1. package/out/advanced.js +0 -1
  2. package/out/{chunk-5WXONOGR.js → chunk-3S3SDA44.js} +205 -140
  3. package/out/chunk-3S3SDA44.js.map +7 -0
  4. package/out/{chunk-2B2QE5AT.js → chunk-MB3DEFRC.js} +25 -2
  5. package/out/{chunk-2B2QE5AT.js.map → chunk-MB3DEFRC.js.map} +2 -2
  6. package/out/{chunk-DSUPSGE4.js → chunk-NBZURO2P.js} +81 -26
  7. package/out/{chunk-DSUPSGE4.js.map → chunk-NBZURO2P.js.map} +4 -4
  8. package/out/{inspector-ROITQB3J.js → inspector-SH2ZK7O3.js} +253 -102
  9. package/out/inspector-SH2ZK7O3.js.map +7 -0
  10. package/out/react.js +2 -3
  11. package/out/react.js.map +2 -2
  12. package/out/shared/src/sentinels.d.ts +3 -0
  13. package/out/shared/src/sentinels.d.ts.map +1 -0
  14. package/out/solid.js +3 -4
  15. package/out/solid.js.map +2 -2
  16. package/out/z2s/src/compiler.d.ts +5 -3
  17. package/out/z2s/src/compiler.d.ts.map +1 -1
  18. package/out/z2s/src/compiler.js +116 -16
  19. package/out/z2s/src/compiler.js.map +1 -1
  20. package/out/z2s/src/sql.d.ts +8 -0
  21. package/out/z2s/src/sql.d.ts.map +1 -1
  22. package/out/z2s/src/sql.js +205 -11
  23. package/out/z2s/src/sql.js.map +1 -1
  24. package/out/zero/src/zero-cache-dev.d.ts +1 -1
  25. package/out/zero/src/zero-cache-dev.d.ts.map +1 -1
  26. package/out/zero/src/zero-cache-dev.js +1 -1
  27. package/out/zero/src/zero-cache-dev.js.map +1 -1
  28. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  29. package/out/zero-cache/src/auth/load-permissions.js +2 -1
  30. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  31. package/out/zero-cache/src/config/zero-config.d.ts +1 -1
  32. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  33. package/out/zero-cache/src/config/zero-config.js +6 -3
  34. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  35. package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
  36. package/out/zero-cache/src/db/migration-lite.js +9 -9
  37. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  38. package/out/zero-cache/src/scripts/deploy-permissions.d.ts +1 -1
  39. package/out/zero-cache/src/scripts/deploy-permissions.d.ts.map +1 -1
  40. package/out/zero-cache/src/scripts/deploy-permissions.js +1 -1
  41. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  42. package/out/zero-cache/src/server/multi/config.d.ts +1 -1
  43. package/out/zero-cache/src/server/multi/main.d.ts +1 -1
  44. package/out/zero-cache/src/server/multi/main.d.ts.map +1 -1
  45. package/out/zero-cache/src/server/multi/main.js +1 -1
  46. package/out/zero-cache/src/server/multi/main.js.map +1 -1
  47. package/out/zero-cache/src/server/multi/run-worker.d.ts +1 -1
  48. package/out/zero-cache/src/server/multi/run-worker.d.ts.map +1 -1
  49. package/out/zero-cache/src/server/multi/run-worker.js +1 -1
  50. package/out/zero-cache/src/server/multi/run-worker.js.map +1 -1
  51. package/out/zero-cache/src/server/syncer.js +1 -1
  52. package/out/zero-cache/src/server/syncer.js.map +1 -1
  53. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  54. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  55. package/out/zero-cache/src/services/change-source/pg/change-source.js +96 -42
  56. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  57. package/out/zero-cache/src/services/change-source/pg/decommission.d.ts.map +1 -1
  58. package/out/zero-cache/src/services/change-source/pg/decommission.js +16 -5
  59. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  60. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -2
  61. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  62. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +18 -31
  63. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  64. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +7 -35
  65. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
  66. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +42 -74
  67. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  68. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +1 -1
  69. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -1
  70. package/out/zero-cache/src/services/change-source/pg/schema/init.js +69 -21
  71. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  72. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +54 -27
  73. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts.map +1 -1
  74. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +53 -16
  75. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  76. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +7 -5
  77. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  78. package/out/zero-cache/src/services/mutagen/mutagen.js +20 -5
  79. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  80. package/out/zero-cache/src/services/mutagen/pusher.d.ts +1 -1
  81. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  82. package/out/zero-cache/src/services/mutagen/pusher.js +24 -10
  83. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  84. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  85. package/out/zero-cache/src/services/replicator/change-processor.js +25 -14
  86. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  87. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +8 -4
  88. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  89. package/out/zero-cache/src/services/view-syncer/client-handler.js +47 -23
  90. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  91. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  92. package/out/zero-cache/src/services/view-syncer/client-schema.js +8 -2
  93. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  94. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -0
  95. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  96. package/out/zero-cache/src/services/view-syncer/cvr-store.js +35 -0
  97. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  98. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -0
  99. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  100. package/out/zero-cache/src/services/view-syncer/view-syncer.js +32 -20
  101. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  102. package/out/zero-cache/src/types/bigint-json.d.ts +1 -1
  103. package/out/zero-cache/src/types/bigint-json.d.ts.map +1 -1
  104. package/out/zero-cache/src/types/bigint-json.js.map +1 -1
  105. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  106. package/out/zero-cache/src/types/lite.js +4 -3
  107. package/out/zero-cache/src/types/lite.js.map +1 -1
  108. package/out/zero-cache/src/types/shards.d.ts +4 -0
  109. package/out/zero-cache/src/types/shards.d.ts.map +1 -1
  110. package/out/zero-cache/src/types/shards.js +1 -1
  111. package/out/zero-cache/src/types/shards.js.map +1 -1
  112. package/out/zero-cache/src/workers/connection.d.ts +1 -2
  113. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  114. package/out/zero-cache/src/workers/connection.js +64 -21
  115. package/out/zero-cache/src/workers/connection.js.map +1 -1
  116. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  117. package/out/zero-cache/src/workers/replicator.js +4 -8
  118. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  119. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
  120. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +16 -7
  121. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  122. package/out/zero-client/src/client/custom.d.ts +9 -11
  123. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  124. package/out/zero-client/src/client/inspector/inspector.d.ts +2 -1
  125. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  126. package/out/zero-client/src/client/inspector/types.d.ts +7 -2
  127. package/out/zero-client/src/client/inspector/types.d.ts.map +1 -1
  128. package/out/zero-client/src/client/mutation-tracker.d.ts +23 -8
  129. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  130. package/out/zero-client/src/client/options.d.ts +7 -2
  131. package/out/zero-client/src/client/options.d.ts.map +1 -1
  132. package/out/zero-client/src/client/query-manager.d.ts +2 -1
  133. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  134. package/out/zero-client/src/client/zero.d.ts +1 -1
  135. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  136. package/out/zero-client/src/mod.d.ts +7 -1
  137. package/out/zero-client/src/mod.d.ts.map +1 -1
  138. package/out/zero-pg/src/custom.d.ts +2 -13
  139. package/out/zero-pg/src/custom.d.ts.map +1 -1
  140. package/out/zero-pg/src/custom.js +11 -14
  141. package/out/zero-pg/src/custom.js.map +1 -1
  142. package/out/zero-pg/src/mod.d.ts +1 -2
  143. package/out/zero-pg/src/mod.d.ts.map +1 -1
  144. package/out/zero-pg/src/mod.js +1 -1
  145. package/out/zero-pg/src/mod.js.map +1 -1
  146. package/out/zero-pg/src/query.d.ts +2 -2
  147. package/out/zero-pg/src/query.d.ts.map +1 -1
  148. package/out/zero-pg/src/query.js +8 -15
  149. package/out/zero-pg/src/query.js.map +1 -1
  150. package/out/zero-pg/src/web.d.ts +3 -7
  151. package/out/zero-pg/src/web.d.ts.map +1 -1
  152. package/out/zero-pg/src/web.js +9 -15
  153. package/out/zero-pg/src/web.js.map +1 -1
  154. package/out/zero-protocol/src/client-schema.d.ts +1 -1
  155. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  156. package/out/zero-protocol/src/client-schema.js +1 -1
  157. package/out/zero-protocol/src/client-schema.js.map +1 -1
  158. package/out/zero-protocol/src/down.d.ts +19 -4
  159. package/out/zero-protocol/src/down.d.ts.map +1 -1
  160. package/out/zero-protocol/src/down.js +2 -2
  161. package/out/zero-protocol/src/down.js.map +1 -1
  162. package/out/zero-protocol/src/inspect-down.d.ts +59 -0
  163. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -0
  164. package/out/zero-protocol/src/inspect-down.js +23 -0
  165. package/out/zero-protocol/src/inspect-down.js.map +1 -0
  166. package/out/zero-protocol/src/inspect-up.d.ts +21 -0
  167. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -0
  168. package/out/zero-protocol/src/inspect-up.js +12 -0
  169. package/out/zero-protocol/src/inspect-up.js.map +1 -0
  170. package/out/zero-protocol/src/mutation-type-enum.d.ts +1 -0
  171. package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -1
  172. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  173. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  174. package/out/zero-protocol/src/protocol-version.js +3 -1
  175. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  176. package/out/zero-protocol/src/push.d.ts +31 -6
  177. package/out/zero-protocol/src/push.d.ts.map +1 -1
  178. package/out/zero-protocol/src/push.js +7 -2
  179. package/out/zero-protocol/src/push.js.map +1 -1
  180. package/out/zero-protocol/src/up.d.ts +5 -1
  181. package/out/zero-protocol/src/up.d.ts.map +1 -1
  182. package/out/zero-protocol/src/up.js +2 -1
  183. package/out/zero-protocol/src/up.js.map +1 -1
  184. package/out/zero-react/src/use-query.d.ts +1 -2
  185. package/out/zero-react/src/use-query.d.ts.map +1 -1
  186. package/out/zero-schema/src/builder/table-builder.d.ts +13 -0
  187. package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -1
  188. package/out/zero-schema/src/builder/table-builder.js +17 -0
  189. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  190. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  191. package/out/zero-schema/src/table-schema.d.ts +3 -1
  192. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  193. package/out/zero-schema/src/table-schema.js.map +1 -1
  194. package/out/zero-solid/src/create-zero.d.ts.map +1 -1
  195. package/out/zero-solid/src/solid-view.d.ts +1 -2
  196. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  197. package/out/zero-solid/src/use-query.d.ts +1 -2
  198. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  199. package/out/zero.js +7 -4
  200. package/out/zql/src/mutate/custom.d.ts +0 -1
  201. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  202. package/out/zql/src/mutate/custom.js.map +1 -1
  203. package/out/zql/src/query/query-impl.d.ts +9 -6
  204. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  205. package/out/zql/src/query/query-impl.js +16 -18
  206. package/out/zql/src/query/query-impl.js.map +1 -1
  207. package/out/zql/src/query/query-internal.d.ts +2 -9
  208. package/out/zql/src/query/query-internal.d.ts.map +1 -1
  209. package/out/zql/src/query/query.d.ts +5 -0
  210. package/out/zql/src/query/query.d.ts.map +1 -1
  211. package/out/zql/src/query/static-query.d.ts +1 -1
  212. package/out/zql/src/query/static-query.d.ts.map +1 -1
  213. package/out/zql/src/query/static-query.js +2 -2
  214. package/out/zql/src/query/static-query.js.map +1 -1
  215. package/out/zql/src/query/ttl.d.ts +1 -1
  216. package/out/zql/src/query/ttl.d.ts.map +1 -1
  217. package/out/zql/src/query/ttl.js +1 -1
  218. package/out/zql/src/query/ttl.js.map +1 -1
  219. package/out/zqlite/src/table-source.d.ts.map +1 -1
  220. package/out/zqlite/src/table-source.js +8 -0
  221. package/out/zqlite/src/table-source.js.map +1 -1
  222. package/package.json +4 -5
  223. package/out/chunk-5WXONOGR.js.map +0 -7
  224. package/out/chunk-ULOTOBTC.js +0 -1
  225. package/out/chunk-ULOTOBTC.js.map +0 -7
  226. package/out/inspector-ROITQB3J.js.map +0 -7
  227. package/out/zero-protocol/src/warm.d.ts +0 -10
  228. package/out/zero-protocol/src/warm.d.ts.map +0 -1
  229. package/out/zero-protocol/src/warm.js +0 -6
  230. package/out/zero-protocol/src/warm.js.map +0 -1
  231. package/out/zero-schema/src/mod.d.ts +0 -5
  232. package/out/zero-schema/src/mod.d.ts.map +0 -1
  233. package/out/zql/src/query/query-internal.js +0 -2
  234. package/out/zql/src/query/query-internal.js.map +0 -1
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-ULOTOBTC.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../ast-to-zql/src/ast-to-zql.ts", "../../z2s/src/sql.ts", "../../z2s/src/compiler.ts", "../../zero-client/src/client/inspector/inspector.ts"],
4
- "sourcesContent": ["import {unreachable} from '../../shared/src/asserts.ts';\nimport {must} from '../../shared/src/must.ts';\nimport type {\n AST,\n Condition,\n Conjunction,\n CorrelatedSubquery,\n CorrelatedSubqueryCondition,\n Disjunction,\n LiteralReference,\n Ordering,\n Parameter,\n SimpleCondition,\n ValuePosition,\n} from '../../zero-protocol/src/ast.ts';\nimport {SUBQ_PREFIX} from '../../zql/src/query/query-impl.ts';\n\n/**\n * Converts an AST to the equivalent query builder code.\n * This is useful for debugging and understanding queries.\n *\n * @example\n * ```\n * const ast = query.issue.where('id', '=', 123)[astForTestingSymbol];\n * console.log(astToZQL(ast)); // outputs: .where('id', '=', 123)\n * ```\n */\nexport function astToZQL(ast: AST): string {\n let code = '';\n\n // Handle where conditions\n if (ast.where) {\n code += transformCondition(ast.where, '.where', new Set());\n }\n\n // Handle related subqueries\n if (ast.related && ast.related.length > 0) {\n for (const related of ast.related) {\n if (!related.hidden) {\n code += transformRelated(related);\n }\n }\n }\n\n // Handle orderBy\n if (ast.orderBy && ast.orderBy.length > 0) {\n code += transformOrder(ast.orderBy);\n }\n\n // Handle limit\n if (ast.limit !== undefined) {\n code += `.limit(${ast.limit})`;\n }\n\n // Handle start\n if (ast.start) {\n const {row, exclusive} = ast.start;\n code += `.start(${JSON.stringify(row)}${\n exclusive ? '' : ', { inclusive: true }'\n })`;\n }\n\n return code;\n}\n\ntype Args = Set<string>;\n\ntype Prefix = '.where' | 'cmp';\n\nfunction transformCondition(\n condition: Condition,\n prefix: Prefix,\n args: Args,\n): string {\n switch (condition.type) {\n case 'simple':\n return transformSimpleCondition(condition, prefix);\n case 'and':\n case 'or':\n return transformLogicalCondition(condition, prefix, args);\n case 'correlatedSubquery':\n return transformExistsCondition(condition, prefix, args);\n default:\n unreachable(condition);\n }\n}\n\nfunction transformSimpleCondition(\n condition: SimpleCondition,\n prefix: Prefix,\n): string {\n const {left, op, right} = condition;\n\n const leftCode = transformValuePosition(left);\n const rightCode = transformValuePosition(right);\n\n // Handle the shorthand form for equals\n if (op === '=') {\n return `${prefix}(${leftCode}, ${rightCode})`;\n }\n\n return `${prefix}(${leftCode}, '${op}', ${rightCode})`;\n}\n\nfunction transformLogicalCondition(\n condition: Conjunction | Disjunction,\n prefix: Prefix,\n args: Args,\n): string {\n const {type, conditions} = condition;\n\n // For single condition, no need for logical operator\n if (conditions.length === 1) {\n return transformCondition(conditions[0], prefix, args);\n }\n\n // Generate multiple where calls for top-level AND conditions\n if (type === 'and') {\n const parts = conditions.map(c => transformCondition(c, prefix, args));\n // Simply concatenate the where conditions\n if (prefix === '.where') {\n return parts.join('');\n }\n args.add('and');\n return 'and(' + parts.join(', ') + ')';\n }\n\n args = new Set<string>();\n\n // Handle nested conditions with a callback for OR conditions and nested ANDs/ORs\n const conditionsCode = conditions\n .map(c => transformCondition(c, 'cmp', args))\n .join(', ');\n\n args.add('cmp');\n args.add(type);\n const argsCode = [...args].sort().join(', ');\n\n return `.where(({${argsCode}}) => ${type}(${conditionsCode}))`;\n}\n\nfunction transformExistsCondition(\n condition: CorrelatedSubqueryCondition,\n prefix: '.where' | 'cmp',\n args: Set<string>,\n): string {\n const {related, op} = condition;\n const relationship = extractRelationshipName(related);\n\n // Check if subquery has additional properties\n const hasSubQueryProps =\n related.subquery.where ||\n (related.subquery.related && related.subquery.related.length > 0) ||\n related.subquery.orderBy ||\n related.subquery.limit;\n\n if (op === 'EXISTS') {\n if (!hasSubQueryProps) {\n if (prefix === '.where') {\n return `.whereExists('${relationship}')`;\n }\n args.add('exists');\n return `exists('${relationship}')`;\n }\n\n if (prefix === '.where') {\n return `.whereExists('${relationship}', q => q${astToZQL(\n related.subquery,\n )}))`;\n }\n prefix satisfies 'cmp';\n args.add('exists');\n return `exists('${relationship}', q => q${astToZQL(related.subquery)})`;\n }\n\n op satisfies 'NOT EXISTS';\n\n if (hasSubQueryProps) {\n if (prefix === '.where') {\n return `.where(({exists, not}) => not(exists('${relationship}', q => q${astToZQL(\n related.subquery,\n )})))`;\n }\n prefix satisfies 'cmp';\n args.add('not');\n args.add('exists');\n return `not(exists('${relationship}', q => q${astToZQL(\n related.subquery,\n )}))`;\n }\n\n if (prefix === '.where') {\n return `.where(({exists, not}) => not(exists('${relationship}')))`;\n }\n args.add('not');\n args.add('exists');\n\n return `not(exists('${relationship}')))`;\n}\n\nfunction extractRelationshipName(related: CorrelatedSubquery): string {\n const alias = must(related.subquery.alias);\n return alias.startsWith(SUBQ_PREFIX)\n ? alias.substring(SUBQ_PREFIX.length)\n : alias;\n}\n\nfunction transformRelated(related: CorrelatedSubquery): string {\n const {alias} = related.subquery;\n if (!alias) return '';\n\n const relationship = alias;\n let code = `.related('${relationship}'`;\n\n // If the subquery has additional filters or configurations\n if (\n related.subquery.where ||\n (related.subquery.related && related.subquery.related.length > 0) ||\n related.subquery.orderBy ||\n related.subquery.limit\n ) {\n code += ', q => q' + astToZQL(related.subquery);\n }\n\n code += ')';\n return code;\n}\n\nfunction transformOrder(orderBy: Ordering): string {\n let code = '';\n for (const [field, direction] of orderBy) {\n code += `.orderBy('${field}', '${direction}')`;\n }\n return code;\n}\n\nfunction transformValuePosition(value: ValuePosition): string {\n switch (value.type) {\n case 'literal':\n return transformLiteral(value);\n case 'column':\n return `'${value.name}'`;\n case 'static':\n return transformParameter(value);\n default:\n unreachable(value);\n }\n}\n\nfunction transformLiteral(literal: LiteralReference): string {\n if (literal.value === null) {\n return 'null';\n }\n if (Array.isArray(literal.value)) {\n return JSON.stringify(literal.value);\n }\n if (typeof literal.value === 'string') {\n return `'${literal.value.replace(/'/g, \"\\\\'\")}'`;\n }\n return String(literal.value);\n}\n\nfunction transformParameter(param: Parameter): string {\n const fieldStr = Array.isArray(param.field)\n ? `[${param.field.map(f => `'${f}'`).join(', ')}]`\n : `'${param.field}'`;\n\n return `authParam(${fieldStr})`;\n}\n", "import type {SQLQuery, FormatConfig} from '@databases/sql';\nimport baseSql from '@databases/sql';\nimport {\n escapePostgresIdentifier,\n escapeSQLiteIdentifier,\n} from '@databases/escape-identifier';\n\nconst pgFormat: FormatConfig = {\n escapeIdentifier: str => escapePostgresIdentifier(str),\n formatValue: (value, index) => ({placeholder: `$${index + 1}`, value}),\n};\n\nconst sqliteFormat: FormatConfig = {\n escapeIdentifier: str => escapeSQLiteIdentifier(str),\n formatValue: value => ({placeholder: '?', value}),\n};\n\nexport function formatPg(sql: SQLQuery) {\n return sql.format(pgFormat);\n}\n\nexport function formatSqlite(sql: SQLQuery) {\n return sql.format(sqliteFormat);\n}\n\nexport const sql = baseSql.default;\n", "import {zip} from '../../shared/src/arrays.ts';\nimport {assert} from '../../shared/src/asserts.ts';\nimport {must} from '../../shared/src/must.ts';\nimport type {\n CorrelatedSubqueryCondition,\n Correlation,\n Ordering,\n ValuePosition,\n} from '../../zero-protocol/src/ast.ts';\nimport {\n type AST,\n type Condition,\n type CorrelatedSubquery,\n type SimpleCondition,\n} from '../../zero-protocol/src/ast.ts';\nimport {clientToServer, NameMapper} from '../../zero-schema/src/name-mapper.ts';\nimport type {TableSchema} from '../../zero-schema/src/table-schema.ts';\nimport type {Format} from '../../zql/src/ivm/view.ts';\nimport {sql} from './sql.ts';\nimport type {SQLQuery} from '@databases/sql';\n\ntype Tables = Record<string, TableSchema>;\n\n/**\n * Compiles to the Postgres dialect of SQL\n * - IS, IS NOT can only compare against `NULL`, `TRUE`, `FALSE` so use\n * `IS DISTINCT FROM` and `IS NOT DISTINCT FROM` instead\n * - IN is changed to ANY to allow binding array literals\n * - subqueries are aggregated using PG's `array_agg` and `row_to_json` functions\n */\nexport function compile(ast: AST, tables: Tables, format?: Format | undefined) {\n const compiler = new Compiler(tables);\n return compiler.compile(ast, format);\n}\n\nexport class Compiler {\n readonly #tables: Tables;\n readonly #nameMapper: NameMapper;\n\n constructor(tables: Tables) {\n this.#tables = tables;\n this.#nameMapper = clientToServer(tables);\n }\n\n compile(ast: AST, format?: Format | undefined) {\n return this.select(ast, format, undefined);\n }\n\n select(\n ast: AST,\n // Is this a singular or plural query?\n format: Format | undefined,\n // If a select is being used as a subquery, this is the correlation to the parent query\n correlation: SQLQuery | undefined,\n ) {\n const selectionSet = this.related(ast.related ?? [], format, ast.table);\n const table = this.#tables[ast.table];\n for (const column of Object.keys(table.columns)) {\n selectionSet.push(\n sql`${sql.ident(ast.table)}.${this.#mapColumn(ast.table, column)}`,\n );\n }\n return sql`SELECT ${sql.join(selectionSet, ',')} FROM ${this.#mapTable(\n ast.table,\n )} ${ast.where ? sql`WHERE ${this.where(ast.where, ast.table)}` : sql``} ${\n correlation\n ? sql`${ast.where ? sql`AND` : sql`WHERE`} (${correlation})`\n : sql``\n } ${this.orderBy(ast.orderBy, ast.table)} ${\n format?.singular ? this.limit(1) : this.limit(ast.limit)\n }`;\n }\n\n orderBy(orderBy: Ordering | undefined, table: string): SQLQuery {\n if (!orderBy) {\n return sql``;\n }\n return sql`ORDER BY ${sql.join(\n orderBy.map(([col, dir]) =>\n dir === 'asc'\n ? // Oh postgres. The table must be referred to be client name but the column by server name.\n // E.g., `SELECT server_col as client_col FROM server_table as client_table ORDER BY client_Table.server_col`\n sql`${sql.ident(table)}.${this.#mapColumnNoAlias(table, col)} ASC`\n : sql`${sql.ident(table)}.${this.#mapColumnNoAlias(table, col)} DESC`,\n ),\n ', ',\n )}`;\n }\n\n limit(limit: number | undefined): SQLQuery {\n if (!limit) {\n return sql``;\n }\n return sql`LIMIT ${sql.value(limit)}`;\n }\n\n related(\n relationships: readonly CorrelatedSubquery[],\n format: Format | undefined,\n parentTable: string,\n ): SQLQuery[] {\n return relationships.map(relationship =>\n this.relationshipSubquery(\n relationship,\n format?.relationships[must(relationship.subquery.alias)],\n parentTable,\n ),\n );\n }\n\n relationshipSubquery(\n relationship: CorrelatedSubquery,\n format: Format | undefined,\n parentTable: string,\n ) {\n if (relationship.hidden) {\n const [join, lastAlias, lastLimit, lastTable] =\n this.makeJunctionJoin(relationship);\n const lastClientColumns = Object.keys(this.#tables[lastTable].columns);\n /**\n * This aggregates the relationship subquery into an array of objects.\n * This looks roughly like:\n *\n * SELECT COALESCE(array_agg(row_to_json(\"inner_table\")) , ARRAY[]::json[]) FROM\n * (SELECT inner.col as client_col, inner.col2 as client_col2 FROM table) inner_table;\n */\n return sql`(\n SELECT ${\n format?.singular ? sql`` : sql`COALESCE(array_agg`\n }(row_to_json(${sql.ident(`inner_${relationship.subquery.alias}`)})) ${\n format?.singular ? sql`` : sql`, ARRAY[]::json[])`\n } FROM (SELECT ${sql.join(\n lastClientColumns.map(\n c => sql`${sql.ident(lastAlias)}.${this.#mapColumn(lastTable, c)}`,\n ),\n ',',\n )} FROM ${join} WHERE (${this.correlate(\n parentTable,\n parentTable,\n relationship.correlation.parentField,\n relationship.subquery.table,\n relationship.subquery.table,\n relationship.correlation.childField,\n )}) ${\n relationship.subquery.where\n ? sql`AND ${this.where(\n relationship.subquery.where,\n relationship.subquery.table,\n )}`\n : sql``\n } ${this.orderBy(\n relationship.subquery.orderBy,\n relationship.subquery.table,\n )} ${\n format?.singular ? this.limit(1) : this.limit(lastLimit)\n } ) ${sql.ident(`inner_${relationship.subquery.alias}`)}\n ) as ${sql.ident(relationship.subquery.alias)}`;\n }\n return sql`(\n SELECT ${\n format?.singular ? sql`` : sql`COALESCE(array_agg`\n }(row_to_json(${sql.ident(`inner_${relationship.subquery.alias}`)})) ${\n format?.singular ? sql`` : sql`, ARRAY[]::json[])`\n } FROM (${this.select(\n relationship.subquery,\n format,\n this.correlate(\n parentTable,\n parentTable,\n relationship.correlation.parentField,\n relationship.subquery.table,\n relationship.subquery.table,\n relationship.correlation.childField,\n ),\n )}) ${sql.ident(`inner_${relationship.subquery.alias}`)}\n ) as ${sql.ident(relationship.subquery.alias)}`;\n }\n\n pullTablesForJunction(\n relationship: CorrelatedSubquery,\n tables: [string, Correlation, number | undefined][] = [],\n ) {\n tables.push([\n relationship.subquery.table,\n relationship.correlation,\n relationship.subquery.limit,\n ]);\n assert(\n relationship.subquery.related?.length || 0 <= 1,\n 'Too many related tables for a junction edge',\n );\n for (const subRelationship of relationship.subquery.related ?? []) {\n this.pullTablesForJunction(subRelationship, tables);\n }\n return tables;\n }\n\n makeJunctionJoin(\n relationship: CorrelatedSubquery,\n ): [\n join: SQLQuery,\n lastAlis: string,\n lastLimit: number | undefined,\n lastTable: string,\n ] {\n const participatingTables = this.pullTablesForJunction(relationship);\n const joins: SQLQuery[] = [];\n\n function alias(index: number) {\n if (index === 0) {\n return participatingTables[0][0];\n }\n return `table_${index}`;\n }\n\n for (const [table, _correlation] of participatingTables) {\n if (joins.length === 0) {\n joins.push(this.#mapTable(table));\n continue;\n }\n joins.push(\n sql` JOIN ${this.#mapTableNoAlias(table)} as ${sql.ident(\n alias(joins.length),\n )} ON ${this.correlate(\n participatingTables[joins.length - 1][0],\n alias(joins.length - 1),\n participatingTables[joins.length][1].parentField,\n participatingTables[joins.length][0],\n alias(joins.length),\n participatingTables[joins.length][1].childField,\n )}`,\n );\n }\n\n return [\n sql.join(joins, ''),\n alias(joins.length - 1),\n participatingTables[participatingTables.length - 1][2],\n participatingTables[participatingTables.length - 1][0],\n ] as const;\n }\n\n where(condition: Condition | undefined, table: string): SQLQuery {\n if (!condition) {\n return sql``;\n }\n\n switch (condition.type) {\n case 'and':\n return sql`(${sql.join(\n condition.conditions.map(c => this.where(c, table)),\n ' AND ',\n )})`;\n case 'or':\n return sql`(${sql.join(\n condition.conditions.map(c => this.where(c, table)),\n ' OR ',\n )})`;\n case 'correlatedSubquery':\n return this.exists(condition, table);\n case 'simple':\n return this.simple(condition, table);\n }\n }\n\n simple(condition: SimpleCondition, table: string): SQLQuery {\n switch (condition.op) {\n case '!=':\n case '<':\n case '<=':\n case '=':\n case '>':\n case '>=':\n case 'ILIKE':\n case 'LIKE':\n case 'NOT ILIKE':\n case 'NOT LIKE':\n return sql`${this.valuePosition(\n condition.left,\n table,\n )} ${sql.__dangerous__rawValue(condition.op)} ${this.valuePosition(\n condition.right,\n table,\n )}`;\n case 'NOT IN':\n case 'IN':\n return this.any(condition, table);\n case 'IS':\n case 'IS NOT':\n return this.distinctFrom(condition, table);\n }\n }\n\n distinctFrom(condition: SimpleCondition, table: string): SQLQuery {\n return sql`${this.valuePosition(condition.left, table)} ${\n condition.op === 'IS' ? sql`IS NOT DISTINCT FROM` : sql`IS DISTINCT FROM`\n } ${this.valuePosition(condition.right, table)}`;\n }\n\n any(condition: SimpleCondition, table: string): SQLQuery {\n return sql`${this.valuePosition(condition.left, table)} ${\n condition.op === 'IN' ? sql`= ANY` : sql`!= ANY`\n } (${this.valuePosition(condition.right, table)})`;\n }\n\n valuePosition(value: ValuePosition, table: string): SQLQuery {\n switch (value.type) {\n case 'column':\n return this.#mapColumnNoAlias(table, value.name);\n case 'literal':\n return sql.value(value.value);\n case 'static':\n throw new Error(\n 'Static parameters must be bound to a value before compiling to SQL',\n );\n }\n }\n\n exists(\n condition: CorrelatedSubqueryCondition,\n parentTable: string,\n ): SQLQuery {\n switch (condition.op) {\n case 'EXISTS':\n return sql`EXISTS (${this.select(\n condition.related.subquery,\n undefined,\n this.correlate(\n parentTable,\n parentTable,\n condition.related.correlation.parentField,\n condition.related.subquery.table,\n condition.related.subquery.table,\n condition.related.correlation.childField,\n ),\n )})`;\n case 'NOT EXISTS':\n return sql`NOT EXISTS (${this.select(\n condition.related.subquery,\n undefined,\n undefined,\n )})`;\n }\n }\n\n correlate(\n // The table being correlated could be aliased to some other name\n // in the case of a junction. Hence we pass `xTableAlias`. The original\n // name of the table is required so we can look up the server names of the columns\n // to be used in the correlation.\n parentTable: string,\n parentTableAlias: string,\n parentColumns: readonly string[],\n childTable: string,\n childTableAlias: string,\n childColumns: readonly string[],\n ) {\n return sql.join(\n zip(parentColumns, childColumns).map(\n ([parentColumn, childColumn]) =>\n sql`${sql.ident(parentTableAlias)}.${this.#mapColumnNoAlias(\n parentTable,\n parentColumn,\n )} = ${sql.ident(childTableAlias)}.${this.#mapColumnNoAlias(\n childTable,\n childColumn,\n )}`,\n ),\n ' AND ',\n );\n }\n\n #mapColumn(table: string, column: string) {\n const mapped = this.#nameMapper.columnName(table, column);\n if (mapped === column) {\n return sql.ident(column);\n }\n\n return sql`${sql.ident(mapped)} as ${sql.ident(column)}`;\n }\n\n #mapColumnNoAlias(table: string, column: string) {\n const mapped = this.#nameMapper.columnName(table, column);\n return sql.ident(mapped);\n }\n\n #mapTable(table: string) {\n const mapped = this.#nameMapper.tableName(table);\n if (mapped === table) {\n return sql.ident(table);\n }\n\n return sql`${sql.ident(mapped)} as ${sql.ident(table)}`;\n }\n\n #mapTableNoAlias(table: string) {\n const mapped = this.#nameMapper.tableName(table);\n return sql.ident(mapped);\n }\n}\n", "import {astToZQL} from '../../../../ast-to-zql/src/ast-to-zql.ts';\nimport type {BTreeRead} from '../../../../replicache/src/btree/read.ts';\nimport {type Read} from '../../../../replicache/src/dag/store.ts';\nimport {readFromHash} from '../../../../replicache/src/db/read.ts';\nimport * as FormatVersion from '../../../../replicache/src/format-version-enum.ts';\nimport {\n getClientGroup,\n getClientGroups,\n} from '../../../../replicache/src/persist/client-groups.ts';\nimport {\n getClient,\n getClients,\n type ClientMap,\n} from '../../../../replicache/src/persist/clients.ts';\nimport type {ReplicacheImpl} from '../../../../replicache/src/replicache-impl.ts';\nimport {withRead} from '../../../../replicache/src/with-transactions.ts';\nimport {assert} from '../../../../shared/src/asserts.ts';\nimport type {ReadonlyJSONValue} from '../../../../shared/src/json.ts';\nimport * as valita from '../../../../shared/src/valita.ts';\nimport {compile} from '../../../../z2s/src/compiler.ts';\nimport {formatPg} from '../../../../z2s/src/sql.ts';\nimport {astSchema, type AST} from '../../../../zero-protocol/src/ast.ts';\nimport type {Row} from '../../../../zero-protocol/src/data.ts';\nimport type {Schema} from '../../../../zero-schema/src/builder/schema-builder.ts';\nimport type {Format} from '../../../../zql/src/ivm/view.ts';\nimport {\n desiredQueriesPrefixForClient,\n ENTITIES_KEY_PREFIX,\n toGotQueriesKey,\n} from '../keys.ts';\nimport type {MutatorDefs} from '../replicache-types.ts';\nimport type {\n ClientGroup as ClientGroupInterface,\n Client as ClientInterface,\n Inspector as InspectorInterface,\n Query as QueryInterface,\n} from './types.ts';\n\ntype Rep = ReplicacheImpl<MutatorDefs>;\n\nexport async function newInspector(\n rep: Rep,\n schema: Schema,\n): Promise<InspectorInterface> {\n const clientGroupID = await rep.clientGroupID;\n return new Inspector(rep, schema, rep.clientID, clientGroupID);\n}\n\nclass Inspector implements InspectorInterface {\n readonly #rep: Rep;\n readonly client: Client;\n readonly clientGroup: ClientGroup;\n readonly #schema: Schema;\n\n constructor(\n rep: ReplicacheImpl,\n schema: Schema,\n clientID: string,\n clientGroupID: string,\n ) {\n this.#rep = rep;\n this.#schema = schema;\n this.client = new Client(rep, schema, clientID, clientGroupID);\n this.clientGroup = this.client.clientGroup;\n }\n\n clients(): Promise<ClientInterface[]> {\n return withDagRead(this.#rep, dagRead =>\n clients(this.#rep, this.#schema, dagRead),\n );\n }\n\n clientsWithQueries(): Promise<ClientInterface[]> {\n return withDagRead(this.#rep, dagRead =>\n clientsWithQueries(this.#rep, this.#schema, dagRead),\n );\n }\n\n clientGroups(): Promise<ClientGroup[]> {\n return withDagRead(this.#rep, async dagRead => {\n const clientGroups = await getClientGroups(dagRead);\n return [...clientGroups.keys()].map(\n clientGroupID =>\n new ClientGroup(this.#rep, this.#schema, clientGroupID),\n );\n });\n }\n}\n\nclass Client implements ClientInterface {\n readonly #rep: Rep;\n readonly id: string;\n readonly clientGroup: ClientGroup;\n readonly #schema: Schema;\n\n constructor(rep: Rep, schema: Schema, id: string, clientGroupID: string) {\n this.#rep = rep;\n this.#schema = schema;\n this.id = id;\n this.clientGroup = new ClientGroup(rep, schema, clientGroupID);\n }\n\n queries(): Promise<QueryInterface[]> {\n return withDagRead(this.#rep, async dagRead => {\n const prefix = desiredQueriesPrefixForClient(this.id);\n const tree = await getBTree(dagRead, this.id);\n const qs: QueryInterface[] = [];\n for await (const [key, value] of tree.scan(prefix)) {\n if (!key.startsWith(prefix)) {\n break;\n }\n\n const hash = key.substring(prefix.length);\n const got = await tree.has(toGotQueriesKey(hash));\n const q = new Query(\n hash,\n valita.parse(value, astSchema),\n got,\n this.#schema,\n );\n qs.push(q);\n }\n return qs;\n });\n }\n\n map(): Promise<Map<string, ReadonlyJSONValue>> {\n return withDagRead(this.#rep, async dagRead => {\n const tree = await getBTree(dagRead, this.id);\n const map = new Map<string, ReadonlyJSONValue>();\n for await (const [key, value] of tree.scan('')) {\n map.set(key, value);\n }\n return map;\n });\n }\n\n rows(tableName: string): Promise<Row[]> {\n return withDagRead(this.#rep, async dagRead => {\n const prefix = ENTITIES_KEY_PREFIX + tableName;\n const tree = await getBTree(dagRead, this.id);\n const rows: Row[] = [];\n for await (const [key, value] of tree.scan(prefix)) {\n if (!key.startsWith(prefix)) {\n break;\n }\n rows.push(value as Row);\n }\n return rows;\n });\n }\n}\n\nclass ClientGroup implements ClientGroupInterface {\n readonly #rep: Rep;\n readonly id: string;\n readonly #schema: Schema;\n\n constructor(rep: Rep, schema: Schema, id: string) {\n this.#rep = rep;\n this.#schema = schema;\n this.id = id;\n }\n\n clients(): Promise<ClientInterface[]> {\n return withDagRead(this.#rep, dagRead =>\n clients(\n this.#rep,\n this.#schema,\n dagRead,\n ([_, v]) => v.clientGroupID === this.id,\n ),\n );\n }\n\n clientsWithQueries(): Promise<ClientInterface[]> {\n return withDagRead(this.#rep, dagRead =>\n clientsWithQueries(\n this.#rep,\n this.#schema,\n dagRead,\n ([_, v]) => v.clientGroupID === this.id,\n ),\n );\n }\n\n queries(): Promise<QueryInterface[]> {\n return withDagRead(this.#rep, async dagRead => {\n const cs = await clients(\n this.#rep,\n this.#schema,\n dagRead,\n ([_, v]) => v.clientGroupID === this.id,\n );\n const qs: Map<string, QueryInterface> = new Map();\n await Promise.all(\n cs.map(async client => {\n const clientQueries = await client.queries();\n clientQueries.forEach(q => qs.set(q.id, q));\n }),\n );\n return [...qs.values()];\n });\n }\n}\n\nasync function withDagRead<T>(\n rep: Rep,\n f: (dagRead: Read) => Promise<T>,\n): Promise<T> {\n await rep.refresh();\n await rep.persist();\n return withRead(rep.perdag, f);\n}\n\nasync function getBTree(dagRead: Read, clientID: string): Promise<BTreeRead> {\n const client = await getClient(clientID, dagRead);\n assert(client, `Client not found: ${clientID}`);\n const {clientGroupID} = client;\n const clientGroup = await getClientGroup(clientGroupID, dagRead);\n assert(clientGroup, `Client group not found: ${clientGroupID}`);\n const dbRead = await readFromHash(\n clientGroup.headHash,\n dagRead,\n FormatVersion.Latest,\n );\n return dbRead.map;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype MapEntry<T extends ReadonlyMap<any, any>> =\n T extends ReadonlyMap<infer K, infer V> ? readonly [K, V] : never;\n\nasync function clients(\n rep: Rep,\n schema: Schema,\n dagRead: Read,\n predicate: (entry: MapEntry<ClientMap>) => boolean = () => true,\n): Promise<ClientInterface[]> {\n const clients = await getClients(dagRead);\n return [...clients.entries()]\n .filter(predicate)\n .map(\n ([clientID, {clientGroupID}]) =>\n new Client(rep, schema, clientID, clientGroupID),\n );\n}\n\nasync function clientsWithQueries(\n rep: Rep,\n schema: Schema,\n dagRead: Read,\n predicate: (entry: MapEntry<ClientMap>) => boolean = () => true,\n): Promise<ClientInterface[]> {\n const allClients = await clients(rep, schema, dagRead, predicate);\n const clientsWithQueries: ClientInterface[] = [];\n await Promise.all(\n allClients.map(async client => {\n const queries = await client.queries();\n if (queries.length > 0) {\n clientsWithQueries.push(client);\n }\n }),\n );\n return clientsWithQueries;\n}\n\nclass Query implements QueryInterface {\n readonly id: string;\n readonly ast: AST;\n readonly got: boolean;\n #schema: Schema;\n\n constructor(id: string, ast: AST, got: boolean, schema: Schema) {\n this.id = id;\n this.ast = ast;\n this.got = got;\n this.#schema = schema;\n }\n\n get sql(): string {\n const format: Format = {\n singular: false,\n relationships: {},\n };\n const sqlQuery = formatPg(compile(this.ast, this.#schema.tables, format));\n return sqlQuery.text;\n }\n\n get zql(): string {\n return this.ast.table + astToZQL(this.ast);\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["sql", "clients", "clientsWithQueries"]
7
- }
@@ -1,10 +0,0 @@
1
- import * as v from '../../shared/src/valita.ts';
2
- export declare const warmBodySchema: v.ObjectType<{
3
- payload: v.Type<string>;
4
- }, undefined>;
5
- export declare const warmMessageSchema: v.TupleType<[v.Type<"warm">, v.ObjectType<{
6
- payload: v.Type<string>;
7
- }, undefined>]>;
8
- export type WarmBody = v.Infer<typeof warmBodySchema>;
9
- export type WarmMessage = v.Infer<typeof warmMessageSchema>;
10
- //# sourceMappingURL=warm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"warm.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/warm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD,eAAO,MAAM,cAAc;;aAEzB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;eAA+C,CAAC;AAE9E,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- import * as v from "../../shared/src/valita.js";
2
- export const warmBodySchema = v.object({
3
- payload: v.string(),
4
- });
5
- export const warmMessageSchema = v.tuple([v.literal('warm'), warmBodySchema]);
6
- //# sourceMappingURL=warm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"warm.js","sourceRoot":"","sources":["../../../../zero-protocol/src/warm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- export { staticQuery } from '../../zql/src/query/static-query.ts';
2
- export { createSchema, type Schema } from './builder/schema-builder.ts';
3
- export { definePermissions } from './permissions.ts';
4
- export { type TableSchema } from './table-schema.ts';
5
- //# sourceMappingURL=mod.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAC,YAAY,EAAE,KAAK,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,mBAAmB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=query-internal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query-internal.js","sourceRoot":"","sources":["../../../../../zql/src/query/query-internal.ts"],"names":[],"mappings":""}