@rocicorp/zero 0.10.2025010800 → 0.10.2025011100

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 (200) hide show
  1. package/README.md +32 -0
  2. package/out/change-protocol.js +257 -0
  3. package/out/change-protocol.js.map +7 -0
  4. package/out/{chunk-PPRTDNXA.js → chunk-FEVIDCUL.js} +1597 -2356
  5. package/out/chunk-FEVIDCUL.js.map +7 -0
  6. package/out/chunk-ZRR54VX5.js +224 -0
  7. package/out/chunk-ZRR54VX5.js.map +7 -0
  8. package/out/react.js +1 -1
  9. package/out/react.js.map +1 -1
  10. package/out/replicache/src/db/commit.d.ts +12 -35
  11. package/out/replicache/src/db/commit.d.ts.map +1 -1
  12. package/out/replicache/src/db/meta-type-enum.d.ts +1 -7
  13. package/out/replicache/src/db/meta-type-enum.d.ts.map +1 -1
  14. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  15. package/out/replicache/src/db/write.d.ts +0 -1
  16. package/out/replicache/src/db/write.d.ts.map +1 -1
  17. package/out/replicache/src/get-default-puller.d.ts +1 -3
  18. package/out/replicache/src/get-default-puller.d.ts.map +1 -1
  19. package/out/replicache/src/mod.d.ts +5 -5
  20. package/out/replicache/src/mod.d.ts.map +1 -1
  21. package/out/replicache/src/mutation-recovery.d.ts +1 -2
  22. package/out/replicache/src/mutation-recovery.d.ts.map +1 -1
  23. package/out/replicache/src/puller.d.ts +2 -20
  24. package/out/replicache/src/puller.d.ts.map +1 -1
  25. package/out/replicache/src/replicache-impl.d.ts +1 -2
  26. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  27. package/out/replicache/src/sync/pull.d.ts +3 -30
  28. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  29. package/out/replicache/src/sync/push.d.ts +3 -30
  30. package/out/replicache/src/sync/push.d.ts.map +1 -1
  31. package/out/shared/src/options.d.ts.map +1 -1
  32. package/out/shared/src/options.js +15 -7
  33. package/out/shared/src/options.js.map +1 -1
  34. package/out/solid.js +30 -35
  35. package/out/solid.js.map +3 -3
  36. package/out/zero/src/change-protocol.d.ts +2 -0
  37. package/out/zero/src/change-protocol.d.ts.map +1 -0
  38. package/out/zero/src/change-protocol.js +2 -0
  39. package/out/zero/src/change-protocol.js.map +1 -0
  40. package/out/zero-cache/src/config/zero-config.d.ts +30 -4
  41. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  42. package/out/zero-cache/src/config/zero-config.js +31 -15
  43. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  44. package/out/zero-cache/src/db/specs.d.ts +1 -1
  45. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  46. package/out/zero-cache/src/server/change-streamer.js +2 -6
  47. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  48. package/out/zero-cache/src/server/life-cycle.d.ts +3 -2
  49. package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
  50. package/out/zero-cache/src/server/life-cycle.js +15 -12
  51. package/out/zero-cache/src/server/life-cycle.js.map +1 -1
  52. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  53. package/out/zero-cache/src/server/main.js +21 -11
  54. package/out/zero-cache/src/server/main.js.map +1 -1
  55. package/out/zero-cache/src/server/multi/config.d.ts +20 -3
  56. package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
  57. package/out/zero-cache/src/server/multi/config.js +10 -2
  58. package/out/zero-cache/src/server/multi/config.js.map +1 -1
  59. package/out/zero-cache/src/server/multi/main.d.ts.map +1 -1
  60. package/out/zero-cache/src/server/multi/main.js +9 -3
  61. package/out/zero-cache/src/server/multi/main.js.map +1 -1
  62. package/out/zero-cache/src/services/{change-streamer → change-source}/pg/change-source.d.ts +2 -2
  63. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -0
  64. package/out/zero-cache/src/services/{change-streamer → change-source}/pg/change-source.js +1 -1
  65. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -0
  66. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -0
  67. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -0
  68. package/out/zero-cache/src/services/{change-streamer → change-source}/pg/lsn.d.ts +1 -1
  69. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts.map +1 -0
  70. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -0
  71. package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/ddl.d.ts +5 -5
  72. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -0
  73. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -0
  74. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -0
  75. package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/init.js +1 -1
  76. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -0
  77. package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/published.d.ts +2 -2
  78. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts.map +1 -0
  79. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -0
  80. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts.map +1 -0
  81. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -0
  82. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -0
  83. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -0
  84. package/out/zero-cache/src/services/change-source/pg/shard-config.d.ts.map +1 -0
  85. package/out/zero-cache/src/services/change-source/pg/shard-config.js.map +1 -0
  86. package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts.map +1 -0
  87. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -0
  88. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts +38 -0
  89. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts.map +1 -0
  90. package/out/zero-cache/src/services/change-source/protocol/current/control.js +36 -0
  91. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -0
  92. package/out/zero-cache/src/services/{change-streamer/schema/change.d.ts → change-source/protocol/current/data.d.ts} +28 -23
  93. package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts.map +1 -0
  94. package/out/zero-cache/src/services/{change-streamer/schema/change.js → change-source/protocol/current/data.js} +9 -4
  95. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -0
  96. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +469 -0
  97. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -0
  98. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +19 -0
  99. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -0
  100. package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts +6 -0
  101. package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts.map +1 -0
  102. package/out/zero-cache/src/services/change-source/protocol/current/mod.js +6 -0
  103. package/out/zero-cache/src/services/change-source/protocol/current/mod.js.map +1 -0
  104. package/out/zero-cache/src/services/change-source/protocol/current/path.d.ts +20 -0
  105. package/out/zero-cache/src/services/change-source/protocol/current/path.d.ts.map +1 -0
  106. package/out/zero-cache/src/services/change-source/protocol/current/path.js +20 -0
  107. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -0
  108. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +17 -0
  109. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -0
  110. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +12 -0
  111. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -0
  112. package/out/zero-cache/src/services/change-source/protocol/mod.d.ts +2 -0
  113. package/out/zero-cache/src/services/change-source/protocol/mod.d.ts.map +1 -0
  114. package/out/zero-cache/src/services/change-source/protocol/mod.js +5 -0
  115. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +1 -0
  116. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +3 -157
  117. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  118. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +3 -13
  119. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  120. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +1 -309
  121. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  122. package/out/zero-cache/src/services/change-streamer/change-streamer.js +3 -11
  123. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  124. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +1 -1
  125. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  126. package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
  127. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  128. package/out/zero-cache/src/services/change-streamer/storer.js +1 -0
  129. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  130. package/out/zero-cache/src/services/litestream/commands.d.ts +8 -0
  131. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -0
  132. package/out/zero-cache/src/services/litestream/commands.js +61 -0
  133. package/out/zero-cache/src/services/litestream/commands.js.map +1 -0
  134. package/out/zero-cache/src/services/litestream/config.yml +7 -0
  135. package/out/zero-cache/src/services/mutagen/mutagen.js +1 -1
  136. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  137. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +3 -2
  138. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  139. package/out/zero-cache/src/services/view-syncer/client-handler.js +1 -1
  140. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  141. package/out/zero-cache/src/services/view-syncer/cvr.js +1 -1
  142. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  143. package/out/zero-cache/src/types/processes.d.ts +4 -2
  144. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  145. package/out/zero-cache/src/types/processes.js.map +1 -1
  146. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  147. package/out/zero-schema/src/normalize-table-schema.d.ts +4 -3
  148. package/out/zero-schema/src/normalize-table-schema.d.ts.map +1 -1
  149. package/out/zero-schema/src/normalize-table-schema.js +27 -23
  150. package/out/zero-schema/src/normalize-table-schema.js.map +1 -1
  151. package/out/zero-schema/src/normalized-schema.d.ts.map +1 -1
  152. package/out/zero-schema/src/normalized-schema.js +19 -2
  153. package/out/zero-schema/src/normalized-schema.js.map +1 -1
  154. package/out/zero-schema/src/schema.d.ts +1 -1
  155. package/out/zero-schema/src/schema.d.ts.map +1 -1
  156. package/out/zero-schema/src/schema.js +5 -4
  157. package/out/zero-schema/src/schema.js.map +1 -1
  158. package/out/zero-solid/src/solid-view.d.ts +4 -1
  159. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  160. package/out/zero-solid/src/use-query.d.ts +4 -7
  161. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  162. package/out/zero.js +2 -1
  163. package/package.json +9 -5
  164. package/out/chunk-PPRTDNXA.js.map +0 -7
  165. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +0 -1
  166. package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +0 -1
  167. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +0 -1
  168. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +0 -1
  169. package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts.map +0 -1
  170. package/out/zero-cache/src/services/change-streamer/pg/lsn.js.map +0 -1
  171. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +0 -1
  172. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +0 -1
  173. package/out/zero-cache/src/services/change-streamer/pg/schema/init.d.ts.map +0 -1
  174. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js.map +0 -1
  175. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +0 -1
  176. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +0 -1
  177. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts.map +0 -1
  178. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js.map +0 -1
  179. package/out/zero-cache/src/services/change-streamer/pg/schema/validation.d.ts.map +0 -1
  180. package/out/zero-cache/src/services/change-streamer/pg/schema/validation.js.map +0 -1
  181. package/out/zero-cache/src/services/change-streamer/pg/shard-config.d.ts.map +0 -1
  182. package/out/zero-cache/src/services/change-streamer/pg/shard-config.js.map +0 -1
  183. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts.map +0 -1
  184. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +0 -1
  185. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +0 -1
  186. package/out/zero-cache/src/services/change-streamer/schema/change.js.map +0 -1
  187. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/initial-sync.d.ts +0 -0
  188. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/initial-sync.js +0 -0
  189. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/lsn.js +0 -0
  190. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/ddl.js +0 -0
  191. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/init.d.ts +0 -0
  192. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/published.js +0 -0
  193. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/shard.d.ts +0 -0
  194. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/shard.js +0 -0
  195. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/validation.d.ts +0 -0
  196. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/schema/validation.js +0 -0
  197. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/shard-config.d.ts +0 -0
  198. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/shard-config.js +0 -0
  199. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/sync-schema.d.ts +0 -0
  200. /package/out/zero-cache/src/services/{change-streamer → change-source}/pg/sync-schema.js +0 -0
