@rocicorp/zero 0.6.2024112101 → 0.7.2024112700

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 (223) hide show
  1. package/out/advanced.js +1 -1
  2. package/out/{chunk-5UY46OAF.js → chunk-C7M3BJ3Z.js} +16 -8
  3. package/out/chunk-C7M3BJ3Z.js.map +7 -0
  4. package/out/{chunk-MPEWBBGZ.js → chunk-HDEKBM3G.js} +686 -660
  5. package/out/{chunk-MPEWBBGZ.js.map → chunk-HDEKBM3G.js.map} +4 -4
  6. package/out/shared/src/expand.js +2 -0
  7. package/out/shared/src/expand.js.map +1 -0
  8. package/out/shared/src/immutable.js +2 -0
  9. package/out/shared/src/immutable.js.map +1 -0
  10. package/out/{zero-cache/src/config/config.d.ts → shared/src/options.d.ts} +3 -5
  11. package/out/shared/src/options.d.ts.map +1 -0
  12. package/out/{zero-cache/src/config/config.js → shared/src/options.js} +26 -26
  13. package/out/shared/src/options.js.map +1 -0
  14. package/out/shared/src/sorted-entries.js +6 -0
  15. package/out/shared/src/sorted-entries.js.map +1 -0
  16. package/out/shared/src/writable.js +2 -0
  17. package/out/shared/src/writable.js.map +1 -0
  18. package/out/solid.js +2 -2
  19. package/out/zero/src/build-schema.d.ts +3 -0
  20. package/out/zero/src/build-schema.d.ts.map +1 -0
  21. package/out/zero/src/build-schema.js +3 -0
  22. package/out/zero/src/build-schema.js.map +1 -0
  23. package/out/zero-cache/src/auth/load-schema.d.ts +8 -0
  24. package/out/zero-cache/src/auth/load-schema.d.ts.map +1 -0
  25. package/out/zero-cache/src/auth/load-schema.js +34 -0
  26. package/out/zero-cache/src/auth/load-schema.js.map +1 -0
  27. package/out/zero-cache/src/auth/write-authorizer.d.ts +20 -0
  28. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -0
  29. package/out/zero-cache/src/auth/write-authorizer.js +320 -0
  30. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -0
  31. package/out/zero-cache/src/config/zero-config.d.ts +14 -4
  32. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  33. package/out/zero-cache/src/config/zero-config.js +27 -14
  34. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  35. package/out/zero-cache/src/server/main.js +7 -0
  36. package/out/zero-cache/src/server/main.js.map +1 -1
  37. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  38. package/out/zero-cache/src/server/replicator.js +4 -3
  39. package/out/zero-cache/src/server/replicator.js.map +1 -1
  40. package/out/zero-cache/src/server/runtime.d.ts +3 -0
  41. package/out/zero-cache/src/server/runtime.d.ts.map +1 -0
  42. package/out/zero-cache/src/server/runtime.js +19 -0
  43. package/out/zero-cache/src/server/runtime.js.map +1 -0
  44. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  45. package/out/zero-cache/src/server/syncer.js +7 -6
  46. package/out/zero-cache/src/server/syncer.js.map +1 -1
  47. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +1 -1
  48. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  49. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +6 -5
  50. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  51. package/out/zero-cache/src/services/mutagen/mutagen.js +19 -33
  52. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  53. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  54. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  55. package/out/zero-cache/src/services/replicator/replicator.js +2 -2
  56. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  57. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +1 -1
  58. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  59. package/out/zero-cache/src/services/view-syncer/client-handler.js +11 -8
  60. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  61. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +17 -8
  62. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  63. package/out/zero-cache/src/services/view-syncer/cvr-store.js +357 -94
  64. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  65. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +6 -9
  66. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  67. package/out/zero-cache/src/services/view-syncer/cvr.js +36 -22
  68. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  69. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  70. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +2 -2
  71. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  72. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +22 -0
  73. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  74. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +33 -7
  75. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  76. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  77. package/out/zero-cache/src/services/view-syncer/schema/init.js +44 -5
  78. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  79. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +1 -0
  80. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  81. package/out/zero-cache/src/services/view-syncer/schema/types.js +3 -0
  82. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  83. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  84. package/out/zero-cache/src/services/view-syncer/snapshotter.js +5 -0
  85. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  86. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +1 -1
  87. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  88. package/out/zero-cache/src/services/view-syncer/view-syncer.js +69 -19
  89. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  90. package/out/zero-cache/src/types/row-key.d.ts +6 -0
  91. package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
  92. package/out/zero-cache/src/types/row-key.js +16 -1
  93. package/out/zero-cache/src/types/row-key.js.map +1 -1
  94. package/out/zero-cache/src/workers/connection.d.ts +1 -1
  95. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  96. package/out/zero-cache/src/workers/connection.js.map +1 -1
  97. package/out/zero-cache/src/workers/replicator.d.ts +3 -1
  98. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  99. package/out/zero-cache/src/workers/replicator.js +2 -0
  100. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  101. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  102. package/out/zero-cache/src/workers/syncer.js +8 -3
  103. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  104. package/out/zero-client/src/client/options.d.ts +37 -8
  105. package/out/zero-client/src/client/options.d.ts.map +1 -1
  106. package/out/zero-client/src/client/reload-error-handler.d.ts +16 -1
  107. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  108. package/out/zero-client/src/client/zero.d.ts +7 -55
  109. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  110. package/out/zero-client/src/mod.d.ts +1 -1
  111. package/out/zero-client/src/mod.d.ts.map +1 -1
  112. package/out/zero-protocol/src/ast-hash.js +14 -0
  113. package/out/zero-protocol/src/ast-hash.js.map +1 -0
  114. package/out/zero-protocol/src/down.d.ts +4 -4
  115. package/out/zero-protocol/src/poke.d.ts +16 -8
  116. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  117. package/out/zero-protocol/src/poke.js +8 -2
  118. package/out/zero-protocol/src/poke.js.map +1 -1
  119. package/out/zero-schema/src/authorization.d.ts +12 -5
  120. package/out/zero-schema/src/authorization.d.ts.map +1 -1
  121. package/out/zero-schema/src/build-schema.d.ts +14 -0
  122. package/out/zero-schema/src/build-schema.d.ts.map +1 -0
  123. package/out/zero-schema/src/build-schema.js +55 -0
  124. package/out/zero-schema/src/build-schema.js.map +1 -0
  125. package/out/zero-schema/src/compiled-authorization.d.ts +213 -294
  126. package/out/zero-schema/src/compiled-authorization.d.ts.map +1 -1
  127. package/out/zero-schema/src/compiled-authorization.js +9 -4
  128. package/out/zero-schema/src/compiled-authorization.js.map +1 -1
  129. package/out/zero-schema/src/normalize-table-schema.d.ts +2 -11
  130. package/out/zero-schema/src/normalize-table-schema.d.ts.map +1 -1
  131. package/out/zero-schema/src/normalize-table-schema.js +108 -0
  132. package/out/zero-schema/src/normalize-table-schema.js.map +1 -0
  133. package/out/zero-schema/src/normalized-schema.js +31 -0
  134. package/out/zero-schema/src/normalized-schema.js.map +1 -0
  135. package/out/zero-schema/src/schema-config.d.ts +325 -0
  136. package/out/zero-schema/src/schema-config.d.ts.map +1 -0
  137. package/out/zero-schema/src/schema-config.js +41 -0
  138. package/out/zero-schema/src/schema-config.js.map +1 -0
  139. package/out/zero-schema/src/schema.js +4 -0
  140. package/out/zero-schema/src/schema.js.map +1 -0
  141. package/out/zero-schema/src/table-schema.d.ts +6 -15
  142. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  143. package/out/zero-schema/src/table-schema.js.map +1 -1
  144. package/out/zero.js +2 -2
  145. package/out/zql/src/builder/builder.d.ts +2 -2
  146. package/out/zql/src/builder/builder.d.ts.map +1 -1
  147. package/out/zql/src/builder/builder.js +19 -20
  148. package/out/zql/src/builder/builder.js.map +1 -1
  149. package/out/zql/src/builder/filter.d.ts +25 -2
  150. package/out/zql/src/builder/filter.d.ts.map +1 -1
  151. package/out/zql/src/builder/filter.js +91 -1
  152. package/out/zql/src/builder/filter.js.map +1 -1
  153. package/out/zql/src/ivm/array-view.js +70 -0
  154. package/out/zql/src/ivm/array-view.js.map +1 -0
  155. package/out/zql/src/ivm/change.d.ts +18 -6
  156. package/out/zql/src/ivm/change.d.ts.map +1 -1
  157. package/out/zql/src/ivm/change.js +1 -1
  158. package/out/zql/src/ivm/change.js.map +1 -1
  159. package/out/zql/src/ivm/constraint.d.ts +14 -0
  160. package/out/zql/src/ivm/constraint.d.ts.map +1 -0
  161. package/out/zql/src/ivm/constraint.js +60 -0
  162. package/out/zql/src/ivm/constraint.js.map +1 -0
  163. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  164. package/out/zql/src/ivm/exists.js +19 -2
  165. package/out/zql/src/ivm/exists.js.map +1 -1
  166. package/out/zql/src/ivm/join.d.ts +11 -5
  167. package/out/zql/src/ivm/join.d.ts.map +1 -1
  168. package/out/zql/src/ivm/join.js +49 -95
  169. package/out/zql/src/ivm/join.js.map +1 -1
  170. package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
  171. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +4 -13
  172. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  173. package/out/zql/src/ivm/memory-source.d.ts +5 -22
  174. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  175. package/out/zql/src/ivm/memory-source.js +58 -80
  176. package/out/zql/src/ivm/memory-source.js.map +1 -1
  177. package/out/zql/src/ivm/operator.d.ts +7 -10
  178. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  179. package/out/zql/src/ivm/operator.js +1 -1
  180. package/out/zql/src/ivm/operator.js.map +1 -1
  181. package/out/zql/src/ivm/take.d.ts +3 -1
  182. package/out/zql/src/ivm/take.d.ts.map +1 -1
  183. package/out/zql/src/ivm/take.js +95 -95
  184. package/out/zql/src/ivm/take.js.map +1 -1
  185. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  186. package/out/zql/src/ivm/view-apply-change.js +168 -0
  187. package/out/zql/src/ivm/view-apply-change.js.map +1 -0
  188. package/out/zql/src/ivm/view.js +2 -0
  189. package/out/zql/src/ivm/view.js.map +1 -0
  190. package/out/zql/src/query/auth-query.d.ts +3 -1
  191. package/out/zql/src/query/auth-query.d.ts.map +1 -1
  192. package/out/zql/src/query/auth-query.js +34 -0
  193. package/out/zql/src/query/auth-query.js.map +1 -0
  194. package/out/zql/src/query/dnf.js +57 -0
  195. package/out/zql/src/query/dnf.js.map +1 -0
  196. package/out/zql/src/query/expression.js +155 -0
  197. package/out/zql/src/query/expression.js.map +1 -0
  198. package/out/zql/src/query/query-impl.d.ts +4 -1
  199. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  200. package/out/zql/src/query/query-impl.js +359 -0
  201. package/out/zql/src/query/query-impl.js.map +1 -0
  202. package/out/zql/src/query/query-internal.js +2 -0
  203. package/out/zql/src/query/query-internal.js.map +1 -0
  204. package/out/zql/src/query/query.js +3 -0
  205. package/out/zql/src/query/query.js.map +1 -0
  206. package/out/zql/src/query/typed-view.js +2 -0
  207. package/out/zql/src/query/typed-view.js.map +1 -0
  208. package/out/zqlite/src/table-source.d.ts +2 -11
  209. package/out/zqlite/src/table-source.d.ts.map +1 -1
  210. package/out/zqlite/src/table-source.js +28 -80
  211. package/out/zqlite/src/table-source.js.map +1 -1
  212. package/package.json +5 -3
  213. package/out/chunk-5UY46OAF.js.map +0 -7
  214. package/out/zero-cache/src/auth/load-authorization.d.ts +0 -4
  215. package/out/zero-cache/src/auth/load-authorization.d.ts.map +0 -1
  216. package/out/zero-cache/src/auth/load-authorization.js +0 -20
  217. package/out/zero-cache/src/auth/load-authorization.js.map +0 -1
  218. package/out/zero-cache/src/config/config.d.ts.map +0 -1
  219. package/out/zero-cache/src/config/config.js.map +0 -1
  220. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts +0 -21
  221. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +0 -1
  222. package/out/zero-cache/src/services/mutagen/write-authorizer.js +0 -168
  223. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +0 -1
