@rocicorp/zero 0.17.2025030601 → 0.17.2025031100

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 +1 -1
  2. package/out/{chunk-EENFDWT4.js → chunk-2TJNN7K4.js} +550 -230
  3. package/out/chunk-2TJNN7K4.js.map +7 -0
  4. package/out/{chunk-Q6D7EOS6.js → chunk-6CQ6CUML.js} +55 -25
  5. package/out/chunk-6CQ6CUML.js.map +7 -0
  6. package/out/{chunk-HARIWJ2J.js → chunk-HLTH2AYN.js} +6 -2
  7. package/out/chunk-HLTH2AYN.js.map +7 -0
  8. package/out/otel/src/log-options.d.ts +4 -0
  9. package/out/otel/src/log-options.d.ts.map +1 -1
  10. package/out/otel/src/log-options.js +6 -0
  11. package/out/otel/src/log-options.js.map +1 -1
  12. package/out/otel/src/maybe-time.js +1 -1
  13. package/out/react.js +3 -3
  14. package/out/react.js.map +2 -2
  15. package/out/replicache/src/db/rebase.d.ts +3 -2
  16. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  17. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  18. package/out/replicache/src/replicache-impl.d.ts +7 -1
  19. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  20. package/out/replicache/src/replicache-options.d.ts +51 -0
  21. package/out/replicache/src/replicache-options.d.ts.map +1 -1
  22. package/out/replicache/src/transactions.d.ts +4 -1
  23. package/out/replicache/src/transactions.d.ts.map +1 -1
  24. package/out/shared/src/asserts.d.ts.map +1 -1
  25. package/out/shared/src/asserts.js +1 -2
  26. package/out/shared/src/asserts.js.map +1 -1
  27. package/out/shared/src/objects.d.ts +4 -0
  28. package/out/shared/src/objects.d.ts.map +1 -0
  29. package/out/shared/src/objects.js +25 -0
  30. package/out/shared/src/objects.js.map +1 -0
  31. package/out/solid.js +28 -6
  32. package/out/solid.js.map +2 -2
  33. package/out/z2s/src/compiler.d.ts.map +1 -1
  34. package/out/z2s/src/compiler.js +1 -1
  35. package/out/z2s/src/compiler.js.map +1 -1
  36. package/out/zero-advanced/src/mod.d.ts +3 -0
  37. package/out/zero-advanced/src/mod.d.ts.map +1 -1
  38. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  39. package/out/zero-cache/src/auth/load-permissions.js +0 -1
  40. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  41. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  42. package/out/zero-cache/src/auth/write-authorizer.js +1 -0
  43. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  44. package/out/zero-cache/src/config/zero-config.d.ts +4 -0
  45. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  46. package/out/zero-cache/src/db/lite-tables.d.ts +5 -1
  47. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  48. package/out/zero-cache/src/db/lite-tables.js +8 -1
  49. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  50. package/out/zero-cache/src/db/specs.d.ts +5 -5
  51. package/out/zero-cache/src/scripts/deploy-permissions.js +2 -1
  52. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  53. package/out/zero-cache/src/server/multi/config.d.ts +4 -0
  54. package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
  55. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  56. package/out/zero-cache/src/server/syncer.js +1 -1
  57. package/out/zero-cache/src/server/syncer.js.map +1 -1
  58. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  59. package/out/zero-cache/src/services/change-source/pg/change-source.js +9 -4
  60. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  61. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +10 -10
  62. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +4 -4
  63. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
  64. package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +8 -19
  65. package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts.map +1 -1
  66. package/out/zero-cache/src/services/change-source/protocol/current/data.js +12 -3
  67. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  68. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +12 -27
  69. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  70. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +4 -9
  71. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  72. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -1
  73. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
  74. package/out/zero-cache/src/services/dispatcher/connect-params.js +1 -1
  75. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
  76. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +3 -3
  77. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  78. package/out/zero-cache/src/services/mutagen/mutagen.js +7 -3
  79. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  80. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  81. package/out/zero-cache/src/services/replicator/change-processor.js +68 -33
  82. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  83. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +2 -2
  84. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  85. package/out/zero-cache/src/services/replicator/schema/change-log.js +3 -2
  86. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  87. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +1 -1
  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 +4 -2
  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 +5 -0
  92. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -0
  93. package/out/zero-cache/src/services/view-syncer/client-schema.js +74 -0
  94. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -0
  95. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +6 -2
  96. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  97. package/out/zero-cache/src/services/view-syncer/cvr-store.js +42 -21
  98. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  99. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +6 -2
  100. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  101. package/out/zero-cache/src/services/view-syncer/cvr.js +39 -17
  102. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  103. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +5 -4
  104. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  105. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +22 -16
  106. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  107. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +2 -0
  108. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  109. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +2 -5
  110. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  111. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  112. package/out/zero-cache/src/services/view-syncer/schema/init.js +12 -0
  113. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  114. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +2 -2
  115. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  116. package/out/zero-cache/src/services/view-syncer/schema/types.js +4 -3
  117. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  118. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  119. package/out/zero-cache/src/services/view-syncer/snapshotter.js +4 -1
  120. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  121. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +2 -2
  122. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  123. package/out/zero-cache/src/services/view-syncer/view-syncer.js +35 -27
  124. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  125. package/out/zero-cache/src/types/lite.d.ts +4 -1
  126. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  127. package/out/zero-cache/src/types/lite.js +10 -5
  128. package/out/zero-cache/src/types/lite.js.map +1 -1
  129. package/out/zero-client/src/client/context.d.ts +10 -4
  130. package/out/zero-client/src/client/context.d.ts.map +1 -1
  131. package/out/zero-client/src/client/custom.d.ts +11 -2
  132. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  133. package/out/zero-client/src/client/options.d.ts +8 -0
  134. package/out/zero-client/src/client/options.d.ts.map +1 -1
  135. package/out/zero-client/src/client/query-manager.d.ts +2 -1
  136. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  137. package/out/zero-client/src/client/zero.d.ts +3 -2
  138. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  139. package/out/zero-client/src/mod.d.ts +2 -2
  140. package/out/zero-client/src/mod.d.ts.map +1 -1
  141. package/out/zero-protocol/src/client-schema.d.ts +27 -0
  142. package/out/zero-protocol/src/client-schema.d.ts.map +1 -0
  143. package/out/zero-protocol/src/client-schema.js +28 -0
  144. package/out/zero-protocol/src/client-schema.js.map +1 -0
  145. package/out/zero-protocol/src/connect.d.ts +14 -0
  146. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  147. package/out/zero-protocol/src/connect.js +2 -0
  148. package/out/zero-protocol/src/connect.js.map +1 -1
  149. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  150. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  151. package/out/zero-protocol/src/protocol-version.js +2 -1
  152. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  153. package/out/zero-protocol/src/push.d.ts +2 -2
  154. package/out/zero-protocol/src/push.d.ts.map +1 -1
  155. package/out/zero-protocol/src/push.js +4 -1
  156. package/out/zero-protocol/src/push.js.map +1 -1
  157. package/out/zero-protocol/src/up.d.ts +8 -1
  158. package/out/zero-protocol/src/up.d.ts.map +1 -1
  159. package/out/zero-react/src/use-query.d.ts +4 -3
  160. package/out/zero-react/src/use-query.d.ts.map +1 -1
  161. package/out/zero-schema/src/builder/schema-builder.d.ts +7 -13
  162. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  163. package/out/zero-schema/src/builder/schema-builder.js +22 -13
  164. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  165. package/out/zero-schema/src/schema-config.d.ts +2 -4
  166. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  167. package/out/zero-schema/src/schema-config.js +1 -2
  168. package/out/zero-schema/src/schema-config.js.map +1 -1
  169. package/out/zero-schema/src/table-schema.d.ts +2 -2
  170. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  171. package/out/zero-solid/src/solid-view.d.ts +1 -2
  172. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  173. package/out/zero-solid/src/use-query.d.ts +2 -2
  174. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  175. package/out/zero.js +5 -3
  176. package/out/zql/src/builder/builder.d.ts +3 -2
  177. package/out/zql/src/builder/builder.d.ts.map +1 -1
  178. package/out/zql/src/builder/builder.js +48 -27
  179. package/out/zql/src/builder/builder.js.map +1 -1
  180. package/out/zql/src/ivm/array-view.d.ts.map +1 -1
  181. package/out/zql/src/ivm/array-view.js +3 -2
  182. package/out/zql/src/ivm/array-view.js.map +1 -1
  183. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  184. package/out/zql/src/ivm/exists.js +1 -1
  185. package/out/zql/src/ivm/exists.js.map +1 -1
  186. package/out/zql/src/ivm/fan-in.d.ts +1 -0
  187. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  188. package/out/zql/src/ivm/fan-in.js +100 -4
  189. package/out/zql/src/ivm/fan-in.js.map +1 -1
  190. package/out/zql/src/ivm/fan-out.d.ts +2 -1
  191. package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
  192. package/out/zql/src/ivm/fan-out.js +6 -12
  193. package/out/zql/src/ivm/fan-out.js.map +1 -1
  194. package/out/zql/src/ivm/join.d.ts.map +1 -1
  195. package/out/zql/src/ivm/join.js +12 -41
  196. package/out/zql/src/ivm/join.js.map +1 -1
  197. package/out/zql/src/ivm/memory-source.d.ts +17 -3
  198. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  199. package/out/zql/src/ivm/memory-source.js +108 -56
  200. package/out/zql/src/ivm/memory-source.js.map +1 -1
  201. package/out/zql/src/ivm/source.d.ts +4 -1
  202. package/out/zql/src/ivm/source.d.ts.map +1 -1
  203. package/out/zql/src/ivm/take.d.ts.map +1 -1
  204. package/out/zql/src/ivm/take.js +2 -20
  205. package/out/zql/src/ivm/take.js.map +1 -1
  206. package/out/zql/src/ivm/view-apply-change.d.ts +9 -1
  207. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  208. package/out/zql/src/ivm/view-apply-change.js +58 -16
  209. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  210. package/out/zql/src/ivm/view.d.ts +1 -1
  211. package/out/zql/src/ivm/view.d.ts.map +1 -1
  212. package/out/zql/src/query/query-impl.d.ts +3 -1
  213. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  214. package/out/zql/src/query/query-impl.js +4 -3
  215. package/out/zql/src/query/query-impl.js.map +1 -1
  216. package/out/zql/src/query/query-internal.d.ts +3 -2
  217. package/out/zql/src/query/query-internal.d.ts.map +1 -1
  218. package/out/zql/src/query/query.d.ts +2 -1
  219. package/out/zql/src/query/query.d.ts.map +1 -1
  220. package/out/zql/src/query/query.js.map +1 -1
  221. package/out/zql/src/query/ttl.d.ts +18 -0
  222. package/out/zql/src/query/ttl.d.ts.map +1 -0
  223. package/out/zql/src/query/ttl.js +33 -0
  224. package/out/zql/src/query/ttl.js.map +1 -0
  225. package/out/zqlite/src/db.js +1 -1
  226. package/out/zqlite/src/db.js.map +1 -1
  227. package/out/zqlite/src/table-source.d.ts +1 -1
  228. package/out/zqlite/src/table-source.d.ts.map +1 -1
  229. package/out/zqlite/src/table-source.js +10 -53
  230. package/out/zqlite/src/table-source.js.map +1 -1
  231. package/package.json +3 -3
  232. package/out/chunk-EENFDWT4.js.map +0 -7
  233. package/out/chunk-HARIWJ2J.js.map +0 -7
  234. package/out/chunk-Q6D7EOS6.js.map +0 -7
