tinybase 8.0.0-beta.2 → 8.0.0-beta.3
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/_internal/store/with-schemas/index.d.ts +2 -2
- package/@types/common/index.d.ts +22 -0
- package/@types/common/with-schemas/index.d.ts +22 -0
- package/@types/middleware/index.d.ts +11 -6
- package/@types/middleware/with-schemas/index.d.ts +11 -6
- package/@types/store/index.d.ts +132 -79
- package/@types/store/with-schemas/index.d.ts +137 -81
- package/checkpoints/index.js +2 -8
- package/checkpoints/with-schemas/index.js +2 -8
- package/index.js +211 -140
- package/mergeable-store/index.js +231 -153
- package/mergeable-store/with-schemas/index.js +231 -153
- package/middleware/index.js +1 -1
- package/middleware/with-schemas/index.js +1 -1
- package/min/checkpoints/index.js +1 -1
- package/min/checkpoints/index.js.gz +0 -0
- package/min/checkpoints/with-schemas/index.js +1 -1
- package/min/checkpoints/with-schemas/index.js.gz +0 -0
- 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/middleware/index.js +1 -1
- package/min/middleware/index.js.gz +0 -0
- package/min/middleware/with-schemas/index.js +1 -1
- package/min/middleware/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/queries/index.js +1 -1
- package/min/queries/index.js.gz +0 -0
- package/min/queries/with-schemas/index.js +1 -1
- package/min/queries/with-schemas/index.js.gz +0 -0
- package/min/schematizers/index.js +1 -1
- package/min/schematizers/index.js.gz +0 -0
- package/min/schematizers/schematizer-arktype/index.js +1 -1
- package/min/schematizers/schematizer-arktype/index.js.gz +0 -0
- package/min/schematizers/schematizer-arktype/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-arktype/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-effect/index.js +1 -1
- package/min/schematizers/schematizer-effect/index.js.gz +0 -0
- package/min/schematizers/schematizer-effect/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-effect/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-typebox/index.js +1 -1
- package/min/schematizers/schematizer-typebox/index.js.gz +0 -0
- package/min/schematizers/schematizer-typebox/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-typebox/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-valibot/index.js +1 -1
- package/min/schematizers/schematizer-valibot/index.js.gz +0 -0
- package/min/schematizers/schematizer-valibot/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-valibot/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-yup/index.js +1 -1
- package/min/schematizers/schematizer-yup/index.js.gz +0 -0
- package/min/schematizers/schematizer-yup/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-yup/with-schemas/index.js.gz +0 -0
- package/min/schematizers/schematizer-zod/index.js +1 -1
- package/min/schematizers/schematizer-zod/index.js.gz +0 -0
- package/min/schematizers/schematizer-zod/with-schemas/index.js +1 -1
- package/min/schematizers/schematizer-zod/with-schemas/index.js.gz +0 -0
- package/min/schematizers/with-schemas/index.js +1 -1
- package/min/schematizers/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/index.js +1 -1
- package/min/ui-react/index.js.gz +0 -0
- package/min/ui-react/with-schemas/index.js +1 -1
- package/min/ui-react/with-schemas/index.js.gz +0 -0
- package/min/ui-react-dom/index.js +1 -1
- package/min/ui-react-dom/index.js.gz +0 -0
- package/min/ui-react-dom/with-schemas/index.js +1 -1
- package/min/ui-react-dom/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/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/omni/index.js +296 -151
- package/omni/with-schemas/index.js +296 -151
- package/package.json +7 -7
- package/persisters/index.js +5 -5
- package/persisters/persister-automerge/index.js +5 -5
- package/persisters/persister-automerge/with-schemas/index.js +5 -5
- package/persisters/persister-browser/index.js +5 -5
- package/persisters/persister-browser/with-schemas/index.js +5 -5
- package/persisters/persister-cr-sqlite-wasm/index.js +5 -5
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +5 -5
- package/persisters/persister-durable-object-sql-storage/index.js +5 -5
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +5 -5
- package/persisters/persister-durable-object-storage/index.js +5 -5
- package/persisters/persister-durable-object-storage/with-schemas/index.js +5 -5
- package/persisters/persister-electric-sql/index.js +5 -5
- package/persisters/persister-electric-sql/with-schemas/index.js +5 -5
- package/persisters/persister-expo-sqlite/index.js +5 -5
- package/persisters/persister-expo-sqlite/with-schemas/index.js +5 -5
- package/persisters/persister-file/index.js +5 -5
- package/persisters/persister-file/with-schemas/index.js +5 -5
- package/persisters/persister-indexed-db/index.js +5 -5
- package/persisters/persister-indexed-db/with-schemas/index.js +5 -5
- package/persisters/persister-libsql/index.js +5 -5
- package/persisters/persister-libsql/with-schemas/index.js +5 -5
- package/persisters/persister-partykit-client/index.js +5 -5
- package/persisters/persister-partykit-client/with-schemas/index.js +5 -5
- package/persisters/persister-pglite/index.js +5 -5
- package/persisters/persister-pglite/with-schemas/index.js +5 -5
- package/persisters/persister-postgres/index.js +5 -5
- package/persisters/persister-postgres/with-schemas/index.js +5 -5
- package/persisters/persister-powersync/index.js +5 -5
- package/persisters/persister-powersync/with-schemas/index.js +5 -5
- package/persisters/persister-react-native-mmkv/index.js +5 -5
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +5 -5
- package/persisters/persister-react-native-sqlite/index.js +5 -5
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +5 -5
- package/persisters/persister-remote/index.js +5 -5
- package/persisters/persister-remote/with-schemas/index.js +5 -5
- package/persisters/persister-sqlite-bun/index.js +5 -5
- package/persisters/persister-sqlite-bun/with-schemas/index.js +5 -5
- package/persisters/persister-sqlite-wasm/index.js +5 -5
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +5 -5
- package/persisters/persister-sqlite3/index.js +5 -5
- package/persisters/persister-sqlite3/with-schemas/index.js +5 -5
- package/persisters/persister-yjs/index.js +5 -5
- package/persisters/persister-yjs/with-schemas/index.js +5 -5
- package/persisters/with-schemas/index.js +5 -5
- package/queries/index.js +11 -4
- package/queries/with-schemas/index.js +11 -4
- package/readme.md +3 -3
- package/releases.md +1 -1
- package/schematizers/index.js +9 -1
- package/schematizers/schematizer-arktype/index.js +16 -1
- package/schematizers/schematizer-arktype/with-schemas/index.js +16 -1
- package/schematizers/schematizer-effect/index.js +15 -2
- package/schematizers/schematizer-effect/with-schemas/index.js +15 -2
- package/schematizers/schematizer-typebox/index.js +9 -1
- package/schematizers/schematizer-typebox/with-schemas/index.js +9 -1
- package/schematizers/schematizer-valibot/index.js +17 -2
- package/schematizers/schematizer-valibot/with-schemas/index.js +17 -2
- package/schematizers/schematizer-yup/index.js +9 -1
- package/schematizers/schematizer-yup/with-schemas/index.js +9 -1
- package/schematizers/schematizer-zod/index.js +13 -2
- package/schematizers/schematizer-zod/with-schemas/index.js +13 -2
- package/schematizers/with-schemas/index.js +9 -1
- package/store/index.js +155 -101
- package/store/with-schemas/index.js +155 -101
- package/synchronizers/index.js +5 -5
- package/synchronizers/synchronizer-broadcast-channel/index.js +5 -5
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +5 -5
- package/synchronizers/synchronizer-local/index.js +5 -5
- package/synchronizers/synchronizer-local/with-schemas/index.js +5 -5
- package/synchronizers/synchronizer-ws-client/index.js +5 -5
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +5 -5
- package/synchronizers/synchronizer-ws-server/index.js +5 -5
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +5 -5
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +5 -5
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +5 -5
- package/synchronizers/with-schemas/index.js +5 -5
- package/ui-react/index.js +6 -0
- package/ui-react/with-schemas/index.js +6 -0
- package/ui-react-dom/index.js +91 -6
- package/ui-react-dom/with-schemas/index.js +91 -6
- package/ui-react-inspector/index.js +208 -81
- package/ui-react-inspector/with-schemas/index.js +208 -81
- package/with-schemas/index.js +211 -140
|
@@ -4,6 +4,8 @@ const STRING = getTypeOf(EMPTY_STRING);
|
|
|
4
4
|
const BOOLEAN = getTypeOf(true);
|
|
5
5
|
const NUMBER = getTypeOf(0);
|
|
6
6
|
const FUNCTION = getTypeOf(getTypeOf);
|
|
7
|
+
const OBJECT = 'object';
|
|
8
|
+
const ARRAY = 'array';
|
|
7
9
|
const TYPE = 'type';
|
|
8
10
|
const DEFAULT = 'default';
|
|
9
11
|
const ALLOW_NULL = 'allowNull';
|
|
@@ -26,6 +28,7 @@ const VALUE = 'Value';
|
|
|
26
28
|
const VALUES = VALUE + 's';
|
|
27
29
|
const VALUE_IDS = VALUE + IDS;
|
|
28
30
|
const TRANSACTION = 'Transaction';
|
|
31
|
+
const JSON_PREFIX = '\uFFFD';
|
|
29
32
|
const id = (key) => EMPTY_STRING + key;
|
|
30
33
|
const strStartsWith = (str, prefix) => str.startsWith(prefix);
|
|
31
34
|
const strEndsWith = (str, suffix) => str.endsWith(suffix);
|
|
@@ -63,19 +66,6 @@ const tryCatch = async (action, then1, then2) => {
|
|
|
63
66
|
}
|
|
64
67
|
};
|
|
65
68
|
|
|
66
|
-
const getCellOrValueType = (cellOrValue) => {
|
|
67
|
-
if (isNull(cellOrValue)) {
|
|
68
|
-
return NULL;
|
|
69
|
-
}
|
|
70
|
-
const type = getTypeOf(cellOrValue);
|
|
71
|
-
return isTypeStringOrBoolean(type) ||
|
|
72
|
-
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
73
|
-
? type
|
|
74
|
-
: void 0;
|
|
75
|
-
};
|
|
76
|
-
const isCellOrValueOrUndefined = (cellOrValue) =>
|
|
77
|
-
isUndefined(cellOrValue) || !isUndefined(getCellOrValueType(cellOrValue));
|
|
78
|
-
|
|
79
69
|
const arrayHas = (array, value) => array.includes(value);
|
|
80
70
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
81
71
|
const arrayIsEqual = (array1, array2) =>
|
|
@@ -88,19 +78,6 @@ const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
|
88
78
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
89
79
|
const arrayShift = (array) => array.shift();
|
|
90
80
|
|
|
91
|
-
const collSizeN = (collSizer) => (coll) =>
|
|
92
|
-
arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);
|
|
93
|
-
const collSize = (coll) => coll?.size ?? 0;
|
|
94
|
-
const collSize2 = collSizeN(collSize);
|
|
95
|
-
const collSize3 = collSizeN(collSize2);
|
|
96
|
-
const collSize4 = collSizeN(collSize3);
|
|
97
|
-
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
98
|
-
const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
99
|
-
const collValues = (coll) => [...(coll?.values() ?? [])];
|
|
100
|
-
const collClear = (coll) => coll.clear();
|
|
101
|
-
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
102
|
-
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
103
|
-
|
|
104
81
|
const object = Object;
|
|
105
82
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
106
83
|
const objFrozen = object.isFrozen;
|
|
@@ -184,6 +161,44 @@ const jsonStringWithMap = (obj) =>
|
|
|
184
161
|
isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
|
|
185
162
|
);
|
|
186
163
|
|
|
164
|
+
const getCellOrValueType = (cellOrValue) => {
|
|
165
|
+
if (isNull(cellOrValue)) {
|
|
166
|
+
return NULL;
|
|
167
|
+
}
|
|
168
|
+
if (isArray(cellOrValue)) {
|
|
169
|
+
return ARRAY;
|
|
170
|
+
}
|
|
171
|
+
if (isObject(cellOrValue)) {
|
|
172
|
+
return OBJECT;
|
|
173
|
+
}
|
|
174
|
+
const type = getTypeOf(cellOrValue);
|
|
175
|
+
return isTypeStringOrBoolean(type) ||
|
|
176
|
+
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
177
|
+
? type
|
|
178
|
+
: void 0;
|
|
179
|
+
};
|
|
180
|
+
const isCellOrValueOrUndefined = (cellOrValue) =>
|
|
181
|
+
isUndefined(cellOrValue) || !isUndefined(getCellOrValueType(cellOrValue));
|
|
182
|
+
const isJsonType = (type) => type == OBJECT || type == ARRAY;
|
|
183
|
+
const encodeIfJson = (value) =>
|
|
184
|
+
isObject(value) || isArray(value) ? JSON_PREFIX + jsonString(value) : value;
|
|
185
|
+
const isEncodedJson = (value) => isString(value) && value[0] == JSON_PREFIX;
|
|
186
|
+
const decodeIfJson = (raw, _id, encoded) =>
|
|
187
|
+
!encoded && isEncodedJson(raw) ? jsonParse(slice(raw, 1)) : raw;
|
|
188
|
+
|
|
189
|
+
const collSizeN = (collSizer) => (coll) =>
|
|
190
|
+
arrayReduce(collValues(coll), (total, coll2) => total + collSizer(coll2), 0);
|
|
191
|
+
const collSize = (coll) => coll?.size ?? 0;
|
|
192
|
+
const collSize2 = collSizeN(collSize);
|
|
193
|
+
const collSize3 = collSizeN(collSize2);
|
|
194
|
+
const collSize4 = collSizeN(collSize3);
|
|
195
|
+
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
196
|
+
const collIsEmpty = (coll) => isUndefined(coll) || collSize(coll) == 0;
|
|
197
|
+
const collValues = (coll) => [...(coll?.values() ?? [])];
|
|
198
|
+
const collClear = (coll) => coll.clear();
|
|
199
|
+
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
200
|
+
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
201
|
+
|
|
187
202
|
const textEncoder = /* @__PURE__ */ new GLOBAL.TextEncoder();
|
|
188
203
|
const getHash = (string) => {
|
|
189
204
|
let hash = 2166136261;
|
|
@@ -388,7 +403,6 @@ const setNew = (entryOrEntries) =>
|
|
|
388
403
|
const setAdd = (set, value) => set?.add(value);
|
|
389
404
|
|
|
390
405
|
const stampClone = ([value, hlc]) => stampNew(value, hlc);
|
|
391
|
-
const stampCloneWithHash = ([value, hlc, hash]) => [value, hlc, hash];
|
|
392
406
|
const stampNew = (value, hlc) => (hlc ? [value, hlc] : [value]);
|
|
393
407
|
const stampNewWithHash = (value, hlc, hash) => [value, hlc, hash];
|
|
394
408
|
const getStampHash = (stamp) => stamp[2];
|
|
@@ -405,10 +419,11 @@ const stampUpdate = (stamp, hlc, hash) => {
|
|
|
405
419
|
};
|
|
406
420
|
const stampNewObj = (hlc = EMPTY_STRING) => stampNew(objNew(), hlc);
|
|
407
421
|
const stampNewMap = (hlc = EMPTY_STRING) => [mapNew(), hlc, 0];
|
|
408
|
-
const stampMapToObjWithHash = (
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
422
|
+
const stampMapToObjWithHash = ([map, hlc, hash], mapper) => [
|
|
423
|
+
mapToObj(map, mapper),
|
|
424
|
+
hlc,
|
|
425
|
+
hash,
|
|
426
|
+
];
|
|
412
427
|
const stampMapToObjWithoutHash = ([map, hlc], mapper = stampClone) =>
|
|
413
428
|
stampNew(mapToObj(map, mapper), hlc);
|
|
414
429
|
const stampValidate = (stamp, validateThing) =>
|
|
@@ -604,15 +619,19 @@ const createStore = () => {
|
|
|
604
619
|
return false;
|
|
605
620
|
}
|
|
606
621
|
const type = schema[TYPE];
|
|
607
|
-
if (!isTypeStringOrBoolean(type) && type != NUMBER) {
|
|
622
|
+
if (!isTypeStringOrBoolean(type) && type != NUMBER && !isJsonType(type)) {
|
|
608
623
|
return false;
|
|
609
624
|
}
|
|
610
625
|
const defaultValue = schema[DEFAULT];
|
|
611
626
|
if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
|
|
612
627
|
return false;
|
|
613
628
|
}
|
|
614
|
-
if (!isNull(defaultValue)
|
|
615
|
-
|
|
629
|
+
if (!isNull(defaultValue)) {
|
|
630
|
+
if (getCellOrValueType(defaultValue) != type) {
|
|
631
|
+
objDel(schema, DEFAULT);
|
|
632
|
+
} else {
|
|
633
|
+
schema[DEFAULT] = encodeIfJson(defaultValue);
|
|
634
|
+
}
|
|
616
635
|
}
|
|
617
636
|
return true;
|
|
618
637
|
};
|
|
@@ -652,20 +671,22 @@ const createStore = () => {
|
|
|
652
671
|
? cellSchema[ALLOW_NULL]
|
|
653
672
|
? cell
|
|
654
673
|
: cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
|
|
655
|
-
: getCellOrValueType(cell)
|
|
656
|
-
? cell
|
|
657
|
-
:
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
674
|
+
: getCellOrValueType(cell) === cellSchema[TYPE]
|
|
675
|
+
? encodeIfJson(cell)
|
|
676
|
+
: isJsonType(cellSchema[TYPE]) && isEncodedJson(cell)
|
|
677
|
+
? cell
|
|
678
|
+
: cellInvalid(
|
|
679
|
+
tableId,
|
|
680
|
+
rowId,
|
|
681
|
+
cellId,
|
|
682
|
+
cell,
|
|
683
|
+
cellSchema[DEFAULT],
|
|
684
|
+
),
|
|
664
685
|
() => cellInvalid(tableId, rowId, cellId, cell),
|
|
665
686
|
)
|
|
666
687
|
: isUndefined(getCellOrValueType(cell))
|
|
667
688
|
? cellInvalid(tableId, rowId, cellId, cell)
|
|
668
|
-
: cell;
|
|
689
|
+
: encodeIfJson(cell);
|
|
669
690
|
const validateValues = (values, skipDefaults) =>
|
|
670
691
|
objValidate(
|
|
671
692
|
skipDefaults ? values : addDefaultsToValues(values),
|
|
@@ -689,14 +710,16 @@ const createStore = () => {
|
|
|
689
710
|
? valueSchema[ALLOW_NULL]
|
|
690
711
|
? value
|
|
691
712
|
: valueInvalid(valueId, value, valueSchema[DEFAULT])
|
|
692
|
-
: getCellOrValueType(value)
|
|
693
|
-
? value
|
|
694
|
-
:
|
|
713
|
+
: getCellOrValueType(value) === valueSchema[TYPE]
|
|
714
|
+
? encodeIfJson(value)
|
|
715
|
+
: isJsonType(valueSchema[TYPE]) && isEncodedJson(value)
|
|
716
|
+
? value
|
|
717
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT]),
|
|
695
718
|
() => valueInvalid(valueId, value),
|
|
696
719
|
)
|
|
697
720
|
: isUndefined(getCellOrValueType(value))
|
|
698
721
|
? valueInvalid(valueId, value)
|
|
699
|
-
: value;
|
|
722
|
+
: encodeIfJson(value);
|
|
700
723
|
const addDefaultsToRow = (row, tableId, rowId) => {
|
|
701
724
|
ifNotUndefined(
|
|
702
725
|
mapGet(tablesSchemaRowCache, tableId),
|
|
@@ -1119,13 +1142,21 @@ const createStore = () => {
|
|
|
1119
1142
|
const getCellChange = (tableId, rowId, cellId) =>
|
|
1120
1143
|
ifNotUndefined(
|
|
1121
1144
|
mapGet(mapGet(mapGet(changedCells, tableId), rowId), cellId),
|
|
1122
|
-
([oldCell, newCell]) => [
|
|
1145
|
+
([oldCell, newCell]) => [
|
|
1146
|
+
true,
|
|
1147
|
+
decodeIfJson(oldCell),
|
|
1148
|
+
decodeIfJson(newCell),
|
|
1149
|
+
],
|
|
1123
1150
|
() => [false, ...pairNew(getCell(tableId, rowId, cellId))],
|
|
1124
1151
|
);
|
|
1125
1152
|
const getValueChange = (valueId) =>
|
|
1126
1153
|
ifNotUndefined(
|
|
1127
1154
|
mapGet(changedValues, valueId),
|
|
1128
|
-
([oldValue, newValue]) => [
|
|
1155
|
+
([oldValue, newValue]) => [
|
|
1156
|
+
true,
|
|
1157
|
+
decodeIfJson(oldValue),
|
|
1158
|
+
decodeIfJson(newValue),
|
|
1159
|
+
],
|
|
1129
1160
|
() => [false, ...pairNew(getValue(valueId))],
|
|
1130
1161
|
);
|
|
1131
1162
|
const callInvalidCellListeners = (mutator) =>
|
|
@@ -1301,8 +1332,8 @@ const createStore = () => {
|
|
|
1301
1332
|
callListeners(
|
|
1302
1333
|
cellListeners[mutator],
|
|
1303
1334
|
[tableId, rowId, cellId],
|
|
1304
|
-
newCell,
|
|
1305
|
-
oldCell,
|
|
1335
|
+
decodeIfJson(newCell),
|
|
1336
|
+
decodeIfJson(oldCell),
|
|
1306
1337
|
getCellChange,
|
|
1307
1338
|
);
|
|
1308
1339
|
tablesChanged = tableChanged = rowChanged = 1;
|
|
@@ -1358,8 +1389,8 @@ const createStore = () => {
|
|
|
1358
1389
|
callListeners(
|
|
1359
1390
|
valueListeners[mutator],
|
|
1360
1391
|
[valueId],
|
|
1361
|
-
newValue,
|
|
1362
|
-
oldValue,
|
|
1392
|
+
decodeIfJson(newValue),
|
|
1393
|
+
decodeIfJson(oldValue),
|
|
1363
1394
|
getValueChange,
|
|
1364
1395
|
);
|
|
1365
1396
|
valuesChanged = 1;
|
|
@@ -1396,10 +1427,42 @@ const createStore = () => {
|
|
|
1396
1427
|
[getTableIds],
|
|
1397
1428
|
);
|
|
1398
1429
|
};
|
|
1430
|
+
const getTransactionChangesImpl = (encoded = false) => [
|
|
1431
|
+
mapToObj(
|
|
1432
|
+
changedCells,
|
|
1433
|
+
(table, tableId) =>
|
|
1434
|
+
mapGet(changedTableIds, tableId) === -1
|
|
1435
|
+
? void 0
|
|
1436
|
+
: mapToObj(
|
|
1437
|
+
table,
|
|
1438
|
+
(row, rowId) =>
|
|
1439
|
+
mapGet(mapGet(changedRowIds, tableId), rowId) === -1
|
|
1440
|
+
? void 0
|
|
1441
|
+
: mapToObj(
|
|
1442
|
+
row,
|
|
1443
|
+
([, newCell]) =>
|
|
1444
|
+
decodeIfJson(newCell, EMPTY_STRING, encoded),
|
|
1445
|
+
(changedCell) => pairIsEqual(changedCell),
|
|
1446
|
+
),
|
|
1447
|
+
collIsEmpty,
|
|
1448
|
+
objIsEmpty,
|
|
1449
|
+
),
|
|
1450
|
+
collIsEmpty,
|
|
1451
|
+
objIsEmpty,
|
|
1452
|
+
),
|
|
1453
|
+
mapToObj(
|
|
1454
|
+
changedValues,
|
|
1455
|
+
([, newValue]) => decodeIfJson(newValue, EMPTY_STRING, encoded),
|
|
1456
|
+
(changedValue) => pairIsEqual(changedValue),
|
|
1457
|
+
),
|
|
1458
|
+
1,
|
|
1459
|
+
];
|
|
1399
1460
|
const getContent = () => [getTables(), getValues()];
|
|
1400
|
-
const
|
|
1461
|
+
const getEncodedContent = () => [mapToObj3(tablesMap), mapToObj(valuesMap)];
|
|
1462
|
+
const getTables = () => mapToObj3(tablesMap, decodeIfJson);
|
|
1401
1463
|
const getTableIds = () => mapKeys(tablesMap);
|
|
1402
|
-
const getTable = (tableId) =>
|
|
1464
|
+
const getTable = (tableId) =>
|
|
1465
|
+
mapToObj2(mapGet(tablesMap, id(tableId)), decodeIfJson);
|
|
1403
1466
|
const getTableCellIds = (tableId) =>
|
|
1404
1467
|
mapKeys(mapGet(tableCellIds, id(tableId)));
|
|
1405
1468
|
const getRowCount = (tableId) => collSize(mapGet(tablesMap, id(tableId)));
|
|
@@ -1435,14 +1498,16 @@ const createStore = () => {
|
|
|
1435
1498
|
([, rowId]) => rowId,
|
|
1436
1499
|
);
|
|
1437
1500
|
const getRow = (tableId, rowId) =>
|
|
1438
|
-
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
1501
|
+
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), decodeIfJson);
|
|
1439
1502
|
const getCellIds = (tableId, rowId) =>
|
|
1440
1503
|
mapKeys(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
1441
1504
|
const getCell = (tableId, rowId, cellId) =>
|
|
1442
|
-
|
|
1443
|
-
|
|
1505
|
+
decodeIfJson(
|
|
1506
|
+
mapGet(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId)),
|
|
1507
|
+
);
|
|
1508
|
+
const getValues = () => mapToObj(valuesMap, decodeIfJson);
|
|
1444
1509
|
const getValueIds = () => mapKeys(valuesMap);
|
|
1445
|
-
const getValue = (valueId) => mapGet(valuesMap, id(valueId));
|
|
1510
|
+
const getValue = (valueId) => decodeIfJson(mapGet(valuesMap, id(valueId)));
|
|
1446
1511
|
const hasTables = () => !collIsEmpty(tablesMap);
|
|
1447
1512
|
const hasTable = (tableId) => collHas(tablesMap, id(tableId));
|
|
1448
1513
|
const hasTableCell = (tableId, cellId) =>
|
|
@@ -1729,35 +1794,8 @@ const createStore = () => {
|
|
|
1729
1794
|
}
|
|
1730
1795
|
return store;
|
|
1731
1796
|
};
|
|
1732
|
-
const getTransactionChanges = () =>
|
|
1733
|
-
|
|
1734
|
-
changedCells,
|
|
1735
|
-
(table, tableId) =>
|
|
1736
|
-
mapGet(changedTableIds, tableId) === -1
|
|
1737
|
-
? void 0
|
|
1738
|
-
: mapToObj(
|
|
1739
|
-
table,
|
|
1740
|
-
(row, rowId) =>
|
|
1741
|
-
mapGet(mapGet(changedRowIds, tableId), rowId) === -1
|
|
1742
|
-
? void 0
|
|
1743
|
-
: mapToObj(
|
|
1744
|
-
row,
|
|
1745
|
-
([, newCell]) => newCell,
|
|
1746
|
-
(changedCell) => pairIsEqual(changedCell),
|
|
1747
|
-
),
|
|
1748
|
-
collIsEmpty,
|
|
1749
|
-
objIsEmpty,
|
|
1750
|
-
),
|
|
1751
|
-
collIsEmpty,
|
|
1752
|
-
objIsEmpty,
|
|
1753
|
-
),
|
|
1754
|
-
mapToObj(
|
|
1755
|
-
changedValues,
|
|
1756
|
-
([, newValue]) => newValue,
|
|
1757
|
-
(changedValue) => pairIsEqual(changedValue),
|
|
1758
|
-
),
|
|
1759
|
-
1,
|
|
1760
|
-
];
|
|
1797
|
+
const getTransactionChanges = () => getTransactionChangesImpl();
|
|
1798
|
+
const getEncodedTransactionChanges = () => getTransactionChangesImpl(true);
|
|
1761
1799
|
const getTransactionLog = () => [
|
|
1762
1800
|
!collIsEmpty(changedCells),
|
|
1763
1801
|
!collIsEmpty(changedValues),
|
|
@@ -1871,7 +1909,9 @@ const createStore = () => {
|
|
|
1871
1909
|
tableCallback(tableId, (rowCallback) =>
|
|
1872
1910
|
collForEach(tableMap, (rowMap, rowId) =>
|
|
1873
1911
|
rowCallback(rowId, (cellCallback) =>
|
|
1874
|
-
mapForEach(rowMap,
|
|
1912
|
+
mapForEach(rowMap, (cellId, cell) =>
|
|
1913
|
+
cellCallback(cellId, decodeIfJson(cell)),
|
|
1914
|
+
),
|
|
1875
1915
|
),
|
|
1876
1916
|
),
|
|
1877
1917
|
),
|
|
@@ -1880,11 +1920,21 @@ const createStore = () => {
|
|
|
1880
1920
|
mapForEach(mapGet(tableCellIds, id(tableId)), tableCellCallback);
|
|
1881
1921
|
const forEachRow = (tableId, rowCallback) =>
|
|
1882
1922
|
collForEach(mapGet(tablesMap, id(tableId)), (rowMap, rowId) =>
|
|
1883
|
-
rowCallback(rowId, (cellCallback) =>
|
|
1923
|
+
rowCallback(rowId, (cellCallback) =>
|
|
1924
|
+
mapForEach(rowMap, (cellId, cell) =>
|
|
1925
|
+
cellCallback(cellId, decodeIfJson(cell)),
|
|
1926
|
+
),
|
|
1927
|
+
),
|
|
1884
1928
|
);
|
|
1885
1929
|
const forEachCell = (tableId, rowId, cellCallback) =>
|
|
1886
|
-
mapForEach(
|
|
1887
|
-
|
|
1930
|
+
mapForEach(
|
|
1931
|
+
mapGet(mapGet(tablesMap, id(tableId)), id(rowId)),
|
|
1932
|
+
(cellId, cell) => cellCallback(cellId, decodeIfJson(cell)),
|
|
1933
|
+
);
|
|
1934
|
+
const forEachValue = (valueCallback) =>
|
|
1935
|
+
mapForEach(valuesMap, (valueId, value) =>
|
|
1936
|
+
valueCallback(valueId, decodeIfJson(value)),
|
|
1937
|
+
);
|
|
1888
1938
|
const addSortedRowIdsListener = (
|
|
1889
1939
|
tableIdOrArgs,
|
|
1890
1940
|
cellIdOrListener,
|
|
@@ -2076,14 +2126,17 @@ const createStore = () => {
|
|
|
2076
2126
|
delListener,
|
|
2077
2127
|
getListenerStats,
|
|
2078
2128
|
isMergeable: () => false,
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2129
|
+
_: [
|
|
2130
|
+
createStore,
|
|
2131
|
+
addListener,
|
|
2132
|
+
callListeners,
|
|
2133
|
+
setInternalListeners,
|
|
2134
|
+
setMiddleware,
|
|
2135
|
+
setOrDelCell,
|
|
2136
|
+
setOrDelValue,
|
|
2137
|
+
getEncodedContent,
|
|
2138
|
+
getEncodedTransactionChanges,
|
|
2139
|
+
],
|
|
2087
2140
|
};
|
|
2088
2141
|
objMap(
|
|
2089
2142
|
{
|
|
@@ -2398,14 +2451,78 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2398
2451
|
]);
|
|
2399
2452
|
}
|
|
2400
2453
|
};
|
|
2401
|
-
const
|
|
2454
|
+
const getMergeableContentImpl = (encoded = false) => [
|
|
2402
2455
|
stampMapToObjWithHash(contentStampMap[0], (tableStampMap) =>
|
|
2403
2456
|
stampMapToObjWithHash(tableStampMap, (rowStampMap) =>
|
|
2404
|
-
stampMapToObjWithHash(rowStampMap)
|
|
2457
|
+
stampMapToObjWithHash(rowStampMap, ([cell, hlc, hash]) => [
|
|
2458
|
+
decodeIfJson(cell, EMPTY_STRING, encoded),
|
|
2459
|
+
hlc,
|
|
2460
|
+
hash,
|
|
2461
|
+
]),
|
|
2405
2462
|
),
|
|
2406
2463
|
),
|
|
2407
|
-
stampMapToObjWithHash(contentStampMap[1])
|
|
2464
|
+
stampMapToObjWithHash(contentStampMap[1], ([value, hlc, hash]) => [
|
|
2465
|
+
decodeIfJson(value, EMPTY_STRING, encoded),
|
|
2466
|
+
hlc,
|
|
2467
|
+
hash,
|
|
2468
|
+
]),
|
|
2408
2469
|
];
|
|
2470
|
+
const getTransactionMergeableChangesImpl = (withHashes, encoded = false) => {
|
|
2471
|
+
const [
|
|
2472
|
+
[tableStampMaps, tablesHlc, tablesHash],
|
|
2473
|
+
[valueStampMaps, valuesHlc, valuesHash],
|
|
2474
|
+
] = contentStampMap;
|
|
2475
|
+
const newStamp = withHashes ? stampNewWithHash : stampNew;
|
|
2476
|
+
const tablesObj = {};
|
|
2477
|
+
collForEach(touchedCells, (touchedTable, tableId) =>
|
|
2478
|
+
ifNotUndefined(
|
|
2479
|
+
mapGet(tableStampMaps, tableId),
|
|
2480
|
+
([rowStampMaps, tableHlc, tableHash]) => {
|
|
2481
|
+
const tableObj = {};
|
|
2482
|
+
collForEach(touchedTable, (touchedRow, rowId) =>
|
|
2483
|
+
ifNotUndefined(
|
|
2484
|
+
mapGet(rowStampMaps, rowId),
|
|
2485
|
+
([cellStampMaps, rowHlc, rowHash]) => {
|
|
2486
|
+
const rowObj = {};
|
|
2487
|
+
collForEach(touchedRow, (cellId) => {
|
|
2488
|
+
ifNotUndefined(
|
|
2489
|
+
mapGet(cellStampMaps, cellId),
|
|
2490
|
+
([cell, time, hash]) =>
|
|
2491
|
+
(rowObj[cellId] = newStamp(
|
|
2492
|
+
encoded ? cell : decodeIfJson(cell),
|
|
2493
|
+
time,
|
|
2494
|
+
hash,
|
|
2495
|
+
)),
|
|
2496
|
+
);
|
|
2497
|
+
});
|
|
2498
|
+
tableObj[rowId] = newStamp(rowObj, rowHlc, rowHash);
|
|
2499
|
+
},
|
|
2500
|
+
),
|
|
2501
|
+
);
|
|
2502
|
+
tablesObj[tableId] = newStamp(tableObj, tableHlc, tableHash);
|
|
2503
|
+
},
|
|
2504
|
+
),
|
|
2505
|
+
);
|
|
2506
|
+
const valuesObj = {};
|
|
2507
|
+
collForEach(touchedValues, (valueId) =>
|
|
2508
|
+
ifNotUndefined(
|
|
2509
|
+
mapGet(valueStampMaps, valueId),
|
|
2510
|
+
([value, time, hash]) =>
|
|
2511
|
+
(valuesObj[valueId] = newStamp(
|
|
2512
|
+
encoded ? value : decodeIfJson(value),
|
|
2513
|
+
time,
|
|
2514
|
+
hash,
|
|
2515
|
+
)),
|
|
2516
|
+
),
|
|
2517
|
+
);
|
|
2518
|
+
return [
|
|
2519
|
+
newStamp(tablesObj, tablesHlc, tablesHash),
|
|
2520
|
+
newStamp(valuesObj, valuesHlc, valuesHash),
|
|
2521
|
+
1,
|
|
2522
|
+
];
|
|
2523
|
+
};
|
|
2524
|
+
const getMergeableContent = () => getMergeableContentImpl();
|
|
2525
|
+
const getEncodedMergeableContent = () => getMergeableContentImpl(true);
|
|
2409
2526
|
const getMergeableContentHashes = () => [
|
|
2410
2527
|
contentStampMap[0][2],
|
|
2411
2528
|
contentStampMap[1][2],
|
|
@@ -2545,52 +2662,10 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2545
2662
|
});
|
|
2546
2663
|
return mergeableStore;
|
|
2547
2664
|
};
|
|
2548
|
-
const getTransactionMergeableChanges = (withHashes = false) =>
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
] = contentStampMap;
|
|
2553
|
-
const newStamp = withHashes ? stampNewWithHash : stampNew;
|
|
2554
|
-
const tablesObj = {};
|
|
2555
|
-
collForEach(touchedCells, (touchedTable, tableId) =>
|
|
2556
|
-
ifNotUndefined(
|
|
2557
|
-
mapGet(tableStampMaps, tableId),
|
|
2558
|
-
([rowStampMaps, tableHlc, tableHash]) => {
|
|
2559
|
-
const tableObj = {};
|
|
2560
|
-
collForEach(touchedTable, (touchedRow, rowId) =>
|
|
2561
|
-
ifNotUndefined(
|
|
2562
|
-
mapGet(rowStampMaps, rowId),
|
|
2563
|
-
([cellStampMaps, rowHlc, rowHash]) => {
|
|
2564
|
-
const rowObj = {};
|
|
2565
|
-
collForEach(touchedRow, (cellId) => {
|
|
2566
|
-
ifNotUndefined(
|
|
2567
|
-
mapGet(cellStampMaps, cellId),
|
|
2568
|
-
([cell, time, hash]) =>
|
|
2569
|
-
(rowObj[cellId] = newStamp(cell, time, hash)),
|
|
2570
|
-
);
|
|
2571
|
-
});
|
|
2572
|
-
tableObj[rowId] = newStamp(rowObj, rowHlc, rowHash);
|
|
2573
|
-
},
|
|
2574
|
-
),
|
|
2575
|
-
);
|
|
2576
|
-
tablesObj[tableId] = newStamp(tableObj, tableHlc, tableHash);
|
|
2577
|
-
},
|
|
2578
|
-
),
|
|
2579
|
-
);
|
|
2580
|
-
const valuesObj = {};
|
|
2581
|
-
collForEach(touchedValues, (valueId) =>
|
|
2582
|
-
ifNotUndefined(
|
|
2583
|
-
mapGet(valueStampMaps, valueId),
|
|
2584
|
-
([value, time, hash]) =>
|
|
2585
|
-
(valuesObj[valueId] = newStamp(value, time, hash)),
|
|
2586
|
-
),
|
|
2587
|
-
);
|
|
2588
|
-
return [
|
|
2589
|
-
newStamp(tablesObj, tablesHlc, tablesHash),
|
|
2590
|
-
newStamp(valuesObj, valuesHlc, valuesHash),
|
|
2591
|
-
1,
|
|
2592
|
-
];
|
|
2593
|
-
};
|
|
2665
|
+
const getTransactionMergeableChanges = (withHashes = false) =>
|
|
2666
|
+
getTransactionMergeableChangesImpl(withHashes);
|
|
2667
|
+
const getEncodedTransactionMergeableChanges = (withHashes) =>
|
|
2668
|
+
getTransactionMergeableChangesImpl(withHashes, true);
|
|
2594
2669
|
const applyMergeableChanges = (mergeableChanges) =>
|
|
2595
2670
|
disableListeningToRawStoreChanges(() =>
|
|
2596
2671
|
store.applyChanges(mergeContentOrChanges(mergeableChanges)),
|
|
@@ -2622,10 +2697,13 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2622
2697
|
getTransactionMergeableChanges,
|
|
2623
2698
|
applyMergeableChanges,
|
|
2624
2699
|
merge,
|
|
2625
|
-
|
|
2626
|
-
|
|
2700
|
+
__: [
|
|
2701
|
+
hadMutated,
|
|
2702
|
+
getEncodedMergeableContent,
|
|
2703
|
+
getEncodedTransactionMergeableChanges,
|
|
2704
|
+
],
|
|
2627
2705
|
};
|
|
2628
|
-
store.
|
|
2706
|
+
store._[3](
|
|
2629
2707
|
preStartTransaction,
|
|
2630
2708
|
preFinishTransaction,
|
|
2631
2709
|
postFinishTransaction,
|
package/middleware/index.js
CHANGED
package/min/checkpoints/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>void 0===e,t=e=>null===e,
|
|
1
|
+
const e=e=>void 0===e,t=e=>null===e,n=(r=e,(e,t,n)=>r(e)?n?.():t(e));var r;const s=e=>e.length,o=(e,t)=>e.includes(t),c=(e,t)=>e.forEach(t),i=e=>0==s(e),a=(e,...t)=>e.push(...t),d=e=>e.pop(),l=e=>e.shift(),u=e=>e?.size??0,h=(p=u,e=>{return t=(e,t)=>e+p(t),k(e).reduce(t,0);var t});var p;const v=(e,t)=>e?.has(t)??!1,g=t=>e(t)||0==u(t),k=e=>[...e?.values()??[]],f=(e,t)=>e?.forEach(t),L=(e,t)=>e?.delete(t),C=Object.freeze,w=Map,S=e=>new w(e),_=(e,t)=>e?.get(t),y=(t,n,r)=>e(r)?(L(t,n),t):t?.set(n,r),z=(e,t,n,r)=>(v(e,t)?r?.(_(e,t)):y(e,t,n()),_(e,t)),E=(e,t,r,o,c=0)=>n((r?z:_)(e,t[c],c>s(t)-2?r:S),n=>{if(c>s(t)-2)return o?.(n)&&y(e,t[c]),n;const i=E(n,t,r,o,c+1);return g(n)&&y(e,t[c]),i}),I=t=>new Set(Array.isArray(t)||e(t)?t:[t]),A=/^\d+$/,F=(()=>{const r=new WeakMap;return u=>{r.has(u)||r.set(u,(r=>{let u,p,k,w=100,F=S(),M=S(),b=1;const j=S(),x=S(),[B,O,T]=(()=>{let e;const[r,o]=(()=>{const e=[];let t=0;return[n=>(n?l(e):null)??""+t++,t=>{A.test(t)&&s(e)<1e3&&a(e,t)}]})(),i=S();return[(t,n,s,o=[],c=()=>[])=>{e??=te;const a=r(1);var d,l;return y(i,a,[t,n,s,o,c]),d=E(n,s??[""],I),l=a,d?.add(l),a},(n,r,...o)=>c(((e,n=[""])=>{const r=[],o=(e,i)=>i==s(n)?a(r,e):t(n[i])?f(e,e=>o(e,i+1)):c([n[i],null],t=>o(_(e,t),i+1));return o(e,0),r})(n,r),t=>f(t,t=>_(i,t)[0](e,...r??[],...o))),e=>n(_(i,e),([,t,n])=>(E(t,n??[""],void 0,t=>(L(t,e),g(t)?1:0)),y(i,e),o(e),n)),r=>n(_(i,r),([n,,r=[],o,i])=>{const a=(...d)=>{const l=s(d);l==s(r)?n(e,...d,...i(d)):t(r[l])?c(o[l]?.(...d)??[],e=>a(...d,e)):a(...d,r[l])};a()})]})(),V=S(),W=S(),$=[],m=[],q=(e,t)=>{b=0,r.transaction(()=>{const[n,s]=_(V,t);f(n,(t,n)=>f(t,(t,s)=>f(t,(t,o)=>r._[5](n,s,o,t[e],!0)))),f(s,(t,n)=>r._[6](n,t[e],!0))}),b=1},D=e=>{y(V,e),y(W,e),O(x,[e])},G=(e,t)=>c(((e,t)=>e.splice(0,t))(e,t??s(e)),D),H=()=>G($,s($)-w),J=()=>n(u,()=>{a($,u),H(),G(m),u=void 0,k=1}),K=()=>{u=d($),k=1};let N,P;const Q=(t="")=>(e(u)&&(u=""+p++,y(V,u,[F,M]),Z(u,t),F=S(),M=S(),k=1),u),R=()=>{i($)||(((e,...t)=>{e.unshift(...t)})(m,Q()),q(0,u),u=d($),k=1)},U=()=>{i(m)||(a($,u),u=l(m),q(1,u),k=1)},X=()=>{k&&(O(j),k=0)},Y=e=>{const t=Q(e);return X(),t},Z=(e,t)=>(ee(e)&&_(W,e)!==t&&(y(W,e,t),O(x,[e])),te),ee=e=>v(V,e),te={setSize:e=>(w=e,H(),te),addCheckpoint:Y,setCheckpoint:Z,getStore:()=>r,getCheckpointIds:()=>[[...$],u,[...m]],forEachCheckpoint:e=>{return t=e,f(W,(e,n)=>t(n,e));var t},hasCheckpoint:ee,getCheckpoint:e=>_(W,e),goBackward:()=>(R(),X(),te),goForward:()=>(U(),X(),te),goTo:t=>{const n=o($,t)?R:o(m,t)?U:void 0;for(;!e(n)&&t!=u;)n();return X(),te},addCheckpointIdsListener:e=>B(e,j),addCheckpointListener:(e,t)=>B(t,x,[e]),delListener:e=>(T(e),te),clear:()=>(G($),G(m),e(u)||D(u),u=void 0,p=0,Y(),te),clearForward:()=>(i(m)||(G(m),O(j)),te),destroy:()=>{r.delListener(N),r.delListener(P)},getListenerStats:()=>({checkpointIds:h(j),checkpoint:h(x)}),_registerListeners:()=>{N=r.addCellListener(null,null,null,(e,t,n,r,s,o)=>{if(b){J();const e=z(F,t,S),c=z(e,n,S),i=z(c,r,()=>[o,void 0]);i[1]=s,i[0]===s&&g(y(c,r))&&g(y(e,n))&&g(y(F,t))&&K(),X()}}),P=r.addValueListener(null,(e,t,n,r)=>{if(b){J();const e=z(M,t,()=>[r,void 0]);e[1]=n,e[0]===n&&g(y(M,t))&&K(),X()}})}};return C(te.clear())})(u));const p=r.get(u);return p._registerListeners(),p}})();export{F as createCheckpoints};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>void 0===e,t=e=>null===e,
|
|
1
|
+
const e=e=>void 0===e,t=e=>null===e,n=(r=e,(e,t,n)=>r(e)?n?.():t(e));var r;const s=e=>e.length,o=(e,t)=>e.includes(t),c=(e,t)=>e.forEach(t),i=e=>0==s(e),a=(e,...t)=>e.push(...t),d=e=>e.pop(),l=e=>e.shift(),u=e=>e?.size??0,h=(p=u,e=>{return t=(e,t)=>e+p(t),k(e).reduce(t,0);var t});var p;const v=(e,t)=>e?.has(t)??!1,g=t=>e(t)||0==u(t),k=e=>[...e?.values()??[]],f=(e,t)=>e?.forEach(t),L=(e,t)=>e?.delete(t),C=Object.freeze,w=Map,S=e=>new w(e),_=(e,t)=>e?.get(t),y=(t,n,r)=>e(r)?(L(t,n),t):t?.set(n,r),z=(e,t,n,r)=>(v(e,t)?r?.(_(e,t)):y(e,t,n()),_(e,t)),E=(e,t,r,o,c=0)=>n((r?z:_)(e,t[c],c>s(t)-2?r:S),n=>{if(c>s(t)-2)return o?.(n)&&y(e,t[c]),n;const i=E(n,t,r,o,c+1);return g(n)&&y(e,t[c]),i}),I=t=>new Set(Array.isArray(t)||e(t)?t:[t]),A=/^\d+$/,F=(()=>{const r=new WeakMap;return u=>{r.has(u)||r.set(u,(r=>{let u,p,k,w=100,F=S(),M=S(),b=1;const j=S(),x=S(),[B,O,T]=(()=>{let e;const[r,o]=(()=>{const e=[];let t=0;return[n=>(n?l(e):null)??""+t++,t=>{A.test(t)&&s(e)<1e3&&a(e,t)}]})(),i=S();return[(t,n,s,o=[],c=()=>[])=>{e??=te;const a=r(1);var d,l;return y(i,a,[t,n,s,o,c]),d=E(n,s??[""],I),l=a,d?.add(l),a},(n,r,...o)=>c(((e,n=[""])=>{const r=[],o=(e,i)=>i==s(n)?a(r,e):t(n[i])?f(e,e=>o(e,i+1)):c([n[i],null],t=>o(_(e,t),i+1));return o(e,0),r})(n,r),t=>f(t,t=>_(i,t)[0](e,...r??[],...o))),e=>n(_(i,e),([,t,n])=>(E(t,n??[""],void 0,t=>(L(t,e),g(t)?1:0)),y(i,e),o(e),n)),r=>n(_(i,r),([n,,r=[],o,i])=>{const a=(...d)=>{const l=s(d);l==s(r)?n(e,...d,...i(d)):t(r[l])?c(o[l]?.(...d)??[],e=>a(...d,e)):a(...d,r[l])};a()})]})(),V=S(),W=S(),$=[],m=[],q=(e,t)=>{b=0,r.transaction(()=>{const[n,s]=_(V,t);f(n,(t,n)=>f(t,(t,s)=>f(t,(t,o)=>r._[5](n,s,o,t[e],!0)))),f(s,(t,n)=>r._[6](n,t[e],!0))}),b=1},D=e=>{y(V,e),y(W,e),O(x,[e])},G=(e,t)=>c(((e,t)=>e.splice(0,t))(e,t??s(e)),D),H=()=>G($,s($)-w),J=()=>n(u,()=>{a($,u),H(),G(m),u=void 0,k=1}),K=()=>{u=d($),k=1};let N,P;const Q=(t="")=>(e(u)&&(u=""+p++,y(V,u,[F,M]),Z(u,t),F=S(),M=S(),k=1),u),R=()=>{i($)||(((e,...t)=>{e.unshift(...t)})(m,Q()),q(0,u),u=d($),k=1)},U=()=>{i(m)||(a($,u),u=l(m),q(1,u),k=1)},X=()=>{k&&(O(j),k=0)},Y=e=>{const t=Q(e);return X(),t},Z=(e,t)=>(ee(e)&&_(W,e)!==t&&(y(W,e,t),O(x,[e])),te),ee=e=>v(V,e),te={setSize:e=>(w=e,H(),te),addCheckpoint:Y,setCheckpoint:Z,getStore:()=>r,getCheckpointIds:()=>[[...$],u,[...m]],forEachCheckpoint:e=>{return t=e,f(W,(e,n)=>t(n,e));var t},hasCheckpoint:ee,getCheckpoint:e=>_(W,e),goBackward:()=>(R(),X(),te),goForward:()=>(U(),X(),te),goTo:t=>{const n=o($,t)?R:o(m,t)?U:void 0;for(;!e(n)&&t!=u;)n();return X(),te},addCheckpointIdsListener:e=>B(e,j),addCheckpointListener:(e,t)=>B(t,x,[e]),delListener:e=>(T(e),te),clear:()=>(G($),G(m),e(u)||D(u),u=void 0,p=0,Y(),te),clearForward:()=>(i(m)||(G(m),O(j)),te),destroy:()=>{r.delListener(N),r.delListener(P)},getListenerStats:()=>({checkpointIds:h(j),checkpoint:h(x)}),_registerListeners:()=>{N=r.addCellListener(null,null,null,(e,t,n,r,s,o)=>{if(b){J();const e=z(F,t,S),c=z(e,n,S),i=z(c,r,()=>[o,void 0]);i[1]=s,i[0]===s&&g(y(c,r))&&g(y(e,n))&&g(y(F,t))&&K(),X()}}),P=r.addValueListener(null,(e,t,n,r)=>{if(b){J();const e=z(M,t,()=>[r,void 0]);e[1]=n,e[0]===n&&g(y(M,t))&&K(),X()}})}};return C(te.clear())})(u));const p=r.get(u);return p._registerListeners(),p}})();export{F as createCheckpoints};
|
|
Binary file
|