@@ -1,168 +0,0 @@
1
- import { LogContext } from '@rocicorp/logger';
2
- import { tmpdir } from 'node:os';
3
- import path from 'node:path';
4
- import { pid } from 'node:process';
5
- import { assert } from '../../../../shared/src/asserts.js';
6
- import { randInt } from '../../../../shared/src/rand.js';
7
- import * as v from '../../../../shared/src/valita.js';
8
- import { primaryKeyValueSchema, } from '../../../../zero-protocol/src/primary-key.js';
9
- import { buildPipeline } from '../../../../zql/src/builder/builder.js';
10
- import { Database } from '../../../../zqlite/src/db.js';
11
- import { compile, sql } from '../../../../zqlite/src/internal/sql.js';
12
- import { TableSource } from '../../../../zqlite/src/table-source.js';
13
- import { listTables } from '../../db/lite-tables.js';
14
- import { mapLiteDataTypeToZqlSchemaValue } from '../../types/lite.js';
15
- import { DatabaseStorage } from '../view-syncer/database-storage.js';
16
- import { normalize } from '../view-syncer/pipeline-driver.js';
17
- import { StatementRunner } from '../../db/statements.js';
18
- export class WriteAuthorizerImpl {
19
- #authorizationConfig;
20
- #replica;
21
- #builderDelegate;
22
- #tableSpecs;
23
- #tables = new Map();
24
- #statementRunner;
25
- #lc;
26
- constructor(lc, config, authorization, replica, cgID) {
27
- this.#lc = lc.withContext('class', 'WriteAuthorizerImpl');
28
- this.#authorizationConfig = authorization ?? {};
29
- this.#replica = replica;
30
- const tmpDir = config.storageDBTmpDir ?? tmpdir();
31
- const writeAuthzStorage = DatabaseStorage.create(lc, path.join(tmpDir, `mutagen-${pid}-${randInt(1000000, 9999999)}`));
32
- const cgStorage = writeAuthzStorage.createClientGroupStorage(cgID);
33
- this.#builderDelegate = {
34
- getSource: name => this.#getSource(name),
35
- createStorage: () => cgStorage.createStorage(),
36
- };
37
- this.#tableSpecs = new Map(listTables(replica).map(spec => [spec.name, normalize(spec)]));
38
- this.#statementRunner = new StatementRunner(replica);
39
- }
40
- canInsert(authData, op) {
41
- return this.#timedCanDo('insert', authData, op);
42
- }
43
- canUpdate(authData, op) {
44
- return this.#timedCanDo('update', authData, op);
45
- }
46
- canDelete(authData, op) {
47
- return this.#timedCanDo('delete', authData, op);
48
- }
49
- canUpsert(authData, op) {
50
- const preMutationRow = this.#getPreMutationRow(op);
51
- if (preMutationRow) {
52
- return this.canUpdate(authData, {
53
- op: 'update',
54
- tableName: op.tableName,
55
- primaryKey: op.primaryKey,
56
- value: op.value,
57
- });
58
- }
59
- return this.canInsert(authData, {
60
- op: 'insert',
61
- tableName: op.tableName,
62
- primaryKey: op.primaryKey,
63
- value: op.value,
64
- });
65
- }
66
- #getSource(tableName) {
67
- let source = this.#tables.get(tableName);
68
- if (source) {
69
- return source;
70
- }
71
- const tableSpec = this.#tableSpecs.get(tableName);
72
- if (!tableSpec) {
73
- throw new Error(`Table ${tableName} not found`);
74
- }
75
- const { columns, primaryKey } = tableSpec;
76
- assert(primaryKey.length);
77
- source = new TableSource(this.#replica, tableName, Object.fromEntries(Object.entries(columns).map(([name, { dataType }]) => [
78
- name,
79
- mapLiteDataTypeToZqlSchemaValue(dataType),
80
- ])), [primaryKey[0], ...primaryKey.slice(1)]);
81
- this.#tables.set(tableName, source);
82
- return source;
83
- }
84
- #timedCanDo(action, authData, op) {
85
- const start = performance.now();
86
- try {
87
- const ret = this.#canDo(action, authData, op);
88
- return ret;
89
- }
90
- finally {
91
- this.#lc.info?.('action:', action, 'duration:', performance.now() - start, 'tableName:', op.tableName, 'primaryKey:', op.primaryKey);
92
- }
93
- }
94
- /**
95
- * Evaluation order is from static to dynamic, broad to specific.
96
- * table -> column -> row -> cell.
97
- *
98
- * If any step fails, the entire operation is denied.
99
- *
100
- * That is, table rules supersede column rules, which supersede row rules,
101
- *
102
- * All steps must allow for the operation to be allowed.
103
- */
104
- #canDo(action, authData, op) {
105
- const rules = this.#authorizationConfig[op.tableName];
106
- if (!rules) {
107
- return true;
108
- }
109
- let preMutationRow;
110
- if (op.op !== 'insert') {
111
- preMutationRow = this.#getPreMutationRow(op);
112
- }
113
- const rowPolicies = rules.row;
114
- if (rowPolicies &&
115
- !this.#passesPolicy(rowPolicies[action], authData, preMutationRow)) {
116
- return false;
117
- }
118
- const cellPolicies = rules.cell;
119
- if (cellPolicies) {
120
- for (const [column, policy] of Object.entries(cellPolicies)) {
121
- if (action === 'update' && op.value[column] === undefined) {
122
- // If the column is not being updated, we do not need to check
123
- // the column rules.
124
- continue;
125
- }
126
- if (!this.#passesPolicy(policy[action], authData, preMutationRow)) {
127
- return false;
128
- }
129
- }
130
- }
131
- return true;
132
- }
133
- #getPreMutationRow(op) {
134
- const { value } = op;
135
- const conditions = [];
136
- const values = [];
137
- for (const pk of op.primaryKey) {
138
- conditions.push(sql `${sql.ident(pk)}=?`);
139
- values.push(v.parse(value[pk], primaryKeyValueSchema));
140
- }
141
- return this.#statementRunner.get(compile(sql `SELECT * FROM ${sql.ident(op.tableName)} WHERE ${sql.join(conditions, sql ` AND `)}`), ...values);
142
- }
143
- #passesPolicy(policy, authData, preMutationRow) {
144
- if (!policy) {
145
- return true;
146
- }
147
- for (const [_, rule] of policy) {
148
- const input = buildPipeline(rule, this.#builderDelegate, {
149
- authData: authData,
150
- preMutationRow,
151
- });
152
- try {
153
- const res = input.fetch({});
154
- for (const _ of res) {
155
- // if any row is returned at all, the
156
- // rule passes.
157
- return true;
158
- }
159
- }
160
- finally {
161
- input.destroy();
162
- }
163
- }
164
- // no rows returned by any rules? The policy fails.
165
- return false;
166
- }
167
- }
168
- //# sourceMappingURL=write-authorizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-authorizer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/write-authorizer.ts"],"names":[],"mappings":"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"}