@@ -6,28 +6,29 @@ export class NormalizedTableSchema {
6
6
  primaryKey;
7
7
  columns;
8
8
  relationships;
9
- constructor(tableSchema, tableSchemaCache) {
9
+ constructor(tableSchema, tableSchemaCache, assertFieldRelation) {
10
10
  this.tableName = tableSchema.tableName;
11
11
  const primaryKey = normalizePrimaryKey(tableSchema.primaryKey);
12
12
  this.primaryKey = primaryKey;
13
13
  this.columns = normalizeColumns(tableSchema.columns, primaryKey);
14
14
  tableSchemaCache.set(tableSchema, this);
15
- this.relationships = normalizeRelationships(tableSchema.relationships, tableSchemaCache);
15
+ this.relationships = normalizeRelationships(this.tableName, tableSchema.relationships, tableSchemaCache, assertFieldRelation);
16
16
  }
17
17
  }
18
+ const noop = () => { };
18
19
  export function normalizeTableSchema(tableSchema) {
19
- return normalizeTableSchemaWithCache(tableSchema, tableSchema.tableName, new Map());
20
+ return normalizeTableSchemaWithCache(tableSchema, tableSchema.tableName, new Map(), noop);
20
21
  }
21
- export function normalizeTableSchemaWithCache(tableSchema, expectedName, tableSchemaCache) {
22
+ export function normalizeTableSchemaWithCache(tableSchema, expectedTableName, tableSchemaCache, assertFieldRelation) {
22
23
  if (tableSchema instanceof NormalizedTableSchema) {
23
24
  return tableSchema;
24
25
  }
25
- assert(tableSchema.tableName === expectedName, `Table name mismatch: "${tableSchema.tableName}" !== "${expectedName}"`);
26
+ assert(tableSchema.tableName === expectedTableName, `Table name mismatch: "${tableSchema.tableName}" !== "${expectedTableName}"`);
26
27
  let normalizedTableSchema = tableSchemaCache.get(tableSchema);
27
28
  if (normalizedTableSchema) {
28
29
  return normalizedTableSchema;
29
30
  }
30
- normalizedTableSchema = new NormalizedTableSchema(tableSchema, tableSchemaCache);
31
+ normalizedTableSchema = new NormalizedTableSchema(tableSchema, tableSchemaCache, assertFieldRelation);
31
32
  return normalizedTableSchema;
32
33
  }
33
34
  function assertNoDuplicates(arr) {
@@ -65,41 +66,43 @@ function normalizeColumn(value) {
65
66
  optional: value.optional ?? false,
66
67
  };
67
68
  }
68
- function normalizeRelationships(relationships, tableSchemaCache) {
69
+ function normalizeRelationships(tableName, relationships, tableSchemaCache, assertFieldRelation) {
69
70
  const rv = {};
70
71
  if (relationships) {
71
- for (const [name, relationship] of sortedEntries(relationships)) {
72
- rv[name] = normalizeRelationship(relationship, tableSchemaCache);
72
+ for (const [relationshipName, relationship] of sortedEntries(relationships)) {
73
+ rv[relationshipName] = normalizeRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation);
73
74
  }
74
75
  }
75
76
  return rv;
76
77
  }
77
- function normalizeRelationship(relationship, tableSchemaCache) {
78
+ function normalizeRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation) {
78
79
  if (isFieldRelationship(relationship)) {
79
- return normalizeFieldRelationship(relationship, tableSchemaCache);
80
+ return normalizeFieldRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation);
80
81
  }
81
- return normalizeJunctionRelationship(relationship, tableSchemaCache);
82
+ return normalizeJunctionRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation);
82
83
  }
83
- function normalizeFieldRelationship(relationship, tableSchemaCache) {
84
+ function normalizeFieldRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation) {
84
85
  const sourceField = normalizeFieldName(relationship.sourceField);
85
86
  const destField = normalizeFieldName(relationship.destField);
86
87
  assert(sourceField.length === destField.length, 'Source and destination fields must have the same length');
87
- return {
88
+ const destSchema = normalizeLazyTableSchema(relationship.destSchema, tableSchemaCache, assertFieldRelation);
89
+ const normalized = {
88
90
  sourceField,
89
91
  destField,
90
- destSchema: normalizeLazyTableSchema(relationship.destSchema, tableSchemaCache),
92
+ destSchema,
91
93
  };
94
+ assertFieldRelation(tableName, relationshipName, normalized);
95
+ return normalized;
92
96
  }
93
- function normalizeJunctionRelationship(relationship, tableSchemaCache) {
94
- return [
95
- normalizeFieldRelationship(relationship[0], tableSchemaCache),
96
- normalizeFieldRelationship(relationship[1], tableSchemaCache),
97
- ];
97
+ function normalizeJunctionRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation) {
98
+ const first = normalizeFieldRelationship(tableName, relationshipName, relationship[0], tableSchemaCache, assertFieldRelation);
99
+ const second = normalizeFieldRelationship(first.destSchema.tableName, relationshipName, relationship[1], tableSchemaCache, assertFieldRelation);
100
+ return [first, second];
98
101
  }
99
- function normalizeLazyTableSchema(tableSchema, buildCache) {
102
+ function normalizeLazyTableSchema(tableSchema, buildCache, assertFieldRelation) {
100
103
  const tableSchemaInstance = typeof tableSchema === 'function' ? tableSchema() : tableSchema;
101
104
  return normalizeTableSchemaWithCache(tableSchemaInstance, tableSchemaInstance.tableName, // Don't care about name here.
102
- buildCache);
105
+ buildCache, assertFieldRelation);
103
106
  }
104
107
  function normalizeFieldName(sourceField) {
105
108
  if (typeof sourceField === 'string') {
@@ -110,8 +113,9 @@ function normalizeFieldName(sourceField) {
110
113
  }
111
114
  export function normalizeTables(tables) {
112
115
  const result = {};
116
+ const assertFieldRelation = tableName => tableName in tables;
113
117
  for (const [name, table] of sortedEntries(tables)) {
114
- result[name] = normalizeTableSchemaWithCache(table, name, new Map());
118
+ result[name] = normalizeTableSchemaWithCache(table, name, new Map(), assertFieldRelation);
115
119
  }
116
120
  return result;
117
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-table-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/normalize-table-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"normalize-table-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/normalize-table-schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalized-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAE3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAKhE;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;KACjD,CAAC;gBAEU,MAAM,EAAE,MAAM;CAI3B;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG;IACxE,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,6BAA6B,CAAC;KACzD,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"normalized-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,6BAA6B,EAElC,KAAK,qBAAqB,EAE3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAKxC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAUhE;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;KACjD,CAAC;gBAEU,MAAM,EAAE,MAAM;CAI3B;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG;IACxE,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,6BAA6B,CAAC;KACzD,CAAC;CACH,CAAC"}
@@ -1,5 +1,7 @@
1
+ import { assert } from '../../shared/src/asserts.js';
1
2
  import { sortedEntries } from '../../shared/src/sorted-entries.js';
2
3
  import { normalizeTableSchemaWithCache, } from './normalize-table-schema.js';
4
+ const normalizedCache = new WeakMap();
3
5
  /**
4
6
  * Creates a normalized schema from a schema.
5
7
  *
@@ -10,7 +12,11 @@ export function normalizeSchema(schema) {
10
12
  if (schema instanceof NormalizedSchema) {
11
13
  return schema;
12
14
  }
13
- return new NormalizedSchema(schema);
15
+ let s;
16
+ if (!(s = normalizedCache.get(schema))) {
17
+ normalizedCache.set(schema, (s = new NormalizedSchema(schema)));
18
+ }
19
+ return s;
14
20
  }
15
21
  export class NormalizedSchema {
16
22
  version;
@@ -23,8 +29,19 @@ export class NormalizedSchema {
23
29
  function normalizeTables(tables) {
24
30
  const rv = {};
25
31
  const tableSchemaCache = new Map();
32
+ function assertFieldRelation(tableName, relationShipName, relation) {
33
+ const destTableName = relation.destSchema.tableName;
34
+ assert(destTableName in tables, `Relationship "${tableName}"."${relationShipName}" destination "${destTableName}" is missing in schema`);
35
+ assertColumns(relation.sourceField, tables[tableName]);
36
+ assertColumns(relation.destField, tables[destTableName]);
37
+ }
38
+ function assertColumns(columnNames, table) {
39
+ for (const columnName of columnNames) {
40
+ assert(columnName in table.columns, `Column "${columnName}" is missing in table "${table.tableName}"`);
41
+ }
42
+ }
26
43
  for (const [name, table] of sortedEntries(tables)) {
27
- rv[name] = normalizeTableSchemaWithCache(table, name, tableSchemaCache);
44
+ rv[name] = normalizeTableSchemaWithCache(table, name, tableSchemaCache, assertFieldRelation);
28
45
  }
29
46
  return rv;
30
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"normalized-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EACL,6BAA6B,GAI9B,MAAM,6BAA6B,CAAC;AAGrC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,gBAAgB;IAClB,OAAO,CAAS;IAChB,MAAM,CAEb;IAEF,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AAQD,SAAS,eAAe,CAAC,MAAwB;IAG/C,MAAM,EAAE,GAEH,EAAE,CAAC;IACR,MAAM,gBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,EAAE,CAAC,IAAI,CAAC,GAAG,6BAA6B,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"normalized-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,oCAAoC,CAAC;AAGjE,OAAO,EACL,6BAA6B,GAK9B,MAAM,6BAA6B,CAAC;AAIrC,MAAM,eAAe,GAAG,IAAI,OAAO,EAA4B,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACvC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,OAAO,gBAAgB;IAClB,OAAO,CAAS;IAChB,MAAM,CAEb;IAEF,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AAQD,SAAS,eAAe,CAAC,MAAwB;IAG/C,MAAM,EAAE,GAEH,EAAE,CAAC;IACR,MAAM,gBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;IAErD,SAAS,mBAAmB,CAC1B,SAAiB,EACjB,gBAAwB,EACxB,QAAqC;QAErC,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QACpD,MAAM,CACJ,aAAa,IAAI,MAAM,EACvB,iBAAiB,SAAS,MAAM,gBAAgB,kBAAkB,aAAa,wBAAwB,CACxG,CAAC;QACF,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,aAAa,CAAC,WAAwB,EAAE,KAAkB;QACjE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,CACJ,UAAU,IAAI,KAAK,CAAC,OAAO,EAC3B,WAAW,UAAU,0BAA0B,KAAK,CAAC,SAAS,GAAG,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,EAAE,CAAC,IAAI,CAAC,GAAG,6BAA6B,CACtC,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,mBAAmB,CACpB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { TableSchema } from './table-schema.js';
1
+ import { type TableSchema } from './table-schema.js';
2
2
  export type Schema = {
3
3
  readonly version: number;
4
4
  readonly tables: {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAC;CAC1D,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAQjE"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAC;CAC1D,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAKjE"}
@@ -1,8 +1,9 @@
1
- import { assert } from '../../shared/src/asserts.js';
1
+ import { normalizeSchema } from './normalized-schema.js';
2
+ import {} from './table-schema.js';
2
3
  export function createSchema(schema) {
3
- for (const [tableName, table] of Object.entries(schema.tables)) {
4
- assert(tableName === table.tableName, `createSchema tableName mismatch, expected ${tableName} === ${table.tableName}`);
5
- }
4
+ // normalizeSchema will throw if the schema is invalid.
5
+ normalizeSchema(schema);
6
+ // We still want to return s to cause less surprises.
6
7
  return schema;
7
8
  }
8
9
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AAQnD,MAAM,UAAU,YAAY,CAAyB,MAAS;IAC5D,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,MAAM,CACJ,SAAS,KAAK,KAAK,CAAC,SAAS,EAC7B,6CAA6C,SAAS,QAAQ,KAAK,CAAC,SAAS,EAAE,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,MAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAOnD,MAAM,UAAU,YAAY,CAAyB,MAAS;IAC5D,uDAAuD;IACvD,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,qDAAqD;IACrD,OAAO,MAAW,CAAC;AACrB,CAAC"}
@@ -1,10 +1,13 @@
1
1
  import { type Change, type Format, type Input, type Output, type Query, type QueryType, type Smash, type TableSchema, type View } from '../../zero-advanced/src/mod.js';
2
2
  import type { ResultType } from '../../zql/src/query/typed-view.js';
3
+ export type QueryResultDetails = {
4
+ readonly type: ResultType;
5
+ };
3
6
  export declare class SolidView<V extends View> implements Output {
4
7
  #private;
5
8
  constructor(input: Input, format?: Format, onDestroy?: () => void, queryComplete?: true | Promise<true>);
6
9
  get data(): V;
7
- get resultType(): ResultType;
10
+ get resultDetails(): QueryResultDetails;
8
11
  destroy(): void;
9
12
  push(change: Change): void;
10
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"solid-view.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/solid-view.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,MAAM,EAEX,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,IAAI,EAEV,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAElE,qBAAa,SAAS,CAAC,CAAC,SAAS,IAAI,CAAE,YAAW,MAAM;;gBAcpD,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,MAA6C,EACrD,SAAS,GAAE,MAAM,IAAe,EAChC,aAAa,GAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAQ;IAiC5C,IAAI,IAAI,IACwB,CAAC,CAChC;IAED,IAAI,UAAU,eAEb;IAED,OAAO;IAIP,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAa3B;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,SAAS,WAAW,EAC3B,OAAO,SAAS,SAAS,EAEzB,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,IAAI,EACrB,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,EAC9C,aAAa,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAS3B"}
1
+ {"version":3,"file":"solid-view.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/solid-view.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,MAAM,EAEX,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,IAAI,EAEV,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B,CAAC;AAOF,qBAAa,SAAS,CAAC,CAAC,SAAS,IAAI,CAAE,YAAW,MAAM;;gBASpD,KAAK,EAAE,KAAK,EACZ,MAAM,GAAE,MAA6C,EACrD,SAAS,GAAE,MAAM,IAAe,EAChC,aAAa,GAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAQ;IA+B5C,IAAI,IAAI,IAAI,CAAC,CAEZ;IAED,IAAI,aAAa,IAAI,kBAAkB,CAEtC;IAED,OAAO,IAAI,IAAI;IAIf,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAa3B;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,SAAS,WAAW,EAC3B,OAAO,SAAS,SAAS,EAEzB,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,IAAI,EACrB,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,EAC9C,aAAa,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAE3B"}
@@ -1,12 +1,9 @@
1
1
  import { type Accessor } from 'solid-js';
2
2
  import type { Query, QueryType, Smash, TableSchema } from '../../zero-advanced/src/mod.js';
3
- import type { ResultType } from '../../zql/src/query/typed-view.js';
4
- export type QueryResultDetails = Readonly<{
5
- type: ResultType;
6
- }>;
3
+ import { type QueryResultDetails } from './solid-view.js';
7
4
  export type QueryResult<TReturn extends QueryType> = readonly [
8
- Smash<TReturn>,
9
- QueryResultDetails
5
+ Accessor<Smash<TReturn>>,
6
+ Accessor<QueryResultDetails>
10
7
  ];
11
- export declare function useQuery<TSchema extends TableSchema, TReturn extends QueryType>(querySignal: () => Query<TSchema, TReturn>): Accessor<QueryResult<TReturn>>;
8
+ export declare function useQuery<TSchema extends TableSchema, TReturn extends QueryType>(querySignal: () => Query<TSchema, TReturn>): QueryResult<TReturn>;
12
9
  //# sourceMappingURL=use-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-query.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,QAAQ,EAAwB,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EACV,KAAK,EAEL,SAAS,EACT,KAAK,EACL,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,SAAS,IAAI,SAAS;IAC5D,KAAK,CAAC,OAAO,CAAC;IACd,kBAAkB;CACnB,CAAC;AAEF,wBAAgB,QAAQ,CACtB,OAAO,SAAS,WAAW,EAC3B,OAAO,SAAS,SAAS,EACzB,WAAW,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAa5E"}
1
+ {"version":3,"file":"use-query.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,QAAQ,EAAC,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAEV,KAAK,EACL,SAAS,EACT,KAAK,EACL,WAAW,EACZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAmB,KAAK,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAE1E,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,SAAS,IAAI,SAAS;IAC5D,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,QAAQ,CAAC,kBAAkB,CAAC;CAC7B,CAAC;AAEF,wBAAgB,QAAQ,CACtB,OAAO,SAAS,WAAW,EAC3B,OAAO,SAAS,SAAS,EACzB,WAAW,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAelE"}
package/out/zero.js CHANGED
@@ -13,9 +13,10 @@ import {
13
13
  escapeLike,
14
14
  getDefaultPuller,
15
15
  makeIDBName
16
- } from "./chunk-PPRTDNXA.js";
16
+ } from "./chunk-FEVIDCUL.js";
17
17
  import "./chunk-HARIWJ2J.js";
18
18
  import "./chunk-Y6OVFUGE.js";
19
+ import "./chunk-ZRR54VX5.js";
19
20
  import "./chunk-F5QR3K72.js";
20
21
  export {
21
22
  ANYONE_CAN,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rocicorp/zero",
3
- "version": "0.10.2025010800+ca1811",
3
+ "version": "0.10.2025011100+4a1fd2",
4
4
  "scripts": {
5
5
  "build": "rm -rf out && npm run build-server && npm run build-client",
6
6
  "build-client": "tsc -p tsconfig.client.json && tsc-alias -p tsconfig.client.json && node tool/build.js",
@@ -11,7 +11,8 @@
11
11
  "check-types:watch": "tsc --watch",
12
12
  "format": "prettier --write .",
13
13
  "check-format": "prettier --check .",
14
- "lint": "eslint --ext .ts,.tsx,.js,.jsx src/"
14
+ "lint": "eslint --ext .ts,.tsx,.js,.jsx src/",
15
+ "prepack": "cp ../zero-cache/src/services/litestream/config.yml ./out/zero-cache/src/services/litestream/"
15
16
  },
16
17
  "dependencies": {
17
18
  "@badrap/valita": "0.3.11",
@@ -36,15 +37,14 @@
36
37
  "command-line-args": "^6.0.1",
37
38
  "command-line-usage": "^7.0.3",
38
39
  "compare-utf8": "^0.1.1",
40
+ "defu": "^6.1.4",
39
41
  "dotenv": "^16.4.5",
40
42
  "eventemitter3": "^5.0.1",
41
43
  "fastify": "^5.0.0",
42
44
  "jose": "^5.9.3",
43
45
  "js-xxhash": "^4.0.0",
44
46
  "json-custom-numbers": "^3.1.1",
45
- "lodash.kebabcase": "^4.1.1",
46
- "lodash.merge": "^4.6.2",
47
- "lodash.snakecase": "^4.1.1",
47
+ "kasi": "^1.1.0",
48
48
  "nanoid": "^5.0.8",
49
49
  "pg": "^8.11.3",
50
50
  "pg-format": "npm:pg-format-fix@^1.0.5",
@@ -90,6 +90,10 @@
90
90
  "./advanced": {
91
91
  "types": "./out/zero/src/advanced.d.ts",
92
92
  "default": "./out/advanced.js"
93
+ },
94
+ "./change-protocol": {
95
+ "types": "./out/zero-cache/src/services/change-source/protocol/mod.d.ts",
96
+ "default": "./out/change-protocol.js"
93
97
  }
94
98
  },
95
99
  "bin": {