@@ -10,7 +10,6 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
10
10
  schema: v.Type<string>;
11
11
  name: v.Type<string>;
12
12
  keyColumns: v.ArrayType<v.Type<string>>;
13
- tag: v.Optional<"relation">;
14
13
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
15
14
  }, undefined>;
16
15
  new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
@@ -20,11 +19,9 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
20
19
  schema: v.Type<string>;
21
20
  name: v.Type<string>;
22
21
  keyColumns: v.ArrayType<v.Type<string>>;
23
- tag: v.Optional<"relation">;
24
22
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
25
23
  }, undefined>;
26
24
  key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
27
- old: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
28
25
  new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
29
26
  }, undefined>, v.ObjectType<{
30
27
  tag: v.Type<"delete">;
@@ -32,7 +29,6 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
32
29
  schema: v.Type<string>;
33
30
  name: v.Type<string>;
34
31
  keyColumns: v.ArrayType<v.Type<string>>;
35
- tag: v.Optional<"relation">;
36
32
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
37
33
  }, undefined>;
38
34
  key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
@@ -42,7 +38,6 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
42
38
  schema: v.Type<string>;
43
39
  name: v.Type<string>;
44
40
  keyColumns: v.ArrayType<v.Type<string>>;
45
- tag: v.Optional<"relation">;
46
41
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
47
42
  }, undefined>>;
