@evolu/common 6.0.1-preview.29 → 6.0.1-preview.30
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/Buffer.js +7 -6
- package/dist/src/Callbacks.d.ts +53 -0
- package/dist/src/Callbacks.d.ts.map +1 -0
- package/dist/src/Callbacks.js +25 -0
- package/dist/src/Crypto.js +3 -3
- package/dist/src/Evolu/Db.d.ts +1 -1
- package/dist/src/Evolu/Db.d.ts.map +1 -1
- package/dist/src/Evolu/Evolu.d.ts.map +1 -1
- package/dist/src/Evolu/Evolu.js +12 -12
- package/dist/src/Evolu/Owner.d.ts +1 -1
- package/dist/src/Evolu/Owner.d.ts.map +1 -1
- package/dist/src/Evolu/Owner.js +2 -2
- package/dist/src/Evolu/Protocol.d.ts +12 -12
- package/dist/src/Evolu/Protocol.d.ts.map +1 -1
- package/dist/src/Evolu/Protocol.js +30 -27
- package/dist/src/Evolu/Relay.d.ts +4 -3
- package/dist/src/Evolu/Relay.d.ts.map +1 -1
- package/dist/src/Evolu/Relay.js +6 -8
- package/dist/src/Evolu/Storage.d.ts +7 -8
- package/dist/src/Evolu/Storage.d.ts.map +1 -1
- package/dist/src/Evolu/Storage.js +5 -5
- package/dist/src/Evolu/Sync.d.ts.map +1 -1
- package/dist/src/Evolu/Sync.js +4 -3
- package/dist/src/Evolu/Timestamp.d.ts +1 -0
- package/dist/src/Evolu/Timestamp.d.ts.map +1 -1
- package/dist/src/Evolu/Timestamp.js +1 -0
- package/dist/src/Instances.d.ts +1 -1
- package/dist/src/Instances.d.ts.map +1 -1
- package/dist/src/Instances.js +1 -1
- package/dist/src/Number.d.ts +2 -2
- package/dist/src/Number.d.ts.map +1 -1
- package/dist/src/Number.js +5 -4
- package/dist/src/{RefCountedResourceManager.d.ts → Resources.d.ts} +14 -15
- package/dist/src/Resources.d.ts.map +1 -0
- package/dist/src/{RefCountedResourceManager.js → Resources.js} +24 -24
- package/dist/src/Result.d.ts +1 -1
- package/dist/src/Skiplist.js +2 -1
- package/dist/src/Task.js +3 -3
- package/dist/src/Time.js +2 -2
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/package.json +1 -1
- package/src/Buffer.ts +6 -6
- package/src/{CallbackRegistry.ts → Callbacks.ts} +28 -29
- package/src/Crypto.ts +3 -3
- package/src/Evolu/Db.ts +1 -1
- package/src/Evolu/Evolu.ts +12 -16
- package/src/Evolu/Owner.ts +1 -1
- package/src/Evolu/Protocol.ts +32 -26
- package/src/Evolu/Relay.ts +13 -14
- package/src/Evolu/Storage.ts +10 -11
- package/src/Evolu/Sync.ts +4 -3
- package/src/Evolu/Timestamp.ts +1 -0
- package/src/Instances.ts +1 -1
- package/src/Number.ts +4 -4
- package/src/{RefCountedResourceManager.ts → Resources.ts} +29 -30
- package/src/Result.ts +1 -1
- package/src/Skiplist.ts +1 -1
- package/src/Task.ts +2 -2
- package/src/Time.ts +1 -1
- package/src/index.ts +2 -1
- package/dist/src/CallbackRegistry.d.ts +0 -53
- package/dist/src/CallbackRegistry.d.ts.map +0 -1
- package/dist/src/CallbackRegistry.js +0 -25
- package/dist/src/RefCountedResourceManager.d.ts.map +0 -1
package/dist/src/Buffer.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { NonNegativeInt } from "./Type.js";
|
|
1
2
|
export { bytesToHex, bytesToUtf8, concatBytes, hexToBytes, utf8ToBytes, } from "@noble/ciphers/utils.js";
|
|
2
3
|
/**
|
|
3
4
|
* Custom error for {@link Buffer}-related failures like premature end of data.
|
|
@@ -14,9 +15,9 @@ export const createBuffer = (arrayLike) => {
|
|
|
14
15
|
let value = arrayLike
|
|
15
16
|
? new globalThis.Uint8Array(arrayLike)
|
|
16
17
|
: new globalThis.Uint8Array(512);
|
|
17
|
-
let length = (arrayLike ? arrayLike.length : 0);
|
|
18
|
+
let length = NonNegativeInt.orThrow(arrayLike ? arrayLike.length : 0);
|
|
18
19
|
const buffer = {
|
|
19
|
-
getCapacity: () => value.length,
|
|
20
|
+
getCapacity: () => NonNegativeInt.orThrow(value.length),
|
|
20
21
|
getLength: () => length,
|
|
21
22
|
extend: (arg) => {
|
|
22
23
|
const targetSize = length + arg.length;
|
|
@@ -27,7 +28,7 @@ export const createBuffer = (arrayLike) => {
|
|
|
27
28
|
value.set(oldValue);
|
|
28
29
|
}
|
|
29
30
|
value.set(arg, length);
|
|
30
|
-
length = (length + arg.length);
|
|
31
|
+
length = NonNegativeInt.orThrow(length + arg.length);
|
|
31
32
|
},
|
|
32
33
|
shift: () => {
|
|
33
34
|
if (length === 0) {
|
|
@@ -36,7 +37,7 @@ export const createBuffer = (arrayLike) => {
|
|
|
36
37
|
const first = value[0];
|
|
37
38
|
value = value.subarray(1);
|
|
38
39
|
length--;
|
|
39
|
-
return first;
|
|
40
|
+
return NonNegativeInt.orThrow(first);
|
|
40
41
|
},
|
|
41
42
|
shiftN: (n) => {
|
|
42
43
|
if (length < n) {
|
|
@@ -44,7 +45,7 @@ export const createBuffer = (arrayLike) => {
|
|
|
44
45
|
}
|
|
45
46
|
const subarray = value.subarray(0, n);
|
|
46
47
|
value = value.subarray(n);
|
|
47
|
-
length = (length - n);
|
|
48
|
+
length = NonNegativeInt.orThrow(length - n);
|
|
48
49
|
return subarray;
|
|
49
50
|
},
|
|
50
51
|
truncate: (newLength) => {
|
|
@@ -54,7 +55,7 @@ export const createBuffer = (arrayLike) => {
|
|
|
54
55
|
length = newLength;
|
|
55
56
|
},
|
|
56
57
|
reset: () => {
|
|
57
|
-
length = 0;
|
|
58
|
+
length = NonNegativeInt.orThrow(0);
|
|
58
59
|
},
|
|
59
60
|
unwrap: () => value.subarray(0, length),
|
|
60
61
|
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Brand } from "./Brand.js";
|
|
2
|
+
import { RandomBytesDep } from "./Crypto.js";
|
|
3
|
+
import { Id } from "./Type.js";
|
|
4
|
+
/**
|
|
5
|
+
* Request-response correlation for callbacks across boundaries.
|
|
6
|
+
*
|
|
7
|
+
* Stores callbacks with unique IDs and executes them once with an optional
|
|
8
|
+
* argument. Executed callbacks are automatically removed.
|
|
9
|
+
*
|
|
10
|
+
* This is useful for correlating asynchronous request-response operations
|
|
11
|
+
* across boundaries where callback functions cannot be passed directly (e.g.,
|
|
12
|
+
* web workers, message queues).
|
|
13
|
+
*
|
|
14
|
+
* The `execute` method intentionally does not use try-catch or {@link Result}
|
|
15
|
+
* because it's the callback's responsibility to handle its own errors.
|
|
16
|
+
*
|
|
17
|
+
* ### Example
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* // No-argument callbacks
|
|
21
|
+
* const callbacks = createCallbacks(deps);
|
|
22
|
+
* const id = callbacks.register(() => console.log("called"));
|
|
23
|
+
* callbacks.execute(id);
|
|
24
|
+
*
|
|
25
|
+
* // With argument callbacks
|
|
26
|
+
* const stringCallbacks = createCallbacks<string>(deps);
|
|
27
|
+
* const id = stringCallbacks.register((value) => {
|
|
28
|
+
* console.log(value);
|
|
29
|
+
* });
|
|
30
|
+
* stringCallbacks.execute(id, "hello");
|
|
31
|
+
*
|
|
32
|
+
* // Promise.withResolvers pattern
|
|
33
|
+
* const promiseCallbacks = createCallbacks<string>(deps);
|
|
34
|
+
* const { promise, resolve } = Promise.withResolvers<string>();
|
|
35
|
+
* const id = promiseCallbacks.register(resolve);
|
|
36
|
+
* promiseCallbacks.execute(id, "resolved value");
|
|
37
|
+
* await promise; // "resolved value"
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @template T - The type of argument passed to callbacks (defaults to undefined
|
|
41
|
+
* for no-argument callbacks)
|
|
42
|
+
*/
|
|
43
|
+
export interface Callbacks<T = undefined> {
|
|
44
|
+
/** Registers a callback function and returns a unique ID. */
|
|
45
|
+
readonly register: (callback: (arg: T) => void) => CallbackId;
|
|
46
|
+
/** Executes and removes a callback associated with the given ID. */
|
|
47
|
+
readonly execute: T extends undefined ? (id: CallbackId) => undefined : (id: CallbackId, arg: T) => undefined;
|
|
48
|
+
}
|
|
49
|
+
/** Unique identifier for a callback in {@link Callbacks}. */
|
|
50
|
+
export type CallbackId = Id & Brand<"Callback">;
|
|
51
|
+
/** Creates a new {@link Callbacks}. */
|
|
52
|
+
export declare const createCallbacks: <T = undefined>(deps: RandomBytesDep) => Callbacks<T>;
|
|
53
|
+
//# sourceMappingURL=Callbacks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Callbacks.d.ts","sourceRoot":"","sources":["../../src/Callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAY,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,SAAS;IACtC,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,KAAK,UAAU,CAAC;IAE9D,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,SAAS,GACjC,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,GAC7B,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;CAC3C;AAED,6DAA6D;AAC7D,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AAEhD,uCAAuC;AACvC,eAAO,MAAM,eAAe,GAAI,CAAC,GAAG,SAAS,EAC3C,MAAM,cAAc,KACnB,SAAS,CAAC,CAAC,CAsBb,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createId } from "./Type.js";
|
|
2
|
+
/** Creates a new {@link Callbacks}. */
|
|
3
|
+
export const createCallbacks = (deps) => {
|
|
4
|
+
const callbackMap = new Map();
|
|
5
|
+
return {
|
|
6
|
+
register: (callback) => {
|
|
7
|
+
const id = createId(deps);
|
|
8
|
+
callbackMap.set(id, callback);
|
|
9
|
+
return id;
|
|
10
|
+
},
|
|
11
|
+
execute: (id, ...args) => {
|
|
12
|
+
const callback = callbackMap.get(id);
|
|
13
|
+
if (!callback)
|
|
14
|
+
return;
|
|
15
|
+
callbackMap.delete(id);
|
|
16
|
+
if (args.length === 0) {
|
|
17
|
+
// Called without argument (undefined case)
|
|
18
|
+
callback();
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
callback(args[0]);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
};
|
package/dist/src/Crypto.js
CHANGED
|
@@ -73,17 +73,17 @@ export const createSymmetricCrypto = (deps) => {
|
|
|
73
73
|
*/
|
|
74
74
|
export const padmePaddedLength = (length) => {
|
|
75
75
|
if (length <= 0)
|
|
76
|
-
return 0;
|
|
76
|
+
return NonNegativeInt.orThrow(0);
|
|
77
77
|
const e = 31 - Math.clz32(length >>> 0);
|
|
78
78
|
const s = 32 - Math.clz32(e >>> 0);
|
|
79
79
|
const z = Math.max(0, e - s);
|
|
80
80
|
const mask = (1 << z) - 1;
|
|
81
|
-
return ((length + mask) & ~mask);
|
|
81
|
+
return NonNegativeInt.orThrow((length + mask) & ~mask);
|
|
82
82
|
};
|
|
83
83
|
/**
|
|
84
84
|
* Returns the PADMÉ padding length for a given input length. Uses
|
|
85
85
|
* {@link padmePaddedLength}.
|
|
86
86
|
*/
|
|
87
87
|
export const padmePaddingLength = (length) => {
|
|
88
|
-
return (padmePaddedLength(length) - length);
|
|
88
|
+
return NonNegativeInt.orThrow(padmePaddedLength(length) - length);
|
|
89
89
|
};
|
package/dist/src/Evolu/Db.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NonEmptyReadonlyArray } from "../Array.js";
|
|
2
|
-
import { CallbackId } from "../
|
|
2
|
+
import { CallbackId } from "../Callbacks.js";
|
|
3
3
|
import { ConsoleConfig, ConsoleDep } from "../Console.js";
|
|
4
4
|
import { EncryptionKey, RandomBytesDep, SymmetricCryptoDecryptError } from "../Crypto.js";
|
|
5
5
|
import { TransferableError } from "../Error.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Db.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Evolu.ts"],"names":[],"mappings":"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
|
|
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,7 +1,7 @@
|
|
|
1
1
|
import { pack } from "msgpackr";
|
|
2
2
|
import { isNonEmptyArray, isNonEmptyReadonlyArray } from "../Array.js";
|
|
3
3
|
import { assert, assertNonEmptyArray } from "../Assert.js";
|
|
4
|
-
import {
|
|
4
|
+
import { createCallbacks } from "../Callbacks.js";
|
|
5
5
|
import { eqArrayNumber } from "../Eq.js";
|
|
6
6
|
import { exhaustiveCheck } from "../Function.js";
|
|
7
7
|
import { createInstances } from "../Instances.js";
|
|
@@ -82,8 +82,8 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
82
82
|
const _syncStore = createStore(initialSyncState);
|
|
83
83
|
const subscribedQueries = createSubscribedQueries(rowsStore);
|
|
84
84
|
const loadingPromises = createLoadingPromises(subscribedQueries);
|
|
85
|
-
const
|
|
86
|
-
const
|
|
85
|
+
const onCompleteCallbacks = createCallbacks(deps);
|
|
86
|
+
const exportCallbacks = createCallbacks(deps);
|
|
87
87
|
const dbWorker = deps.createDbWorker(dbConfig.name);
|
|
88
88
|
const getTabId = () => {
|
|
89
89
|
tabId ??= createId(deps);
|
|
@@ -124,7 +124,7 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
124
124
|
rowsStore.set(nextState);
|
|
125
125
|
}
|
|
126
126
|
for (const id of message.onCompleteIds) {
|
|
127
|
-
|
|
127
|
+
onCompleteCallbacks.execute(id);
|
|
128
128
|
}
|
|
129
129
|
break;
|
|
130
130
|
}
|
|
@@ -147,12 +147,12 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
147
147
|
deps.reloadApp(reloadUrl);
|
|
148
148
|
}
|
|
149
149
|
else {
|
|
150
|
-
|
|
150
|
+
onCompleteCallbacks.execute(message.onCompleteId);
|
|
151
151
|
}
|
|
152
152
|
break;
|
|
153
153
|
}
|
|
154
154
|
case "onExport": {
|
|
155
|
-
|
|
155
|
+
exportCallbacks.execute(message.onCompleteId, message.file);
|
|
156
156
|
break;
|
|
157
157
|
}
|
|
158
158
|
default:
|
|
@@ -215,12 +215,12 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
215
215
|
};
|
|
216
216
|
const processMutationQueue = () => {
|
|
217
217
|
const changes = [];
|
|
218
|
-
const
|
|
218
|
+
const onCompletes = [];
|
|
219
219
|
for (const [change, onComplete] of mutateMicrotaskQueue) {
|
|
220
220
|
if (change !== null)
|
|
221
221
|
changes.push(change);
|
|
222
222
|
if (onComplete)
|
|
223
|
-
|
|
223
|
+
onCompletes.push(onComplete);
|
|
224
224
|
}
|
|
225
225
|
const queueLength = mutateMicrotaskQueue.length;
|
|
226
226
|
mutateMicrotaskQueue.length = 0;
|
|
@@ -229,7 +229,7 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
229
229
|
if (changes.length !== queueLength) {
|
|
230
230
|
return;
|
|
231
231
|
}
|
|
232
|
-
const onCompleteIds =
|
|
232
|
+
const onCompleteIds = onCompletes.map(onCompleteCallbacks.register);
|
|
233
233
|
loadingPromises.releaseUnsubscribedOnMutation();
|
|
234
234
|
if (!isNonEmptyArray(changes))
|
|
235
235
|
return;
|
|
@@ -292,7 +292,7 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
292
292
|
upsert: createMutation("upsert"),
|
|
293
293
|
resetAppOwner: (options) => {
|
|
294
294
|
const { promise, resolve } = Promise.withResolvers();
|
|
295
|
-
const onCompleteId =
|
|
295
|
+
const onCompleteId = onCompleteCallbacks.register(resolve);
|
|
296
296
|
dbWorker.postMessage({
|
|
297
297
|
type: "reset",
|
|
298
298
|
onCompleteId,
|
|
@@ -302,7 +302,7 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
302
302
|
},
|
|
303
303
|
restoreAppOwner: (mnemonic, options) => {
|
|
304
304
|
const { promise, resolve } = Promise.withResolvers();
|
|
305
|
-
const onCompleteId =
|
|
305
|
+
const onCompleteId = onCompleteCallbacks.register(resolve);
|
|
306
306
|
dbWorker.postMessage({
|
|
307
307
|
type: "reset",
|
|
308
308
|
onCompleteId,
|
|
@@ -321,7 +321,7 @@ const createEvoluInstance = (deps) => (schema, config) => {
|
|
|
321
321
|
},
|
|
322
322
|
exportDatabase: () => {
|
|
323
323
|
const { promise, resolve } = Promise.withResolvers();
|
|
324
|
-
const onCompleteId =
|
|
324
|
+
const onCompleteId = exportCallbacks.register(resolve);
|
|
325
325
|
dbWorker.postMessage({ type: "export", onCompleteId });
|
|
326
326
|
return promise;
|
|
327
327
|
},
|
|
@@ -47,7 +47,7 @@ export declare const OwnerIdBytes: import("../Type.js").BrandType<import("../Typ
|
|
|
47
47
|
export type OwnerIdBytes = typeof OwnerIdBytes.Type;
|
|
48
48
|
export declare const ownerIdToOwnerIdBytes: (ownerId: OwnerId) => OwnerIdBytes;
|
|
49
49
|
export declare const ownerIdBytesToOwnerId: (ownerIdBytes: OwnerIdBytes) => OwnerId;
|
|
50
|
-
export declare const ownerWriteKeyLength:
|
|
50
|
+
export declare const ownerWriteKeyLength: number & import("../Brand.js").Brand<"Int"> & import("../Brand.js").Brand<"NonNegative">;
|
|
51
51
|
export declare const OwnerEncryptionKey: import("../Type.js").BrandType<import("../Type.js").BrandType<import("../Type.js").BrandType<import("../Type.js").Type<"Brand", Uint8Array<ArrayBufferLike> & import("../Brand.js").Brand<"Entropy">, Uint8Array<ArrayBufferLike>, import("../Type.js").BrandWithoutRefineError<"Entropy", import("../Type.js").Uint8ArrayError>, Uint8Array<ArrayBufferLike>, never>, "Length32", import("../Type.js").LengthError<32>, import("../Type.js").BrandWithoutRefineError<"Entropy", import("../Type.js").Uint8ArrayError>>, "EncryptionKey", import("../Type.js").BrandWithoutRefineError<"EncryptionKey", import("../Type.js").BrandWithoutRefineError<"Entropy", import("../Type.js").Uint8ArrayError> | import("../Type.js").LengthError<32>>, never>, "OwnerEncryptionKey", import("../Type.js").BrandWithoutRefineError<"OwnerEncryptionKey", import("../Type.js").BrandWithoutRefineError<"EncryptionKey", import("../Type.js").BrandWithoutRefineError<"Entropy", import("../Type.js").Uint8ArrayError> | import("../Type.js").LengthError<32>>>, never>;
|
|
52
52
|
export type OwnerEncryptionKey = typeof OwnerEncryptionKey.Type;
|
|
53
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Owner.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Owner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAEL,aAAa,EAGb,cAAc,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAML,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,mZAAuB,CAAC;AAC5C,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAE1C,+CAA+C;AAC/C,eAAO,MAAM,YAAY,uvBAAiC,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AAEpD,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,KAAG,YACnB,CAAC;AAEvC,eAAO,MAAM,qBAAqB,GAAI,cAAc,YAAY,KAAG,OAClB,CAAC;AAElD,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"Owner.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Owner.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Evolu/Owner.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as bip39 from "@scure/bip39";
|
|
|
2
2
|
import { wordlist } from "@scure/bip39/wordlists/english.js";
|
|
3
3
|
import { createSlip21, EncryptionKey, Entropy16, Entropy32, } from "../Crypto.js";
|
|
4
4
|
import { getOrNull } from "../Result.js";
|
|
5
|
-
import { brand, Id, IdBytes, idBytesToId, idToIdBytes, } from "../Type.js";
|
|
5
|
+
import { brand, Id, IdBytes, idBytesToId, idToIdBytes, NonNegativeInt, } from "../Type.js";
|
|
6
6
|
/**
|
|
7
7
|
* OwnerId is a branded {@link Id} that uniquely identifies an {@link Owner}.
|
|
8
8
|
* Branded from {@link Id} to leverage existing helpers like {@link idToIdBytes}.
|
|
@@ -12,7 +12,7 @@ export const OwnerId = brand("OwnerId", Id);
|
|
|
12
12
|
export const OwnerIdBytes = brand("OwnerIdBytes", IdBytes);
|
|
13
13
|
export const ownerIdToOwnerIdBytes = (ownerId) => idToIdBytes(ownerId);
|
|
14
14
|
export const ownerIdBytesToOwnerId = (ownerIdBytes) => idBytesToId(ownerIdBytes);
|
|
15
|
-
export const ownerWriteKeyLength = 16;
|
|
15
|
+
export const ownerWriteKeyLength = NonNegativeInt.orThrow(16);
|
|
16
16
|
export const OwnerEncryptionKey = brand("OwnerEncryptionKey", EncryptionKey);
|
|
17
17
|
/**
|
|
18
18
|
* A secure token for write operations. It's derived from {@link OwnerSecret} by
|
|
@@ -217,7 +217,7 @@ export declare const defaultProtocolMessageRangesMaxSize: ProtocolMessageRangesM
|
|
|
217
217
|
/** Evolu Protocol Message. */
|
|
218
218
|
export type ProtocolMessage = Uint8Array & Brand<"ProtocolMessage">;
|
|
219
219
|
/** Evolu Protocol version. */
|
|
220
|
-
export declare const protocolVersion:
|
|
220
|
+
export declare const protocolVersion: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
221
221
|
export declare const MessageType: {
|
|
222
222
|
/** Request message from initiator (client) to non-initiator (relay). */
|
|
223
223
|
readonly Request: 0;
|
|
@@ -443,17 +443,17 @@ export declare const decodeString: (buffer: Buffer) => string;
|
|
|
443
443
|
export declare const encodeNodeId: (buffer: Buffer, nodeId: NodeId) => void;
|
|
444
444
|
export declare const decodeNodeId: (buffer: Buffer) => NodeId;
|
|
445
445
|
export declare const ProtocolValueType: {
|
|
446
|
-
readonly String:
|
|
447
|
-
readonly Number:
|
|
448
|
-
readonly Null:
|
|
449
|
-
readonly Bytes:
|
|
450
|
-
readonly NonNegativeInt:
|
|
451
|
-
readonly EmptyString:
|
|
452
|
-
readonly Base64Url:
|
|
453
|
-
readonly Id:
|
|
454
|
-
readonly Json:
|
|
455
|
-
readonly DateIsoWithNonNegativeTime:
|
|
456
|
-
readonly DateIsoWithNegativeTime:
|
|
446
|
+
readonly String: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
447
|
+
readonly Number: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
448
|
+
readonly Null: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
449
|
+
readonly Bytes: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
450
|
+
readonly NonNegativeInt: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
451
|
+
readonly EmptyString: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
452
|
+
readonly Base64Url: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
453
|
+
readonly Id: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
454
|
+
readonly Json: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
455
|
+
readonly DateIsoWithNonNegativeTime: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
456
|
+
readonly DateIsoWithNegativeTime: number & Brand<"Int"> & Brand<"NonNegative">;
|
|
457
457
|
};
|
|
458
458
|
export declare const encodeSqliteValue: (buffer: Buffer, value: SqliteValue) => void;
|
|
459
459
|
export declare const decodeSqliteValue: (buffer: Buffer) => SqliteValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Protocol.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgKG;AAgBH,OAAO,EAA2B,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,MAAM,EAMP,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EAEb,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAItB,OAAO,EAAW,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAaL,cAAc,EAEd,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,KAAK,EACL,OAAO,EAGP,aAAa,EAEd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,SAAS,EACT,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EAEjB,gBAAgB,EAIhB,SAAS,EAET,SAAS,EACT,UAAU,EAEX,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,MAAM,EACN,SAAS,EAKV,MAAM,gBAAgB,CAAC;AAaxB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,sBAAsB,iUAG7B,CAAC;AAEP,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EACX,sBAAsB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,qTAA+B,CAAC;AACzE,MAAM,MAAM,4BAA4B,GACtC,OAAO,4BAA4B,CAAC,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EACpC,4BAA4B,CAAC;AAEzC,8BAA8B;AAC9B,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAEpE,8BAA8B;AAC9B,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"Protocol.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgKG;AAgBH,OAAO,EAA2B,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,MAAM,EAMP,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EAEb,cAAc,EACd,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAItB,OAAO,EAAW,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAaL,cAAc,EAEd,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,KAAK,EACL,OAAO,EAGP,aAAa,EAEd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,SAAS,EACT,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EAEjB,gBAAgB,EAIhB,SAAS,EAET,SAAS,EACT,UAAU,EAEX,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,MAAM,EACN,SAAS,EAKV,MAAM,gBAAgB,CAAC;AAaxB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,sBAAsB,iUAG7B,CAAC;AAEP,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC,IAAI,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EACX,sBAAsB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,qTAA+B,CAAC;AACzE,MAAM,MAAM,4BAA4B,GACtC,OAAO,4BAA4B,CAAC,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EACpC,4BAA4B,CAAC;AAEzC,8BAA8B;AAC9B,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAEpE,8BAA8B;AAC9B,eAAO,MAAM,eAAe,8CAA4B,CAAC;AAEzD,eAAO,MAAM,WAAW;IACtB,wEAAwE;;IAExE,yEAAyE;;IAEzE,0EAA0E;;CAElE,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,eAAO,MAAM,iBAAiB;IAC5B,8CAA8C;;IAE9C,2CAA2C;;IAE3C,+CAA+C;;CAEvC,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7D,eAAO,MAAM,iBAAiB;;IAE5B,gDAAgD;;IAEhD,6CAA6C;;IAE7C,6CAA6C;;IAE7C,4CAA4C;;CAEpC,CAAC;AAEX,KAAK,iBAAiB,GACpB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7D,MAAM,MAAM,aAAa,GACrB,oBAAoB,GACpB,wBAAwB,GACxB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,8BAA8B,CAAC;AAEnC;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,4DAA4D;AAC5D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,gCAAgC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,GAC/C,MAAM,cAAc,GAAG,kBAAkB,MAExC,OAAO,KAAK,EACZ,UAAU,qBAAqB,CAAC,WAAW,CAAC,EAC5C,UAAU,sBAAsB,KAC/B,eAoDF,CAAC;AAEJ,kDAAkD;AAClD,eAAO,MAAM,4BAA4B,GACtC,MAAM,UAAU,MAEf,SAAS,OAAO,EAChB,mBAAmB,gBAAgB,KAClC,eAAe,GAAG,IAoBpB,CAAC;AAEJ,eAAO,MAAM,mCAAmC,GAC9C,SAAS,OAAO,KACf,eAIU,CAAC;AAEd;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC;IAEnE,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAE7D,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC;IAEtC,QAAQ,CAAC,+BAA+B,EAAE,CACxC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,oBAAoB,GAAG,IAAI,KACjC,OAAO,CAAC;IAEb,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,SAAS,GAAG,gBAAgB,GAAG,mCAAmC,KACtE,IAAI,CAAC;IAEV,QAAQ,CAAC,MAAM,EAAE,MAAM,eAAe,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,WAAW,CAAC;CACrC;AAED,eAAO,MAAM,2BAA2B,GACtC,SAAS,OAAO,EAChB,SAAS;IACP,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,aAAa,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC,GAAG,CACA;IACE,QAAQ,CAAC,WAAW,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C,GACD;IACE,QAAQ,CAAC,WAAW,EAAE,OAAO,WAAW,CAAC,QAAQ,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;CACvC,GACD;IACE,QAAQ,CAAC,WAAW,EAAE,OAAO,WAAW,CAAC,SAAS,CAAC;CACpD,CACJ,KACA,qBAsLF,CAAC;AAEF,MAAM,WAAW,mCAAoC,SAAQ,SAAS;IACpE,QAAQ,CAAC,IAAI,EAAE,OAAO,SAAS,CAAC,UAAU,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,cAAc,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,sBAAsB,QAAO,gBAwDzC,CAAC;AAoCF,MAAM,WAAW,mCAAmC;IAClD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,aAAa,GAAG,IAAI,CAAC;IAEzD,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAE7C,sBAAsB;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,kCAAkC,GAC1C;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAEnC,eAAO,MAAM,4BAA4B,GACtC,MAAM,UAAU,MAEf,cAAc,UAAU,EACxB,UAAS,mCAAwC,KAChD,OAAO,CACR,MAAM,CACJ,kCAAkC,EAChC,wBAAwB,GACxB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,qBAAqB,GACrB,kBAAkB,CACrB,CA8GF,CAAC;AAEJ,MAAM,WAAW,kCAAkC;IACjD,8CAA8C;IAC9C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAEvC,iDAAiD;IACjD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAEjE,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,aAAa,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACnC;AAED,eAAO,MAAM,2BAA2B,GACrC,MAAM,UAAU,MAEf,cAAc,UAAU,EACxB,UAAS,kCAAuC;AAChD,sBAAsB;AACtB,sDAAyB,KACxB,OAAO,CACR,MAAM,CAAC,iCAAiC,EAAE,wBAAwB,CAAC,CAsJpE,CAAC;AA4aJ;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,IAE7D,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAqB7C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GAClC,MAAM,kBAAkB,MACxB,SAAS,WAAW,EAAE,KAAK,aAAa,KAAG,iBA2C3C,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAClC,MAAM,kBAAkB,MAEvB,SAAS,oBAAoB,EAC7B,KAAK,aAAa,KACjB,MAAM,CACP,QAAQ,EACN,2BAA2B,GAC3B,wBAAwB,GACxB,8BAA8B,CA4DjC,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,KAAK,cAAc,KAClB,IAoBF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,KAAG,cAiBrD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,OAAO,SAAS,CAAC,GAAG,CAAC,KAAG,IAEpE,CAAC;AAEF,eAAO,MAAM,YAAY,WAvBoB,MAAM,KAAG,cAuBN,CAAC;AAEjD,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,IAI5D,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAI7C,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,IAE7D,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAG7C,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;CA2BpB,CAAC;AAEX,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,OAAO,WAAW,KAAG,IAoFtE,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,WAyDlD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,GACtC,kBAAkB,eAAe,EACjC,cAAc,OAAO,KACpB,OAOF,CAAC"}
|
|
@@ -180,7 +180,7 @@ import { eqArrayNumber } from "../Eq.js";
|
|
|
180
180
|
import { computeBalancedBuckets } from "../Number.js";
|
|
181
181
|
import { objectToEntries } from "../Object.js";
|
|
182
182
|
import { err, ok } from "../Result.js";
|
|
183
|
-
import { Base64Url, base64UrlToUint8Array, between, DateIso, Id, idBytesToId, idBytesTypeValueLength, idToIdBytes, Int, Json, jsonToJsonValue, NonNegativeInt, Number, uint8ArrayToBase64Url, } from "../Type.js";
|
|
183
|
+
import { Base64Url, base64UrlToUint8Array, between, DateIso, Id, idBytesToId, idBytesTypeValueLength, idToIdBytes, Int, Json, jsonToJsonValue, NonNegativeInt, Number, PositiveInt, uint8ArrayToBase64Url, } from "../Type.js";
|
|
184
184
|
import { ownerIdToOwnerIdBytes, ownerWriteKeyLength, } from "./Owner.js";
|
|
185
185
|
import { fingerprintSize, InfiniteUpperBound, RangeType, } from "./Storage.js";
|
|
186
186
|
import { Counter, eqTimestamp, Millis, timestampBytesLength, timestampBytesToTimestamp, timestampToTimestampBytes, } from "./Timestamp.js";
|
|
@@ -237,7 +237,7 @@ export const ProtocolMessageRangesMaxSize = between(3_000, 100_000)(Int);
|
|
|
237
237
|
*/
|
|
238
238
|
export const defaultProtocolMessageRangesMaxSize = 30_000;
|
|
239
239
|
/** Evolu Protocol version. */
|
|
240
|
-
export const protocolVersion = 0;
|
|
240
|
+
export const protocolVersion = NonNegativeInt.orThrow(0);
|
|
241
241
|
export const MessageType = {
|
|
242
242
|
/** Request message from initiator (client) to non-initiator (relay). */
|
|
243
243
|
Request: 0,
|
|
@@ -327,7 +327,7 @@ export const createProtocolMessageForSync = (deps) => (ownerId, subscriptionFlag
|
|
|
327
327
|
// Errors are handled by the storage.
|
|
328
328
|
if (size == null)
|
|
329
329
|
return null;
|
|
330
|
-
splitRange(deps)(ownerIdBytes, 0, size, InfiniteUpperBound, buffer);
|
|
330
|
+
splitRange(deps)(ownerIdBytes, NonNegativeInt.orThrow(0), size, InfiniteUpperBound, buffer);
|
|
331
331
|
return buffer.unwrap();
|
|
332
332
|
};
|
|
333
333
|
export const createProtocolMessageForUnsubscribe = (ownerId) => createProtocolMessageBuffer(ownerId, {
|
|
@@ -367,7 +367,7 @@ export const createProtocolMessageBuffer = (ownerId, options) => {
|
|
|
367
367
|
}
|
|
368
368
|
let isLastRangeInfinite = false;
|
|
369
369
|
const isWithinSizeLimits = () => getSize() <= totalMaxSize;
|
|
370
|
-
const getSize = () => (getHeaderAndMessagesSize() + getRangesSize());
|
|
370
|
+
const getSize = () => PositiveInt.orThrow(getHeaderAndMessagesSize() + getRangesSize());
|
|
371
371
|
const getHeaderAndMessagesSize = () => buffers.header.getLength() +
|
|
372
372
|
buffers.messages.timestamps.getLength() +
|
|
373
373
|
buffers.messages.dbChanges.getLength();
|
|
@@ -437,7 +437,7 @@ export const createProtocolMessageBuffer = (ownerId, options) => {
|
|
|
437
437
|
else {
|
|
438
438
|
buffers.ranges.timestamps.addInfinite();
|
|
439
439
|
}
|
|
440
|
-
encodeNonNegativeInt(buffers.ranges.types, range.type);
|
|
440
|
+
encodeNonNegativeInt(buffers.ranges.types, NonNegativeInt.orThrow(range.type));
|
|
441
441
|
switch (range.type) {
|
|
442
442
|
case RangeType.Skip:
|
|
443
443
|
break;
|
|
@@ -468,7 +468,7 @@ export const createProtocolMessageBuffer = (ownerId, options) => {
|
|
|
468
468
|
};
|
|
469
469
|
};
|
|
470
470
|
export const createTimestampsBuffer = () => {
|
|
471
|
-
let count = 0;
|
|
471
|
+
let count = NonNegativeInt.orThrow(0);
|
|
472
472
|
const countBuffer = createBuffer();
|
|
473
473
|
const syncCount = () => {
|
|
474
474
|
countBuffer.reset();
|
|
@@ -513,9 +513,9 @@ export const createTimestampsBuffer = () => {
|
|
|
513
513
|
};
|
|
514
514
|
const createRunLengthEncoder = (encodeValue) => {
|
|
515
515
|
const buffer = createBuffer();
|
|
516
|
-
let previousLength = 0;
|
|
516
|
+
let previousLength = NonNegativeInt.orThrow(0);
|
|
517
517
|
let previousValue = null;
|
|
518
|
-
let runLength = 0;
|
|
518
|
+
let runLength = NonNegativeInt.orThrow(0);
|
|
519
519
|
return {
|
|
520
520
|
add: (value) => {
|
|
521
521
|
if (value === previousValue) {
|
|
@@ -524,7 +524,7 @@ const createRunLengthEncoder = (encodeValue) => {
|
|
|
524
524
|
}
|
|
525
525
|
else {
|
|
526
526
|
previousValue = value;
|
|
527
|
-
runLength = 1;
|
|
527
|
+
runLength = NonNegativeInt.orThrow(1);
|
|
528
528
|
}
|
|
529
529
|
previousLength = buffer.getLength();
|
|
530
530
|
encodeValue(buffer, value);
|
|
@@ -792,7 +792,7 @@ const sync = (deps) => (ranges, output, ownerIdBytes) => {
|
|
|
792
792
|
if (storageSize == null)
|
|
793
793
|
return err(ProtocolErrorCode.SyncError);
|
|
794
794
|
let prevUpperBound = null;
|
|
795
|
-
let prevIndex = 0;
|
|
795
|
+
let prevIndex = NonNegativeInt.orThrow(0);
|
|
796
796
|
let skip = false;
|
|
797
797
|
let nonSkipRangeAdded = false;
|
|
798
798
|
const skipRange = (range) => {
|
|
@@ -935,7 +935,7 @@ const sync = (deps) => (ranges, output, ownerIdBytes) => {
|
|
|
935
935
|
return ok(hasChange);
|
|
936
936
|
};
|
|
937
937
|
const splitRange = (deps) => (ownerId, lower, upper, upperBound, buffer) => {
|
|
938
|
-
const itemCount = (upper - lower);
|
|
938
|
+
const itemCount = NonNegativeInt.orThrow(upper - lower);
|
|
939
939
|
const buckets = computeBalancedBuckets(itemCount);
|
|
940
940
|
if (!buckets.ok) {
|
|
941
941
|
const range = {
|
|
@@ -943,7 +943,7 @@ const splitRange = (deps) => (ownerId, lower, upper, upperBound, buffer) => {
|
|
|
943
943
|
upperBound,
|
|
944
944
|
timestamps: createTimestampsBuffer(),
|
|
945
945
|
};
|
|
946
|
-
deps.storage.iterate(ownerId, 0, itemCount, (timestamp) => {
|
|
946
|
+
deps.storage.iterate(ownerId, NonNegativeInt.orThrow(0), itemCount, (timestamp) => {
|
|
947
947
|
range.timestamps.add(timestampBytesToTimestamp(timestamp));
|
|
948
948
|
return true;
|
|
949
949
|
});
|
|
@@ -953,7 +953,10 @@ const splitRange = (deps) => (ownerId, lower, upper, upperBound, buffer) => {
|
|
|
953
953
|
// Check Storage.ts `fingerprint` and `fingerprintRanges` docs.
|
|
954
954
|
const fingerprintRangesBuckets = lower === 0
|
|
955
955
|
? buckets.value
|
|
956
|
-
: [
|
|
956
|
+
: [
|
|
957
|
+
lower,
|
|
958
|
+
...buckets.value.map((b) => NonNegativeInt.orThrow(b + lower)),
|
|
959
|
+
];
|
|
957
960
|
const fingerprintRanges = deps.storage.fingerprintRanges(ownerId, fingerprintRangesBuckets, upperBound);
|
|
958
961
|
// Errors are handled by the storage.
|
|
959
962
|
if (fingerprintRanges == null)
|
|
@@ -969,7 +972,7 @@ const decodeRanges = (buffer) => {
|
|
|
969
972
|
const rangesCount = decodeNonNegativeInt(buffer);
|
|
970
973
|
if (rangesCount === 0)
|
|
971
974
|
return [];
|
|
972
|
-
const timestampsCount = (rangesCount - 1);
|
|
975
|
+
const timestampsCount = NonNegativeInt.orThrow(rangesCount - 1);
|
|
973
976
|
const timestamps = decodeTimestamps(buffer, timestampsCount);
|
|
974
977
|
const rangeTypes = [];
|
|
975
978
|
for (let i = 0; i < rangesCount; i++) {
|
|
@@ -1221,7 +1224,7 @@ export const decodeNonNegativeInt = (buffer) => {
|
|
|
1221
1224
|
return int.value;
|
|
1222
1225
|
};
|
|
1223
1226
|
export const encodeLength = (buffer, value) => {
|
|
1224
|
-
encodeNonNegativeInt(buffer, value.length);
|
|
1227
|
+
encodeNonNegativeInt(buffer, NonNegativeInt.orThrow(value.length));
|
|
1225
1228
|
};
|
|
1226
1229
|
export const decodeLength = decodeNonNegativeInt;
|
|
1227
1230
|
export const encodeString = (buffer, value) => {
|
|
@@ -1238,7 +1241,7 @@ export const encodeNodeId = (buffer, nodeId) => {
|
|
|
1238
1241
|
buffer.extend(hexToBytes(nodeId));
|
|
1239
1242
|
};
|
|
1240
1243
|
export const decodeNodeId = (buffer) => {
|
|
1241
|
-
const bytes = buffer.shiftN(8);
|
|
1244
|
+
const bytes = buffer.shiftN(NonNegativeInt.orThrow(8));
|
|
1242
1245
|
return bytesToHex(bytes);
|
|
1243
1246
|
};
|
|
1244
1247
|
// Small ints are encoded into ProtocolValueType, saving one byte per int.
|
|
@@ -1246,23 +1249,23 @@ const isSmallInt = (value) => value >= 0 && value < 20;
|
|
|
1246
1249
|
export const ProtocolValueType = {
|
|
1247
1250
|
// 0-19 small ints
|
|
1248
1251
|
// SQLite types
|
|
1249
|
-
String: 20,
|
|
1250
|
-
Number: 21,
|
|
1251
|
-
Null: 22,
|
|
1252
|
-
Bytes: 23,
|
|
1252
|
+
String: NonNegativeInt.orThrow(20),
|
|
1253
|
+
Number: NonNegativeInt.orThrow(21),
|
|
1254
|
+
Null: NonNegativeInt.orThrow(22),
|
|
1255
|
+
Bytes: NonNegativeInt.orThrow(23),
|
|
1253
1256
|
// We can add more types for other DBs or anything else later.
|
|
1254
1257
|
// Optimized types
|
|
1255
|
-
NonNegativeInt: 30,
|
|
1258
|
+
NonNegativeInt: NonNegativeInt.orThrow(30),
|
|
1256
1259
|
// String optimizations
|
|
1257
|
-
EmptyString: 31, // 1 byte vs 2 bytes (50% reduction)
|
|
1258
|
-
Base64Url: 32,
|
|
1259
|
-
Id: 33,
|
|
1260
|
-
Json: 34,
|
|
1260
|
+
EmptyString: NonNegativeInt.orThrow(31), // 1 byte vs 2 bytes (50% reduction)
|
|
1261
|
+
Base64Url: NonNegativeInt.orThrow(32),
|
|
1262
|
+
Id: NonNegativeInt.orThrow(33),
|
|
1263
|
+
Json: NonNegativeInt.orThrow(34),
|
|
1261
1264
|
// new Date().toISOString() - 24 bytes
|
|
1262
1265
|
// encoded with fixed length - 8 bytes
|
|
1263
1266
|
// encode as NonNegativeInt - 6 bytes (additional 25% reduction)
|
|
1264
|
-
DateIsoWithNonNegativeTime: 35,
|
|
1265
|
-
DateIsoWithNegativeTime: 36, // 9 bytes
|
|
1267
|
+
DateIsoWithNonNegativeTime: NonNegativeInt.orThrow(35),
|
|
1268
|
+
DateIsoWithNegativeTime: NonNegativeInt.orThrow(36), // 9 bytes
|
|
1266
1269
|
// TODO: Operations (from 40)
|
|
1267
1270
|
// Increment, Decrement, Patch, whatever.
|
|
1268
1271
|
};
|
|
@@ -20,8 +20,8 @@ export interface RelayConfig extends ConsoleConfig, StorageConfig {
|
|
|
20
20
|
* Optional callback to check if an {@link OwnerId} is allowed to access the
|
|
21
21
|
* relay. If this callback is not provided, all owners are allowed.
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* The callback receives the {@link OwnerId} and returns a {@link MaybeAsync}
|
|
24
|
+
* boolean: `true` to allow access, or `false` to deny.
|
|
25
25
|
*
|
|
26
26
|
* The callback can be synchronous (for SQLite or in-memory checks) or
|
|
27
27
|
* asynchronous (for calling remote APIs).
|
|
@@ -37,7 +37,8 @@ export interface RelayConfig extends ConsoleConfig, StorageConfig {
|
|
|
37
37
|
* Owners specify which relays to connect to via {@link OwnerTransport}. In
|
|
38
38
|
* WebSocket-based implementations, this check occurs before accepting the
|
|
39
39
|
* connection, with the OwnerId typically extracted from the URL Path (e.g.,
|
|
40
|
-
* `ws://localhost:4000/<ownerId>`).
|
|
40
|
+
* `ws://localhost:4000/<ownerId>`). The relay requires the URL to be in the
|
|
41
|
+
* correct format for OwnerId extraction.
|
|
41
42
|
*
|
|
42
43
|
* ### Example
|
|
43
44
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Relay.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Relay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAW,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAO,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAwB,UAAU,EAAS,MAAM,YAAY,CAAC;AACrE,OAAO,EAA+B,UAAU,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EACL,OAAO,EAIR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAEL,6BAA6B,EAE7B,iBAAiB,EACjB,OAAO,EACP,aAAa,EAEd,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,WAAY,SAAQ,aAAa,EAAE,aAAa;IAC/D;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAE3B
|
|
1
|
+
{"version":3,"file":"Relay.d.ts","sourceRoot":"","sources":["../../../src/Evolu/Relay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAW,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAO,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAwB,UAAU,EAAS,MAAM,YAAY,CAAC;AACrE,OAAO,EAA+B,UAAU,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EACL,OAAO,EAIR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAEL,6BAA6B,EAE7B,iBAAiB,EACjB,OAAO,EACP,aAAa,EAEd,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,WAAY,SAAQ,aAAa,EAAE,aAAa;IAC/D;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAM,SAAQ,UAAU;CAAG;AAE5C,eAAO,MAAM,wBAAwB,GAClC,MAAM,iBAAiB,GAAG,kBAAkB,MAC5C,QAAQ,6BAA6B,KAAG,OA2NxC,CAAC;AAEJ,eAAO,MAAM,wBAAwB,GACnC,MAAM,SAAS,KACd,MAAM,CAAC,IAAI,EAAE,WAAW,CA0B1B,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,4BAA4B,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,qBAAqB,EAAE,CAAC,oBAAoB,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE,QAAQ,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,KAClC,IAAI,CAAC;IACV,QAAQ,CAAC,sBAAsB,EAAE,CAC/B,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,KAClC,IAAI,CAAC;IACV,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,KACpB,IAAI,CAAC;IACV,QAAQ,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,QAAQ,CAAC,gCAAgC,EAAE,CACzC,KAAK,EAAE,wBAAwB,KAC5B,IAAI,CAAC;IACV,QAAQ,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,uCAAuC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;IAClC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,IAAI,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,iBAAiB,GAAI,MAAM,UAAU,KAAG,WA0FnD,CAAC"}
|