tinybase 7.0.0-beta.2 → 7.0.0
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/common/index.d.ts +1 -1
- package/@types/mergeable-store/index.d.ts +1 -1
- package/@types/mergeable-store/with-schemas/index.d.ts +1 -1
- package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +4 -0
- package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +4 -0
- package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-electric-sql/index.d.ts +4 -0
- package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-expo-sqlite/index.d.ts +4 -0
- package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-libsql/index.d.ts +4 -0
- package/@types/persisters/persister-libsql/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-pglite/index.d.ts +5 -1
- package/@types/persisters/persister-pglite/with-schemas/index.d.ts +5 -1
- package/@types/persisters/persister-postgres/index.d.ts +4 -0
- package/@types/persisters/persister-postgres/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-powersync/index.d.ts +4 -0
- package/@types/persisters/persister-powersync/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-react-native-sqlite/index.d.ts +4 -0
- package/@types/persisters/persister-react-native-sqlite/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite-bun/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite-wasm/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite3/index.d.ts +4 -0
- package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +4 -0
- package/@types/queries/index.d.ts +1 -1
- package/@types/store/index.d.ts +21 -19
- package/@types/store/with-schemas/index.d.ts +15 -13
- package/agents.md +62 -0
- package/checkpoints/index.js +8 -6
- package/checkpoints/with-schemas/index.js +8 -6
- package/common/index.js +4 -3
- package/common/with-schemas/index.js +4 -3
- package/index.js +60 -30
- package/indexes/index.js +7 -5
- package/indexes/with-schemas/index.js +7 -5
- package/mergeable-store/index.js +51 -21
- package/mergeable-store/with-schemas/index.js +51 -21
- package/metrics/index.js +7 -5
- package/metrics/with-schemas/index.js +7 -5
- 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/common/index.js +1 -1
- package/min/common/index.js.gz +0 -0
- package/min/common/with-schemas/index.js +1 -1
- package/min/common/with-schemas/index.js.gz +0 -0
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/indexes/index.js +1 -1
- package/min/indexes/index.js.gz +0 -0
- package/min/indexes/with-schemas/index.js +1 -1
- package/min/indexes/with-schemas/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/metrics/index.js +1 -1
- package/min/metrics/index.js.gz +0 -0
- package/min/metrics/with-schemas/index.js +1 -1
- package/min/metrics/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-partykit-server/index.js +1 -1
- package/min/persisters/persister-partykit-server/index.js.gz +0 -0
- package/min/persisters/persister-partykit-server/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-server/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/relationships/index.js +1 -1
- package/min/relationships/index.js.gz +0 -0
- package/min/relationships/with-schemas/index.js +1 -1
- package/min/relationships/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/synchronizer-ws-server-simple/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/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 +78 -46
- package/omni/with-schemas/index.js +78 -46
- package/package.json +3 -3
- package/persisters/index.js +14 -10
- package/persisters/persister-automerge/index.js +12 -8
- package/persisters/persister-automerge/with-schemas/index.js +12 -8
- package/persisters/persister-browser/index.js +12 -8
- package/persisters/persister-browser/with-schemas/index.js +12 -8
- package/persisters/persister-cr-sqlite-wasm/index.js +14 -10
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +14 -10
- package/persisters/persister-durable-object-sql-storage/index.js +14 -10
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +14 -10
- package/persisters/persister-durable-object-storage/index.js +12 -8
- package/persisters/persister-durable-object-storage/with-schemas/index.js +12 -8
- package/persisters/persister-electric-sql/index.js +14 -10
- package/persisters/persister-electric-sql/with-schemas/index.js +14 -10
- package/persisters/persister-expo-sqlite/index.js +14 -10
- package/persisters/persister-expo-sqlite/with-schemas/index.js +14 -10
- package/persisters/persister-file/index.js +12 -8
- package/persisters/persister-file/with-schemas/index.js +12 -8
- package/persisters/persister-indexed-db/index.js +12 -8
- package/persisters/persister-indexed-db/with-schemas/index.js +12 -8
- package/persisters/persister-libsql/index.js +14 -10
- package/persisters/persister-libsql/with-schemas/index.js +14 -10
- package/persisters/persister-partykit-client/index.js +12 -8
- package/persisters/persister-partykit-client/with-schemas/index.js +12 -8
- package/persisters/persister-partykit-server/index.js +4 -3
- package/persisters/persister-partykit-server/with-schemas/index.js +4 -3
- package/persisters/persister-pglite/index.js +13 -9
- package/persisters/persister-pglite/with-schemas/index.js +13 -9
- package/persisters/persister-postgres/index.js +13 -9
- package/persisters/persister-postgres/with-schemas/index.js +13 -9
- package/persisters/persister-powersync/index.js +14 -10
- package/persisters/persister-powersync/with-schemas/index.js +14 -10
- package/persisters/persister-react-native-mmkv/index.js +12 -8
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +12 -8
- package/persisters/persister-react-native-sqlite/index.js +14 -10
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +14 -10
- package/persisters/persister-remote/index.js +14 -10
- package/persisters/persister-remote/with-schemas/index.js +14 -10
- package/persisters/persister-sqlite-bun/index.js +14 -10
- package/persisters/persister-sqlite-bun/with-schemas/index.js +14 -10
- package/persisters/persister-sqlite-wasm/index.js +14 -10
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +14 -10
- package/persisters/persister-sqlite3/index.js +14 -10
- package/persisters/persister-sqlite3/with-schemas/index.js +14 -10
- package/persisters/persister-yjs/index.js +18 -12
- package/persisters/persister-yjs/with-schemas/index.js +18 -12
- package/persisters/with-schemas/index.js +14 -10
- package/queries/index.js +17 -12
- package/queries/with-schemas/index.js +17 -12
- package/readme.md +2 -2
- package/relationships/index.js +7 -5
- package/relationships/with-schemas/index.js +7 -5
- package/releases.md +100 -12
- package/store/index.js +48 -18
- package/store/with-schemas/index.js +48 -18
- package/synchronizers/index.js +13 -9
- package/synchronizers/synchronizer-broadcast-channel/index.js +14 -10
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +14 -10
- package/synchronizers/synchronizer-local/index.js +14 -10
- package/synchronizers/synchronizer-local/with-schemas/index.js +14 -10
- package/synchronizers/synchronizer-ws-client/index.js +13 -9
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +13 -9
- package/synchronizers/synchronizer-ws-server/index.js +13 -9
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +13 -9
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +13 -9
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +13 -9
- package/synchronizers/synchronizer-ws-server-simple/index.js +5 -4
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +5 -4
- package/synchronizers/with-schemas/index.js +13 -9
- package/ui-react/index.js +9 -6
- package/ui-react/with-schemas/index.js +9 -6
- package/ui-react-dom/index.js +14 -7
- package/ui-react-dom/with-schemas/index.js +14 -7
- package/ui-react-inspector/index.js +53 -23
- package/ui-react-inspector/with-schemas/index.js +53 -23
- package/with-schemas/index.js +60 -30
|
@@ -13,10 +13,14 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
13
13
|
str.replace(searchValue, replaceValue);
|
|
14
14
|
|
|
15
15
|
const promise = Promise;
|
|
16
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
17
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
16
18
|
const GLOBAL = globalThis;
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
19
|
+
const isNullish = (thing) => thing == null;
|
|
20
|
+
const isUndefined = (thing) => thing === void 0;
|
|
21
|
+
const isNull = (thing) => thing === null;
|
|
22
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
23
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
20
24
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
21
25
|
const isArray = (thing) => Array.isArray(thing);
|
|
22
26
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -57,12 +61,12 @@ const object = Object;
|
|
|
57
61
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
58
62
|
const objEntries = object.entries;
|
|
59
63
|
const isObject = (obj) =>
|
|
60
|
-
!
|
|
61
|
-
|
|
64
|
+
!isNullish(obj) &&
|
|
65
|
+
ifNotNullish(
|
|
62
66
|
getPrototypeOf(obj),
|
|
63
67
|
(objPrototype) =>
|
|
64
68
|
objPrototype == object.prototype ||
|
|
65
|
-
|
|
69
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
66
70
|
|
|
67
71
|
/* istanbul ignore next */
|
|
68
72
|
() => true,
|
|
@@ -109,7 +113,7 @@ const mapForEach = (map, cb) =>
|
|
|
109
113
|
const mapMap = (coll, cb) =>
|
|
110
114
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
111
115
|
const mapSet = (map, key, value) =>
|
|
112
|
-
|
|
116
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
113
117
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
114
118
|
if (!collHas(map, key)) {
|
|
115
119
|
mapSet(map, key, getDefaultValue());
|
|
@@ -237,7 +241,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
237
241
|
0,
|
|
238
242
|
objSize(defaultObj),
|
|
239
243
|
);
|
|
240
|
-
if (!
|
|
244
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
241
245
|
then(id, defaultedConfig[0]);
|
|
242
246
|
mapSet(configMap, id, defaultedConfig);
|
|
243
247
|
}
|
|
@@ -379,7 +383,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
379
383
|
const index = size(ids);
|
|
380
384
|
if (index == size(path)) {
|
|
381
385
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
382
|
-
} else if (
|
|
386
|
+
} else if (isNull(path[index])) {
|
|
383
387
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
384
388
|
callWithIds(...ids, id2),
|
|
385
389
|
);
|
|
@@ -13,10 +13,14 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
13
13
|
str.replace(searchValue, replaceValue);
|
|
14
14
|
|
|
15
15
|
const promise = Promise;
|
|
16
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
17
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
16
18
|
const GLOBAL = globalThis;
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
19
|
+
const isNullish = (thing) => thing == null;
|
|
20
|
+
const isUndefined = (thing) => thing === void 0;
|
|
21
|
+
const isNull = (thing) => thing === null;
|
|
22
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
23
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
20
24
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
21
25
|
const isArray = (thing) => Array.isArray(thing);
|
|
22
26
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -56,12 +60,12 @@ const object = Object;
|
|
|
56
60
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
57
61
|
const objEntries = object.entries;
|
|
58
62
|
const isObject = (obj) =>
|
|
59
|
-
!
|
|
60
|
-
|
|
63
|
+
!isNullish(obj) &&
|
|
64
|
+
ifNotNullish(
|
|
61
65
|
getPrototypeOf(obj),
|
|
62
66
|
(objPrototype) =>
|
|
63
67
|
objPrototype == object.prototype ||
|
|
64
|
-
|
|
68
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
65
69
|
|
|
66
70
|
/* istanbul ignore next */
|
|
67
71
|
() => true,
|
|
@@ -108,7 +112,7 @@ const mapForEach = (map, cb) =>
|
|
|
108
112
|
const mapMap = (coll, cb) =>
|
|
109
113
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
110
114
|
const mapSet = (map, key, value) =>
|
|
111
|
-
|
|
115
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
112
116
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
113
117
|
if (!collHas(map, key)) {
|
|
114
118
|
mapSet(map, key, getDefaultValue());
|
|
@@ -236,7 +240,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
236
240
|
0,
|
|
237
241
|
objSize(defaultObj),
|
|
238
242
|
);
|
|
239
|
-
if (!
|
|
243
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
240
244
|
then(id, defaultedConfig[0]);
|
|
241
245
|
mapSet(configMap, id, defaultedConfig);
|
|
242
246
|
}
|
|
@@ -378,7 +382,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
378
382
|
const index = size(ids);
|
|
379
383
|
if (index == size(path)) {
|
|
380
384
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
381
|
-
} else if (
|
|
385
|
+
} else if (isNull(path[index])) {
|
|
382
386
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
383
387
|
callWithIds(...ids, id2),
|
|
384
388
|
);
|
|
@@ -13,10 +13,14 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
13
13
|
str.replace(searchValue, replaceValue);
|
|
14
14
|
|
|
15
15
|
const promise = Promise;
|
|
16
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
17
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
16
18
|
const GLOBAL = globalThis;
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
19
|
+
const isNullish = (thing) => thing == null;
|
|
20
|
+
const isUndefined = (thing) => thing === void 0;
|
|
21
|
+
const isNull = (thing) => thing === null;
|
|
22
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
23
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
20
24
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
21
25
|
const isArray = (thing) => Array.isArray(thing);
|
|
22
26
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -56,12 +60,12 @@ const object = Object;
|
|
|
56
60
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
57
61
|
const objEntries = object.entries;
|
|
58
62
|
const isObject = (obj) =>
|
|
59
|
-
!
|
|
60
|
-
|
|
63
|
+
!isNullish(obj) &&
|
|
64
|
+
ifNotNullish(
|
|
61
65
|
getPrototypeOf(obj),
|
|
62
66
|
(objPrototype) =>
|
|
63
67
|
objPrototype == object.prototype ||
|
|
64
|
-
|
|
68
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
65
69
|
|
|
66
70
|
/* istanbul ignore next */
|
|
67
71
|
() => true,
|
|
@@ -108,7 +112,7 @@ const mapForEach = (map, cb) =>
|
|
|
108
112
|
const mapMap = (coll, cb) =>
|
|
109
113
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
110
114
|
const mapSet = (map, key, value) =>
|
|
111
|
-
|
|
115
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
112
116
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
113
117
|
if (!collHas(map, key)) {
|
|
114
118
|
mapSet(map, key, getDefaultValue());
|
|
@@ -236,7 +240,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
236
240
|
0,
|
|
237
241
|
objSize(defaultObj),
|
|
238
242
|
);
|
|
239
|
-
if (!
|
|
243
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
240
244
|
then(id, defaultedConfig[0]);
|
|
241
245
|
mapSet(configMap, id, defaultedConfig);
|
|
242
246
|
}
|
|
@@ -378,7 +382,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
378
382
|
const index = size(ids);
|
|
379
383
|
if (index == size(path)) {
|
|
380
384
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
381
|
-
} else if (
|
|
385
|
+
} else if (isNull(path[index])) {
|
|
382
386
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
383
387
|
callWithIds(...ids, id2),
|
|
384
388
|
);
|
|
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
12
12
|
str.replace(searchValue, replaceValue);
|
|
13
13
|
|
|
14
14
|
const promise = Promise;
|
|
15
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
16
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
15
17
|
const THOUSAND = 1e3;
|
|
16
18
|
const startInterval = (callback, sec, immediate) => {
|
|
17
19
|
return setInterval(callback, sec * THOUSAND);
|
|
18
20
|
};
|
|
19
21
|
const stopInterval = clearInterval;
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
22
|
+
const isNullish = (thing) => thing == null;
|
|
23
|
+
const isUndefined = (thing) => thing === void 0;
|
|
24
|
+
const isNull = (thing) => thing === null;
|
|
25
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
26
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
23
27
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
24
28
|
const isArray = (thing) => Array.isArray(thing);
|
|
25
29
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -60,12 +64,12 @@ const object = Object;
|
|
|
60
64
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
61
65
|
const objEntries = object.entries;
|
|
62
66
|
const isObject = (obj) =>
|
|
63
|
-
!
|
|
64
|
-
|
|
67
|
+
!isNullish(obj) &&
|
|
68
|
+
ifNotNullish(
|
|
65
69
|
getPrototypeOf(obj),
|
|
66
70
|
(objPrototype) =>
|
|
67
71
|
objPrototype == object.prototype ||
|
|
68
|
-
|
|
72
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
69
73
|
|
|
70
74
|
/* istanbul ignore next */
|
|
71
75
|
() => true,
|
|
@@ -145,7 +149,7 @@ const mapForEach = (map, cb) =>
|
|
|
145
149
|
const mapMap = (coll, cb) =>
|
|
146
150
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
147
151
|
const mapSet = (map, key, value) =>
|
|
148
|
-
|
|
152
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
149
153
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
150
154
|
if (!collHas(map, key)) {
|
|
151
155
|
mapSet(map, key, getDefaultValue());
|
|
@@ -224,7 +228,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
224
228
|
0,
|
|
225
229
|
objSize(defaultObj),
|
|
226
230
|
);
|
|
227
|
-
if (!
|
|
231
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
228
232
|
then(id, defaultedConfig[0]);
|
|
229
233
|
mapSet(configMap, id, defaultedConfig);
|
|
230
234
|
}
|
|
@@ -373,7 +377,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
373
377
|
const index = size(ids);
|
|
374
378
|
if (index == size(path)) {
|
|
375
379
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
376
|
-
} else if (
|
|
380
|
+
} else if (isNull(path[index])) {
|
|
377
381
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
378
382
|
callWithIds(...ids, id2),
|
|
379
383
|
);
|
|
@@ -1118,7 +1122,7 @@ const createCustomSqlitePersister = (
|
|
|
1118
1122
|
` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
|
|
1119
1123
|
);
|
|
1120
1124
|
if (d != dataVersion || s != schemaVersion || c != totalChanges) {
|
|
1121
|
-
if (dataVersion
|
|
1125
|
+
if (!isNullish(dataVersion)) {
|
|
1122
1126
|
listener();
|
|
1123
1127
|
}
|
|
1124
1128
|
dataVersion = d;
|
|
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
12
12
|
str.replace(searchValue, replaceValue);
|
|
13
13
|
|
|
14
14
|
const promise = Promise;
|
|
15
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
16
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
15
17
|
const THOUSAND = 1e3;
|
|
16
18
|
const startInterval = (callback, sec, immediate) => {
|
|
17
19
|
return setInterval(callback, sec * THOUSAND);
|
|
18
20
|
};
|
|
19
21
|
const stopInterval = clearInterval;
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
22
|
+
const isNullish = (thing) => thing == null;
|
|
23
|
+
const isUndefined = (thing) => thing === void 0;
|
|
24
|
+
const isNull = (thing) => thing === null;
|
|
25
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
26
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
23
27
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
24
28
|
const isArray = (thing) => Array.isArray(thing);
|
|
25
29
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -60,12 +64,12 @@ const object = Object;
|
|
|
60
64
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
61
65
|
const objEntries = object.entries;
|
|
62
66
|
const isObject = (obj) =>
|
|
63
|
-
!
|
|
64
|
-
|
|
67
|
+
!isNullish(obj) &&
|
|
68
|
+
ifNotNullish(
|
|
65
69
|
getPrototypeOf(obj),
|
|
66
70
|
(objPrototype) =>
|
|
67
71
|
objPrototype == object.prototype ||
|
|
68
|
-
|
|
72
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
69
73
|
|
|
70
74
|
/* istanbul ignore next */
|
|
71
75
|
() => true,
|
|
@@ -145,7 +149,7 @@ const mapForEach = (map, cb) =>
|
|
|
145
149
|
const mapMap = (coll, cb) =>
|
|
146
150
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
147
151
|
const mapSet = (map, key, value) =>
|
|
148
|
-
|
|
152
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
149
153
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
150
154
|
if (!collHas(map, key)) {
|
|
151
155
|
mapSet(map, key, getDefaultValue());
|
|
@@ -224,7 +228,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
224
228
|
0,
|
|
225
229
|
objSize(defaultObj),
|
|
226
230
|
);
|
|
227
|
-
if (!
|
|
231
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
228
232
|
then(id, defaultedConfig[0]);
|
|
229
233
|
mapSet(configMap, id, defaultedConfig);
|
|
230
234
|
}
|
|
@@ -373,7 +377,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
373
377
|
const index = size(ids);
|
|
374
378
|
if (index == size(path)) {
|
|
375
379
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
376
|
-
} else if (
|
|
380
|
+
} else if (isNull(path[index])) {
|
|
377
381
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
378
382
|
callWithIds(...ids, id2),
|
|
379
383
|
);
|
|
@@ -1118,7 +1122,7 @@ const createCustomSqlitePersister = (
|
|
|
1118
1122
|
` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
|
|
1119
1123
|
);
|
|
1120
1124
|
if (d != dataVersion || s != schemaVersion || c != totalChanges) {
|
|
1121
|
-
if (dataVersion
|
|
1125
|
+
if (!isNullish(dataVersion)) {
|
|
1122
1126
|
listener();
|
|
1123
1127
|
}
|
|
1124
1128
|
dataVersion = d;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
4
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
5
|
+
const isNullish = (thing) => thing == null;
|
|
6
|
+
const isUndefined = (thing) => thing === void 0;
|
|
7
|
+
const isNull = (thing) => thing === null;
|
|
8
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
9
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
6
10
|
const isArray = (thing) => Array.isArray(thing);
|
|
7
11
|
const size = (arrayOrString) => arrayOrString.length;
|
|
8
12
|
const test = (regex, subject) => regex.test(subject);
|
|
@@ -32,12 +36,12 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
32
36
|
const object = Object;
|
|
33
37
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
34
38
|
const isObject = (obj) =>
|
|
35
|
-
!
|
|
36
|
-
|
|
39
|
+
!isNullish(obj) &&
|
|
40
|
+
ifNotNullish(
|
|
37
41
|
getPrototypeOf(obj),
|
|
38
42
|
(objPrototype) =>
|
|
39
43
|
objPrototype == object.prototype ||
|
|
40
|
-
|
|
44
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
41
45
|
|
|
42
46
|
/* istanbul ignore next */
|
|
43
47
|
() => true,
|
|
@@ -50,7 +54,7 @@ const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
|
50
54
|
const mapNew = (entries) => new Map(entries);
|
|
51
55
|
const mapGet = (map, key) => map?.get(key);
|
|
52
56
|
const mapSet = (map, key, value) =>
|
|
53
|
-
|
|
57
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
54
58
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
55
59
|
if (!collHas(map, key)) {
|
|
56
60
|
mapSet(map, key, getDefaultValue());
|
|
@@ -161,7 +165,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
161
165
|
const index = size(ids);
|
|
162
166
|
if (index == size(path)) {
|
|
163
167
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
164
|
-
} else if (
|
|
168
|
+
} else if (isNull(path[index])) {
|
|
165
169
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
166
170
|
callWithIds(...ids, id2),
|
|
167
171
|
);
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
4
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
5
|
+
const isNullish = (thing) => thing == null;
|
|
6
|
+
const isUndefined = (thing) => thing === void 0;
|
|
7
|
+
const isNull = (thing) => thing === null;
|
|
8
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
9
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
6
10
|
const isArray = (thing) => Array.isArray(thing);
|
|
7
11
|
const size = (arrayOrString) => arrayOrString.length;
|
|
8
12
|
const test = (regex, subject) => regex.test(subject);
|
|
@@ -32,12 +36,12 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
32
36
|
const object = Object;
|
|
33
37
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
34
38
|
const isObject = (obj) =>
|
|
35
|
-
!
|
|
36
|
-
|
|
39
|
+
!isNullish(obj) &&
|
|
40
|
+
ifNotNullish(
|
|
37
41
|
getPrototypeOf(obj),
|
|
38
42
|
(objPrototype) =>
|
|
39
43
|
objPrototype == object.prototype ||
|
|
40
|
-
|
|
44
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
41
45
|
|
|
42
46
|
/* istanbul ignore next */
|
|
43
47
|
() => true,
|
|
@@ -50,7 +54,7 @@ const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
|
50
54
|
const mapNew = (entries) => new Map(entries);
|
|
51
55
|
const mapGet = (map, key) => map?.get(key);
|
|
52
56
|
const mapSet = (map, key, value) =>
|
|
53
|
-
|
|
57
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
54
58
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
55
59
|
if (!collHas(map, key)) {
|
|
56
60
|
mapSet(map, key, getDefaultValue());
|
|
@@ -161,7 +165,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
161
165
|
const index = size(ids);
|
|
162
166
|
if (index == size(path)) {
|
|
163
167
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
164
|
-
} else if (
|
|
168
|
+
} else if (isNull(path[index])) {
|
|
165
169
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
166
170
|
callWithIds(...ids, id2),
|
|
167
171
|
);
|
|
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
12
12
|
str.replace(searchValue, replaceValue);
|
|
13
13
|
|
|
14
14
|
const promise = Promise;
|
|
15
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
16
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
15
17
|
const THOUSAND = 1e3;
|
|
16
18
|
const startInterval = (callback, sec, immediate) => {
|
|
17
19
|
return setInterval(callback, sec * THOUSAND);
|
|
18
20
|
};
|
|
19
21
|
const stopInterval = clearInterval;
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
22
|
+
const isNullish = (thing) => thing == null;
|
|
23
|
+
const isUndefined = (thing) => thing === void 0;
|
|
24
|
+
const isNull = (thing) => thing === null;
|
|
25
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
26
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
23
27
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
24
28
|
const isArray = (thing) => Array.isArray(thing);
|
|
25
29
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -102,12 +106,12 @@ const object = Object;
|
|
|
102
106
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
103
107
|
const objEntries = object.entries;
|
|
104
108
|
const isObject = (obj) =>
|
|
105
|
-
!
|
|
106
|
-
|
|
109
|
+
!isNullish(obj) &&
|
|
110
|
+
ifNotNullish(
|
|
107
111
|
getPrototypeOf(obj),
|
|
108
112
|
(objPrototype) =>
|
|
109
113
|
objPrototype == object.prototype ||
|
|
110
|
-
|
|
114
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
111
115
|
|
|
112
116
|
/* istanbul ignore next */
|
|
113
117
|
() => true,
|
|
@@ -136,7 +140,7 @@ const mapForEach = (map, cb) =>
|
|
|
136
140
|
const mapMap = (coll, cb) =>
|
|
137
141
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
138
142
|
const mapSet = (map, key, value) =>
|
|
139
|
-
|
|
143
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
140
144
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
141
145
|
if (!collHas(map, key)) {
|
|
142
146
|
mapSet(map, key, getDefaultValue());
|
|
@@ -223,7 +227,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
223
227
|
0,
|
|
224
228
|
objSize(defaultObj),
|
|
225
229
|
);
|
|
226
|
-
if (!
|
|
230
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
227
231
|
then(id, defaultedConfig[0]);
|
|
228
232
|
mapSet(configMap, id, defaultedConfig);
|
|
229
233
|
}
|
|
@@ -372,7 +376,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
372
376
|
const index = size(ids);
|
|
373
377
|
if (index == size(path)) {
|
|
374
378
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
375
|
-
} else if (
|
|
379
|
+
} else if (isNull(path[index])) {
|
|
376
380
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
377
381
|
callWithIds(...ids, id2),
|
|
378
382
|
);
|
|
@@ -1117,7 +1121,7 @@ const createCustomSqlitePersister = (
|
|
|
1117
1121
|
` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
|
|
1118
1122
|
);
|
|
1119
1123
|
if (d != dataVersion || s != schemaVersion || c != totalChanges) {
|
|
1120
|
-
if (dataVersion
|
|
1124
|
+
if (!isNullish(dataVersion)) {
|
|
1121
1125
|
listener();
|
|
1122
1126
|
}
|
|
1123
1127
|
dataVersion = d;
|
|
@@ -12,14 +12,18 @@ const strReplace = (str, searchValue, replaceValue) =>
|
|
|
12
12
|
str.replace(searchValue, replaceValue);
|
|
13
13
|
|
|
14
14
|
const promise = Promise;
|
|
15
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
16
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
15
17
|
const THOUSAND = 1e3;
|
|
16
18
|
const startInterval = (callback, sec, immediate) => {
|
|
17
19
|
return setInterval(callback, sec * THOUSAND);
|
|
18
20
|
};
|
|
19
21
|
const stopInterval = clearInterval;
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
22
|
+
const isNullish = (thing) => thing == null;
|
|
23
|
+
const isUndefined = (thing) => thing === void 0;
|
|
24
|
+
const isNull = (thing) => thing === null;
|
|
25
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
26
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
23
27
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
24
28
|
const isArray = (thing) => Array.isArray(thing);
|
|
25
29
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
@@ -102,12 +106,12 @@ const object = Object;
|
|
|
102
106
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
103
107
|
const objEntries = object.entries;
|
|
104
108
|
const isObject = (obj) =>
|
|
105
|
-
!
|
|
106
|
-
|
|
109
|
+
!isNullish(obj) &&
|
|
110
|
+
ifNotNullish(
|
|
107
111
|
getPrototypeOf(obj),
|
|
108
112
|
(objPrototype) =>
|
|
109
113
|
objPrototype == object.prototype ||
|
|
110
|
-
|
|
114
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
111
115
|
|
|
112
116
|
/* istanbul ignore next */
|
|
113
117
|
() => true,
|
|
@@ -136,7 +140,7 @@ const mapForEach = (map, cb) =>
|
|
|
136
140
|
const mapMap = (coll, cb) =>
|
|
137
141
|
arrayMap([...(coll?.entries() ?? [])], ([key, value]) => cb(value, key));
|
|
138
142
|
const mapSet = (map, key, value) =>
|
|
139
|
-
|
|
143
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
140
144
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
141
145
|
if (!collHas(map, key)) {
|
|
142
146
|
mapSet(map, key, getDefaultValue());
|
|
@@ -223,7 +227,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
223
227
|
0,
|
|
224
228
|
objSize(defaultObj),
|
|
225
229
|
);
|
|
226
|
-
if (!
|
|
230
|
+
if (!isNull(defaultedConfig[0]) && !exclude(id, defaultedConfig[0])) {
|
|
227
231
|
then(id, defaultedConfig[0]);
|
|
228
232
|
mapSet(configMap, id, defaultedConfig);
|
|
229
233
|
}
|
|
@@ -372,7 +376,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
372
376
|
const index = size(ids);
|
|
373
377
|
if (index == size(path)) {
|
|
374
378
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
375
|
-
} else if (
|
|
379
|
+
} else if (isNull(path[index])) {
|
|
376
380
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
377
381
|
callWithIds(...ids, id2),
|
|
378
382
|
);
|
|
@@ -1117,7 +1121,7 @@ const createCustomSqlitePersister = (
|
|
|
1117
1121
|
` ${DATA_VERSION} d,${SCHEMA_VERSION} s,TOTAL_CHANGES() c FROM ${PRAGMA}${DATA_VERSION} JOIN ${PRAGMA}${SCHEMA_VERSION}`,
|
|
1118
1122
|
);
|
|
1119
1123
|
if (d != dataVersion || s != schemaVersion || c != totalChanges) {
|
|
1120
|
-
if (dataVersion
|
|
1124
|
+
if (!isNullish(dataVersion)) {
|
|
1121
1125
|
listener();
|
|
1122
1126
|
}
|
|
1123
1127
|
dataVersion = d;
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
2
|
|
|
3
|
+
const getIfNotFunction = (predicate) => (value, then, otherwise) =>
|
|
4
|
+
predicate(value) ? otherwise?.() : then(value);
|
|
3
5
|
const THOUSAND = 1e3;
|
|
4
6
|
const startInterval = (callback, sec, immediate) => {
|
|
5
7
|
return setInterval(callback, sec * THOUSAND);
|
|
6
8
|
};
|
|
7
9
|
const stopInterval = clearInterval;
|
|
8
10
|
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
11
|
+
const isNullish = (thing) => thing == null;
|
|
12
|
+
const isUndefined = (thing) => thing === void 0;
|
|
13
|
+
const isNull = (thing) => thing === null;
|
|
14
|
+
const ifNotNullish = getIfNotFunction(isNullish);
|
|
15
|
+
const ifNotUndefined = getIfNotFunction(isUndefined);
|
|
12
16
|
const isArray = (thing) => Array.isArray(thing);
|
|
13
17
|
const size = (arrayOrString) => arrayOrString.length;
|
|
14
18
|
const test = (regex, subject) => regex.test(subject);
|
|
@@ -32,12 +36,12 @@ const arrayShift = (array) => array.shift();
|
|
|
32
36
|
const object = Object;
|
|
33
37
|
const getPrototypeOf = (obj) => object.getPrototypeOf(obj);
|
|
34
38
|
const isObject = (obj) =>
|
|
35
|
-
!
|
|
36
|
-
|
|
39
|
+
!isNullish(obj) &&
|
|
40
|
+
ifNotNullish(
|
|
37
41
|
getPrototypeOf(obj),
|
|
38
42
|
(objPrototype) =>
|
|
39
43
|
objPrototype == object.prototype ||
|
|
40
|
-
|
|
44
|
+
isNullish(getPrototypeOf(objPrototype)),
|
|
41
45
|
|
|
42
46
|
/* istanbul ignore next */
|
|
43
47
|
() => true,
|
|
@@ -63,7 +67,7 @@ const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
|
63
67
|
const mapNew = (entries) => new Map(entries);
|
|
64
68
|
const mapGet = (map, key) => map?.get(key);
|
|
65
69
|
const mapSet = (map, key, value) =>
|
|
66
|
-
|
|
70
|
+
value === void 0 ? (collDel(map, key), map) : map?.set(key, value);
|
|
67
71
|
const mapEnsure = (map, key, getDefaultValue, hadExistingValue) => {
|
|
68
72
|
if (!collHas(map, key)) {
|
|
69
73
|
mapSet(map, key, getDefaultValue());
|
|
@@ -174,7 +178,7 @@ const getListenerFunctions = (getThing) => {
|
|
|
174
178
|
const index = size(ids);
|
|
175
179
|
if (index == size(path)) {
|
|
176
180
|
listener(thing, ...ids, ...extraArgsGetter(ids));
|
|
177
|
-
} else if (
|
|
181
|
+
} else if (isNull(path[index])) {
|
|
178
182
|
arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
179
183
|
callWithIds(...ids, id2),
|
|
180
184
|
);
|
|
@@ -451,8 +455,8 @@ const createRemotePersister = (
|
|
|
451
455
|
const response = await fetch(loadUrl, {method: 'HEAD'});
|
|
452
456
|
const currentEtag = getETag(response);
|
|
453
457
|
if (
|
|
454
|
-
!
|
|
455
|
-
!
|
|
458
|
+
!isNull(lastEtag) &&
|
|
459
|
+
!isNull(currentEtag) &&
|
|
456
460
|
currentEtag != lastEtag
|
|
457
461
|
) {
|
|
458
462
|
lastEtag = currentEtag;
|