48
43
  }, undefined>, v.ObjectType<{
@@ -50,7 +45,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
50
45
  spec: v.ObjectType<Omit<{
51
46
  name: v.Type<string>;
52
47
  columns: v.Type<Record<string, {
53
- pgTypeClass?: "d" | "b" | "c" | "e" | "p" | "r" | "m" | undefined;
48
+ pgTypeClass?: "b" | "d" | "c" | "e" | "p" | "r" | "m" | undefined;
54
49
  characterMaximumLength?: number | null | undefined;
55
50
  notNull?: boolean | null | undefined;
56
51
  dflt?: string | null | undefined;
@@ -82,7 +77,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
82
77
  spec: v.ObjectType<{
83
78
  pos: v.Type<number>;
84
79
  dataType: v.Type<string>;
85
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
80
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
86
81
  characterMaximumLength: v.Optional<number | null>;
87
82
  notNull: v.Optional<boolean | null>;
88
83
  dflt: v.Optional<string | null>;
@@ -99,7 +94,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
99
94
  spec: v.ObjectType<{
100
95
  pos: v.Type<number>;
101
96
  dataType: v.Type<string>;
102
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
97
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
103
98
  characterMaximumLength: v.Optional<number | null>;
104
99
  notNull: v.Optional<boolean | null>;
105
100
  dflt: v.Optional<string | null>;
@@ -110,7 +105,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
110
105
  spec: v.ObjectType<{
111
106
  pos: v.Type<number>;
112
107
  dataType: v.Type<string>;
113
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
108
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
114
109
  characterMaximumLength: v.Optional<number | null>;
115
110
  notNull: v.Optional<boolean | null>;
116
111
  dflt: v.Optional<string | null>;
@@ -168,7 +163,6 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
168
163
  schema: v.Type<string>;
169
164
  name: v.Type<string>;
170
165
  keyColumns: v.ArrayType<v.Type<string>>;
171
- tag: v.Optional<"relation">;
172
166
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
173
167
  }, undefined>;
174
168
  new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
@@ -178,11 +172,9 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
178
172
  schema: v.Type<string>;
179
173
  name: v.Type<string>;
180
174
  keyColumns: v.ArrayType<v.Type<string>>;
181
- tag: v.Optional<"relation">;
182
175
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
183
176
  }, undefined>;
184
177
  key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
185
- old: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
186
178
  new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
187
179
  }, undefined>, v.ObjectType<{
188
180
  tag: v.Type<"delete">;
@@ -190,7 +182,6 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
190
182
  schema: v.Type<string>;
191
183
  name: v.Type<string>;
192
184
  keyColumns: v.ArrayType<v.Type<string>>;
193
- tag: v.Optional<"relation">;
194
185
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
195
186
  }, undefined>;
196
187
  key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
@@ -200,7 +191,6 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
200
191
  schema: v.Type<string>;
201
192
  name: v.Type<string>;
202
193
  keyColumns: v.ArrayType<v.Type<string>>;
203
- tag: v.Optional<"relation">;
204
194
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
205
195
  }, undefined>>;
206
196
  }, undefined>, v.ObjectType<{
@@ -208,7 +198,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
208
198
  spec: v.ObjectType<Omit<{
209
199
  name: v.Type<string>;
210
200
  columns: v.Type<Record<string, {
211
- pgTypeClass?: "d" | "b" | "c" | "e" | "p" | "r" | "m" | undefined;
201
+ pgTypeClass?: "b" | "d" | "c" | "e" | "p" | "r" | "m" | undefined;
212
202
  characterMaximumLength?: number | null | undefined;
213
203
  notNull?: boolean | null | undefined;
214
204
  dflt?: string | null | undefined;
@@ -240,7 +230,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
240
230
  spec: v.ObjectType<{
241
231
  pos: v.Type<number>;
242
232
  dataType: v.Type<string>;
243
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
233
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
244
234
  characterMaximumLength: v.Optional<number | null>;
245
235
  notNull: v.Optional<boolean | null>;
246
236
  dflt: v.Optional<string | null>;
@@ -257,7 +247,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
257
247
  spec: v.ObjectType<{
258
248
  pos: v.Type<number>;
259
249
  dataType: v.Type<string>;
260
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
250
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
261
251
  characterMaximumLength: v.Optional<number | null>;
262
252
  notNull: v.Optional<boolean | null>;
263
253
  dflt: v.Optional<string | null>;
@@ -268,7 +258,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
268
258
  spec: v.ObjectType<{
269
259
  pos: v.Type<number>;
270
260
  dataType: v.Type<string>;
271
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
261
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
272
262
  characterMaximumLength: v.Optional<number | null>;
273
263
  notNull: v.Optional<boolean | null>;
274
264
  dflt: v.Optional<string | null>;
@@ -326,7 +316,6 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
326
316
  schema: v.Type<string>;
327
317
  name: v.Type<string>;
328
318
  keyColumns: v.ArrayType<v.Type<string>>;
329
- tag: v.Optional<"relation">;
330
319
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
331
320
  }, undefined>;
332
321
  new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
@@ -336,11 +325,9 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
336
325
  schema: v.Type<string>;
337
326
  name: v.Type<string>;
338
327
  keyColumns: v.ArrayType<v.Type<string>>;
339
- tag: v.Optional<"relation">;
340
328
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
341
329
  }, undefined>;
342
330
  key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
343
- old: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
344
331
  new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
345
332
  }, undefined>, v.ObjectType<{
346
333
  tag: v.Type<"delete">;
@@ -348,7 +335,6 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
348
335
  schema: v.Type<string>;
349
336
  name: v.Type<string>;
350
337
  keyColumns: v.ArrayType<v.Type<string>>;
351
- tag: v.Optional<"relation">;
352
338
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
353
339
  }, undefined>;
354
340
  key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
@@ -358,7 +344,6 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
358
344
  schema: v.Type<string>;
359
345
  name: v.Type<string>;
360
346
  keyColumns: v.ArrayType<v.Type<string>>;
361
- tag: v.Optional<"relation">;
362
347
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
363
348
  }, undefined>>;
364
349
  }, undefined>, v.ObjectType<{
@@ -366,7 +351,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
366
351
  spec: v.ObjectType<Omit<{
367
352
  name: v.Type<string>;
368
353
  columns: v.Type<Record<string, {
369
- pgTypeClass?: "d" | "b" | "c" | "e" | "p" | "r" | "m" | undefined;
354
+ pgTypeClass?: "b" | "d" | "c" | "e" | "p" | "r" | "m" | undefined;
370
355
  characterMaximumLength?: number | null | undefined;
371
356
  notNull?: boolean | null | undefined;
372
357
  dflt?: string | null | undefined;
@@ -398,7 +383,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
398
383
  spec: v.ObjectType<{
399
384
  pos: v.Type<number>;
400
385
  dataType: v.Type<string>;
401
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
386
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
402
387
  characterMaximumLength: v.Optional<number | null>;
403
388
  notNull: v.Optional<boolean | null>;
404
389
  dflt: v.Optional<string | null>;
@@ -415,7 +400,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
415
400
  spec: v.ObjectType<{
416
401
  pos: v.Type<number>;
417
402
  dataType: v.Type<string>;
418
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
403
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
419
404
  characterMaximumLength: v.Optional<number | null>;
420
405
  notNull: v.Optional<boolean | null>;
421
406
  dflt: v.Optional<string | null>;
@@ -426,7 +411,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
426
411
  spec: v.ObjectType<{
427
412
  pos: v.Type<number>;
428
413
  dataType: v.Type<string>;
429
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
414
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
430
415
  characterMaximumLength: v.Optional<number | null>;
431
416
  notNull: v.Optional<boolean | null>;
432
417
  dflt: v.Optional<string | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"downstream.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/downstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAU5D,QAAA,MAAM,KAAK;;;;eAIT,CAAC;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiD,CAAC;AAC5D,QAAA,MAAM,MAAM;;;;eAIV,CAAC;AACH,QAAA,MAAM,QAAQ;;eAAmD,CAAC;AAElE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAC1C,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,yBAAyB;;eAGpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
1
+ {"version":3,"file":"downstream.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/downstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAU5D,QAAA,MAAM,KAAK;;;;eAIT,CAAC;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiD,CAAC;AAC5D,QAAA,MAAM,MAAM;;;;eAIV,CAAC;AACH,QAAA,MAAM,QAAQ;;eAAmD,CAAC;AAElE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAC1C,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,yBAAyB;;eAGpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -103,7 +103,6 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
103
103
  schema: v.Type<string>;
104
104
  name: v.Type<string>;
105
105
  keyColumns: v.ArrayType<v.Type<string>>;
106
- tag: v.Optional<"relation">;
107
106
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
108
107
  }, undefined>;
109
108
  new: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue>>;
@@ -113,11 +112,9 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
113
112
  schema: v.Type<string>;
114
113
  name: v.Type<string>;
115
114
  keyColumns: v.ArrayType<v.Type<string>>;
116
- tag: v.Optional<"relation">;
117
115
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
118
116
  }, undefined>;
119
117
  key: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue> | null>;
120
- old: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue> | null>;
121
118
  new: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue>>;
122
119
  }, undefined>, v.ObjectType<{
123
120
  tag: v.Type<"delete">;
@@ -125,7 +122,6 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
125
122
  schema: v.Type<string>;
126
123
  name: v.Type<string>;
127
124
  keyColumns: v.ArrayType<v.Type<string>>;
128
- tag: v.Optional<"relation">;
129
125
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
130
126
  }, undefined>;
131
127
  key: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue>>;
@@ -135,7 +131,6 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
135
131
  schema: v.Type<string>;
136
132
  name: v.Type<string>;
137
133
  keyColumns: v.ArrayType<v.Type<string>>;
138
- tag: v.Optional<"relation">;
139
134
  replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
140
135
  }, undefined>>;
141
136
  }, undefined>, v.ObjectType<{
@@ -143,7 +138,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
143
138
  spec: v.ObjectType<Omit<{
144
139
  name: v.Type<string>;
145
140
  columns: v.Type<Record<string, {
146
- pgTypeClass?: "d" | "b" | "c" | "e" | "p" | "r" | "m" | undefined;
141
+ pgTypeClass?: "b" | "d" | "c" | "e" | "p" | "r" | "m" | undefined;
147
142
  characterMaximumLength?: number | null | undefined;
148
143
  notNull?: boolean | null | undefined;
149
144
  dflt?: string | null | undefined;
@@ -175,7 +170,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
175
170
  spec: v.ObjectType<{
176
171
  pos: v.Type<number>;
177
172
  dataType: v.Type<string>;
178
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
173
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
179
174
  characterMaximumLength: v.Optional<number | null>;
180
175
  notNull: v.Optional<boolean | null>;
181
176
  dflt: v.Optional<string | null>;
@@ -192,7 +187,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
192
187
  spec: v.ObjectType<{
193
188
  pos: v.Type<number>;
194
189
  dataType: v.Type<string>;
195
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
190
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
196
191
  characterMaximumLength: v.Optional<number | null>;
197
192
  notNull: v.Optional<boolean | null>;
198
193
  dflt: v.Optional<string | null>;
@@ -203,7 +198,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
203
198
  spec: v.ObjectType<{
204
199
  pos: v.Type<number>;
205
200
  dataType: v.Type<string>;
206
- pgTypeClass: v.Optional<"d" | "b" | "c" | "e" | "p" | "r" | "m">;
201
+ pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
207
202
  characterMaximumLength: v.Optional<number | null>;
208
203
  notNull: v.Optional<boolean | null>;
209
204
  dflt: v.Optional<string | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACtD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CAChE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,uBAAuB;;;aAG3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,QAAA,MAAM,KAAK;;;eAAyD,CAAC;AAErE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AAEvE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,WAAW,qBAAsB,SAAQ,cAAc,EAAE,OAAO;CAAG"}
1
+ {"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACtD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CAChE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,uBAAuB;;;aAG3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,QAAA,MAAM,KAAK;;;eAAyD,CAAC;AAErE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AAEvE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,WAAW,qBAAsB,SAAQ,cAAc,EAAE,OAAO;CAAG"}
@@ -4,7 +4,7 @@ export type ConnectParams = {
4
4
  readonly protocolVersion: number;
5
5
  readonly clientID: string;
6
6
  readonly clientGroupID: string;
7
- readonly schemaVersion: number;
7
+ readonly schemaVersion: number | null;
8
8
  readonly baseCookie: string | null;
9
9
  readonly timestamp: number;
10
10
  readonly lmID: number;
@@ -1 +1 @@
1
- {"version":3,"file":"connect-params.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAEpD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAGlD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,mBAAmB,GAE1B;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IACE,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAwCJ"}
1
+ {"version":3,"file":"connect-params.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAEpD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAGlD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,mBAAmB,GAE1B;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IACE,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAwCJ"}
@@ -6,7 +6,7 @@ export function getConnectParams(protocolVersion, url, headers) {
6
6
  try {
7
7
  const clientID = params.get('clientID', true);
8
8
  const clientGroupID = params.get('clientGroupID', true);
9
- const schemaVersion = params.getInteger('schemaVersion', true);
9
+ const schemaVersion = params.getInteger('schemaVersion', false);
10
10
  const baseCookie = params.get('baseCookie', false);
11
11
  const timestamp = params.getInteger('ts', true);
12
12
  const lmID = params.getInteger('lmid', true);
@@ -1 +1 @@
1
- {"version":3,"file":"connect-params.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,kBAAkB,GAEnB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAiBpD,MAAM,UAAU,gBAAgB,CAC9B,eAAuB,EACvB,GAAQ,EACR,OAA4B;IAU5B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,EAAC,qBAAqB,EAAE,SAAS,EAAC,GAAG,kBAAkB,CAC3D,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CACxC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE;gBACN,eAAe;gBACf,QAAQ;gBACR,aAAa;gBACb,aAAa;gBACb,UAAU;gBACV,SAAS;gBACT,IAAI;gBACJ,IAAI;gBACJ,SAAS;gBACT,iBAAiB,EAAE,qBAAqB;gBACxC,IAAI,EAAE,SAAS;gBACf,MAAM;aACP;YACD,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"connect-params.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,kBAAkB,GAEnB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAkBpD,MAAM,UAAU,gBAAgB,CAC9B,eAAuB,EACvB,GAAQ,EACR,OAA4B;IAU5B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,EAAC,qBAAqB,EAAE,SAAS,EAAC,GAAG,kBAAkB,CAC3D,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CACxC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE;gBACN,eAAe;gBACf,QAAQ;gBACR,aAAa;gBACb,aAAa;gBACb,UAAU;gBACV,SAAS;gBACT,IAAI;gBACJ,IAAI;gBACJ,SAAS;gBACT,iBAAiB,EAAE,qBAAqB;gBACxC,IAAI,EAAE,SAAS;gBACf,MAAM;aACP;YACD,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -13,17 +13,17 @@ export type MutationError = [
13
13
  desc: string
14
14
  ];
15
15
  export interface Mutagen {
16
- processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number): Promise<MutationError | undefined>;
16
+ processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number | undefined): Promise<MutationError | undefined>;
17
17
  }
18
18
  export declare class MutagenService implements Mutagen, Service {
19
19
  #private;
20
20
  readonly id: string;
21
21
  constructor(lc: LogContext, shard: ShardID, clientGroupID: string, upstream: PostgresDB, config: ZeroConfig);
22
- processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number): Promise<MutationError | undefined>;
22
+ processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number | undefined): Promise<MutationError | undefined>;
23
23
  run(): Promise<void>;
24
24
  stop(): Promise<void>;
25
25
  }
26
- export declare function processMutation(lc: LogContext, authData: JWTPayload | undefined, db: PostgresDB, shard: ShardID, clientGroupID: string, mutation: Mutation, writeAuthorizer: WriteAuthorizer, schemaVersion: number, onTxStart?: () => void | Promise<void>): Promise<MutationError | undefined>;
26
+ export declare function processMutation(lc: LogContext, authData: JWTPayload | undefined, db: PostgresDB, shard: ShardID, clientGroupID: string, mutation: Mutation, writeAuthorizer: WriteAuthorizer, schemaVersion: number | undefined, onTxStart?: () => void | Promise<void>): Promise<MutationError | undefined>;
27
27
  export declare function getInsertSQL(tx: postgres.TransactionSql, create: InsertOp): postgres.PendingQuery<postgres.Row[]>;
28
28
  export declare function getUpsertSQL(tx: postgres.TransactionSql, set: UpsertOp): postgres.PendingQuery<postgres.Row[]>;
29
29
  //# sourceMappingURL=mutagen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutagen.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,KAAK,SAAS,MAAM,kDAAkD,CAAC;AAM9E,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACd,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,KAAK,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAG5D,OAAO,KAAK,EAAC,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAA4B,KAAK,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,mBAAmB;IAC9D,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CACvC;AAED,qBAAa,cAAe,YAAW,OAAO,EAAE,OAAO;;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAUlB,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,UAAU;IAyBpB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAmBrC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAItB;AAID,wBAAsB,eAAe,CACnC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA2GpC;AAuED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,cAAc,EAC3B,MAAM,EAAE,QAAQ,GACf,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAEvC;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,cAAc,EAC3B,GAAG,EAAE,QAAQ,GACZ,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAOvC"}
1
+ {"version":3,"file":"mutagen.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,KAAK,SAAS,MAAM,kDAAkD,CAAC;AAM9E,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACd,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,KAAK,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAG5D,OAAO,KAAK,EAAC,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAA4B,KAAK,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,mBAAmB;IAC9D,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CACvC;AAED,qBAAa,cAAe,YAAW,OAAO,EAAE,OAAO;;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAUlB,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,UAAU;IAyBpB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAmBrC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAItB;AAID,wBAAsB,eAAe,CACnC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA2GpC;AAuED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,cAAc,EAC3B,MAAM,EAAE,QAAQ,GACf,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAEvC;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,cAAc,EAC3B,GAAG,EAAE,QAAQ,GACZ,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAOvC"}
@@ -233,7 +233,9 @@ async function checkSchemaVersionAndIncrementLastMutationID(tx, shard, clientGro
233
233
  DO UPDATE SET "lastMutationID" = current."lastMutationID" + 1
234
234
  RETURNING "lastMutationID"
235
235
  `,
236
- tx `SELECT "minSupportedVersion", "maxSupportedVersion"
236
+ schemaVersion === undefined
237
+ ? undefined
238
+ : tx `SELECT "minSupportedVersion", "maxSupportedVersion"
237
239
  FROM ${tx(appSchema(shard))}."schemaVersions"`,
238
240
  ]);
239
241
  // ABORT if the resulting lastMutationID is not equal to the receivedMutationID.
@@ -246,8 +248,10 @@ async function checkSchemaVersionAndIncrementLastMutationID(tx, shard, clientGro
246
248
  message: `Push contains unexpected mutation id ${receivedMutationID} for client ${clientID}. Expected mutation id ${lastMutationID.toString()}.`,
247
249
  });
248
250
  }
249
- assert(supportedVersionRange.length === 1);
250
- throwErrorForClientIfSchemaVersionNotSupported(schemaVersion, supportedVersionRange[0]);
251
+ if (schemaVersion !== undefined && supportedVersionRange !== undefined) {
252
+ assert(supportedVersionRange.length === 1);
253
+ throwErrorForClientIfSchemaVersionNotSupported(schemaVersion, supportedVersionRange[0]);
254
+ }
251
255
  }
252
256
  class MutationAlreadyProcessedError extends Error {
253
257
  constructor(clientID, received, actual) {
@@ -1 +1 @@
1
- {"version":3,"file":"mutagen.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutagen.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"change-processor.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/change-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAiBjD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAsB5D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AActF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;;gBAexB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI;IAqBrD,KAAK,CAAC,EAAE,EAAE,UAAU;IAIpB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO;CAwItE"}
1
+ {"version":3,"file":"change-processor.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/change-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAqBjD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAwB5D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AActF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;;gBAexB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI;IAqBrD,KAAK,CAAC,EAAE,EAAE,UAAU;IAIpB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO;CAwItE"}
@@ -3,11 +3,12 @@ import { AbortError } from "../../../../shared/src/abort-error.js";
3
3
  import { assert, unreachable } from "../../../../shared/src/asserts.js";
4
4
  import { must } from "../../../../shared/src/must.js";
5
5
  import { columnDef, createIndexStatement, createTableStatement, } from "../../db/create.js";
6
- import { listIndexes, listTables } from "../../db/lite-tables.js";
6
+ import { computeZqlSpecs, listIndexes, listTables, } from "../../db/lite-tables.js";
7
7
  import { mapPostgresToLite, mapPostgresToLiteColumn, mapPostgresToLiteIndex, } from "../../db/pg-to-lite.js";
8
8
  import { stringify } from "../../types/bigint-json.js";
9
9
  import { liteRow } from "../../types/lite.js";
10
10
  import { liteTableName } from "../../types/names.js";
11
+ import { normalizedKeyOrder } from "../../types/row-key.js";
11
12
  import { id } from "../../types/sql.js";
12
13
  import { logDeleteOp, logResetOp, logSetOp, logTruncateOp, } from "./schema/change-log.js";
13
14
  import { ZERO_VERSION_COLUMN_NAME, updateReplicationWatermark, } from "./schema/replication-state.js";
@@ -222,25 +223,43 @@ class TransactionProcessor {
222
223
  }
223
224
  #reloadTableSpecs() {
224
225
  this.#tableSpecs.clear();
225
- for (const spec of listTables(this.#db.db)) {
226
+ // zqlSpecs include the primary key derived from unique indexes
227
+ const zqlSpecs = computeZqlSpecs(this.#lc, this.#db.db);
228
+ for (let spec of listTables(this.#db.db)) {
229
+ if (!spec.primaryKey) {
230
+ spec = {
231
+ ...spec,
232
+ primaryKey: [
233
+ ...(zqlSpecs.get(spec.name)?.tableSpec.primaryKey ?? []),
234
+ ],
235
+ };
236
+ }
226
237
  this.#tableSpecs.set(spec.name, spec);
227
238
  }
228
239
  }
229
240
  #tableSpec(name) {
230
241
  return must(this.#tableSpecs.get(name), `Unknown table ${name}`);
231
242
  }
243
+ #getKey({ row, numCols }, { relation }) {
244
+ const keyColumns = relation.replicaIdentity !== 'full'
245
+ ? relation.keyColumns // already a suitable key
246
+ : this.#tableSpec(liteTableName(relation)).primaryKey;
247
+ if (!keyColumns?.length) {
248
+ throw new Error(`Cannot replicate table "${relation.name}" without a PRIMARY KEY or UNIQUE INDEX`);
249
+ }
250
+ // For the common case (replica identity default), the row is already the
251
+ // key for deletes and updates, in which case a new object can be avoided.
252
+ return numCols === keyColumns.length
253
+ ? row
254
+ : Object.fromEntries(keyColumns.map(col => [col, row[col]]));
255
+ }
232
256
  processInsert(insert) {
233
257
  const table = liteTableName(insert.relation);
234
258
  const newRow = liteRow(insert.new, this.#tableSpec(table));
235
- const row = {
236
- ...newRow,
259
+ this.#upsert(table, {
260
+ ...newRow.row,
237
261
  [ZERO_VERSION_COLUMN_NAME]: this.#version,
238
- };
239
- const columns = Object.keys(row).map(c => id(c));
240
- this.#db.run(`
241
- INSERT INTO ${id(table)} (${columns.join(',')})
242
- VALUES (${new Array(columns.length).fill('?').join(',')})
243
- `, Object.values(row));
262
+ });
244
263
  if (insert.relation.keyColumns.length === 0) {
245
264
  // INSERTs can be replicated for rows without a PRIMARY KEY or a
246
265
  // UNIQUE INDEX. These are written to the replica but not recorded
@@ -251,43 +270,57 @@ class TransactionProcessor {
251
270
  // loaded via hydration.)
252
271
  return;
253
272
  }
254
- const key = Object.fromEntries(insert.relation.keyColumns.map(col => [col, newRow[col]]));
273
+ const key = this.#getKey(newRow, insert);
255
274
  this.#logSetOp(table, key);
256
275
  }
276
+ #upsert(table, row) {
277
+ const columns = Object.keys(row).map(c => id(c));
278
+ this.#db.run(`
279
+ INSERT OR REPLACE INTO ${id(table)} (${columns.join(',')})
280
+ VALUES (${new Array(columns.length).fill('?').join(',')})
281
+ `, Object.values(row));
282
+ }
283
+ // Note: Updates are applied as "upserts", so that the `new` row
284
+ // is guaranteed to exist even if its previous incarnation did not.
285
+ // This is necessary to facilitate "resumptive" replication, whereby
286
+ // rows of tables that were not initially-synced are introduced into
287
+ // into the replica via updates. Resumptive replication can happen
288
+ // when (1) an existing table is added to the apps publication or
289
+ // (2) a new sharding key is added to a shard during resharding.
257
290
  processUpdate(update) {
258
291
  const table = liteTableName(update.relation);
259
292
  const newRow = liteRow(update.new, this.#tableSpec(table));
260
- const row = {
261
- ...newRow,
262
- [ZERO_VERSION_COLUMN_NAME]: this.#version,
263
- };
264
293
  // update.key is set with the old values if the key has changed.
265
294
  const oldKey = update.key
266
- ? liteRow(update.key, this.#tableSpec(table))
295
+ ? this.#getKey(liteRow(update.key, this.#tableSpec(table)), update)
267
296
  : null;
268
- const newKey = Object.fromEntries(update.relation.keyColumns.map(col => [col, newRow[col]]));
269
- const currKey = oldKey ?? newKey;
270
- const setExprs = Object.keys(row).map(col => `${id(col)}=?`);
271
- const conds = Object.keys(currKey).map(col => `${id(col)}=?`);
272
- this.#db.run(`
273
- UPDATE ${id(table)}
274
- SET ${setExprs.join(',')}
275
- WHERE ${conds.join(' AND ')}
276
- `, [...Object.values(row), ...Object.values(currKey)]);
277
- if (oldKey) {
278
- this.#logDeleteOp(table, oldKey);
297
+ const newKey = this.#getKey(newRow, update);
298
+ const oldKeyString = oldKey ? this.#logDeleteOp(table, oldKey) : null;
299
+ const newKeyString = this.#logSetOp(table, newKey);
300
+ if (oldKey && oldKeyString !== newKeyString) {
301
+ // Because the change is applied with an INSERT instead of an UPDATE,
302
+ // the previous row, if its key was different, is explicitly deleted.
303
+ // In general, it is expected changing the key of a row is an
304
+ // uncommon operation.
305
+ this.#delete(table, oldKey);
279
306
  }
280
- this.#logSetOp(table, newKey);
307
+ this.#upsert(table, {
308
+ ...newRow.row,
309
+ [ZERO_VERSION_COLUMN_NAME]: this.#version,
310
+ });
281
311
  }
282
312
  processDelete(del) {
283
313
  const table = liteTableName(del.relation);
284
- const rowKey = liteRow(del.key, this.#tableSpec(table));
285
- const conds = Object.keys(rowKey).map(col => `${id(col)}=?`);
286
- this.#db.run(`DELETE FROM ${id(table)} WHERE ${conds.join(' AND ')}`, Object.values(rowKey));
314
+ const rowKey = this.#getKey(liteRow(del.key, this.#tableSpec(table)), del);
315
+ this.#delete(table, rowKey);
287
316
  if (this.#txMode !== 'INITIAL-SYNC') {
288
317
  this.#logDeleteOp(table, rowKey);
289
318
  }
290
319
  }
320
+ #delete(table, rowKey) {
321
+ const conds = Object.keys(rowKey).map(col => `${id(col)}=?`);
322
+ this.#db.run(`DELETE FROM ${id(table)} WHERE ${conds.join(' AND ')}`, Object.values(rowKey));
323
+ }
291
324
  processTruncate(truncate) {
292
325
  for (const relation of truncate.relations) {
293
326
  const table = liteTableName(relation);
@@ -389,13 +422,15 @@ class TransactionProcessor {
389
422
  }
390
423
  #logSetOp(table, key) {
391
424
  if (this.#txMode !== 'INITIAL-SYNC') {
392
- logSetOp(this.#db, this.#version, table, key);
425
+ return logSetOp(this.#db, this.#version, table, key);
393
426
  }
427
+ return stringify(normalizedKeyOrder(key));
394
428
  }
395
429
  #logDeleteOp(table, key) {
396
430
  if (this.#txMode !== 'INITIAL-SYNC') {
397
- logDeleteOp(this.#db, this.#version, table, key);
431
+ return logDeleteOp(this.#db, this.#version, table, key);
398
432
  }
433
+ return stringify(normalizedKeyOrder(key));
399
434
  }
400
435
  #logTruncateOp(table) {
401
436
  if (this.#txMode !== 'INITIAL-SYNC') {