tinybase 9.0.0-beta.0 → 9.0.0-beta.1
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.
- package/@types/mergeable-store/index.d.ts +4 -4
- package/@types/mergeable-store/with-schemas/index.d.ts +41 -17
- package/@types/persisters/index.d.ts +2 -1
- package/@types/persisters/with-schemas/index.d.ts +16 -10
- package/@types/queries/index.d.ts +4 -0
- package/@types/queries/with-schemas/index.d.ts +4 -0
- package/index.js +46 -6
- package/mergeable-store/index.js +46 -6
- package/mergeable-store/with-schemas/index.js +46 -6
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/min/omni/index.js +1 -1
- package/min/omni/index.js.gz +0 -0
- package/min/omni/with-schemas/index.js +1 -1
- package/min/omni/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-mmkv/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-remote/index.js +1 -1
- package/min/persisters/persister-remote/index.js.gz +0 -0
- package/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/ui-solid-inspector/index.js +1 -1
- package/min/ui-solid-inspector/index.js.gz +0 -0
- package/min/ui-solid-inspector/with-schemas/index.js +1 -1
- package/min/ui-solid-inspector/with-schemas/index.js.gz +0 -0
- package/min/ui-svelte-inspector/index.js +1 -1
- package/min/ui-svelte-inspector/index.js.gz +0 -0
- package/min/ui-svelte-inspector/with-schemas/index.js +1 -1
- package/min/ui-svelte-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/omni/index.js +53 -14
- package/omni/with-schemas/index.js +53 -14
- package/package.json +3 -3
- package/persisters/index.js +4 -3
- package/persisters/persister-automerge/index.js +4 -3
- package/persisters/persister-automerge/with-schemas/index.js +4 -3
- package/persisters/persister-browser/index.js +4 -3
- package/persisters/persister-browser/with-schemas/index.js +4 -3
- package/persisters/persister-cr-sqlite-wasm/index.js +4 -3
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +4 -3
- package/persisters/persister-durable-object-sql-storage/index.js +4 -3
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +4 -3
- package/persisters/persister-durable-object-storage/index.js +4 -3
- package/persisters/persister-durable-object-storage/with-schemas/index.js +4 -3
- package/persisters/persister-electric-sql/index.js +4 -3
- package/persisters/persister-electric-sql/with-schemas/index.js +4 -3
- package/persisters/persister-expo-sqlite/index.js +4 -3
- package/persisters/persister-expo-sqlite/with-schemas/index.js +4 -3
- package/persisters/persister-file/index.js +4 -3
- package/persisters/persister-file/with-schemas/index.js +4 -3
- package/persisters/persister-indexed-db/index.js +4 -3
- package/persisters/persister-indexed-db/with-schemas/index.js +4 -3
- package/persisters/persister-libsql/index.js +4 -3
- package/persisters/persister-libsql/with-schemas/index.js +4 -3
- package/persisters/persister-partykit-client/index.js +4 -3
- package/persisters/persister-partykit-client/with-schemas/index.js +4 -3
- package/persisters/persister-pglite/index.js +4 -3
- package/persisters/persister-pglite/with-schemas/index.js +4 -3
- package/persisters/persister-postgres/index.js +4 -3
- package/persisters/persister-postgres/with-schemas/index.js +4 -3
- package/persisters/persister-powersync/index.js +4 -3
- package/persisters/persister-powersync/with-schemas/index.js +4 -3
- package/persisters/persister-react-native-mmkv/index.js +4 -3
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +4 -3
- package/persisters/persister-react-native-sqlite/index.js +4 -3
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +4 -3
- package/persisters/persister-remote/index.js +4 -3
- package/persisters/persister-remote/with-schemas/index.js +4 -3
- package/persisters/persister-sqlite-bun/index.js +4 -3
- package/persisters/persister-sqlite-bun/with-schemas/index.js +4 -3
- package/persisters/persister-sqlite-wasm/index.js +4 -3
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +4 -3
- package/persisters/persister-sqlite3/index.js +4 -3
- package/persisters/persister-sqlite3/with-schemas/index.js +4 -3
- package/persisters/persister-yjs/index.js +4 -3
- package/persisters/persister-yjs/with-schemas/index.js +4 -3
- package/persisters/with-schemas/index.js +4 -3
- package/readme.md +3 -3
- package/releases.md +16 -1
- package/store/index.js +33 -2
- package/store/with-schemas/index.js +33 -2
- package/synchronizers/index.js +4 -3
- package/synchronizers/synchronizer-broadcast-channel/index.js +4 -3
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +4 -3
- package/synchronizers/synchronizer-local/index.js +4 -3
- package/synchronizers/synchronizer-local/with-schemas/index.js +4 -3
- package/synchronizers/synchronizer-ws-client/index.js +4 -3
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +4 -3
- package/synchronizers/synchronizer-ws-server/index.js +7 -8
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +7 -8
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +3 -3
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +3 -3
- package/synchronizers/with-schemas/index.js +4 -3
- package/ui-react-inspector/index.js +36 -5
- package/ui-react-inspector/with-schemas/index.js +36 -5
- package/ui-solid-inspector/index.js +36 -5
- package/ui-solid-inspector/with-schemas/index.js +36 -5
- package/ui-svelte-inspector/index.js +36 -5
- package/ui-svelte-inspector/with-schemas/index.js +36 -5
- package/with-schemas/index.js +46 -6
|
@@ -1097,19 +1097,19 @@ export interface MergeableStore extends Store {
|
|
|
1097
1097
|
* {
|
|
1098
1098
|
* fido: [
|
|
1099
1099
|
* {
|
|
1100
|
-
* sold: [false, '
|
|
1100
|
+
* sold: [false, '', 3177411910],
|
|
1101
1101
|
* species: ['dog', 'Nn1JUF----1FnHIC', 2817056260],
|
|
1102
1102
|
* },
|
|
1103
1103
|
* '',
|
|
1104
|
-
*
|
|
1104
|
+
* 3078067457,
|
|
1105
1105
|
* ],
|
|
1106
1106
|
* },
|
|
1107
1107
|
* '',
|
|
1108
|
-
*
|
|
1108
|
+
* 1137907280,
|
|
1109
1109
|
* ],
|
|
1110
1110
|
* },
|
|
1111
1111
|
* '',
|
|
1112
|
-
*
|
|
1112
|
+
* 401719767,
|
|
1113
1113
|
* ],
|
|
1114
1114
|
* [{}, '', 0],
|
|
1115
1115
|
* ];
|
|
@@ -91,12 +91,14 @@ export type ContentHashes = [tablesHash: Hash, valuesHash: Hash];
|
|
|
91
91
|
export type TablesStamp<
|
|
92
92
|
Schema extends OptionalTablesSchema,
|
|
93
93
|
Hashed extends boolean = false,
|
|
94
|
+
WhenSet extends boolean = false,
|
|
94
95
|
> = Stamp<
|
|
95
96
|
{
|
|
96
97
|
[TableId in TableIdFromSchema<Schema>]?: TableStamp<
|
|
97
98
|
Schema,
|
|
98
99
|
TableId,
|
|
99
|
-
Hashed
|
|
100
|
+
Hashed,
|
|
101
|
+
WhenSet
|
|
100
102
|
>;
|
|
101
103
|
},
|
|
102
104
|
Hashed
|
|
@@ -146,7 +148,8 @@ export type TableStamp<
|
|
|
146
148
|
Schema extends OptionalTablesSchema,
|
|
147
149
|
TableId extends TableIdFromSchema<Schema>,
|
|
148
150
|
Hashed extends boolean = false,
|
|
149
|
-
|
|
151
|
+
WhenSet extends boolean = false,
|
|
152
|
+
> = Stamp<{[rowId: Id]: RowStamp<Schema, TableId, Hashed, WhenSet>}, Hashed>;
|
|
150
153
|
|
|
151
154
|
/**
|
|
152
155
|
* The RowHashes type is used to quickly compare the content of two sets of Row
|
|
@@ -192,13 +195,15 @@ export type RowStamp<
|
|
|
192
195
|
Schema extends OptionalTablesSchema,
|
|
193
196
|
TableId extends TableIdFromSchema<Schema>,
|
|
194
197
|
Hashed extends boolean = false,
|
|
198
|
+
WhenSet extends boolean = false,
|
|
195
199
|
> = Stamp<
|
|
196
200
|
{
|
|
197
201
|
[CellId in CellIdFromSchema<Schema, TableId>]?: CellStamp<
|
|
198
202
|
Schema,
|
|
199
203
|
TableId,
|
|
200
204
|
CellId,
|
|
201
|
-
Hashed
|
|
205
|
+
Hashed,
|
|
206
|
+
WhenSet
|
|
202
207
|
>;
|
|
203
208
|
},
|
|
204
209
|
Hashed
|
|
@@ -251,7 +256,13 @@ export type CellStamp<
|
|
|
251
256
|
TableId extends TableIdFromSchema<Schema>,
|
|
252
257
|
CellId extends CellIdFromSchema<Schema, TableId>,
|
|
253
258
|
Hashed extends boolean = false,
|
|
254
|
-
|
|
259
|
+
WhenSet extends boolean = false,
|
|
260
|
+
> = Stamp<
|
|
261
|
+
WhenSet extends true
|
|
262
|
+
? CellOrUndefined<Schema, TableId, CellId>
|
|
263
|
+
: CellOrUndefined<Schema, TableId, CellId>,
|
|
264
|
+
Hashed
|
|
265
|
+
>;
|
|
255
266
|
|
|
256
267
|
/**
|
|
257
268
|
* The ValuesStamp type is used as metadata to decide how to merge two different
|
|
@@ -274,12 +285,14 @@ export type CellStamp<
|
|
|
274
285
|
export type ValuesStamp<
|
|
275
286
|
Schema extends OptionalValuesSchema,
|
|
276
287
|
Hashed extends boolean = false,
|
|
288
|
+
WhenSet extends boolean = false,
|
|
277
289
|
> = Stamp<
|
|
278
290
|
{
|
|
279
291
|
[ValueId in ValueIdFromSchema<Schema>]?: ValueStamp<
|
|
280
292
|
Schema,
|
|
281
293
|
ValueId,
|
|
282
|
-
Hashed
|
|
294
|
+
Hashed,
|
|
295
|
+
WhenSet
|
|
283
296
|
>;
|
|
284
297
|
},
|
|
285
298
|
Hashed
|
|
@@ -329,7 +342,13 @@ export type ValueStamp<
|
|
|
329
342
|
Schema extends OptionalValuesSchema,
|
|
330
343
|
ValueId extends ValueIdFromSchema<Schema>,
|
|
331
344
|
Hashed extends boolean = false,
|
|
332
|
-
|
|
345
|
+
WhenSet extends boolean = false,
|
|
346
|
+
> = Stamp<
|
|
347
|
+
WhenSet extends true
|
|
348
|
+
? ValueOrUndefined<Schema, ValueId>
|
|
349
|
+
: ValueOrUndefined<Schema, ValueId>,
|
|
350
|
+
Hashed
|
|
351
|
+
>;
|
|
333
352
|
|
|
334
353
|
/**
|
|
335
354
|
* The MergeableContent type represents the content of a MergeableStore and the
|
|
@@ -352,9 +371,12 @@ export type ValueStamp<
|
|
|
352
371
|
* @category Mergeable
|
|
353
372
|
* @since v5.0.0
|
|
354
373
|
*/
|
|
355
|
-
export type MergeableContent<
|
|
356
|
-
|
|
357
|
-
|
|
374
|
+
export type MergeableContent<
|
|
375
|
+
Schemas extends OptionalSchemas,
|
|
376
|
+
WhenSet extends boolean = false,
|
|
377
|
+
> = [
|
|
378
|
+
mergeableTables: TablesStamp<Schemas[0], true, WhenSet>,
|
|
379
|
+
mergeableValues: ValuesStamp<Schemas[1], true, WhenSet>,
|
|
358
380
|
];
|
|
359
381
|
|
|
360
382
|
/**
|
|
@@ -384,9 +406,10 @@ export type MergeableContent<Schemas extends OptionalSchemas> = [
|
|
|
384
406
|
export type MergeableChanges<
|
|
385
407
|
Schemas extends OptionalSchemas,
|
|
386
408
|
Hashed extends boolean = false,
|
|
409
|
+
WhenSet extends boolean = false,
|
|
387
410
|
> = [
|
|
388
|
-
mergeableTables: TablesStamp<Schemas[0], Hashed>,
|
|
389
|
-
mergeableValues: ValuesStamp<Schemas[1], Hashed>,
|
|
411
|
+
mergeableTables: TablesStamp<Schemas[0], Hashed, WhenSet>,
|
|
412
|
+
mergeableValues: ValuesStamp<Schemas[1], Hashed, WhenSet>,
|
|
390
413
|
isChanges: 1,
|
|
391
414
|
];
|
|
392
415
|
|
|
@@ -1017,7 +1040,7 @@ export interface MergeableStore<
|
|
|
1017
1040
|
* @since v5.0.0
|
|
1018
1041
|
*/
|
|
1019
1042
|
setMergeableContent(
|
|
1020
|
-
mergeableContent: MergeableContent<Schemas>,
|
|
1043
|
+
mergeableContent: MergeableContent<Schemas, true>,
|
|
1021
1044
|
): MergeableStore<Schemas>;
|
|
1022
1045
|
|
|
1023
1046
|
/**
|
|
@@ -1161,7 +1184,8 @@ export interface MergeableStore<
|
|
|
1161
1184
|
* @since v5.0.0
|
|
1162
1185
|
*/
|
|
1163
1186
|
applyMergeableChanges(
|
|
1164
|
-
mergeableChanges:
|
|
1187
|
+
mergeableChanges:
|
|
1188
|
+
MergeableChanges<Schemas, false, true> | MergeableContent<Schemas, true>,
|
|
1165
1189
|
): MergeableStore<Schemas>;
|
|
1166
1190
|
|
|
1167
1191
|
/**
|
|
@@ -1590,19 +1614,19 @@ export interface MergeableStore<
|
|
|
1590
1614
|
* {
|
|
1591
1615
|
* fido: [
|
|
1592
1616
|
* {
|
|
1593
|
-
* sold: [false, '
|
|
1617
|
+
* sold: [false, '', 3177411910],
|
|
1594
1618
|
* species: ['dog', 'Nn1JUF----1FnHIC', 2817056260],
|
|
1595
1619
|
* },
|
|
1596
1620
|
* '',
|
|
1597
|
-
*
|
|
1621
|
+
* 3078067457,
|
|
1598
1622
|
* ],
|
|
1599
1623
|
* },
|
|
1600
1624
|
* '',
|
|
1601
|
-
*
|
|
1625
|
+
* 1137907280,
|
|
1602
1626
|
* ],
|
|
1603
1627
|
* },
|
|
1604
1628
|
* '',
|
|
1605
|
-
*
|
|
1629
|
+
* 401719767,
|
|
1606
1630
|
* ],
|
|
1607
1631
|
* [{}, '', 0],
|
|
1608
1632
|
* ];
|
|
@@ -1760,7 +1760,8 @@ export type DatabaseChangeListener = (tableName: string) => void;
|
|
|
1760
1760
|
* `stopListeningToPersisted` has been renamed `delPersisterListener`.
|
|
1761
1761
|
* @param store The Store to persist.
|
|
1762
1762
|
* @param getPersisted An asynchronous function which will fetch content from
|
|
1763
|
-
* the persistence layer
|
|
1763
|
+
* the persistence layer. If it returns `undefined`, the load will use the
|
|
1764
|
+
* provided initial content if present, and otherwise leave the Store unchanged.
|
|
1764
1765
|
* @param setPersisted An asynchronous function which will send content to the
|
|
1765
1766
|
* persistence layer. Since v4.0, it receives functions for getting the Store
|
|
1766
1767
|
* content and information about the changes made during a transaction. Since
|
|
@@ -202,11 +202,12 @@ export type PersistedStore<
|
|
|
202
202
|
export type PersistedContent<
|
|
203
203
|
Schemas extends OptionalSchemas,
|
|
204
204
|
Persist extends Persists = Persists.StoreOnly,
|
|
205
|
+
WhenSet extends boolean = false,
|
|
205
206
|
> = Persist extends Persists.StoreOrMergeableStore
|
|
206
|
-
? Content<Schemas> | MergeableContent<Schemas>
|
|
207
|
+
? Content<Schemas, WhenSet> | MergeableContent<Schemas, WhenSet>
|
|
207
208
|
: Persist extends Persists.MergeableStoreOnly
|
|
208
|
-
? MergeableContent<Schemas>
|
|
209
|
-
: Content<Schemas>;
|
|
209
|
+
? MergeableContent<Schemas, WhenSet>
|
|
210
|
+
: Content<Schemas, WhenSet>;
|
|
210
211
|
|
|
211
212
|
/**
|
|
212
213
|
* The PersistedChanges type is a generic representation of changes made to the
|
|
@@ -235,10 +236,11 @@ export type PersistedContent<
|
|
|
235
236
|
export type PersistedChanges<
|
|
236
237
|
Schemas extends OptionalSchemas,
|
|
237
238
|
Persist extends Persists = Persists.StoreOnly,
|
|
239
|
+
WhenSet extends boolean = false,
|
|
238
240
|
> = Persist extends Persists.StoreOrMergeableStore
|
|
239
|
-
? Changes<Schemas> | MergeableChanges<Schemas>
|
|
241
|
+
? Changes<Schemas> | MergeableChanges<Schemas, false, WhenSet>
|
|
240
242
|
: Persist extends Persists.MergeableStoreOnly
|
|
241
|
-
? MergeableChanges<Schemas>
|
|
243
|
+
? MergeableChanges<Schemas, false, WhenSet>
|
|
242
244
|
: Changes<Schemas>;
|
|
243
245
|
|
|
244
246
|
/**
|
|
@@ -275,9 +277,10 @@ export type PersistedChanges<
|
|
|
275
277
|
export type PersisterListener<
|
|
276
278
|
Schemas extends OptionalSchemas,
|
|
277
279
|
Persist extends Persists = Persists.StoreOnly,
|
|
280
|
+
WhenSet extends boolean = false,
|
|
278
281
|
> = (
|
|
279
|
-
content?: PersistedContent<Schemas, Persist>,
|
|
280
|
-
changes?: PersistedChanges<Schemas, Persist>,
|
|
282
|
+
content?: PersistedContent<Schemas, Persist, WhenSet>,
|
|
283
|
+
changes?: PersistedChanges<Schemas, Persist, WhenSet>,
|
|
281
284
|
) => void;
|
|
282
285
|
|
|
283
286
|
/**
|
|
@@ -1916,7 +1919,8 @@ export type DatabaseChangeListener = (tableName: string) => void;
|
|
|
1916
1919
|
* `stopListeningToPersisted` has been renamed `delPersisterListener`.
|
|
1917
1920
|
* @param store The Store to persist.
|
|
1918
1921
|
* @param getPersisted An asynchronous function which will fetch content from
|
|
1919
|
-
* the persistence layer
|
|
1922
|
+
* the persistence layer. If it returns `undefined`, the load will use the
|
|
1923
|
+
* provided initial content if present, and otherwise leave the Store unchanged.
|
|
1920
1924
|
* @param setPersisted An asynchronous function which will send content to the
|
|
1921
1925
|
* persistence layer. Since v4.0, it receives functions for getting the Store
|
|
1922
1926
|
* content and information about the changes made during a transaction. Since
|
|
@@ -2052,13 +2056,15 @@ export function createCustomPersister<
|
|
|
2052
2056
|
Persist extends Persists = Persists.StoreOnly,
|
|
2053
2057
|
>(
|
|
2054
2058
|
store: PersistedStore<Schemas, Persist>,
|
|
2055
|
-
getPersisted: () => Promise<
|
|
2059
|
+
getPersisted: () => Promise<
|
|
2060
|
+
PersistedContent<Schemas, Persist, true> | undefined
|
|
2061
|
+
>,
|
|
2056
2062
|
setPersisted: (
|
|
2057
2063
|
getContent: () => PersistedContent<Schemas, Persist>,
|
|
2058
2064
|
changes?: PersistedChanges<Schemas, Persist>,
|
|
2059
2065
|
) => Promise<void>,
|
|
2060
2066
|
addPersisterListener: (
|
|
2061
|
-
listener: PersisterListener<Schemas, Persist>,
|
|
2067
|
+
listener: PersisterListener<Schemas, Persist, true>,
|
|
2062
2068
|
) => ListenerHandle | Promise<ListenerHandle>,
|
|
2063
2069
|
delPersisterListener: (
|
|
2064
2070
|
listenerHandle: ListenerHandle,
|
|
@@ -855,6 +855,10 @@ export type Param = (paramId: Id) => ParamValue | undefined;
|
|
|
855
855
|
* The Select function is provided to the third `query` parameter of the
|
|
856
856
|
* setQueryDefinition method. A query definition must call the Select function
|
|
857
857
|
* at least once, otherwise it will be meaningless and return no data.
|
|
858
|
+
*
|
|
859
|
+
* A Row will only appear in the ResultTable if at least one Select clause
|
|
860
|
+
* produces a defined value for it. If all selected Cells or calculated values
|
|
861
|
+
* resolve to `undefined`, no ResultRow is created for that Row.
|
|
858
862
|
* @example
|
|
859
863
|
* This example shows a query that selects two Cells from the main query Table.
|
|
860
864
|
*
|
|
@@ -991,6 +991,10 @@ export type Param = (paramId: Id) => ParamValue | undefined;
|
|
|
991
991
|
* The Select function is provided to the third `query` parameter of the
|
|
992
992
|
* setQueryDefinition method. A query definition must call the Select function
|
|
993
993
|
* at least once, otherwise it will be meaningless and return no data.
|
|
994
|
+
*
|
|
995
|
+
* A Row will only appear in the ResultTable if at least one Select clause
|
|
996
|
+
* produces a defined value for it. If all selected Cells or calculated values
|
|
997
|
+
* resolve to `undefined`, no ResultRow is created for that Row.
|
|
994
998
|
* @example
|
|
995
999
|
* This example shows a query that selects two Cells from the main query Table.
|
|
996
1000
|
*
|
package/index.js
CHANGED
|
@@ -1225,8 +1225,10 @@ const createStore = () => {
|
|
|
1225
1225
|
const changedRowIds = mapNew();
|
|
1226
1226
|
const changedCellIds = mapNew();
|
|
1227
1227
|
const changedCells = mapNew();
|
|
1228
|
+
const defaultedCells = mapNew();
|
|
1228
1229
|
const changedValueIds = mapNew();
|
|
1229
1230
|
const changedValues = mapNew();
|
|
1231
|
+
const defaultedValues = setNew();
|
|
1230
1232
|
const invalidCells = mapNew();
|
|
1231
1233
|
const invalidValues = mapNew();
|
|
1232
1234
|
const tablesSchemaMap = mapNew();
|
|
@@ -1400,6 +1402,16 @@ const createStore = () => {
|
|
|
1400
1402
|
collForEach(rowDefaulted, (cell, cellId) => {
|
|
1401
1403
|
if (!objHas(row, cellId)) {
|
|
1402
1404
|
row[cellId] = cell;
|
|
1405
|
+
ifNotUndefined(rowId, (rowId2) =>
|
|
1406
|
+
setAdd(
|
|
1407
|
+
mapEnsure(
|
|
1408
|
+
mapEnsure(defaultedCells, tableId, mapNew),
|
|
1409
|
+
rowId2,
|
|
1410
|
+
setNew,
|
|
1411
|
+
),
|
|
1412
|
+
cellId,
|
|
1413
|
+
),
|
|
1414
|
+
);
|
|
1403
1415
|
}
|
|
1404
1416
|
});
|
|
1405
1417
|
collForEach(rowNonDefaulted, (cellId) => {
|
|
@@ -1416,6 +1428,7 @@ const createStore = () => {
|
|
|
1416
1428
|
collForEach(valuesDefaulted, (value, valueId) => {
|
|
1417
1429
|
if (!objHas(values, valueId)) {
|
|
1418
1430
|
values[valueId] = value;
|
|
1431
|
+
setAdd(defaultedValues, valueId);
|
|
1419
1432
|
}
|
|
1420
1433
|
});
|
|
1421
1434
|
collForEach(valuesNonDefaulted, (valueId) => {
|
|
@@ -1819,18 +1832,34 @@ const createStore = () => {
|
|
|
1819
1832
|
);
|
|
1820
1833
|
};
|
|
1821
1834
|
const cellChanged = (tableId, rowId, cellId, oldCell, newCell) => {
|
|
1835
|
+
const defaulted =
|
|
1836
|
+
collHas(mapGet(mapGet(defaultedCells, tableId), rowId), cellId) &&
|
|
1837
|
+
isUndefined(oldCell)
|
|
1838
|
+
? 1
|
|
1839
|
+
: 0;
|
|
1822
1840
|
mapEnsure(
|
|
1823
1841
|
mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
|
|
1824
1842
|
cellId,
|
|
1825
1843
|
() => [oldCell, 0],
|
|
1826
1844
|
)[1] = newCell;
|
|
1827
|
-
internalListeners[3]?.(
|
|
1845
|
+
internalListeners[3]?.(
|
|
1846
|
+
tableId,
|
|
1847
|
+
rowId,
|
|
1848
|
+
cellId,
|
|
1849
|
+
newCell,
|
|
1850
|
+
mutating,
|
|
1851
|
+
defaulted,
|
|
1852
|
+
);
|
|
1853
|
+
collDel(mapGet(mapGet(defaultedCells, tableId), rowId), cellId);
|
|
1828
1854
|
};
|
|
1829
1855
|
const valueIdsChanged = (valueId, addedOrRemoved) =>
|
|
1830
1856
|
idsChanged(changedValueIds, valueId, addedOrRemoved);
|
|
1831
1857
|
const valueChanged = (valueId, oldValue, newValue) => {
|
|
1858
|
+
const defaulted =
|
|
1859
|
+
collHas(defaultedValues, valueId) && isUndefined(oldValue) ? 1 : 0;
|
|
1832
1860
|
mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;
|
|
1833
|
-
internalListeners[4]?.(valueId, newValue, mutating);
|
|
1861
|
+
internalListeners[4]?.(valueId, newValue, mutating, defaulted);
|
|
1862
|
+
collDel(defaultedValues, valueId);
|
|
1834
1863
|
};
|
|
1835
1864
|
const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
|
|
1836
1865
|
arrayPush(
|
|
@@ -2618,9 +2647,11 @@ const createStore = () => {
|
|
|
2618
2647
|
changedRowIds,
|
|
2619
2648
|
changedCellIds,
|
|
2620
2649
|
changedCells,
|
|
2650
|
+
defaultedCells,
|
|
2621
2651
|
invalidCells,
|
|
2622
2652
|
changedValueIds,
|
|
2623
2653
|
changedValues,
|
|
2654
|
+
defaultedValues,
|
|
2624
2655
|
invalidValues,
|
|
2625
2656
|
],
|
|
2626
2657
|
collClear,
|
|
@@ -3125,7 +3156,14 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3125
3156
|
collClear(touchedCells);
|
|
3126
3157
|
collClear(touchedValues);
|
|
3127
3158
|
};
|
|
3128
|
-
const cellChanged = (
|
|
3159
|
+
const cellChanged = (
|
|
3160
|
+
tableId,
|
|
3161
|
+
rowId,
|
|
3162
|
+
cellId,
|
|
3163
|
+
newCell,
|
|
3164
|
+
mutating,
|
|
3165
|
+
defaulted,
|
|
3166
|
+
) => {
|
|
3129
3167
|
setAdd(
|
|
3130
3168
|
mapEnsure(mapEnsure(touchedCells, tableId, mapNew), rowId, setNew),
|
|
3131
3169
|
cellId,
|
|
@@ -3143,7 +3181,9 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3143
3181
|
{
|
|
3144
3182
|
[cellId]: [
|
|
3145
3183
|
newCell,
|
|
3146
|
-
defaultingContent
|
|
3184
|
+
defaultingContent || defaulted
|
|
3185
|
+
? EMPTY_STRING
|
|
3186
|
+
: getNextHlc(),
|
|
3147
3187
|
],
|
|
3148
3188
|
},
|
|
3149
3189
|
],
|
|
@@ -3156,7 +3196,7 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3156
3196
|
]);
|
|
3157
3197
|
}
|
|
3158
3198
|
};
|
|
3159
|
-
const valueChanged = (valueId, newValue, mutating) => {
|
|
3199
|
+
const valueChanged = (valueId, newValue, mutating, defaulted) => {
|
|
3160
3200
|
setAdd(touchedValues, valueId);
|
|
3161
3201
|
if (listeningToRawStoreChanges || mutating) {
|
|
3162
3202
|
if (mutating) {
|
|
@@ -3168,7 +3208,7 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3168
3208
|
{
|
|
3169
3209
|
[valueId]: [
|
|
3170
3210
|
newValue,
|
|
3171
|
-
defaultingContent ? EMPTY_STRING : getNextHlc(),
|
|
3211
|
+
defaultingContent || defaulted ? EMPTY_STRING : getNextHlc(),
|
|
3172
3212
|
],
|
|
3173
3213
|
},
|
|
3174
3214
|
],
|
package/mergeable-store/index.js
CHANGED
|
@@ -557,8 +557,10 @@ const createStore = () => {
|
|
|
557
557
|
const changedRowIds = mapNew();
|
|
558
558
|
const changedCellIds = mapNew();
|
|
559
559
|
const changedCells = mapNew();
|
|
560
|
+
const defaultedCells = mapNew();
|
|
560
561
|
const changedValueIds = mapNew();
|
|
561
562
|
const changedValues = mapNew();
|
|
563
|
+
const defaultedValues = setNew();
|
|
562
564
|
const invalidCells = mapNew();
|
|
563
565
|
const invalidValues = mapNew();
|
|
564
566
|
const tablesSchemaMap = mapNew();
|
|
@@ -732,6 +734,16 @@ const createStore = () => {
|
|
|
732
734
|
collForEach(rowDefaulted, (cell, cellId) => {
|
|
733
735
|
if (!objHas(row, cellId)) {
|
|
734
736
|
row[cellId] = cell;
|
|
737
|
+
ifNotUndefined(rowId, (rowId2) =>
|
|
738
|
+
setAdd(
|
|
739
|
+
mapEnsure(
|
|
740
|
+
mapEnsure(defaultedCells, tableId, mapNew),
|
|
741
|
+
rowId2,
|
|
742
|
+
setNew,
|
|
743
|
+
),
|
|
744
|
+
cellId,
|
|
745
|
+
),
|
|
746
|
+
);
|
|
735
747
|
}
|
|
736
748
|
});
|
|
737
749
|
collForEach(rowNonDefaulted, (cellId) => {
|
|
@@ -748,6 +760,7 @@ const createStore = () => {
|
|
|
748
760
|
collForEach(valuesDefaulted, (value, valueId) => {
|
|
749
761
|
if (!objHas(values, valueId)) {
|
|
750
762
|
values[valueId] = value;
|
|
763
|
+
setAdd(defaultedValues, valueId);
|
|
751
764
|
}
|
|
752
765
|
});
|
|
753
766
|
collForEach(valuesNonDefaulted, (valueId) => {
|
|
@@ -1151,18 +1164,34 @@ const createStore = () => {
|
|
|
1151
1164
|
);
|
|
1152
1165
|
};
|
|
1153
1166
|
const cellChanged = (tableId, rowId, cellId, oldCell, newCell) => {
|
|
1167
|
+
const defaulted =
|
|
1168
|
+
collHas(mapGet(mapGet(defaultedCells, tableId), rowId), cellId) &&
|
|
1169
|
+
isUndefined(oldCell)
|
|
1170
|
+
? 1
|
|
1171
|
+
: 0;
|
|
1154
1172
|
mapEnsure(
|
|
1155
1173
|
mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
|
|
1156
1174
|
cellId,
|
|
1157
1175
|
() => [oldCell, 0],
|
|
1158
1176
|
)[1] = newCell;
|
|
1159
|
-
internalListeners[3]?.(
|
|
1177
|
+
internalListeners[3]?.(
|
|
1178
|
+
tableId,
|
|
1179
|
+
rowId,
|
|
1180
|
+
cellId,
|
|
1181
|
+
newCell,
|
|
1182
|
+
mutating,
|
|
1183
|
+
defaulted,
|
|
1184
|
+
);
|
|
1185
|
+
collDel(mapGet(mapGet(defaultedCells, tableId), rowId), cellId);
|
|
1160
1186
|
};
|
|
1161
1187
|
const valueIdsChanged = (valueId, addedOrRemoved) =>
|
|
1162
1188
|
idsChanged(changedValueIds, valueId, addedOrRemoved);
|
|
1163
1189
|
const valueChanged = (valueId, oldValue, newValue) => {
|
|
1190
|
+
const defaulted =
|
|
1191
|
+
collHas(defaultedValues, valueId) && isUndefined(oldValue) ? 1 : 0;
|
|
1164
1192
|
mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;
|
|
1165
|
-
internalListeners[4]?.(valueId, newValue, mutating);
|
|
1193
|
+
internalListeners[4]?.(valueId, newValue, mutating, defaulted);
|
|
1194
|
+
collDel(defaultedValues, valueId);
|
|
1166
1195
|
};
|
|
1167
1196
|
const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
|
|
1168
1197
|
arrayPush(
|
|
@@ -1950,9 +1979,11 @@ const createStore = () => {
|
|
|
1950
1979
|
changedRowIds,
|
|
1951
1980
|
changedCellIds,
|
|
1952
1981
|
changedCells,
|
|
1982
|
+
defaultedCells,
|
|
1953
1983
|
invalidCells,
|
|
1954
1984
|
changedValueIds,
|
|
1955
1985
|
changedValues,
|
|
1986
|
+
defaultedValues,
|
|
1956
1987
|
invalidValues,
|
|
1957
1988
|
],
|
|
1958
1989
|
collClear,
|
|
@@ -2457,7 +2488,14 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2457
2488
|
collClear(touchedCells);
|
|
2458
2489
|
collClear(touchedValues);
|
|
2459
2490
|
};
|
|
2460
|
-
const cellChanged = (
|
|
2491
|
+
const cellChanged = (
|
|
2492
|
+
tableId,
|
|
2493
|
+
rowId,
|
|
2494
|
+
cellId,
|
|
2495
|
+
newCell,
|
|
2496
|
+
mutating,
|
|
2497
|
+
defaulted,
|
|
2498
|
+
) => {
|
|
2461
2499
|
setAdd(
|
|
2462
2500
|
mapEnsure(mapEnsure(touchedCells, tableId, mapNew), rowId, setNew),
|
|
2463
2501
|
cellId,
|
|
@@ -2475,7 +2513,9 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2475
2513
|
{
|
|
2476
2514
|
[cellId]: [
|
|
2477
2515
|
newCell,
|
|
2478
|
-
defaultingContent
|
|
2516
|
+
defaultingContent || defaulted
|
|
2517
|
+
? EMPTY_STRING
|
|
2518
|
+
: getNextHlc(),
|
|
2479
2519
|
],
|
|
2480
2520
|
},
|
|
2481
2521
|
],
|
|
@@ -2488,7 +2528,7 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2488
2528
|
]);
|
|
2489
2529
|
}
|
|
2490
2530
|
};
|
|
2491
|
-
const valueChanged = (valueId, newValue, mutating) => {
|
|
2531
|
+
const valueChanged = (valueId, newValue, mutating, defaulted) => {
|
|
2492
2532
|
setAdd(touchedValues, valueId);
|
|
2493
2533
|
if (listeningToRawStoreChanges || mutating) {
|
|
2494
2534
|
if (mutating) {
|
|
@@ -2500,7 +2540,7 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2500
2540
|
{
|
|
2501
2541
|
[valueId]: [
|
|
2502
2542
|
newValue,
|
|
2503
|
-
defaultingContent ? EMPTY_STRING : getNextHlc(),
|
|
2543
|
+
defaultingContent || defaulted ? EMPTY_STRING : getNextHlc(),
|
|
2504
2544
|
],
|
|
2505
2545
|
},
|
|
2506
2546
|
],
|
|
@@ -557,8 +557,10 @@ const createStore = () => {
|
|
|
557
557
|
const changedRowIds = mapNew();
|
|
558
558
|
const changedCellIds = mapNew();
|
|
559
559
|
const changedCells = mapNew();
|
|
560
|
+
const defaultedCells = mapNew();
|
|
560
561
|
const changedValueIds = mapNew();
|
|
561
562
|
const changedValues = mapNew();
|
|
563
|
+
const defaultedValues = setNew();
|
|
562
564
|
const invalidCells = mapNew();
|
|
563
565
|
const invalidValues = mapNew();
|
|
564
566
|
const tablesSchemaMap = mapNew();
|
|
@@ -732,6 +734,16 @@ const createStore = () => {
|
|
|
732
734
|
collForEach(rowDefaulted, (cell, cellId) => {
|
|
733
735
|
if (!objHas(row, cellId)) {
|
|
734
736
|
row[cellId] = cell;
|
|
737
|
+
ifNotUndefined(rowId, (rowId2) =>
|
|
738
|
+
setAdd(
|
|
739
|
+
mapEnsure(
|
|
740
|
+
mapEnsure(defaultedCells, tableId, mapNew),
|
|
741
|
+
rowId2,
|
|
742
|
+
setNew,
|
|
743
|
+
),
|
|
744
|
+
cellId,
|
|
745
|
+
),
|
|
746
|
+
);
|
|
735
747
|
}
|
|
736
748
|
});
|
|
737
749
|
collForEach(rowNonDefaulted, (cellId) => {
|
|
@@ -748,6 +760,7 @@ const createStore = () => {
|
|
|
748
760
|
collForEach(valuesDefaulted, (value, valueId) => {
|
|
749
761
|
if (!objHas(values, valueId)) {
|
|
750
762
|
values[valueId] = value;
|
|
763
|
+
setAdd(defaultedValues, valueId);
|
|
751
764
|
}
|
|
752
765
|
});
|
|
753
766
|
collForEach(valuesNonDefaulted, (valueId) => {
|
|
@@ -1151,18 +1164,34 @@ const createStore = () => {
|
|
|
1151
1164
|
);
|
|
1152
1165
|
};
|
|
1153
1166
|
const cellChanged = (tableId, rowId, cellId, oldCell, newCell) => {
|
|
1167
|
+
const defaulted =
|
|
1168
|
+
collHas(mapGet(mapGet(defaultedCells, tableId), rowId), cellId) &&
|
|
1169
|
+
isUndefined(oldCell)
|
|
1170
|
+
? 1
|
|
1171
|
+
: 0;
|
|
1154
1172
|
mapEnsure(
|
|
1155
1173
|
mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
|
|
1156
1174
|
cellId,
|
|
1157
1175
|
() => [oldCell, 0],
|
|
1158
1176
|
)[1] = newCell;
|
|
1159
|
-
internalListeners[3]?.(
|
|
1177
|
+
internalListeners[3]?.(
|
|
1178
|
+
tableId,
|
|
1179
|
+
rowId,
|
|
1180
|
+
cellId,
|
|
1181
|
+
newCell,
|
|
1182
|
+
mutating,
|
|
1183
|
+
defaulted,
|
|
1184
|
+
);
|
|
1185
|
+
collDel(mapGet(mapGet(defaultedCells, tableId), rowId), cellId);
|
|
1160
1186
|
};
|
|
1161
1187
|
const valueIdsChanged = (valueId, addedOrRemoved) =>
|
|
1162
1188
|
idsChanged(changedValueIds, valueId, addedOrRemoved);
|
|
1163
1189
|
const valueChanged = (valueId, oldValue, newValue) => {
|
|
1190
|
+
const defaulted =
|
|
1191
|
+
collHas(defaultedValues, valueId) && isUndefined(oldValue) ? 1 : 0;
|
|
1164
1192
|
mapEnsure(changedValues, valueId, () => [oldValue, 0])[1] = newValue;
|
|
1165
|
-
internalListeners[4]?.(valueId, newValue, mutating);
|
|
1193
|
+
internalListeners[4]?.(valueId, newValue, mutating, defaulted);
|
|
1194
|
+
collDel(defaultedValues, valueId);
|
|
1166
1195
|
};
|
|
1167
1196
|
const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
|
|
1168
1197
|
arrayPush(
|
|
@@ -1950,9 +1979,11 @@ const createStore = () => {
|
|
|
1950
1979
|
changedRowIds,
|
|
1951
1980
|
changedCellIds,
|
|
1952
1981
|
changedCells,
|
|
1982
|
+
defaultedCells,
|
|
1953
1983
|
invalidCells,
|
|
1954
1984
|
changedValueIds,
|
|
1955
1985
|
changedValues,
|
|
1986
|
+
defaultedValues,
|
|
1956
1987
|
invalidValues,
|
|
1957
1988
|
],
|
|
1958
1989
|
collClear,
|
|
@@ -2457,7 +2488,14 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2457
2488
|
collClear(touchedCells);
|
|
2458
2489
|
collClear(touchedValues);
|
|
2459
2490
|
};
|
|
2460
|
-
const cellChanged = (
|
|
2491
|
+
const cellChanged = (
|
|
2492
|
+
tableId,
|
|
2493
|
+
rowId,
|
|
2494
|
+
cellId,
|
|
2495
|
+
newCell,
|
|
2496
|
+
mutating,
|
|
2497
|
+
defaulted,
|
|
2498
|
+
) => {
|
|
2461
2499
|
setAdd(
|
|
2462
2500
|
mapEnsure(mapEnsure(touchedCells, tableId, mapNew), rowId, setNew),
|
|
2463
2501
|
cellId,
|
|
@@ -2475,7 +2513,9 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2475
2513
|
{
|
|
2476
2514
|
[cellId]: [
|
|
2477
2515
|
newCell,
|
|
2478
|
-
defaultingContent
|
|
2516
|
+
defaultingContent || defaulted
|
|
2517
|
+
? EMPTY_STRING
|
|
2518
|
+
: getNextHlc(),
|
|
2479
2519
|
],
|
|
2480
2520
|
},
|
|
2481
2521
|
],
|
|
@@ -2488,7 +2528,7 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2488
2528
|
]);
|
|
2489
2529
|
}
|
|
2490
2530
|
};
|
|
2491
|
-
const valueChanged = (valueId, newValue, mutating) => {
|
|
2531
|
+
const valueChanged = (valueId, newValue, mutating, defaulted) => {
|
|
2492
2532
|
setAdd(touchedValues, valueId);
|
|
2493
2533
|
if (listeningToRawStoreChanges || mutating) {
|
|
2494
2534
|
if (mutating) {
|
|
@@ -2500,7 +2540,7 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2500
2540
|
{
|
|
2501
2541
|
[valueId]: [
|
|
2502
2542
|
newValue,
|
|
2503
|
-
defaultingContent ? EMPTY_STRING : getNextHlc(),
|
|
2543
|
+
defaultingContent || defaulted ? EMPTY_STRING : getNextHlc(),
|
|
2504
2544
|
],
|
|
2505
2545
|
},
|
|
2506
2546
|
],
|