tinybase 4.3.7 → 4.3.9
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/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/cjs/checkpoints.cjs +1 -1
- package/lib/cjs/checkpoints.cjs.gz +0 -0
- package/lib/cjs/indexes.cjs +1 -1
- package/lib/cjs/indexes.cjs.gz +0 -0
- package/lib/cjs/metrics.cjs +1 -1
- package/lib/cjs/metrics.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/queries.cjs +1 -1
- package/lib/cjs/queries.cjs.gz +0 -0
- package/lib/cjs/relationships.cjs +1 -1
- package/lib/cjs/relationships.cjs.gz +0 -0
- package/lib/cjs/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs/tools.cjs +1 -1
- package/lib/cjs/tools.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs/ui-react.cjs +1 -1
- package/lib/cjs/ui-react.cjs.gz +0 -0
- package/lib/cjs-es6/checkpoints.cjs +1 -1
- package/lib/cjs-es6/checkpoints.cjs.gz +0 -0
- package/lib/cjs-es6/indexes.cjs +1 -1
- package/lib/cjs-es6/indexes.cjs.gz +0 -0
- package/lib/cjs-es6/metrics.cjs +1 -1
- package/lib/cjs-es6/metrics.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/queries.cjs +1 -1
- package/lib/cjs-es6/queries.cjs.gz +0 -0
- package/lib/cjs-es6/relationships.cjs +1 -1
- package/lib/cjs-es6/relationships.cjs.gz +0 -0
- package/lib/cjs-es6/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/tools.cjs +1 -1
- package/lib/cjs-es6/tools.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/checkpoints.js +12 -12
- package/lib/debug/indexes.js +9 -9
- package/lib/debug/metrics.js +9 -9
- package/lib/debug/persisters/persister-automerge.js +6 -6
- package/lib/debug/persisters/persister-browser.js +2 -2
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +5 -5
- package/lib/debug/persisters/persister-expo-sqlite.js +5 -5
- package/lib/debug/persisters/persister-file.js +2 -2
- package/lib/debug/persisters/persister-indexed-db.js +6 -6
- package/lib/debug/persisters/persister-partykit-client.js +15 -5
- package/lib/debug/persisters/persister-partykit-server.js +44 -30
- package/lib/debug/persisters/persister-remote.js +2 -2
- package/lib/debug/persisters/persister-sqlite-wasm.js +5 -5
- package/lib/debug/persisters/persister-sqlite3.js +5 -5
- package/lib/debug/persisters/persister-yjs.js +9 -9
- package/lib/debug/persisters.js +2 -2
- package/lib/debug/queries.js +16 -15
- package/lib/debug/relationships.js +9 -9
- package/lib/debug/store.js +9 -9
- package/lib/debug/tinybase.js +16 -15
- package/lib/debug/tools.js +6 -7
- package/lib/debug/ui-react-dom.js +10 -10
- package/lib/debug/ui-react.js +2 -2
- package/lib/es6/checkpoints.js +1 -1
- package/lib/es6/checkpoints.js.gz +0 -0
- package/lib/es6/indexes.js +1 -1
- package/lib/es6/indexes.js.gz +0 -0
- package/lib/es6/metrics.js +1 -1
- package/lib/es6/metrics.js.gz +0 -0
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-indexed-db.js +1 -1
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-client.js +1 -1
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-server.js +1 -1
- package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/queries.js +1 -1
- package/lib/es6/queries.js.gz +0 -0
- package/lib/es6/relationships.js +1 -1
- package/lib/es6/relationships.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -1
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-partykit-client.js +1 -1
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-partykit-server.js +1 -1
- package/lib/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/queries.js +1 -1
- package/lib/queries.js.gz +0 -0
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/tools.js +1 -1
- package/lib/tools.js.gz +0 -0
- package/lib/types/persisters/persister-partykit-client.d.ts +43 -4
- package/lib/types/persisters/persister-partykit-server.d.ts +66 -0
- package/lib/types/queries.d.ts +24 -0
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +44 -5
- package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +66 -0
- package/lib/types/with-schemas/queries.d.ts +24 -0
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -1
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-client.js +1 -1
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-server.js +1 -1
- package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/queries.js +1 -1
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/lib/umd-es6/checkpoints.js +1 -1
- package/lib/umd-es6/checkpoints.js.gz +0 -0
- package/lib/umd-es6/indexes.js +1 -1
- package/lib/umd-es6/indexes.js.gz +0 -0
- package/lib/umd-es6/metrics.js +1 -1
- package/lib/umd-es6/metrics.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -1
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-server.js +1 -1
- package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/queries.js +1 -1
- package/lib/umd-es6/queries.js.gz +0 -0
- package/lib/umd-es6/relationships.js +1 -1
- package/lib/umd-es6/relationships.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +7 -7
- package/readme.md +2 -2
|
@@ -15,13 +15,13 @@ const ifNotUndefined = (value, then, otherwise) =>
|
|
|
15
15
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
16
16
|
const isArray = (thing) => Array.isArray(thing);
|
|
17
17
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
18
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
18
19
|
const promiseNew = (resolver) => new promise(resolver);
|
|
19
20
|
const promiseAll = async (promises) => promise.all(promises);
|
|
20
21
|
|
|
21
22
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
22
23
|
const arrayMap = (array, cb) => array.map(cb);
|
|
23
|
-
const
|
|
24
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
24
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
25
25
|
const arrayFilter = (array, cb) => array.filter(cb);
|
|
26
26
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
27
27
|
const arrayShift = (array) => array.shift();
|
|
@@ -47,7 +47,7 @@ const objDel = (obj, id) => {
|
|
|
47
47
|
const objMap = (obj, cb) =>
|
|
48
48
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
49
49
|
const objValues = (obj) => object.values(obj);
|
|
50
|
-
const objSize = (obj) =>
|
|
50
|
+
const objSize = (obj) => size(objIds(obj));
|
|
51
51
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
52
52
|
|
|
53
53
|
const mapNew = (entries) => new Map(entries);
|
|
@@ -318,8 +318,8 @@ const upsert = async (
|
|
|
318
318
|
')VALUES' +
|
|
319
319
|
slice(
|
|
320
320
|
strRepeat(
|
|
321
|
-
`,(?${strRepeat(',?',
|
|
322
|
-
|
|
321
|
+
`,(?${strRepeat(',?', size(changingColumnNames))})`,
|
|
322
|
+
size(args) / (size(changingColumnNames) + 1),
|
|
323
323
|
),
|
|
324
324
|
1,
|
|
325
325
|
) +
|
|
@@ -4,17 +4,17 @@ const TINYBASE = 'tinybase';
|
|
|
4
4
|
const T = 't';
|
|
5
5
|
const V = 'v';
|
|
6
6
|
|
|
7
|
-
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
8
|
-
const arrayMap = (array, cb) => array.map(cb);
|
|
9
|
-
const arrayLength = (array) => array.length;
|
|
10
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
11
|
-
const arrayPush = (array, ...values) => array.push(...values);
|
|
12
|
-
const arrayShift = (array) => array.shift();
|
|
13
|
-
|
|
14
7
|
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
15
8
|
const isUndefined = (thing) => thing == void 0;
|
|
16
9
|
const ifNotUndefined = (value, then, otherwise) =>
|
|
17
10
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
11
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
12
|
+
|
|
13
|
+
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
14
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
15
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
16
|
+
const arrayPush = (array, ...values) => array.push(...values);
|
|
17
|
+
const arrayShift = (array) => array.shift();
|
|
18
18
|
|
|
19
19
|
const object = Object;
|
|
20
20
|
const objIds = object.keys;
|
|
@@ -26,7 +26,7 @@ const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
|
|
|
26
26
|
const objHas = (obj, id) => !isUndefined(objGet(obj, id));
|
|
27
27
|
const objMap = (obj, cb) =>
|
|
28
28
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
29
|
-
const objSize = (obj) =>
|
|
29
|
+
const objSize = (obj) => size(objIds(obj));
|
|
30
30
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
31
31
|
const objEnsure = (obj, id, getDefaultValue) => {
|
|
32
32
|
if (!objHas(obj, id)) {
|
|
@@ -194,7 +194,7 @@ const createCustomPersister = (
|
|
|
194
194
|
const DELETE = 'delete';
|
|
195
195
|
const getYContent = (yContent) => [yContent.get(T), yContent.get(V)];
|
|
196
196
|
const getTransactionChangesFromYDoc = (yContent, events) => {
|
|
197
|
-
if (
|
|
197
|
+
if (size(events) == 1 && arrayIsEmpty(events[0].path)) {
|
|
198
198
|
return [yContent.get(T).toJSON(), yContent.get(V).toJSON()];
|
|
199
199
|
}
|
|
200
200
|
const [yTables, yValues] = getYContent(yContent);
|
package/lib/debug/persisters.js
CHANGED
|
@@ -2,8 +2,8 @@ const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
|
2
2
|
const isUndefined = (thing) => thing == void 0;
|
|
3
3
|
const ifNotUndefined = (value, then, otherwise) =>
|
|
4
4
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
5
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
5
6
|
|
|
6
|
-
const arrayLength = (array) => array.length;
|
|
7
7
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
8
8
|
const arrayShift = (array) => array.shift();
|
|
9
9
|
|
|
@@ -12,7 +12,7 @@ const objIds = object.keys;
|
|
|
12
12
|
const objFreeze = object.freeze;
|
|
13
13
|
const isObject = (obj) =>
|
|
14
14
|
isInstanceOf(obj, object) && obj.constructor == object;
|
|
15
|
-
const objSize = (obj) =>
|
|
15
|
+
const objSize = (obj) => size(objIds(obj));
|
|
16
16
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
17
17
|
|
|
18
18
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
package/lib/debug/queries.js
CHANGED
|
@@ -21,18 +21,6 @@ const SORTED_ROW_IDS = 'Sorted' + ROW + IDS;
|
|
|
21
21
|
const CELL = 'Cell';
|
|
22
22
|
const CELL_IDS = CELL + IDS;
|
|
23
23
|
|
|
24
|
-
const arrayEvery = (array, cb) => array.every(cb);
|
|
25
|
-
const arrayIsEqual = (array1, array2) =>
|
|
26
|
-
arrayLength(array1) === arrayLength(array2) &&
|
|
27
|
-
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
28
|
-
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
29
|
-
const arrayMap = (array, cb) => array.map(cb);
|
|
30
|
-
const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
|
|
31
|
-
const arrayLength = (array) => array.length;
|
|
32
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
33
|
-
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
34
|
-
const arrayPush = (array, ...values) => array.push(...values);
|
|
35
|
-
|
|
36
24
|
const mathMax = Math.max;
|
|
37
25
|
const mathMin = Math.min;
|
|
38
26
|
const isFiniteNumber = isFinite;
|
|
@@ -43,8 +31,20 @@ const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
|
43
31
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
44
32
|
const isArray = (thing) => Array.isArray(thing);
|
|
45
33
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
34
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
46
35
|
const getUndefined = () => void 0;
|
|
47
36
|
|
|
37
|
+
const arrayEvery = (array, cb) => array.every(cb);
|
|
38
|
+
const arrayIsEqual = (array1, array2) =>
|
|
39
|
+
size(array1) === size(array2) &&
|
|
40
|
+
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
41
|
+
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
42
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
43
|
+
const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
|
|
44
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
45
|
+
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
46
|
+
const arrayPush = (array, ...values) => array.push(...values);
|
|
47
|
+
|
|
48
48
|
const object = Object;
|
|
49
49
|
const objFreeze = object.freeze;
|
|
50
50
|
const objMap = (obj, cb) =>
|
|
@@ -76,10 +76,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
76
76
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
77
77
|
node,
|
|
78
78
|
path[p],
|
|
79
|
-
p >
|
|
79
|
+
p > size(path) - 2 ? ensureLeaf : mapNew,
|
|
80
80
|
),
|
|
81
81
|
(nodeOrLeaf) => {
|
|
82
|
-
if (p >
|
|
82
|
+
if (p > size(path) - 2) {
|
|
83
83
|
if (pruneLeaf?.(nodeOrLeaf)) {
|
|
84
84
|
mapSet(node, path[p]);
|
|
85
85
|
}
|
|
@@ -423,7 +423,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
423
423
|
const havings = [];
|
|
424
424
|
const select = (arg1, arg2) => {
|
|
425
425
|
const selectEntry = isFunction(arg1)
|
|
426
|
-
? [
|
|
426
|
+
? [size(selectEntries) + EMPTY_STRING, arg1]
|
|
427
427
|
: [
|
|
428
428
|
isUndefined(arg2) ? arg1 : arg2,
|
|
429
429
|
(getTableCell) => getTableCell(arg1, arg2),
|
|
@@ -797,6 +797,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
797
797
|
...slice(args, 0, argumentCount),
|
|
798
798
|
(_store, ...listenerArgs) =>
|
|
799
799
|
args[argumentCount](queries, ...listenerArgs),
|
|
800
|
+
true,
|
|
800
801
|
);
|
|
801
802
|
},
|
|
802
803
|
);
|
|
@@ -7,15 +7,15 @@ const ifNotUndefined = (value, then, otherwise) =>
|
|
|
7
7
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
8
8
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
9
9
|
const isArray = (thing) => Array.isArray(thing);
|
|
10
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
10
11
|
const test = (regex, subject) => regex.test(subject);
|
|
11
12
|
|
|
12
13
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
13
14
|
const arrayIsEqual = (array1, array2) =>
|
|
14
|
-
|
|
15
|
+
size(array1) === size(array2) &&
|
|
15
16
|
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
16
17
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
17
|
-
const
|
|
18
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
18
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
19
19
|
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
20
20
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
21
21
|
const arrayShift = (array) => array.shift();
|
|
@@ -53,10 +53,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
53
53
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
54
54
|
node,
|
|
55
55
|
path[p],
|
|
56
|
-
p >
|
|
56
|
+
p > size(path) - 2 ? ensureLeaf : mapNew,
|
|
57
57
|
),
|
|
58
58
|
(nodeOrLeaf) => {
|
|
59
|
-
if (p >
|
|
59
|
+
if (p > size(path) - 2) {
|
|
60
60
|
if (pruneLeaf?.(nodeOrLeaf)) {
|
|
61
61
|
mapSet(node, path[p]);
|
|
62
62
|
}
|
|
@@ -255,7 +255,7 @@ const getPoolFunctions = () => {
|
|
|
255
255
|
return [
|
|
256
256
|
(reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
|
|
257
257
|
(id) => {
|
|
258
|
-
if (test(INTEGER, id) &&
|
|
258
|
+
if (test(INTEGER, id) && size(pool) < 1e3) {
|
|
259
259
|
arrayPush(pool, id);
|
|
260
260
|
}
|
|
261
261
|
},
|
|
@@ -265,7 +265,7 @@ const getPoolFunctions = () => {
|
|
|
265
265
|
const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
|
|
266
266
|
const leaves = [];
|
|
267
267
|
const deep = (node, p) =>
|
|
268
|
-
p ==
|
|
268
|
+
p == size(path)
|
|
269
269
|
? arrayPush(leaves, node)
|
|
270
270
|
: path[p] === null
|
|
271
271
|
? collForEach(node, (node2) => deep(node2, p + 1))
|
|
@@ -317,8 +317,8 @@ const getListenerFunctions = (getThing) => {
|
|
|
317
317
|
mapGet(allListeners, id),
|
|
318
318
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
319
319
|
const callWithIds = (...ids) => {
|
|
320
|
-
const index =
|
|
321
|
-
index ==
|
|
320
|
+
const index = size(ids);
|
|
321
|
+
index == size(path)
|
|
322
322
|
? listener(thing, ...ids, ...extraArgsGetter(ids))
|
|
323
323
|
: isUndefined(path[index])
|
|
324
324
|
? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
package/lib/debug/store.js
CHANGED
|
@@ -31,17 +31,17 @@ const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
|
31
31
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
32
32
|
const isArray = (thing) => Array.isArray(thing);
|
|
33
33
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
34
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
34
35
|
const test = (regex, subject) => regex.test(subject);
|
|
35
36
|
|
|
36
37
|
const arrayHas = (array, value) => array.includes(value);
|
|
37
38
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
38
39
|
const arrayIsEqual = (array1, array2) =>
|
|
39
|
-
|
|
40
|
+
size(array1) === size(array2) &&
|
|
40
41
|
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
41
42
|
const arraySort = (array, sorter) => array.sort(sorter);
|
|
42
43
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
43
44
|
const arrayMap = (array, cb) => array.map(cb);
|
|
44
|
-
const arrayLength = (array) => array.length;
|
|
45
45
|
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
46
46
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
47
47
|
const arrayShift = (array) => array.shift();
|
|
@@ -60,7 +60,7 @@ const objDel = (obj, id) => {
|
|
|
60
60
|
};
|
|
61
61
|
const objMap = (obj, cb) =>
|
|
62
62
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
63
|
-
const objSize = (obj) =>
|
|
63
|
+
const objSize = (obj) => size(objIds(obj));
|
|
64
64
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
65
65
|
|
|
66
66
|
const collSizeN = (collSizer) => (coll) =>
|
|
@@ -128,10 +128,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
128
128
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
129
129
|
node,
|
|
130
130
|
path[p],
|
|
131
|
-
p >
|
|
131
|
+
p > size(path) - 2 ? ensureLeaf : mapNew,
|
|
132
132
|
),
|
|
133
133
|
(nodeOrLeaf) => {
|
|
134
|
-
if (p >
|
|
134
|
+
if (p > size(path) - 2) {
|
|
135
135
|
if (pruneLeaf?.(nodeOrLeaf)) {
|
|
136
136
|
mapSet(node, path[p]);
|
|
137
137
|
}
|
|
@@ -160,7 +160,7 @@ const getPoolFunctions = () => {
|
|
|
160
160
|
return [
|
|
161
161
|
(reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
|
|
162
162
|
(id) => {
|
|
163
|
-
if (test(INTEGER, id) &&
|
|
163
|
+
if (test(INTEGER, id) && size(pool) < 1e3) {
|
|
164
164
|
arrayPush(pool, id);
|
|
165
165
|
}
|
|
166
166
|
},
|
|
@@ -170,7 +170,7 @@ const getPoolFunctions = () => {
|
|
|
170
170
|
const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
|
|
171
171
|
const leaves = [];
|
|
172
172
|
const deep = (node, p) =>
|
|
173
|
-
p ==
|
|
173
|
+
p == size(path)
|
|
174
174
|
? arrayPush(leaves, node)
|
|
175
175
|
: path[p] === null
|
|
176
176
|
? collForEach(node, (node2) => deep(node2, p + 1))
|
|
@@ -222,8 +222,8 @@ const getListenerFunctions = (getThing) => {
|
|
|
222
222
|
mapGet(allListeners, id),
|
|
223
223
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
224
224
|
const callWithIds = (...ids) => {
|
|
225
|
-
const index =
|
|
226
|
-
index ==
|
|
225
|
+
const index = size(ids);
|
|
226
|
+
index == size(path)
|
|
227
227
|
? listener(thing, ...ids, ...extraArgsGetter(ids))
|
|
228
228
|
: isUndefined(path[index])
|
|
229
229
|
? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
package/lib/debug/tinybase.js
CHANGED
|
@@ -41,13 +41,14 @@ const isString = (thing) => getTypeOf(thing) == STRING;
|
|
|
41
41
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
42
42
|
const isArray = (thing) => Array.isArray(thing);
|
|
43
43
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
44
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
44
45
|
const test = (regex, subject) => regex.test(subject);
|
|
45
46
|
const getUndefined = () => void 0;
|
|
46
47
|
|
|
47
48
|
const arrayHas = (array, value) => array.includes(value);
|
|
48
49
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
49
50
|
const arrayIsEqual = (array1, array2) =>
|
|
50
|
-
|
|
51
|
+
size(array1) === size(array2) &&
|
|
51
52
|
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
52
53
|
const arrayIsSorted = (array, sorter) =>
|
|
53
54
|
arrayEvery(
|
|
@@ -58,8 +59,7 @@ const arraySort = (array, sorter) => array.sort(sorter);
|
|
|
58
59
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
59
60
|
const arrayMap = (array, cb) => array.map(cb);
|
|
60
61
|
const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
|
|
61
|
-
const
|
|
62
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
62
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
63
63
|
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
64
64
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
65
65
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
@@ -81,7 +81,7 @@ const objDel = (obj, id) => {
|
|
|
81
81
|
};
|
|
82
82
|
const objMap = (obj, cb) =>
|
|
83
83
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
84
|
-
const objSize = (obj) =>
|
|
84
|
+
const objSize = (obj) => size(objIds(obj));
|
|
85
85
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
86
86
|
|
|
87
87
|
const collSizeN = (collSizer) => (coll) =>
|
|
@@ -149,10 +149,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
149
149
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
150
150
|
node,
|
|
151
151
|
path[p],
|
|
152
|
-
p >
|
|
152
|
+
p > size(path) - 2 ? ensureLeaf : mapNew,
|
|
153
153
|
),
|
|
154
154
|
(nodeOrLeaf) => {
|
|
155
|
-
if (p >
|
|
155
|
+
if (p > size(path) - 2) {
|
|
156
156
|
if (pruneLeaf?.(nodeOrLeaf)) {
|
|
157
157
|
mapSet(node, path[p]);
|
|
158
158
|
}
|
|
@@ -364,7 +364,7 @@ const getPoolFunctions = () => {
|
|
|
364
364
|
return [
|
|
365
365
|
(reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
|
|
366
366
|
(id) => {
|
|
367
|
-
if (test(INTEGER, id) &&
|
|
367
|
+
if (test(INTEGER, id) && size(pool) < 1e3) {
|
|
368
368
|
arrayPush(pool, id);
|
|
369
369
|
}
|
|
370
370
|
},
|
|
@@ -374,7 +374,7 @@ const getPoolFunctions = () => {
|
|
|
374
374
|
const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
|
|
375
375
|
const leaves = [];
|
|
376
376
|
const deep = (node, p) =>
|
|
377
|
-
p ==
|
|
377
|
+
p == size(path)
|
|
378
378
|
? arrayPush(leaves, node)
|
|
379
379
|
: path[p] === null
|
|
380
380
|
? collForEach(node, (node2) => deep(node2, p + 1))
|
|
@@ -426,8 +426,8 @@ const getListenerFunctions = (getThing) => {
|
|
|
426
426
|
mapGet(allListeners, id),
|
|
427
427
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
428
428
|
const callWithIds = (...ids) => {
|
|
429
|
-
const index =
|
|
430
|
-
index ==
|
|
429
|
+
const index = size(ids);
|
|
430
|
+
index == size(path)
|
|
431
431
|
? listener(thing, ...ids, ...extraArgsGetter(ids))
|
|
432
432
|
: isUndefined(path[index])
|
|
433
433
|
? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
|
@@ -482,11 +482,11 @@ const createCheckpoints = getCreateFunction((store) => {
|
|
|
482
482
|
};
|
|
483
483
|
const clearCheckpointIds = (checkpointIds, to) =>
|
|
484
484
|
arrayForEach(
|
|
485
|
-
arrayClear(checkpointIds, to ??
|
|
485
|
+
arrayClear(checkpointIds, to ?? size(checkpointIds)),
|
|
486
486
|
clearCheckpointId,
|
|
487
487
|
);
|
|
488
488
|
const trimBackwardsIds = () =>
|
|
489
|
-
clearCheckpointIds(backwardIds,
|
|
489
|
+
clearCheckpointIds(backwardIds, size(backwardIds) - backwardIdsSize);
|
|
490
490
|
const storeChanged = () =>
|
|
491
491
|
ifNotUndefined(currentId, () => {
|
|
492
492
|
arrayPush(backwardIds, currentId);
|
|
@@ -575,8 +575,8 @@ const createCheckpoints = getCreateFunction((store) => {
|
|
|
575
575
|
checkpointsChanged = 0;
|
|
576
576
|
}
|
|
577
577
|
};
|
|
578
|
-
const setSize = (
|
|
579
|
-
backwardIdsSize =
|
|
578
|
+
const setSize = (size2) => {
|
|
579
|
+
backwardIdsSize = size2;
|
|
580
580
|
trimBackwardsIds();
|
|
581
581
|
return checkpoints;
|
|
582
582
|
};
|
|
@@ -1256,7 +1256,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1256
1256
|
const havings = [];
|
|
1257
1257
|
const select = (arg1, arg2) => {
|
|
1258
1258
|
const selectEntry = isFunction(arg1)
|
|
1259
|
-
? [
|
|
1259
|
+
? [size(selectEntries) + EMPTY_STRING, arg1]
|
|
1260
1260
|
: [
|
|
1261
1261
|
isUndefined(arg2) ? arg1 : arg2,
|
|
1262
1262
|
(getTableCell) => getTableCell(arg1, arg2),
|
|
@@ -1630,6 +1630,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1630
1630
|
...slice(args, 0, argumentCount),
|
|
1631
1631
|
(_store, ...listenerArgs) =>
|
|
1632
1632
|
args[argumentCount](queries, ...listenerArgs),
|
|
1633
|
+
true,
|
|
1633
1634
|
);
|
|
1634
1635
|
},
|
|
1635
1636
|
);
|
package/lib/debug/tools.js
CHANGED
|
@@ -31,6 +31,7 @@ const isTypeStringOrBoolean = (type) => type == STRING || type == BOOLEAN;
|
|
|
31
31
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
32
32
|
const isArray = (thing) => Array.isArray(thing);
|
|
33
33
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
34
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
34
35
|
const promiseAll = async (promises) => promise.all(promises);
|
|
35
36
|
|
|
36
37
|
const getCellOrValueType = (cell) => {
|
|
@@ -45,7 +46,6 @@ const arraySort = (array, sorter) => array.sort(sorter);
|
|
|
45
46
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
46
47
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
47
48
|
const arrayMap = (array, cb) => array.map(cb);
|
|
48
|
-
const arrayLength = (array) => array.length;
|
|
49
49
|
const arrayFilter = (array, cb) => array.filter(cb);
|
|
50
50
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
51
51
|
const arrayPop = (array) => array.pop();
|
|
@@ -59,7 +59,7 @@ const isObject = (obj) =>
|
|
|
59
59
|
isInstanceOf(obj, object) && obj.constructor == object;
|
|
60
60
|
const objMap = (obj, cb) =>
|
|
61
61
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
62
|
-
const objSize = (obj) =>
|
|
62
|
+
const objSize = (obj) => size(objIds(obj));
|
|
63
63
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
64
64
|
|
|
65
65
|
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
@@ -250,7 +250,7 @@ const mapUnique = (map, id, value, index = 1) => {
|
|
|
250
250
|
};
|
|
251
251
|
const formatJsDoc = (file) =>
|
|
252
252
|
file.replace(JSDOC, (_, indent, text) => {
|
|
253
|
-
const lineLength = 77 -
|
|
253
|
+
const lineLength = 77 - size(indent);
|
|
254
254
|
return `${indent}/**
|
|
255
255
|
${text.replace(
|
|
256
256
|
new RegExp(`([^\\n]{1,${lineLength}})(\\s|$)`, 'g'),
|
|
@@ -258,7 +258,6 @@ ${text.replace(
|
|
|
258
258
|
`,
|
|
259
259
|
)}${indent} */`;
|
|
260
260
|
});
|
|
261
|
-
const length = (str) => str.length;
|
|
262
261
|
const flat = (array) => array.flat(1e3);
|
|
263
262
|
const camel = (str, firstCap = 0) =>
|
|
264
263
|
arrayJoin(
|
|
@@ -2872,8 +2871,8 @@ const createTools = getCreateFunction((store) => {
|
|
|
2872
2871
|
totalTables,
|
|
2873
2872
|
totalRows,
|
|
2874
2873
|
totalCells,
|
|
2875
|
-
totalValues:
|
|
2876
|
-
jsonLength:
|
|
2874
|
+
totalValues: size(store.getValueIds()),
|
|
2875
|
+
jsonLength: size(store.getJson()),
|
|
2877
2876
|
...(detail ? {detail: {tables}} : {}),
|
|
2878
2877
|
};
|
|
2879
2878
|
};
|
|
@@ -2909,7 +2908,7 @@ const createTools = getCreateFunction((store) => {
|
|
|
2909
2908
|
collForEach(cellsMeta, ([type, , [, maxValue], count], cellId) => {
|
|
2910
2909
|
tablesSchema[tableId][cellId] = {
|
|
2911
2910
|
[TYPE]: type,
|
|
2912
|
-
...(count ==
|
|
2911
|
+
...(count == size(rowIds) ? {[DEFAULT]: maxValue} : {}),
|
|
2913
2912
|
};
|
|
2914
2913
|
});
|
|
2915
2914
|
return 1;
|
|
@@ -80,6 +80,7 @@ const isString = (thing) => getTypeOf(thing) == STRING;
|
|
|
80
80
|
const isFunction = (thing) => getTypeOf(thing) == FUNCTION;
|
|
81
81
|
const isArray = (thing) => Array.isArray(thing);
|
|
82
82
|
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
83
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
83
84
|
const test = (regex, subject) => regex.test(subject);
|
|
84
85
|
|
|
85
86
|
const {
|
|
@@ -108,14 +109,13 @@ const getIndexStoreTableId = (indexes, indexId) => [
|
|
|
108
109
|
const arrayHas = (array, value) => array.includes(value);
|
|
109
110
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
110
111
|
const arrayIsEqual = (array1, array2) =>
|
|
111
|
-
|
|
112
|
+
size(array1) === size(array2) &&
|
|
112
113
|
arrayEvery(array1, (value1, index) => array2[index] === value1);
|
|
113
114
|
const arraySort = (array, sorter) => array.sort(sorter);
|
|
114
115
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
115
116
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
116
117
|
const arrayMap = (array, cb) => array.map(cb);
|
|
117
|
-
const
|
|
118
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
118
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
119
119
|
const arrayReduce = (array, cb, initial) => array.reduce(cb, initial);
|
|
120
120
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
121
121
|
const arrayShift = (array) => array.shift();
|
|
@@ -135,7 +135,7 @@ const objDel = (obj, id) => {
|
|
|
135
135
|
};
|
|
136
136
|
const objMap = (obj, cb) =>
|
|
137
137
|
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
138
|
-
const objSize = (obj) =>
|
|
138
|
+
const objSize = (obj) => size(objIds(obj));
|
|
139
139
|
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
140
140
|
|
|
141
141
|
const jsonString = (obj) =>
|
|
@@ -1552,10 +1552,10 @@ const visitTree = (node, path, ensureLeaf, pruneLeaf, p = 0) =>
|
|
|
1552
1552
|
(ensureLeaf ? mapEnsure : mapGet)(
|
|
1553
1553
|
node,
|
|
1554
1554
|
path[p],
|
|
1555
|
-
p >
|
|
1555
|
+
p > size(path) - 2 ? ensureLeaf : mapNew,
|
|
1556
1556
|
),
|
|
1557
1557
|
(nodeOrLeaf) => {
|
|
1558
|
-
if (p >
|
|
1558
|
+
if (p > size(path) - 2) {
|
|
1559
1559
|
if (pruneLeaf?.(nodeOrLeaf)) {
|
|
1560
1560
|
mapSet(node, path[p]);
|
|
1561
1561
|
}
|
|
@@ -1757,7 +1757,7 @@ const getPoolFunctions = () => {
|
|
|
1757
1757
|
return [
|
|
1758
1758
|
(reuse) => (reuse ? arrayShift(pool) : null) ?? EMPTY_STRING + nextId++,
|
|
1759
1759
|
(id) => {
|
|
1760
|
-
if (test(INTEGER, id) &&
|
|
1760
|
+
if (test(INTEGER, id) && size(pool) < 1e3) {
|
|
1761
1761
|
arrayPush(pool, id);
|
|
1762
1762
|
}
|
|
1763
1763
|
},
|
|
@@ -1767,7 +1767,7 @@ const getPoolFunctions = () => {
|
|
|
1767
1767
|
const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
|
|
1768
1768
|
const leaves = [];
|
|
1769
1769
|
const deep = (node, p) =>
|
|
1770
|
-
p ==
|
|
1770
|
+
p == size(path)
|
|
1771
1771
|
? arrayPush(leaves, node)
|
|
1772
1772
|
: path[p] === null
|
|
1773
1773
|
? collForEach(node, (node2) => deep(node2, p + 1))
|
|
@@ -1819,8 +1819,8 @@ const getListenerFunctions = (getThing) => {
|
|
|
1819
1819
|
mapGet(allListeners, id),
|
|
1820
1820
|
([listener, , path = [], pathGetters, extraArgsGetter]) => {
|
|
1821
1821
|
const callWithIds = (...ids) => {
|
|
1822
|
-
const index =
|
|
1823
|
-
index ==
|
|
1822
|
+
const index = size(ids);
|
|
1823
|
+
index == size(path)
|
|
1824
1824
|
? listener(thing, ...ids, ...extraArgsGetter(ids))
|
|
1825
1825
|
: isUndefined(path[index])
|
|
1826
1826
|
? arrayForEach(pathGetters[index]?.(...ids) ?? [], (id2) =>
|
package/lib/debug/ui-react.js
CHANGED
|
@@ -26,11 +26,11 @@ const ifNotUndefined = (value, then, otherwise) =>
|
|
|
26
26
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
27
27
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
28
28
|
const isArray = (thing) => Array.isArray(thing);
|
|
29
|
+
const size = (arrayOrString) => arrayOrString.length;
|
|
29
30
|
const getUndefined = () => void 0;
|
|
30
31
|
|
|
31
32
|
const arrayMap = (array, cb) => array.map(cb);
|
|
32
|
-
const
|
|
33
|
-
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
33
|
+
const arrayIsEmpty = (array) => size(array) == 0;
|
|
34
34
|
|
|
35
35
|
const object = Object;
|
|
36
36
|
const objIds = object.keys;
|
package/lib/es6/checkpoints.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>null==e,l=(l,n,t)=>e(l)?null==t?void 0:t():n(l),n=(e,l)=>e.includes(l),
|
|
1
|
+
const e=e=>null==e,l=(l,n,t)=>e(l)?null==t?void 0:t():n(l),n=e=>e.length,t=(e,l)=>e.includes(l),r=(e,l)=>e.forEach(l),o=e=>0==n(e),u=(e,...l)=>e.push(...l),s=e=>e.pop(),i=e=>e.shift(),d=Object.freeze,a=(e,l)=>{var n;return null!=(n=null==e?void 0:e.has(l))&&n},c=l=>e(l)||0==(e=>{var l;return null!=(l=null==e?void 0:e.size)?l:0})(l),v=(e,l)=>null==e?void 0:e.forEach(l),h=(e,l)=>null==e?void 0:e.delete(l),p=e=>new Map(e),C=(e,l)=>null==e?void 0:e.get(l),f=(l,n,t)=>e(t)?(h(l,n),l):null==l?void 0:l.set(n,t),g=(e,l,n)=>(a(e,l)||f(e,l,n()),C(e,l)),k=(e,t,r,o,u=0)=>l((r?g:C)(e,t[u],u>n(t)-2?r:p),(l=>{if(u>n(t)-2)return(null==o?void 0:o(l))&&f(e,t[u]),l;const s=k(l,t,r,o,u+1);return c(l)&&f(e,t[u]),s})),L=l=>new Set(Array.isArray(l)||e(l)?l:[l]),w=/^\d+$/,S=(S=>{const y=new WeakMap;return S=>(y.has(S)||y.set(S,(S=>{let y,z,E,V=100,A=p(),I=p(),M=1;const b=p(),j=p(),[x,B,F]=(t=>{let o;const[s,d]=(()=>{const e=[];let l=0;return[n=>{var t;return null!=(t=n?i(e):null)?t:""+l++},l=>{w.test(l)&&n(e)<1e3&&u(e,l)}]})(),a=p();return[(e,l,n,t=[],r=(()=>[]))=>{null!=o||(o=_);const u=s(1);var i,d;return f(a,u,[e,l,n,t,r]),d=u,null==(i=k(l,null!=n?n:[""],L))||i.add(d),u},(e,l,...t)=>r(((e,l=[""])=>{const t=[],o=(e,s)=>s==n(l)?u(t,e):null===l[s]?v(e,(e=>o(e,s+1))):r([l[s],null],(l=>o(C(e,l),s+1)));return o(e,0),t})(e,l),(e=>v(e,(e=>C(a,e)[0](o,...null!=l?l:[],...t))))),e=>l(C(a,e),(([,l,n])=>(k(l,null!=n?n:[""],void 0,(l=>(h(l,e),c(l)?1:0))),f(a,e),d(e),n))),t=>l(C(a,t),(([l,,t=[],u,s])=>{const i=(...d)=>{var a,c;const v=n(d);v==n(t)?l(o,...d,...s(d)):e(t[v])?r(null!=(c=null==(a=u[v])?void 0:a.call(u,...d))?c:[],(e=>i(...d,e))):i(...d,t[v])};i()}))]})(),O=p(),T=p(),W=[],$=[],m=(l,n)=>{M=0,S.transaction((()=>{const[t,r]=C(O,n);v(t,((n,t)=>v(n,((n,r)=>v(n,((n,o)=>((l,n,t,r,o)=>e(o)?l.delCell(n,t,r,!0):l.setCell(n,t,r,o))(S,t,r,o,n[l]))))))),v(r,((n,t)=>((l,n,t)=>e(t)?l.delValue(n):l.setValue(n,t))(S,t,n[l])))})),M=1},q=e=>{f(O,e),f(T,e),B(j,[e])},D=(e,l)=>r(((e,l)=>e.splice(0,l))(e,null!=l?l:n(e)),q),G=()=>D(W,n(W)-V),H=()=>l(y,(()=>{u(W,y),G(),D($),y=void 0,E=1})),J=()=>{y=s(W),E=1},K=S.addCellListener(null,null,null,((e,l,n,t,r,o)=>{if(M){H();const e=g(A,l,p),u=g(e,n,p),s=g(u,t,(()=>[o,void 0]));s[1]=r,s[0]===r&&c(f(u,t))&&c(f(e,n))&&c(f(A,l))&&J(),U()}})),N=S.addValueListener(null,((e,l,n,t)=>{if(M){H();const e=g(I,l,(()=>[t,void 0]));e[1]=n,e[0]===n&&c(f(I,l))&&J(),U()}})),P=(l="")=>(e(y)&&(y=""+z++,f(O,y,[A,I]),Y(y,l),A=p(),I=p(),E=1),y),Q=()=>{o(W)||(((e,...l)=>{e.unshift(...l)})($,P()),m(0,y),y=s(W),E=1)},R=()=>{o($)||(u(W,y),y=i($),m(1,y),E=1)},U=()=>{E&&(B(b),E=0)},X=e=>{const l=P(e);return U(),l},Y=(e,l)=>(Z(e)&&C(T,e)!==l&&(f(T,e,l),B(j,[e])),_),Z=e=>a(O,e),_={setSize:e=>(V=e,G(),_),addCheckpoint:X,setCheckpoint:Y,getStore:()=>S,getCheckpointIds:()=>[[...W],y,[...$]],forEachCheckpoint:e=>{return l=e,v(T,((e,n)=>l(n,e)));var l},hasCheckpoint:Z,getCheckpoint:e=>C(T,e),goBackward:()=>(Q(),U(),_),goForward:()=>(R(),U(),_),goTo:l=>{const n=t(W,l)?Q:t($,l)?R:null;for(;!e(n)&&l!=y;)n();return U(),_},addCheckpointIdsListener:e=>x(e,b),addCheckpointListener:(e,l)=>x(l,j,[e]),delListener:e=>(F(e),_),clear:()=>(D(W),D($),e(y)||q(y),y=void 0,z=0,X(),_),destroy:()=>{S.delListener(K),S.delListener(N)},getListenerStats:()=>({})};return d(_.clear())})(S)),y.get(S))})();export{S as createCheckpoints};
|
|
Binary file
|
package/lib/es6/indexes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,n="",l=e(n),t=e=>n+e,r=e=>null==e,s=(e,n,l)=>r(e)?null==l?void 0:l():n(e),o=e=>Array.isArray(e),u=(e,n)=>e.every(n),
|
|
1
|
+
const e=e=>typeof e,n="",l=e(n),t=e=>n+e,r=e=>null==e,s=(e,n,l)=>r(e)?null==l?void 0:l():n(e),o=e=>Array.isArray(e),u=e=>e.length,d=(e,n)=>e.every(n),i=(e,n)=>d(e,((l,t)=>0==t||n(e[t-1],l)<=0)),a=(e,n)=>e.sort(n),c=(e,n)=>e.forEach(n),v=(e,...n)=>e.push(...n),h=Object.freeze,I=(e,n)=>{var l;return null!=(l=null==e?void 0:e.has(n))&&l},f=e=>r(e)||0==(e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0})(e),g=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},L=e=>e.clear(),S=(e,n)=>null==e?void 0:e.forEach(n),w=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),p=e=>{var n;return[...null!=(n=null==e?void 0:e.keys())?n:[]]},y=(e,n)=>null==e?void 0:e.get(n),E=(e,n)=>S(e,((e,l)=>n(l,e))),R=(e,n,l)=>r(l)?(w(e,n),e):null==e?void 0:e.set(n,l),b=(e,n,l)=>(I(e,n)||R(e,n,l()),y(e,n)),T=(e,n,l,t,r=0)=>s((l?b:y)(e,n[r],r>u(n)-2?l:x),(s=>{if(r>u(n)-2)return(null==t?void 0:t(s))&&R(e,n[r]),s;const o=T(s,n,l,t,r+1);return f(s)&&R(e,n[r]),o})),k=e=>new Set(o(e)||r(e)?e:[e]),z=(e,n)=>null==e?void 0:e.add(n),A=(t,r)=>e(t)==l?e=>e(t):null!=t?t:()=>null!=r?r:n,C=(e,n)=>(null!=e?e:0)<(null!=n?n:0)?-1:1,D=/^\d+$/,M=(e=>{const l=new WeakMap;return e=>(l.has(e)||l.set(e,(e=>{const l=x(),M=x(),[j,m,O]=(e=>{let l;const[t,o]=(()=>{const e=[];let l=0;return[t=>{var r;return null!=(r=t?e.shift():null)?r:n+l++},n=>{D.test(n)&&u(e)<1e3&&v(e,n)}]})(),d=x();return[(e,r,s,o=[],u=(()=>[]))=>{null!=l||(l=U);const i=t(1);return R(d,i,[e,r,s,o,u]),z(T(r,null!=s?s:[n],k),i),i},(e,t,...r)=>c(((e,l=[n])=>{const t=[],r=(e,n)=>n==u(l)?v(t,e):null===l[n]?S(e,(e=>r(e,n+1))):c([l[n],null],(l=>r(y(e,l),n+1)));return r(e,0),t})(e,t),(e=>S(e,(e=>y(d,e)[0](l,...null!=t?t:[],...r))))),e=>s(y(d,e),(([,l,t])=>(T(l,null!=t?t:[n],void 0,(n=>(w(n,e),f(n)?1:0))),R(d,e),o(e),t))),e=>s(y(d,e),(([e,,n=[],t,s])=>{const o=(...d)=>{var i,a;const v=u(d);v==u(n)?e(l,...d,...s(d)):r(n[v])?c(null!=(a=null==(i=t[v])?void 0:i.call(t,...d))?a:[],(e=>o(...d,e))):o(...d,n[v])};o()}))]})(),[W,$,q,B,F,G,H,,J,K,N,P]=((e,n,l,t,i)=>{const a=e.hasRow,v=x(),h=x(),T=x(),A=x(),C=x(),D=x(),M=(n,l,...t)=>{const r=b(D,n,k);return c(t,(n=>z(r,n)&&l&&e.callListener(n))),t},j=(n,...l)=>s(y(D,n),(t=>{c(0==u(l)?g(t):l,(n=>{e.delListener(n),w(t,n)})),f(t)&&R(D,n)})),m=(e,l)=>{R(v,e,l),I(h,e)||(R(h,e,n()),R(A,e,x()),R(C,e,x()),i(T))},O=e=>{R(v,e),R(h,e),R(A,e),R(C,e),j(e),i(T)};return[()=>e,()=>p(v),e=>E(h,e),e=>I(h,e),e=>y(v,e),e=>y(h,e),(e,n)=>R(h,e,n),m,(n,t,s,i,v)=>{m(n,t);const h=x(),f=x(),g=y(A,n),w=y(C,n),p=n=>{const s=l=>e.getCell(t,n,l),c=y(g,n),I=a(t,n)?l(i(s,n)):void 0;var L,S;if(c===I||o(c)&&o(I)&&(S=I,u(L=c)===u(S)&&d(L,((e,n)=>S[n]===e)))||R(h,n,[c,I]),!r(v)){const e=y(w,n),l=a(t,n)?v(s,n):void 0;e!=l&&R(f,n,l)}},b=e=>{s((()=>{S(h,(([,e],n)=>R(g,n,e))),S(f,((e,n)=>R(w,n,e)))}),h,f,g,w,e),L(h),L(f)};E(g,p),e.hasTable(t)&&c(e.getRowIds(t),(e=>{I(g,e)||p(e)})),b(!0),j(n),M(n,0,e.addRowListener(t,null,((e,n,l)=>p(l))),e.addTableListener(t,(()=>b())))},O,e=>t(e,T),()=>E(D,O),M,j]})(e,x,(e=>{return r(e)?n:o(e)?(l=t,e.map(l)):t(e);var l}),j,m),Q=(n,l,t)=>{const r=F(n);S(t,((n,t)=>l(t,(l=>S(n,(n=>l(n,(l=>e.forEachCell(r,n,l)))))))))},U={setIndexDefinition:(e,n,t,o,u,d=C)=>{const c=r(u)?void 0:([e],[n])=>u(e,n);return J(e,n,((n,t,u,v,h,g)=>{let L=0;const p=k(),b=k(),T=G(e);if(S(t,(([e,n],l)=>{const t=k(e),u=k(n);S(t,(e=>w(u,e)?w(t,e):0)),S(t,(e=>{z(p,e),s(y(T,e),(n=>{w(n,l),f(n)&&(R(T,e),L=1)}))})),S(u,(e=>{z(p,e),I(T,e)||(R(T,e,k()),L=1),z(y(T,e),l),r(o)||z(b,e)}))})),n(),f(h)||(g?E(T,(e=>z(b,e))):E(u,(e=>s(y(v,e),(e=>z(b,e))))),S(b,(e=>{const n=(n,l)=>d(y(h,n),y(h,l),e),l=[...y(T,e)];i(l,n)||(R(T,e,k(a(l,n))),z(p,e))}))),(L||g)&&!r(c)){const n=[...T];i(n,c)||(H(e,x(a(n,c))),L=1)}L&&m(l,[e]),S(p,(n=>m(M,[e,n])))}),A(t),s(o,A)),U},delIndexDefinition:e=>(K(e),U),getStore:W,getIndexIds:$,forEachIndex:e=>q(((n,l)=>e(n,(e=>Q(n,e,l))))),forEachSlice:(e,n)=>Q(e,n,G(e)),hasIndex:B,hasSlice:(e,n)=>I(G(e),n),getTableId:F,getSliceIds:e=>p(G(e)),getSliceRowIds:(e,n)=>g(y(G(e),n)),addIndexIdsListener:N,addSliceIdsListener:(e,n)=>j(n,l,[e]),addSliceRowIdsListener:(e,n,l)=>j(l,M,[e,n]),delListener:e=>(O(e),U),destroy:P,getListenerStats:()=>({})};return h(U)})(e)),l.get(e))})();export{M as createIndexes};
|
package/lib/es6/indexes.js.gz
CHANGED
|
Binary file
|
package/lib/es6/metrics.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,n="",t=e(n),l=e(e),r=Math.max,i=Math.min,u=isFinite,o=e=>null==e,s=(e,n,t)=>o(e)?null==t?void 0:t():n(e),d=e=>Array.isArray(e),a=()=>{},
|
|
1
|
+
const e=e=>typeof e,n="",t=e(n),l=e(e),r=Math.max,i=Math.min,u=isFinite,o=e=>null==e,s=(e,n,t)=>o(e)?null==t?void 0:t():n(e),d=e=>Array.isArray(e),a=e=>e.length,v=()=>{},c=(e,n)=>e.forEach(n),h=e=>M(e,((e,n)=>e+n),0),M=(e,n,t)=>e.reduce(n,t),f=(e,...n)=>e.push(...n),g=Object.freeze,L=e=>{var n;return null!=(n=null==e?void 0:e.size)?n:0},m=(e,n)=>{var t;return null!=(t=null==e?void 0:e.has(n))&&t},w=e=>o(e)||0==L(e),y=e=>{var n;return[...null!=(n=null==e?void 0:e.values())?n:[]]},p=e=>e.clear(),b=(e,n)=>null==e?void 0:e.forEach(n),I=(e,n)=>null==e?void 0:e.delete(n),x=e=>new Map(e),E=(e,n)=>null==e?void 0:e.get(n),R=(e,n)=>b(e,((e,t)=>n(t,e))),S=(e,n,t)=>o(t)?(I(e,n),e):null==e?void 0:e.set(n,t),T=(e,n,t)=>(m(e,n)||S(e,n,t()),E(e,n)),k=(e,n,t,l,r=0)=>s((t?T:E)(e,n[r],r>a(n)-2?t:x),(i=>{if(r>a(n)-2)return(null==l?void 0:l(i))&&S(e,n[r]),i;const u=k(i,n,t,l,r+1);return w(i)&&S(e,n[r]),u})),z=x([["avg",[(e,n)=>h(e)/n,(e,n,t)=>e+(n-e)/(t+1),(e,n,t)=>e+(e-n)/(t-1),(e,n,t,l)=>e+(n-t)/l]],["max",[e=>r(...e),(e,n)=>r(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:r(n,e)]],["min",[e=>i(...e),(e,n)=>i(n,e),(e,n)=>n==e?void 0:e,(e,n,t)=>t==e?void 0:i(n,e)]],["sum",[e=>h(e),(e,n)=>e+n,(e,n)=>e-n,(e,n,t)=>e-t+n]]]),A=e=>new Set(d(e)||o(e)?e:[e]),D=(e,n)=>null==e?void 0:e.add(n),N=/^\d+$/,j=(r=>{const i=new WeakMap;return r=>(i.has(r)||i.set(r,(r=>{const i=x(),[h,M,j]=(e=>{let t;const[l,r]=(()=>{const e=[];let t=0;return[l=>{var r;return null!=(r=l?e.shift():null)?r:n+t++},n=>{N.test(n)&&a(e)<1e3&&f(e,n)}]})(),i=x();return[(e,r,u,o=[],s=(()=>[]))=>{null!=t||(t=P);const d=l(1);return S(i,d,[e,r,u,o,s]),D(k(r,null!=u?u:[n],A),d),d},(e,l,...r)=>c(((e,t=[n])=>{const l=[],r=(e,n)=>n==a(t)?f(l,e):null===t[n]?b(e,(e=>r(e,n+1))):c([t[n],null],(t=>r(E(e,t),n+1)));return r(e,0),l})(e,l),(e=>b(e,(e=>E(i,e)[0](t,...null!=l?l:[],...r))))),e=>s(E(i,e),(([,t,l])=>(k(t,null!=l?l:[n],void 0,(n=>(I(n,e),w(n)?1:0))),S(i,e),r(e),l))),e=>s(E(i,e),(([e,,n=[],l,r])=>{const i=(...u)=>{var s,d;const v=a(u);v==a(n)?e(t,...u,...r(u)):o(n[v])?c(null!=(d=null==(s=l[v])?void 0:s.call(l,...u))?d:[],(e=>i(...u,e))):i(...u,n[v])};i()}))]})(),[C,F,O,W,$,q,B,,G,H,J,K]=((e,t,l,r,i)=>{const u=e.hasRow,v=x(),h=x(),M=x(),f=x(),g=x(),L=x(),k=(n,t,...l)=>{const r=T(L,n,A);return c(l,(n=>D(r,n)&&t&&e.callListener(n))),l},z=(n,...t)=>s(E(L,n),(l=>{c(0==a(t)?y(l):t,(n=>{e.delListener(n),I(l,n)})),w(l)&&S(L,n)})),N=(e,n)=>{S(v,e,n),m(h,e)||(S(h,e,t()),S(f,e,x()),S(g,e,x()),i(M))},j=e=>{S(v,e),S(h,e),S(f,e),S(g,e),z(e),i(M)};return[()=>e,()=>{return[...null!=(n=null==(e=v)?void 0:e.keys())?n:[]];var e,n},e=>R(h,e),e=>m(h,e),e=>E(v,e),e=>E(h,e),(e,n)=>S(h,e,n),N,(t,l,r,i,s)=>{N(t,l);const v=x(),h=x(),M=E(f,t),L=E(g,t),w=t=>{const r=n=>e.getCell(l,t,n),c=E(M,t),f=u(l,t)?(g=i(r,t),isNaN(g)||o(g)||!0===g||!1===g||g===n?void 0:1*g):void 0;var g,m,w,y;if(c===f||d(c)&&d(f)&&(w=f,a(m=c)===a(w)&&(y=(e,n)=>w[n]===e,m.every(y)))||S(v,t,[c,f]),!o(s)){const e=E(L,t),n=u(l,t)?s(r,t):void 0;e!=n&&S(h,t,n)}},y=e=>{r((()=>{b(v,(([,e],n)=>S(M,n,e))),b(h,((e,n)=>S(L,n,e)))}),v,h,M,L,e),p(v),p(h)};R(M,w),e.hasTable(l)&&c(e.getRowIds(l),(e=>{m(M,e)||w(e)})),y(!0),z(t),k(t,0,e.addRowListener(l,null,((e,n,t)=>w(t))),e.addTableListener(l,(()=>y())))},j,e=>r(e,M),()=>R(L,j),k,z]})(r,v,0,h,M),P={setMetricDefinition:(n,r,s,d,a,v,c)=>{var h;const f=e(s)==l?[s,a,v,c]:null!=(h=E(z,s))?h:E(z,"sum");return G(n,r,((e,t,l,r,s,d)=>{const a=q(n),v=L(r);d||(d=o(a)),e();let c=((e,n,t,l,r,i=!1)=>{if(w(t))return;const[u,s,d,a]=r;return i||(i=o(e)),b(l,(([t,l])=>{i||(e=o(t)?null==s?void 0:s(e,l,n++):o(l)?null==d?void 0:d(e,t,n--):null==a?void 0:a(e,l,t,n),i||(i=o(e)))})),i?u(y(t),L(t)):e})(a,v,r,t,f,d);u(c)||(c=void 0),c!=a&&(B(n,c),M(i,[n],c,a))}),(1,e(g=d)==t?e=>e(g):null!=g?g:()=>1)),P;var g},delMetricDefinition:e=>(H(e),P),getStore:C,getMetricIds:F,forEachMetric:O,hasMetric:W,getTableId:$,getMetric:q,addMetricIdsListener:J,addMetricListener:(e,n)=>h(n,i,[e]),delListener:e=>(j(e),P),destroy:K,getListenerStats:()=>({})};return g(P)})(r)),i.get(r))})();export{j as createMetrics};
|
package/lib/es6/metrics.js.gz
CHANGED
|
Binary file
|