@evolu/common 6.0.1-preview.31 → 6.0.1-preview.32
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/dist/src/Array.d.ts +13 -0
- package/dist/src/Array.d.ts.map +1 -1
- package/dist/src/Array.js +25 -0
- package/dist/src/Evolu/Evolu.d.ts.map +1 -1
- package/dist/src/Evolu/Evolu.js +8 -9
- package/package.json +1 -1
- package/src/Array.ts +30 -0
- package/src/Evolu/Evolu.ts +12 -9
package/dist/src/Array.d.ts
CHANGED
|
@@ -78,4 +78,17 @@ export declare const firstInArray: <T>(array: NonEmptyReadonlyArray<T>) => T;
|
|
|
78
78
|
* Does not mutate the original array.
|
|
79
79
|
*/
|
|
80
80
|
export declare const lastInArray: <T>(array: NonEmptyReadonlyArray<T>) => T;
|
|
81
|
+
/**
|
|
82
|
+
* Returns a new readonly array with duplicate items removed based on a key
|
|
83
|
+
* extractor function. Preserves the first occurrence of each distinct key.
|
|
84
|
+
*
|
|
85
|
+
* Accepts both mutable and readonly arrays. Does not mutate the original array.
|
|
86
|
+
*/
|
|
87
|
+
/**
|
|
88
|
+
* Deduplicates items in an array. If `by` is provided, it will be used to
|
|
89
|
+
* derive the key for uniqueness; otherwise values are used directly.
|
|
90
|
+
*
|
|
91
|
+
* Returns a new readonly array and does not mutate the input.
|
|
92
|
+
*/
|
|
93
|
+
export declare const dedupeArray: <T>(array: ReadonlyArray<T>, by?: (item: T) => unknown) => ReadonlyArray<T>;
|
|
81
94
|
//# sourceMappingURL=Array.d.ts.map
|
package/dist/src/Array.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../src/Array.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,0CAA0C;AAC1C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhD,uCAAuC;AACvC,eAAO,MAAM,eAAe,GAAI,CAAC,EAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KACd,KAAK,IAAI,aAAa,CAAC,CAAC,CAAqB,CAAC;AAEjD,kDAAkD;AAClD,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzE,uCAAuC;AACvC,eAAO,MAAM,uBAAuB,GAAI,CAAC,EACvC,OAAO,aAAa,CAAC,CAAC,CAAC,KACtB,KAAK,IAAI,qBAAqB,CAAC,CAAC,CAAqB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,MAAM,CAAC,EACP,OAAO,aAAa,CAAC,CAAC,CAAC,KACtB,qBAAqB,CAAC,CAAC,CACwC,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAC9B,MAAM,CAAC,EACP,OAAO,aAAa,CAAC,CAAC,CAAC,KACtB,qBAAqB,CAAC,CAAC,CAAiD,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAClD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GACpC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAClC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GACpC,aAAa,CAAC,CAAC,CAAC,CAAC;AAQpB;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAC3B,OAAO,aAAa,CAAC,CAAC,CAAC,EACvB,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,KAC7C,aAAa,CAAC,CAAC,CAAgD,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,OAAO,aAAa,CAAC,CAAC,CAAC,KAAG,CAAuB,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAG,CAAa,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAG,CACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../src/Array.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,0CAA0C;AAC1C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhD,uCAAuC;AACvC,eAAO,MAAM,eAAe,GAAI,CAAC,EAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KACd,KAAK,IAAI,aAAa,CAAC,CAAC,CAAqB,CAAC;AAEjD,kDAAkD;AAClD,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzE,uCAAuC;AACvC,eAAO,MAAM,uBAAuB,GAAI,CAAC,EACvC,OAAO,aAAa,CAAC,CAAC,CAAC,KACtB,KAAK,IAAI,qBAAqB,CAAC,CAAC,CAAqB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,MAAM,CAAC,EACP,OAAO,aAAa,CAAC,CAAC,CAAC,KACtB,qBAAqB,CAAC,CAAC,CACwC,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAC9B,MAAM,CAAC,EACP,OAAO,aAAa,CAAC,CAAC,CAAC,KACtB,qBAAqB,CAAC,CAAC,CAAiD,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAClD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GACpC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC5B,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAClC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GACpC,aAAa,CAAC,CAAC,CAAC,CAAC;AAQpB;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAC3B,OAAO,aAAa,CAAC,CAAC,CAAC,EACvB,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,KAC7C,aAAa,CAAC,CAAC,CAAgD,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,OAAO,aAAa,CAAC,CAAC,CAAC,KAAG,CAAuB,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAG,CAAa,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAG,CACxC,CAAC;AAE1B;;;;;GAKG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAC3B,OAAO,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,KACxB,aAAa,CAAC,CAAC,CAYjB,CAAC"}
|
package/dist/src/Array.js
CHANGED
|
@@ -69,3 +69,28 @@ export const firstInArray = (array) => array[0];
|
|
|
69
69
|
* Does not mutate the original array.
|
|
70
70
|
*/
|
|
71
71
|
export const lastInArray = (array) => array[array.length - 1];
|
|
72
|
+
/**
|
|
73
|
+
* Returns a new readonly array with duplicate items removed based on a key
|
|
74
|
+
* extractor function. Preserves the first occurrence of each distinct key.
|
|
75
|
+
*
|
|
76
|
+
* Accepts both mutable and readonly arrays. Does not mutate the original array.
|
|
77
|
+
*/
|
|
78
|
+
/**
|
|
79
|
+
* Deduplicates items in an array. If `by` is provided, it will be used to
|
|
80
|
+
* derive the key for uniqueness; otherwise values are used directly.
|
|
81
|
+
*
|
|
82
|
+
* Returns a new readonly array and does not mutate the input.
|
|
83
|
+
*/
|
|
84
|
+
export const dedupeArray = (array, by) => {
|
|
85
|
+
if (by == null) {
|
|
86
|
+
return Array.from(new Set(array));
|
|
87
|
+
}
|
|
88
|
+
const seen = new Set();
|
|
89
|
+
return array.filter((item) => {
|
|
90
|
+
const key = by(item);
|
|
91
|
+
if (seen.has(key))
|
|
92
|
+
return false;
|
|
93
|
+
seen.add(key);
|
|
94
|
+
return true;
|
|
95
|
+
});
|
|
96
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Evolu.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Evolu.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Evolu/Evolu.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { pack } from "msgpackr";
|
|
2
|
-
import { isNonEmptyArray, isNonEmptyReadonlyArray } from "../Array.js";
|
|
3
|
-
import { assert,
|
|
2
|
+
import { dedupeArray, isNonEmptyArray, isNonEmptyReadonlyArray, } from "../Array.js";
|
|
3
|
+
import { assert, assertNonEmptyReadonlyArray } from "../Assert.js";
|
|
4
4
|
import { createCallbacks } from "../Callbacks.js";
|
|
5
5
|
import { eqArrayNumber } from "../Eq.js";
|
|
6
6
|
import { exhaustiveCheck } from "../Function.js";
|
|
@@ -133,10 +133,10 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
133
133
|
return;
|
|
134
134
|
const loadingPromisesQueries = loadingPromises.getQueries();
|
|
135
135
|
loadingPromises.releaseUnsubscribedOnMutation();
|
|
136
|
-
const queries = [
|
|
137
|
-
|
|
138
|
-
...
|
|
139
|
-
];
|
|
136
|
+
const queries = dedupeArray([
|
|
137
|
+
...loadingPromisesQueries,
|
|
138
|
+
...subscribedQueries.get(),
|
|
139
|
+
]);
|
|
140
140
|
if (isNonEmptyReadonlyArray(queries)) {
|
|
141
141
|
dbWorker.postMessage({ type: "query", tabId: getTabId(), queries });
|
|
142
142
|
}
|
|
@@ -251,10 +251,9 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
251
251
|
loadQueryMicrotaskQueue.push(query);
|
|
252
252
|
if (loadQueryMicrotaskQueue.length === 1) {
|
|
253
253
|
queueMicrotask(() => {
|
|
254
|
-
|
|
255
|
-
const queries = [...new Set(loadQueryMicrotaskQueue)];
|
|
254
|
+
const queries = dedupeArray(loadQueryMicrotaskQueue);
|
|
256
255
|
loadQueryMicrotaskQueue.length = 0;
|
|
257
|
-
|
|
256
|
+
assertNonEmptyReadonlyArray(queries);
|
|
258
257
|
deps.console.log("[evolu]", "loadQuery", { queries });
|
|
259
258
|
dbWorker.postMessage({
|
|
260
259
|
type: "query",
|
package/package.json
CHANGED
package/src/Array.ts
CHANGED
|
@@ -116,3 +116,33 @@ export const firstInArray = <T>(array: NonEmptyReadonlyArray<T>): T => array[0];
|
|
|
116
116
|
*/
|
|
117
117
|
export const lastInArray = <T>(array: NonEmptyReadonlyArray<T>): T =>
|
|
118
118
|
array[array.length - 1];
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Returns a new readonly array with duplicate items removed based on a key
|
|
122
|
+
* extractor function. Preserves the first occurrence of each distinct key.
|
|
123
|
+
*
|
|
124
|
+
* Accepts both mutable and readonly arrays. Does not mutate the original array.
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Deduplicates items in an array. If `by` is provided, it will be used to
|
|
129
|
+
* derive the key for uniqueness; otherwise values are used directly.
|
|
130
|
+
*
|
|
131
|
+
* Returns a new readonly array and does not mutate the input.
|
|
132
|
+
*/
|
|
133
|
+
export const dedupeArray = <T>(
|
|
134
|
+
array: ReadonlyArray<T>,
|
|
135
|
+
by?: (item: T) => unknown,
|
|
136
|
+
): ReadonlyArray<T> => {
|
|
137
|
+
if (by == null) {
|
|
138
|
+
return Array.from(new Set(array)) as ReadonlyArray<T>;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const seen = new Set<unknown>();
|
|
142
|
+
return array.filter((item) => {
|
|
143
|
+
const key = by(item);
|
|
144
|
+
if (seen.has(key)) return false;
|
|
145
|
+
seen.add(key);
|
|
146
|
+
return true;
|
|
147
|
+
}) as ReadonlyArray<T>;
|
|
148
|
+
};
|
package/src/Evolu/Evolu.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { pack } from "msgpackr";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
dedupeArray,
|
|
4
|
+
isNonEmptyArray,
|
|
5
|
+
isNonEmptyReadonlyArray,
|
|
6
|
+
} from "../Array.js";
|
|
7
|
+
import { assert, assertNonEmptyReadonlyArray } from "../Assert.js";
|
|
4
8
|
import { createCallbacks } from "../Callbacks.js";
|
|
5
9
|
import { ConsoleDep } from "../Console.js";
|
|
6
10
|
import { RandomBytesDep, SymmetricCryptoDecryptError } from "../Crypto.js";
|
|
@@ -611,10 +615,10 @@ const createEvoluInstance =
|
|
|
611
615
|
const loadingPromisesQueries = loadingPromises.getQueries();
|
|
612
616
|
loadingPromises.releaseUnsubscribedOnMutation();
|
|
613
617
|
|
|
614
|
-
const queries = [
|
|
615
|
-
|
|
616
|
-
...
|
|
617
|
-
];
|
|
618
|
+
const queries = dedupeArray([
|
|
619
|
+
...loadingPromisesQueries,
|
|
620
|
+
...subscribedQueries.get(),
|
|
621
|
+
]);
|
|
618
622
|
|
|
619
623
|
if (isNonEmptyReadonlyArray(queries)) {
|
|
620
624
|
dbWorker.postMessage({ type: "query", tabId: getTabId(), queries });
|
|
@@ -790,10 +794,9 @@ const createEvoluInstance =
|
|
|
790
794
|
loadQueryMicrotaskQueue.push(query);
|
|
791
795
|
if (loadQueryMicrotaskQueue.length === 1) {
|
|
792
796
|
queueMicrotask(() => {
|
|
793
|
-
|
|
794
|
-
const queries = [...new Set(loadQueryMicrotaskQueue)];
|
|
797
|
+
const queries = dedupeArray(loadQueryMicrotaskQueue);
|
|
795
798
|
loadQueryMicrotaskQueue.length = 0;
|
|
796
|
-
|
|
799
|
+
assertNonEmptyReadonlyArray(queries);
|
|
797
800
|
deps.console.log("[evolu]", "loadQuery", { queries });
|
|
798
801
|
dbWorker.postMessage({
|
|
799
802
|
type: "query",
|