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
|
@@ -15,6 +15,8 @@ const STRING = getTypeOf(EMPTY_STRING);
|
|
|
15
15
|
const BOOLEAN = getTypeOf(true);
|
|
16
16
|
const NUMBER = getTypeOf(0);
|
|
17
17
|
const FUNCTION$1 = getTypeOf(getTypeOf);
|
|
18
|
+
const OBJECT = 'object';
|
|
19
|
+
const ARRAY = 'array';
|
|
18
20
|
const TRUE = 'true';
|
|
19
21
|
const TYPE = 'type';
|
|
20
22
|
const DEFAULT = 'default';
|
|
@@ -68,6 +70,7 @@ const EXTRA = 'extra';
|
|
|
68
70
|
const T = 't';
|
|
69
71
|
const V = 'v';
|
|
70
72
|
const UNDEFINED = '\uFFFC';
|
|
73
|
+
const JSON_PREFIX = '\uFFFD';
|
|
71
74
|
const id = (key) => EMPTY_STRING + key;
|
|
72
75
|
const strStartsWith = (str, prefix) => str.startsWith(prefix);
|
|
73
76
|
const strEndsWith = (str, suffix) => str.endsWith(suffix);
|
|
@@ -619,18 +622,12 @@ const createCheckpoints = getCreateFunction(
|
|
|
619
622
|
collForEach(cellsDelta2, (table, tableId) =>
|
|
620
623
|
collForEach(table, (row, rowId) =>
|
|
621
624
|
collForEach(row, (oldNew, cellId) =>
|
|
622
|
-
store.
|
|
623
|
-
tableId,
|
|
624
|
-
rowId,
|
|
625
|
-
cellId,
|
|
626
|
-
oldNew[oldOrNew],
|
|
627
|
-
true,
|
|
628
|
-
),
|
|
625
|
+
store._[5](tableId, rowId, cellId, oldNew[oldOrNew], true),
|
|
629
626
|
),
|
|
630
627
|
),
|
|
631
628
|
);
|
|
632
629
|
collForEach(valuesDelta2, (oldNew, valueId) =>
|
|
633
|
-
store.
|
|
630
|
+
store._[6](valueId, oldNew[oldOrNew], true),
|
|
634
631
|
);
|
|
635
632
|
});
|
|
636
633
|
listening = 1;
|
|
@@ -1233,6 +1230,12 @@ const getCellOrValueType = (cellOrValue) => {
|
|
|
1233
1230
|
if (isNull(cellOrValue)) {
|
|
1234
1231
|
return NULL;
|
|
1235
1232
|
}
|
|
1233
|
+
if (isArray(cellOrValue)) {
|
|
1234
|
+
return ARRAY;
|
|
1235
|
+
}
|
|
1236
|
+
if (isObject(cellOrValue)) {
|
|
1237
|
+
return OBJECT;
|
|
1238
|
+
}
|
|
1236
1239
|
const type = getTypeOf(cellOrValue);
|
|
1237
1240
|
return isTypeStringOrBoolean(type) ||
|
|
1238
1241
|
(type == NUMBER && isFiniteNumber(cellOrValue))
|
|
@@ -1241,17 +1244,33 @@ const getCellOrValueType = (cellOrValue) => {
|
|
|
1241
1244
|
};
|
|
1242
1245
|
const isCellOrValueOrUndefined = (cellOrValue) =>
|
|
1243
1246
|
isUndefined(cellOrValue) || !isUndefined(getCellOrValueType(cellOrValue));
|
|
1244
|
-
const
|
|
1247
|
+
const isJsonType = (type) => type == OBJECT || type == ARRAY;
|
|
1248
|
+
const encodeIfJson = (value) =>
|
|
1249
|
+
isObject(value) || isArray(value) ? JSON_PREFIX + jsonString(value) : value;
|
|
1250
|
+
const isEncodedJson = (value) => isString(value) && value[0] == JSON_PREFIX;
|
|
1251
|
+
const decodeIfJson = (raw, _id, encoded) =>
|
|
1252
|
+
!encoded && isEncodedJson(raw) ? jsonParse(slice(raw, 1)) : raw;
|
|
1253
|
+
const getTypeCase = (
|
|
1254
|
+
type,
|
|
1255
|
+
stringCase,
|
|
1256
|
+
numberCase,
|
|
1257
|
+
booleanCase,
|
|
1258
|
+
objectCase,
|
|
1259
|
+
arrayCase,
|
|
1260
|
+
) =>
|
|
1245
1261
|
type == STRING
|
|
1246
1262
|
? stringCase
|
|
1247
1263
|
: type == NUMBER
|
|
1248
1264
|
? numberCase
|
|
1249
1265
|
: type == BOOLEAN
|
|
1250
1266
|
? booleanCase
|
|
1251
|
-
:
|
|
1267
|
+
: type == OBJECT
|
|
1268
|
+
? objectCase
|
|
1269
|
+
: type == ARRAY
|
|
1270
|
+
? arrayCase
|
|
1271
|
+
: null;
|
|
1252
1272
|
|
|
1253
1273
|
const stampClone = ([value, hlc]) => stampNew(value, hlc);
|
|
1254
|
-
const stampCloneWithHash = ([value, hlc, hash]) => [value, hlc, hash];
|
|
1255
1274
|
const stampNew = (value, hlc) => (hlc ? [value, hlc] : [value]);
|
|
1256
1275
|
const stampNewWithHash = (value, hlc, hash) => [value, hlc, hash];
|
|
1257
1276
|
const getStampHash = (stamp) => stamp[2];
|
|
@@ -1268,10 +1287,11 @@ const stampUpdate = (stamp, hlc, hash) => {
|
|
|
1268
1287
|
};
|
|
1269
1288
|
const stampNewObj = (hlc = EMPTY_STRING) => stampNew(objNew(), hlc);
|
|
1270
1289
|
const stampNewMap = (hlc = EMPTY_STRING) => [mapNew(), hlc, 0];
|
|
1271
|
-
const stampMapToObjWithHash = (
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1290
|
+
const stampMapToObjWithHash = ([map, hlc, hash], mapper) => [
|
|
1291
|
+
mapToObj(map, mapper),
|
|
1292
|
+
hlc,
|
|
1293
|
+
hash,
|
|
1294
|
+
];
|
|
1275
1295
|
const stampMapToObjWithoutHash = ([map, hlc], mapper = stampClone) =>
|
|
1276
1296
|
stampNew(mapToObj(map, mapper), hlc);
|
|
1277
1297
|
const stampValidate = (stamp, validateThing) =>
|
|
@@ -1378,15 +1398,19 @@ const createStore = () => {
|
|
|
1378
1398
|
return false;
|
|
1379
1399
|
}
|
|
1380
1400
|
const type = schema[TYPE];
|
|
1381
|
-
if (!isTypeStringOrBoolean(type) && type != NUMBER) {
|
|
1401
|
+
if (!isTypeStringOrBoolean(type) && type != NUMBER && !isJsonType(type)) {
|
|
1382
1402
|
return false;
|
|
1383
1403
|
}
|
|
1384
1404
|
const defaultValue = schema[DEFAULT];
|
|
1385
1405
|
if (isNull(defaultValue) && !schema[ALLOW_NULL]) {
|
|
1386
1406
|
return false;
|
|
1387
1407
|
}
|
|
1388
|
-
if (!isNull(defaultValue)
|
|
1389
|
-
|
|
1408
|
+
if (!isNull(defaultValue)) {
|
|
1409
|
+
if (getCellOrValueType(defaultValue) != type) {
|
|
1410
|
+
objDel(schema, DEFAULT);
|
|
1411
|
+
} else {
|
|
1412
|
+
schema[DEFAULT] = encodeIfJson(defaultValue);
|
|
1413
|
+
}
|
|
1390
1414
|
}
|
|
1391
1415
|
return true;
|
|
1392
1416
|
};
|
|
@@ -1426,20 +1450,22 @@ const createStore = () => {
|
|
|
1426
1450
|
? cellSchema[ALLOW_NULL]
|
|
1427
1451
|
? cell
|
|
1428
1452
|
: cellInvalid(tableId, rowId, cellId, cell, cellSchema[DEFAULT])
|
|
1429
|
-
: getCellOrValueType(cell)
|
|
1430
|
-
? cell
|
|
1431
|
-
:
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1453
|
+
: getCellOrValueType(cell) === cellSchema[TYPE]
|
|
1454
|
+
? encodeIfJson(cell)
|
|
1455
|
+
: isJsonType(cellSchema[TYPE]) && isEncodedJson(cell)
|
|
1456
|
+
? cell
|
|
1457
|
+
: cellInvalid(
|
|
1458
|
+
tableId,
|
|
1459
|
+
rowId,
|
|
1460
|
+
cellId,
|
|
1461
|
+
cell,
|
|
1462
|
+
cellSchema[DEFAULT],
|
|
1463
|
+
),
|
|
1438
1464
|
() => cellInvalid(tableId, rowId, cellId, cell),
|
|
1439
1465
|
)
|
|
1440
1466
|
: isUndefined(getCellOrValueType(cell))
|
|
1441
1467
|
? cellInvalid(tableId, rowId, cellId, cell)
|
|
1442
|
-
: cell;
|
|
1468
|
+
: encodeIfJson(cell);
|
|
1443
1469
|
const validateValues = (values, skipDefaults) =>
|
|
1444
1470
|
objValidate(
|
|
1445
1471
|
skipDefaults ? values : addDefaultsToValues(values),
|
|
@@ -1463,14 +1489,16 @@ const createStore = () => {
|
|
|
1463
1489
|
? valueSchema[ALLOW_NULL]
|
|
1464
1490
|
? value
|
|
1465
1491
|
: valueInvalid(valueId, value, valueSchema[DEFAULT])
|
|
1466
|
-
: getCellOrValueType(value)
|
|
1467
|
-
? value
|
|
1468
|
-
:
|
|
1492
|
+
: getCellOrValueType(value) === valueSchema[TYPE]
|
|
1493
|
+
? encodeIfJson(value)
|
|
1494
|
+
: isJsonType(valueSchema[TYPE]) && isEncodedJson(value)
|
|
1495
|
+
? value
|
|
1496
|
+
: valueInvalid(valueId, value, valueSchema[DEFAULT]),
|
|
1469
1497
|
() => valueInvalid(valueId, value),
|
|
1470
1498
|
)
|
|
1471
1499
|
: isUndefined(getCellOrValueType(value))
|
|
1472
1500
|
? valueInvalid(valueId, value)
|
|
1473
|
-
: value;
|
|
1501
|
+
: encodeIfJson(value);
|
|
1474
1502
|
const addDefaultsToRow = (row, tableId, rowId) => {
|
|
1475
1503
|
ifNotUndefined(
|
|
1476
1504
|
mapGet(tablesSchemaRowCache, tableId),
|
|
@@ -1893,13 +1921,21 @@ const createStore = () => {
|
|
|
1893
1921
|
const getCellChange = (tableId, rowId, cellId) =>
|
|
1894
1922
|
ifNotUndefined(
|
|
1895
1923
|
mapGet(mapGet(mapGet(changedCells, tableId), rowId), cellId),
|
|
1896
|
-
([oldCell, newCell]) => [
|
|
1924
|
+
([oldCell, newCell]) => [
|
|
1925
|
+
true,
|
|
1926
|
+
decodeIfJson(oldCell),
|
|
1927
|
+
decodeIfJson(newCell),
|
|
1928
|
+
],
|
|
1897
1929
|
() => [false, ...pairNew(getCell(tableId, rowId, cellId))],
|
|
1898
1930
|
);
|
|
1899
1931
|
const getValueChange = (valueId) =>
|
|
1900
1932
|
ifNotUndefined(
|
|
1901
1933
|
mapGet(changedValues, valueId),
|
|
1902
|
-
([oldValue, newValue]) => [
|
|
1934
|
+
([oldValue, newValue]) => [
|
|
1935
|
+
true,
|
|
1936
|
+
decodeIfJson(oldValue),
|
|
1937
|
+
decodeIfJson(newValue),
|
|
1938
|
+
],
|
|
1903
1939
|
() => [false, ...pairNew(getValue(valueId))],
|
|
1904
1940
|
);
|
|
1905
1941
|
const callInvalidCellListeners = (mutator) =>
|
|
@@ -2075,8 +2111,8 @@ const createStore = () => {
|
|
|
2075
2111
|
callListeners(
|
|
2076
2112
|
cellListeners[mutator],
|
|
2077
2113
|
[tableId, rowId, cellId],
|
|
2078
|
-
newCell,
|
|
2079
|
-
oldCell,
|
|
2114
|
+
decodeIfJson(newCell),
|
|
2115
|
+
decodeIfJson(oldCell),
|
|
2080
2116
|
getCellChange,
|
|
2081
2117
|
);
|
|
2082
2118
|
tablesChanged = tableChanged = rowChanged = 1;
|
|
@@ -2132,8 +2168,8 @@ const createStore = () => {
|
|
|
2132
2168
|
callListeners(
|
|
2133
2169
|
valueListeners[mutator],
|
|
2134
2170
|
[valueId],
|
|
2135
|
-
newValue,
|
|
2136
|
-
oldValue,
|
|
2171
|
+
decodeIfJson(newValue),
|
|
2172
|
+
decodeIfJson(oldValue),
|
|
2137
2173
|
getValueChange,
|
|
2138
2174
|
);
|
|
2139
2175
|
valuesChanged = 1;
|
|
@@ -2170,10 +2206,42 @@ const createStore = () => {
|
|
|
2170
2206
|
[getTableIds],
|
|
2171
2207
|
);
|
|
2172
2208
|
};
|
|
2209
|
+
const getTransactionChangesImpl = (encoded = false) => [
|
|
2210
|
+
mapToObj(
|
|
2211
|
+
changedCells,
|
|
2212
|
+
(table, tableId) =>
|
|
2213
|
+
mapGet(changedTableIds, tableId) === -1
|
|
2214
|
+
? void 0
|
|
2215
|
+
: mapToObj(
|
|
2216
|
+
table,
|
|
2217
|
+
(row, rowId) =>
|
|
2218
|
+
mapGet(mapGet(changedRowIds, tableId), rowId) === -1
|
|
2219
|
+
? void 0
|
|
2220
|
+
: mapToObj(
|
|
2221
|
+
row,
|
|
2222
|
+
([, newCell]) =>
|
|
2223
|
+
decodeIfJson(newCell, EMPTY_STRING, encoded),
|
|
2224
|
+
(changedCell) => pairIsEqual(changedCell),
|
|
2225
|
+
),
|
|
2226
|
+
collIsEmpty,
|
|
2227
|
+
objIsEmpty,
|
|
2228
|
+
),
|
|
2229
|
+
collIsEmpty,
|
|
2230
|
+
objIsEmpty,
|
|
2231
|
+
),
|
|
2232
|
+
mapToObj(
|
|
2233
|
+
changedValues,
|
|
2234
|
+
([, newValue]) => decodeIfJson(newValue, EMPTY_STRING, encoded),
|
|
2235
|
+
(changedValue) => pairIsEqual(changedValue),
|
|
2236
|
+
),
|
|
2237
|
+
1,
|
|
2238
|
+
];
|
|
2173
2239
|
const getContent = () => [getTables(), getValues()];
|
|
2174
|
-
const
|
|
2240
|
+
const getEncodedContent = () => [mapToObj3(tablesMap), mapToObj(valuesMap)];
|
|
2241
|
+
const getTables = () => mapToObj3(tablesMap, decodeIfJson);
|
|
2175
2242
|
const getTableIds = () => mapKeys(tablesMap);
|
|
2176
|
-
const getTable = (tableId) =>
|
|
2243
|
+
const getTable = (tableId) =>
|
|
2244
|
+
mapToObj2(mapGet(tablesMap, id(tableId)), decodeIfJson);
|
|
2177
2245
|
const getTableCellIds = (tableId) =>
|
|
2178
2246
|
mapKeys(mapGet(tableCellIds, id(tableId)));
|
|
2179
2247
|
const getRowCount = (tableId) => collSize(mapGet(tablesMap, id(tableId)));
|
|
@@ -2209,14 +2277,16 @@ const createStore = () => {
|
|
|
2209
2277
|
([, rowId]) => rowId,
|
|
2210
2278
|
);
|
|
2211
2279
|
const getRow = (tableId, rowId) =>
|
|
2212
|
-
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
2280
|
+
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), decodeIfJson);
|
|
2213
2281
|
const getCellIds = (tableId, rowId) =>
|
|
2214
2282
|
mapKeys(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
2215
2283
|
const getCell = (tableId, rowId, cellId) =>
|
|
2216
|
-
|
|
2217
|
-
|
|
2284
|
+
decodeIfJson(
|
|
2285
|
+
mapGet(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId)),
|
|
2286
|
+
);
|
|
2287
|
+
const getValues = () => mapToObj(valuesMap, decodeIfJson);
|
|
2218
2288
|
const getValueIds = () => mapKeys(valuesMap);
|
|
2219
|
-
const getValue = (valueId) => mapGet(valuesMap, id(valueId));
|
|
2289
|
+
const getValue = (valueId) => decodeIfJson(mapGet(valuesMap, id(valueId)));
|
|
2220
2290
|
const hasTables = () => !collIsEmpty(tablesMap);
|
|
2221
2291
|
const hasTable = (tableId) => collHas(tablesMap, id(tableId));
|
|
2222
2292
|
const hasTableCell = (tableId, cellId) =>
|
|
@@ -2503,35 +2573,8 @@ const createStore = () => {
|
|
|
2503
2573
|
}
|
|
2504
2574
|
return store;
|
|
2505
2575
|
};
|
|
2506
|
-
const getTransactionChanges = () =>
|
|
2507
|
-
|
|
2508
|
-
changedCells,
|
|
2509
|
-
(table, tableId) =>
|
|
2510
|
-
mapGet(changedTableIds, tableId) === -1
|
|
2511
|
-
? void 0
|
|
2512
|
-
: mapToObj(
|
|
2513
|
-
table,
|
|
2514
|
-
(row, rowId) =>
|
|
2515
|
-
mapGet(mapGet(changedRowIds, tableId), rowId) === -1
|
|
2516
|
-
? void 0
|
|
2517
|
-
: mapToObj(
|
|
2518
|
-
row,
|
|
2519
|
-
([, newCell]) => newCell,
|
|
2520
|
-
(changedCell) => pairIsEqual(changedCell),
|
|
2521
|
-
),
|
|
2522
|
-
collIsEmpty,
|
|
2523
|
-
objIsEmpty,
|
|
2524
|
-
),
|
|
2525
|
-
collIsEmpty,
|
|
2526
|
-
objIsEmpty,
|
|
2527
|
-
),
|
|
2528
|
-
mapToObj(
|
|
2529
|
-
changedValues,
|
|
2530
|
-
([, newValue]) => newValue,
|
|
2531
|
-
(changedValue) => pairIsEqual(changedValue),
|
|
2532
|
-
),
|
|
2533
|
-
1,
|
|
2534
|
-
];
|
|
2576
|
+
const getTransactionChanges = () => getTransactionChangesImpl();
|
|
2577
|
+
const getEncodedTransactionChanges = () => getTransactionChangesImpl(true);
|
|
2535
2578
|
const getTransactionLog = () => [
|
|
2536
2579
|
!collIsEmpty(changedCells),
|
|
2537
2580
|
!collIsEmpty(changedValues),
|
|
@@ -2645,7 +2688,9 @@ const createStore = () => {
|
|
|
2645
2688
|
tableCallback(tableId, (rowCallback) =>
|
|
2646
2689
|
collForEach(tableMap, (rowMap, rowId) =>
|
|
2647
2690
|
rowCallback(rowId, (cellCallback) =>
|
|
2648
|
-
mapForEach(rowMap,
|
|
2691
|
+
mapForEach(rowMap, (cellId, cell) =>
|
|
2692
|
+
cellCallback(cellId, decodeIfJson(cell)),
|
|
2693
|
+
),
|
|
2649
2694
|
),
|
|
2650
2695
|
),
|
|
2651
2696
|
),
|
|
@@ -2654,11 +2699,21 @@ const createStore = () => {
|
|
|
2654
2699
|
mapForEach(mapGet(tableCellIds, id(tableId)), tableCellCallback);
|
|
2655
2700
|
const forEachRow = (tableId, rowCallback) =>
|
|
2656
2701
|
collForEach(mapGet(tablesMap, id(tableId)), (rowMap, rowId) =>
|
|
2657
|
-
rowCallback(rowId, (cellCallback) =>
|
|
2702
|
+
rowCallback(rowId, (cellCallback) =>
|
|
2703
|
+
mapForEach(rowMap, (cellId, cell) =>
|
|
2704
|
+
cellCallback(cellId, decodeIfJson(cell)),
|
|
2705
|
+
),
|
|
2706
|
+
),
|
|
2658
2707
|
);
|
|
2659
2708
|
const forEachCell = (tableId, rowId, cellCallback) =>
|
|
2660
|
-
mapForEach(
|
|
2661
|
-
|
|
2709
|
+
mapForEach(
|
|
2710
|
+
mapGet(mapGet(tablesMap, id(tableId)), id(rowId)),
|
|
2711
|
+
(cellId, cell) => cellCallback(cellId, decodeIfJson(cell)),
|
|
2712
|
+
);
|
|
2713
|
+
const forEachValue = (valueCallback) =>
|
|
2714
|
+
mapForEach(valuesMap, (valueId, value) =>
|
|
2715
|
+
valueCallback(valueId, decodeIfJson(value)),
|
|
2716
|
+
);
|
|
2662
2717
|
const addSortedRowIdsListener = (
|
|
2663
2718
|
tableIdOrArgs,
|
|
2664
2719
|
cellIdOrListener,
|
|
@@ -2850,14 +2905,17 @@ const createStore = () => {
|
|
|
2850
2905
|
delListener,
|
|
2851
2906
|
getListenerStats,
|
|
2852
2907
|
isMergeable: () => false,
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2908
|
+
_: [
|
|
2909
|
+
createStore,
|
|
2910
|
+
addListener,
|
|
2911
|
+
callListeners,
|
|
2912
|
+
setInternalListeners,
|
|
2913
|
+
setMiddleware,
|
|
2914
|
+
setOrDelCell,
|
|
2915
|
+
setOrDelValue,
|
|
2916
|
+
getEncodedContent,
|
|
2917
|
+
getEncodedTransactionChanges,
|
|
2918
|
+
],
|
|
2861
2919
|
};
|
|
2862
2920
|
objMap(
|
|
2863
2921
|
{
|
|
@@ -3172,14 +3230,78 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3172
3230
|
]);
|
|
3173
3231
|
}
|
|
3174
3232
|
};
|
|
3175
|
-
const
|
|
3233
|
+
const getMergeableContentImpl = (encoded = false) => [
|
|
3176
3234
|
stampMapToObjWithHash(contentStampMap[0], (tableStampMap) =>
|
|
3177
3235
|
stampMapToObjWithHash(tableStampMap, (rowStampMap) =>
|
|
3178
|
-
stampMapToObjWithHash(rowStampMap)
|
|
3236
|
+
stampMapToObjWithHash(rowStampMap, ([cell, hlc, hash]) => [
|
|
3237
|
+
decodeIfJson(cell, EMPTY_STRING, encoded),
|
|
3238
|
+
hlc,
|
|
3239
|
+
hash,
|
|
3240
|
+
]),
|
|
3179
3241
|
),
|
|
3180
3242
|
),
|
|
3181
|
-
stampMapToObjWithHash(contentStampMap[1])
|
|
3243
|
+
stampMapToObjWithHash(contentStampMap[1], ([value, hlc, hash]) => [
|
|
3244
|
+
decodeIfJson(value, EMPTY_STRING, encoded),
|
|
3245
|
+
hlc,
|
|
3246
|
+
hash,
|
|
3247
|
+
]),
|
|
3182
3248
|
];
|
|
3249
|
+
const getTransactionMergeableChangesImpl = (withHashes, encoded = false) => {
|
|
3250
|
+
const [
|
|
3251
|
+
[tableStampMaps, tablesHlc, tablesHash],
|
|
3252
|
+
[valueStampMaps, valuesHlc, valuesHash],
|
|
3253
|
+
] = contentStampMap;
|
|
3254
|
+
const newStamp = withHashes ? stampNewWithHash : stampNew;
|
|
3255
|
+
const tablesObj = {};
|
|
3256
|
+
collForEach(touchedCells, (touchedTable, tableId) =>
|
|
3257
|
+
ifNotUndefined(
|
|
3258
|
+
mapGet(tableStampMaps, tableId),
|
|
3259
|
+
([rowStampMaps, tableHlc, tableHash]) => {
|
|
3260
|
+
const tableObj = {};
|
|
3261
|
+
collForEach(touchedTable, (touchedRow, rowId) =>
|
|
3262
|
+
ifNotUndefined(
|
|
3263
|
+
mapGet(rowStampMaps, rowId),
|
|
3264
|
+
([cellStampMaps, rowHlc, rowHash]) => {
|
|
3265
|
+
const rowObj = {};
|
|
3266
|
+
collForEach(touchedRow, (cellId) => {
|
|
3267
|
+
ifNotUndefined(
|
|
3268
|
+
mapGet(cellStampMaps, cellId),
|
|
3269
|
+
([cell, time, hash]) =>
|
|
3270
|
+
(rowObj[cellId] = newStamp(
|
|
3271
|
+
encoded ? cell : decodeIfJson(cell),
|
|
3272
|
+
time,
|
|
3273
|
+
hash,
|
|
3274
|
+
)),
|
|
3275
|
+
);
|
|
3276
|
+
});
|
|
3277
|
+
tableObj[rowId] = newStamp(rowObj, rowHlc, rowHash);
|
|
3278
|
+
},
|
|
3279
|
+
),
|
|
3280
|
+
);
|
|
3281
|
+
tablesObj[tableId] = newStamp(tableObj, tableHlc, tableHash);
|
|
3282
|
+
},
|
|
3283
|
+
),
|
|
3284
|
+
);
|
|
3285
|
+
const valuesObj = {};
|
|
3286
|
+
collForEach(touchedValues, (valueId) =>
|
|
3287
|
+
ifNotUndefined(
|
|
3288
|
+
mapGet(valueStampMaps, valueId),
|
|
3289
|
+
([value, time, hash]) =>
|
|
3290
|
+
(valuesObj[valueId] = newStamp(
|
|
3291
|
+
encoded ? value : decodeIfJson(value),
|
|
3292
|
+
time,
|
|
3293
|
+
hash,
|
|
3294
|
+
)),
|
|
3295
|
+
),
|
|
3296
|
+
);
|
|
3297
|
+
return [
|
|
3298
|
+
newStamp(tablesObj, tablesHlc, tablesHash),
|
|
3299
|
+
newStamp(valuesObj, valuesHlc, valuesHash),
|
|
3300
|
+
1,
|
|
3301
|
+
];
|
|
3302
|
+
};
|
|
3303
|
+
const getMergeableContent = () => getMergeableContentImpl();
|
|
3304
|
+
const getEncodedMergeableContent = () => getMergeableContentImpl(true);
|
|
3183
3305
|
const getMergeableContentHashes = () => [
|
|
3184
3306
|
contentStampMap[0][2],
|
|
3185
3307
|
contentStampMap[1][2],
|
|
@@ -3319,52 +3441,10 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3319
3441
|
});
|
|
3320
3442
|
return mergeableStore;
|
|
3321
3443
|
};
|
|
3322
|
-
const getTransactionMergeableChanges = (withHashes = false) =>
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
] = contentStampMap;
|
|
3327
|
-
const newStamp = withHashes ? stampNewWithHash : stampNew;
|
|
3328
|
-
const tablesObj = {};
|
|
3329
|
-
collForEach(touchedCells, (touchedTable, tableId) =>
|
|
3330
|
-
ifNotUndefined(
|
|
3331
|
-
mapGet(tableStampMaps, tableId),
|
|
3332
|
-
([rowStampMaps, tableHlc, tableHash]) => {
|
|
3333
|
-
const tableObj = {};
|
|
3334
|
-
collForEach(touchedTable, (touchedRow, rowId) =>
|
|
3335
|
-
ifNotUndefined(
|
|
3336
|
-
mapGet(rowStampMaps, rowId),
|
|
3337
|
-
([cellStampMaps, rowHlc, rowHash]) => {
|
|
3338
|
-
const rowObj = {};
|
|
3339
|
-
collForEach(touchedRow, (cellId) => {
|
|
3340
|
-
ifNotUndefined(
|
|
3341
|
-
mapGet(cellStampMaps, cellId),
|
|
3342
|
-
([cell, time, hash]) =>
|
|
3343
|
-
(rowObj[cellId] = newStamp(cell, time, hash)),
|
|
3344
|
-
);
|
|
3345
|
-
});
|
|
3346
|
-
tableObj[rowId] = newStamp(rowObj, rowHlc, rowHash);
|
|
3347
|
-
},
|
|
3348
|
-
),
|
|
3349
|
-
);
|
|
3350
|
-
tablesObj[tableId] = newStamp(tableObj, tableHlc, tableHash);
|
|
3351
|
-
},
|
|
3352
|
-
),
|
|
3353
|
-
);
|
|
3354
|
-
const valuesObj = {};
|
|
3355
|
-
collForEach(touchedValues, (valueId) =>
|
|
3356
|
-
ifNotUndefined(
|
|
3357
|
-
mapGet(valueStampMaps, valueId),
|
|
3358
|
-
([value, time, hash]) =>
|
|
3359
|
-
(valuesObj[valueId] = newStamp(value, time, hash)),
|
|
3360
|
-
),
|
|
3361
|
-
);
|
|
3362
|
-
return [
|
|
3363
|
-
newStamp(tablesObj, tablesHlc, tablesHash),
|
|
3364
|
-
newStamp(valuesObj, valuesHlc, valuesHash),
|
|
3365
|
-
1,
|
|
3366
|
-
];
|
|
3367
|
-
};
|
|
3444
|
+
const getTransactionMergeableChanges = (withHashes = false) =>
|
|
3445
|
+
getTransactionMergeableChangesImpl(withHashes);
|
|
3446
|
+
const getEncodedTransactionMergeableChanges = (withHashes) =>
|
|
3447
|
+
getTransactionMergeableChangesImpl(withHashes, true);
|
|
3368
3448
|
const applyMergeableChanges = (mergeableChanges) =>
|
|
3369
3449
|
disableListeningToRawStoreChanges(() =>
|
|
3370
3450
|
store.applyChanges(mergeContentOrChanges(mergeableChanges)),
|
|
@@ -3396,10 +3476,13 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
3396
3476
|
getTransactionMergeableChanges,
|
|
3397
3477
|
applyMergeableChanges,
|
|
3398
3478
|
merge,
|
|
3399
|
-
|
|
3400
|
-
|
|
3479
|
+
__: [
|
|
3480
|
+
hadMutated,
|
|
3481
|
+
getEncodedMergeableContent,
|
|
3482
|
+
getEncodedTransactionMergeableChanges,
|
|
3483
|
+
],
|
|
3401
3484
|
};
|
|
3402
|
-
store.
|
|
3485
|
+
store._[3](
|
|
3403
3486
|
preStartTransaction,
|
|
3404
3487
|
preFinishTransaction,
|
|
3405
3488
|
postFinishTransaction,
|
|
@@ -3718,7 +3801,7 @@ const createMiddleware = getCreateFunction((store) => {
|
|
|
3718
3801
|
addDidSetRowCallback,
|
|
3719
3802
|
destroy,
|
|
3720
3803
|
});
|
|
3721
|
-
store.
|
|
3804
|
+
store._[4](
|
|
3722
3805
|
willSetContent,
|
|
3723
3806
|
willSetTables,
|
|
3724
3807
|
willSetTable,
|
|
@@ -3758,8 +3841,8 @@ const getStoreFunctions = (
|
|
|
3758
3841
|
persist != 1 /* StoreOnly */ && store.isMergeable()
|
|
3759
3842
|
? [
|
|
3760
3843
|
1,
|
|
3761
|
-
store.
|
|
3762
|
-
() => store.
|
|
3844
|
+
store.__[1],
|
|
3845
|
+
() => store.__[2](!isSynchronizer),
|
|
3763
3846
|
([[changedTables], [changedValues]]) =>
|
|
3764
3847
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
3765
3848
|
store.setDefaultContent,
|
|
@@ -3767,8 +3850,8 @@ const getStoreFunctions = (
|
|
|
3767
3850
|
: persist != 2 /* MergeableStoreOnly */
|
|
3768
3851
|
? [
|
|
3769
3852
|
0,
|
|
3770
|
-
store.
|
|
3771
|
-
store.
|
|
3853
|
+
store._[7],
|
|
3854
|
+
store._[8],
|
|
3772
3855
|
([changedTables, changedValues]) =>
|
|
3773
3856
|
!objIsEmpty(changedTables) || !objIsEmpty(changedValues),
|
|
3774
3857
|
store.setContent,
|
|
@@ -3833,7 +3916,7 @@ const createCustomPersister = (
|
|
|
3833
3916
|
: store.setContent)(contentOrChanges);
|
|
3834
3917
|
};
|
|
3835
3918
|
const saveAfterMutated = async () => {
|
|
3836
|
-
if (isAutoSaving() && store.
|
|
3919
|
+
if (isAutoSaving() && store.__?.[0]?.()) {
|
|
3837
3920
|
await save();
|
|
3838
3921
|
}
|
|
3839
3922
|
};
|
|
@@ -6246,15 +6329,14 @@ const createYjsPersister = (
|
|
|
6246
6329
|
};
|
|
6247
6330
|
|
|
6248
6331
|
const createQueries = getCreateFunction((store) => {
|
|
6249
|
-
const createStore = store.
|
|
6332
|
+
const createStore = store._[0];
|
|
6250
6333
|
const preStore = createStore();
|
|
6251
6334
|
const resultStore = createStore();
|
|
6252
6335
|
const preStoreListenerIds = mapNew();
|
|
6253
6336
|
const paramValuesListeners = mapNew();
|
|
6254
6337
|
const paramValueListeners = mapNew();
|
|
6255
6338
|
const {
|
|
6256
|
-
addListener,
|
|
6257
|
-
callListeners,
|
|
6339
|
+
_: [, addListener, callListeners],
|
|
6258
6340
|
delListener: delListenerImpl,
|
|
6259
6341
|
} = resultStore;
|
|
6260
6342
|
const [
|
|
@@ -6573,7 +6655,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
6573
6655
|
selectJoinWhereStore.transaction(() =>
|
|
6574
6656
|
arrayEvery(wheres, (where2) => where2(getTableCell))
|
|
6575
6657
|
? mapForEach(selects, (asCellId, tableCellGetter) =>
|
|
6576
|
-
selectJoinWhereStore.
|
|
6658
|
+
selectJoinWhereStore._[5](
|
|
6577
6659
|
queryId,
|
|
6578
6660
|
rootRowId,
|
|
6579
6661
|
asCellId,
|
|
@@ -7894,6 +7976,10 @@ const IS_EQUALS = [
|
|
|
7894
7976
|
(paramValues1, paramValues2) =>
|
|
7895
7977
|
objIsEqual(paramValues1, paramValues2, arrayOrValueEqual),
|
|
7896
7978
|
arrayOrValueEqual,
|
|
7979
|
+
(thing1, thing2) =>
|
|
7980
|
+
thing1 === thing2 ||
|
|
7981
|
+
((isObject(thing1) || isArray(thing1)) &&
|
|
7982
|
+
jsonString(thing1) === jsonString(thing2)),
|
|
7897
7983
|
];
|
|
7898
7984
|
const isEqual = (thing1, thing2) => thing1 === thing2;
|
|
7899
7985
|
const useCreate = (store, create, createDeps = EMPTY_ARRAY) => {
|
|
@@ -9635,12 +9721,20 @@ const EditableThing = ({
|
|
|
9635
9721
|
const [stringThing, setStringThing] = useState();
|
|
9636
9722
|
const [numberThing, setNumberThing] = useState();
|
|
9637
9723
|
const [booleanThing, setBooleanThing] = useState();
|
|
9724
|
+
const [objectThingJson, setObjectThingJson] = useState(EMPTY_STRING);
|
|
9725
|
+
const [arrayThingJson, setArrayThingJson] = useState(EMPTY_STRING);
|
|
9638
9726
|
if (currentThing !== thing) {
|
|
9639
9727
|
setThingType(getCellOrValueType(thing));
|
|
9640
9728
|
setCurrentThing(thing);
|
|
9641
|
-
|
|
9642
|
-
|
|
9643
|
-
|
|
9729
|
+
if (isObject(thing)) {
|
|
9730
|
+
setObjectThingJson(jsonString(thing));
|
|
9731
|
+
} else if (isArray(thing)) {
|
|
9732
|
+
setArrayThingJson(jsonString(thing));
|
|
9733
|
+
} else {
|
|
9734
|
+
setStringThing(String(thing));
|
|
9735
|
+
setNumberThing(Number(thing) || 0);
|
|
9736
|
+
setBooleanThing(Boolean(thing));
|
|
9737
|
+
}
|
|
9644
9738
|
}
|
|
9645
9739
|
const handleThingChange = useCallback(
|
|
9646
9740
|
(thing2, setTypedThing) => {
|
|
@@ -9652,12 +9746,21 @@ const EditableThing = ({
|
|
|
9652
9746
|
);
|
|
9653
9747
|
const handleTypeChange = useCallback(() => {
|
|
9654
9748
|
if (!hasSchema?.()) {
|
|
9655
|
-
const nextType = getTypeCase(
|
|
9749
|
+
const nextType = getTypeCase(
|
|
9750
|
+
thingType,
|
|
9751
|
+
NUMBER,
|
|
9752
|
+
BOOLEAN,
|
|
9753
|
+
OBJECT,
|
|
9754
|
+
ARRAY,
|
|
9755
|
+
STRING,
|
|
9756
|
+
);
|
|
9656
9757
|
const thing2 = getTypeCase(
|
|
9657
9758
|
nextType,
|
|
9658
9759
|
stringThing,
|
|
9659
9760
|
numberThing,
|
|
9660
9761
|
booleanThing,
|
|
9762
|
+
objectThingJson ? jsonParse(objectThingJson) : {},
|
|
9763
|
+
arrayThingJson ? jsonParse(arrayThingJson) : [],
|
|
9661
9764
|
);
|
|
9662
9765
|
setThingType(nextType);
|
|
9663
9766
|
setCurrentThing(thing2);
|
|
@@ -9669,6 +9772,8 @@ const EditableThing = ({
|
|
|
9669
9772
|
stringThing,
|
|
9670
9773
|
numberThing,
|
|
9671
9774
|
booleanThing,
|
|
9775
|
+
objectThingJson,
|
|
9776
|
+
arrayThingJson,
|
|
9672
9777
|
thingType,
|
|
9673
9778
|
]);
|
|
9674
9779
|
const widget = getTypeCase(
|
|
@@ -9720,6 +9825,46 @@ const EditableThing = ({
|
|
|
9720
9825
|
},
|
|
9721
9826
|
thingType,
|
|
9722
9827
|
),
|
|
9828
|
+
/* @__PURE__ */ jsx(
|
|
9829
|
+
'textarea',
|
|
9830
|
+
{
|
|
9831
|
+
value: objectThingJson,
|
|
9832
|
+
onChange: useCallback(
|
|
9833
|
+
(event) => {
|
|
9834
|
+
const str = event[CURRENT_TARGET][_VALUE];
|
|
9835
|
+
setObjectThingJson(str);
|
|
9836
|
+
try {
|
|
9837
|
+
const parsed = jsonParse(str);
|
|
9838
|
+
if (isObject(parsed)) {
|
|
9839
|
+
onThingChange(parsed);
|
|
9840
|
+
}
|
|
9841
|
+
} catch {}
|
|
9842
|
+
},
|
|
9843
|
+
[onThingChange],
|
|
9844
|
+
),
|
|
9845
|
+
},
|
|
9846
|
+
thingType,
|
|
9847
|
+
),
|
|
9848
|
+
/* @__PURE__ */ jsx(
|
|
9849
|
+
'textarea',
|
|
9850
|
+
{
|
|
9851
|
+
value: arrayThingJson,
|
|
9852
|
+
onChange: useCallback(
|
|
9853
|
+
(event) => {
|
|
9854
|
+
const str = event[CURRENT_TARGET][_VALUE];
|
|
9855
|
+
setArrayThingJson(str);
|
|
9856
|
+
try {
|
|
9857
|
+
const parsed = jsonParse(str);
|
|
9858
|
+
if (isArray(parsed)) {
|
|
9859
|
+
onThingChange(parsed);
|
|
9860
|
+
}
|
|
9861
|
+
} catch {}
|
|
9862
|
+
},
|
|
9863
|
+
[onThingChange],
|
|
9864
|
+
),
|
|
9865
|
+
},
|
|
9866
|
+
thingType,
|
|
9867
|
+
),
|
|
9723
9868
|
);
|
|
9724
9869
|
return /* @__PURE__ */ jsxs('div', {
|
|
9725
9870
|
className,
|