@evolu/common 8.11.0 → 8.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,10 +19,47 @@
19
19
  *
20
20
  * @module
21
21
  */
22
- import { bytesToUtf8, utf8ToBytes } from "@noble/ciphers/utils.js";
22
+ import { bytesToUtf8, concatBytes as nobleConcatBytes, utf8ToBytes } from "@noble/ciphers/utils.js";
23
23
  import { Digit, Digit1To9, type FiniteNumber, type JsonValue, NonNegativeInt, type PositiveInt, type TemplateLiteralType, type LiteralType, type UnionType, type Type, type TypeError, type UnionError } from "./Type.ts";
24
- export { bytesToHex, concatBytes, hexToBytes } from "@noble/ciphers/utils.js";
24
+ export { bytesToHex, hexToBytes } from "@noble/ciphers/utils.js";
25
25
  export { bytesToUtf8, utf8ToBytes };
26
+ /**
27
+ * Copies several Uint8Arrays into one.
28
+ *
29
+ * Each array is a separate argument, so it is meant for a few arrays. Spreading
30
+ * many arrays into it overflows the call stack; use {@link concatByteArrays}
31
+ * when their count is not bounded.
32
+ *
33
+ * ### Example
34
+ *
35
+ * ```ts
36
+ * import { assertEqual, concatBytes } from "@evolu/common";
37
+ *
38
+ * assertEqual(
39
+ * concatBytes(new Uint8Array([1]), new Uint8Array([2, 3])),
40
+ * new Uint8Array([1, 2, 3]),
41
+ * );
42
+ * ```
43
+ */
44
+ export declare const concatBytes: typeof nobleConcatBytes;
45
+ /**
46
+ * Copies an array of Uint8Arrays into one.
47
+ *
48
+ * Unlike {@link concatBytes}, it takes the arrays as one array, so it works for
49
+ * any number of them, such as the timestamps of a batch received from a peer.
50
+ *
51
+ * ### Example
52
+ *
53
+ * ```ts
54
+ * import { assertEqual, concatByteArrays } from "@evolu/common";
55
+ *
56
+ * assertEqual(
57
+ * concatByteArrays([new Uint8Array([1]), new Uint8Array([2, 3])]),
58
+ * new Uint8Array([1, 2, 3]),
59
+ * );
60
+ * ```
61
+ */
62
+ export declare const concatByteArrays: (arrays: ReadonlyArray<Uint8Array>) => Uint8Array;
26
63
  /**
27
64
  * Custom error for {@link Buffer}-related failures like premature end of data.
28
65
  * Provides better stack traces for debugging binary protocol issues.
@@ -1 +1 @@
1
- {"version":3,"file":"Bytes.d.ts","sourceRoot":"","sources":["../../src/Bytes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Bytes.d.ts","sourceRoot":"","sources":["../../src/Bytes.ts"],"names":[],"mappings":"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"}
package/dist/src/Bytes.js CHANGED
@@ -19,13 +19,61 @@
19
19
  *
20
20
  * @module
21
21
  */
22
- import { bytesToUtf8, utf8ToBytes } from "@noble/ciphers/utils.js";
22
+ import { bytesToUtf8, concatBytes as nobleConcatBytes, utf8ToBytes, } from "@noble/ciphers/utils.js";
23
23
  import { assert } from "./Assert.js";
24
24
  import { err, ok } from "./Result.js";
25
25
  import { safelyStringifyUnknownValue } from "./String.js";
26
26
  import { brand, createTypeWithError, Digit, Digit1To9, NonNegativeInt, String, templateLiteral, transform, union, } from "./Type.js";
27
- export { bytesToHex, concatBytes, hexToBytes } from "@noble/ciphers/utils.js";
27
+ export { bytesToHex, hexToBytes } from "@noble/ciphers/utils.js";
28
28
  export { bytesToUtf8, utf8ToBytes };
29
+ /**
30
+ * Copies several Uint8Arrays into one.
31
+ *
32
+ * Each array is a separate argument, so it is meant for a few arrays. Spreading
33
+ * many arrays into it overflows the call stack; use {@link concatByteArrays}
34
+ * when their count is not bounded.
35
+ *
36
+ * ### Example
37
+ *
38
+ * ```ts
39
+ * import { assertEqual, concatBytes } from "@evolu/common";
40
+ *
41
+ * assertEqual(
42
+ * concatBytes(new Uint8Array([1]), new Uint8Array([2, 3])),
43
+ * new Uint8Array([1, 2, 3]),
44
+ * );
45
+ * ```
46
+ */
47
+ export const concatBytes = nobleConcatBytes;
48
+ /**
49
+ * Copies an array of Uint8Arrays into one.
50
+ *
51
+ * Unlike {@link concatBytes}, it takes the arrays as one array, so it works for
52
+ * any number of them, such as the timestamps of a batch received from a peer.
53
+ *
54
+ * ### Example
55
+ *
56
+ * ```ts
57
+ * import { assertEqual, concatByteArrays } from "@evolu/common";
58
+ *
59
+ * assertEqual(
60
+ * concatByteArrays([new Uint8Array([1]), new Uint8Array([2, 3])]),
61
+ * new Uint8Array([1, 2, 3]),
62
+ * );
63
+ * ```
64
+ */
65
+ export const concatByteArrays = (arrays) => {
66
+ let length = 0;
67
+ for (const array of arrays)
68
+ length += array.length;
69
+ const result = new Uint8Array(length);
70
+ let offset = 0;
71
+ for (const array of arrays) {
72
+ result.set(array, offset);
73
+ offset += array.length;
74
+ }
75
+ return result;
76
+ };
29
77
  /**
30
78
  * Custom error for {@link Buffer}-related failures like premature end of data.
31
79
  * Provides better stack traces for debugging binary protocol issues.
@@ -49,7 +49,7 @@ export * from "./Types.ts";
49
49
  export * from "./WebSocket.ts";
50
50
  export * from "./Worker.ts";
51
51
  export type { UnsupportedDbVersionError } from "./local-first/Db.ts";
52
- export { AppName, createEvolu, testAppName } from "./local-first/Evolu.ts";
52
+ export { AppName, createEvolu, maxMutationSize, testAppName, } from "./local-first/Evolu.ts";
53
53
  export type { AppNameError, Evolu, EvoluConfig, EvoluDeps, EvoluError, UnuseOwner, } from "./local-first/Evolu.ts";
54
54
  export * from "./local-first/Owner.ts";
55
55
  export type { SyncOwner } from "./local-first/Owner.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAG5B,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EACV,YAAY,EACZ,KAAK,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,GAAG,GACT,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAIV,SAAS,GACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAG5B,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EACL,OAAO,EACP,WAAW,EACX,eAAe,EACf,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,YAAY,EACZ,KAAK,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,wBAAwB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,GAAG,GACT,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAIV,SAAS,GACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,4BAA4B,CAAC"}
package/dist/src/index.js CHANGED
@@ -47,7 +47,7 @@ export * from "./Type.js";
47
47
  export * from "./Types.js";
48
48
  export * from "./WebSocket.js";
49
49
  export * from "./Worker.js";
50
- export { AppName, createEvolu, testAppName } from "./local-first/Evolu.js";
50
+ export { AppName, createEvolu, maxMutationSize, testAppName, } from "./local-first/Evolu.js";
51
51
  export * from "./local-first/Owner.js";
52
52
  export { evoluJsonArrayFrom, evoluJsonBuildObject, evoluJsonObjectFrom, getJsonObjectArgs, kyselySql, } from "./local-first/Query.js";
53
53
  export { createQueryBuilder, QuarantineOrigin, QuarantineReason, testEvoluSchema, testLocalOnlyEvoluSchema, TestProjectId, testProjectId, TestTodoId, testTodoId, } from "./local-first/Schema.js";
@@ -11,13 +11,13 @@ import { type LockManagerDep } from "../LockManager.ts";
11
11
  import type { FlushSyncDep, ReloadAppDep } from "../Platform.ts";
12
12
  import type { Listener, ReadonlyStore, Unsubscribe } from "../Store.ts";
13
13
  import type { Task } from "../Task.ts";
14
- import { Name, type TypeError, UrlSafeString } from "../Type.ts";
14
+ import { Name, PositiveInt, type TypeError, UrlSafeString } from "../Type.ts";
15
15
  import type { CreateBroadcastChannelDep, CreateMessageChannelDep } from "../Worker.ts";
16
16
  import type { CreateDbWorkerDep, UnsupportedDbVersionError } from "./Db.ts";
17
17
  import type { AppOwner, Owner, OwnerId, OwnerTransport, ReadonlyOwner } from "./Owner.ts";
18
- import type { ProtocolError } from "./Protocol.ts";
18
+ import { type ProtocolError } from "./Protocol.ts";
19
19
  import type { Queries, QueriesToQueryRowsPromises, Query, QueryRows, Row } from "./Query.ts";
20
- import type { EvoluSchema, IndexesConfig, Mutation, ValidateSchema } from "./Schema.ts";
20
+ import type { EvoluSchema, IndexesConfig, Mutation, MutationValues, ValidateSchema } from "./Schema.ts";
21
21
  import type { OtherBuildRunningError, SharedWorkerDep, SyncState } from "./Shared.ts";
22
22
  import { type StorageQuotaError } from "./Storage.ts";
23
23
  /**
@@ -394,6 +394,37 @@ export interface Evolu<S extends EvoluSchema = EvoluSchema> extends AsyncDisposa
394
394
  * @see {@link Mutation}
395
395
  */
396
396
  readonly upsert: Mutation<S, "upsert">;
397
+ /**
398
+ * Returns the size of a mutation of `table` with `values`, measured as
399
+ * {@link maxMutationSize} describes.
400
+ *
401
+ * Use it to check values that column Types do not bound before mutating, or
402
+ * to show how much of the limit a mutation uses. It accepts any of the
403
+ * table's columns, so the values of an insert, update, or upsert fit, and it
404
+ * ignores `id` and `isDeleted`, which are not columns. Mutations of
405
+ * local-only tables are measured too, although they are exempt from the
406
+ * limit.
407
+ *
408
+ * ### Example
409
+ *
410
+ * ```ts
411
+ * import {
412
+ * assertType,
413
+ * type Evolu,
414
+ * maxMutationSize,
415
+ * type NonEmptyTrimmedString100,
416
+ * type TestEvoluSchema,
417
+ * } from "@evolu/common";
418
+ *
419
+ * const fitsTodo = (
420
+ * evolu: Evolu<TestEvoluSchema>,
421
+ * title: NonEmptyTrimmedString100,
422
+ * ) => evolu.getMutationSize("todo", { title }) <= maxMutationSize;
423
+ *
424
+ * assertType<ReturnType<typeof fitsTodo>, boolean>();
425
+ * ```
426
+ */
427
+ readonly getMutationSize: <TableName extends keyof S>(table: TableName, values: Partial<MutationValues<S[TableName], "update">>) => PositiveInt;
397
428
  /**
398
429
  * Load {@link Query} and return a promise with {@link QueryRows}.
399
430
  *
@@ -689,9 +720,52 @@ export type UnuseOwner = () => void;
689
720
  /**
690
721
  * Represents errors that can occur in {@link Evolu}.
691
722
  *
723
+ * Apps show them from {@link EvoluErrorDep.evoluError}.
724
+ *
725
+ * An error that leaves the app unusable deserves a modal dialog, which moves
726
+ * focus into itself and restores it when closed. Any other error is a status
727
+ * message: show it in a region with `role="alert"`, which screen readers
728
+ * announce without moving focus, so the user keeps working and a background tab
729
+ * shows it when the user returns. Avoid `alert()`, which blocks the page, once
730
+ * in every open tab.
731
+ *
732
+ * - {@link UnsupportedDbVersionError} blocks the app: the local data needs a newer
733
+ * version of it. Ask the user to update the app or close all its tabs.
734
+ * - {@link OtherBuildRunningError} blocks the app while it lasts: another version
735
+ * of the app holds the local data. Ask the user to close the app's other
736
+ * tabs. It clears when the wait ends.
737
+ * - {@link ProtocolError} does not block the app: sync with a relay failed for an
738
+ * owner, because the relay rejected or failed a request, or sent data that
739
+ * could not be decoded or verified; sync state shows the affected routes. A
740
+ * {@link ProtocolQuotaError} needs more relay quota, then
741
+ * {@link Evolu.requestSync}; a {@link ProtocolVersionError} needs an app or
742
+ * relay update.
743
+ * - {@link StorageQuotaError} does not block the app: a storage or billing quota
744
+ * was exceeded, so a batch of an owner's changes was not stored. The built-in
745
+ * client storage does not report it yet; a relay's quota arrives as
746
+ * {@link ProtocolQuotaError}.
747
+ * - {@link DecryptWithXChaCha20Poly1305Error} does not block the app: changes
748
+ * received for an owner could not be decrypted, so none of their batch was
749
+ * stored.
750
+ * - {@link UnknownError} does not block the app: Evolu logged an unexpected
751
+ * failure. Show a generic message.
752
+ *
692
753
  * @group Core
693
754
  */
694
755
  export type EvoluError = DecryptWithXChaCha20Poly1305Error | OtherBuildRunningError | ProtocolError | StorageQuotaError | UnknownError | UnsupportedDbVersionError;
756
+ /**
757
+ * The largest {@link Mutation}, in bytes.
758
+ *
759
+ * A mutation's size is its change as encoded for sync: the table name, the ID,
760
+ * and every column name and value, with a few bytes of overhead. A string takes
761
+ * at most three bytes per UTF-16 code unit. Every mutation within the limit
762
+ * fits one protocol message, so it can always sync. A larger mutation throws
763
+ * and is not saved. Mutations of local-only tables are exempt, because they
764
+ * never sync. Measure a mutation in advance with {@link Evolu.getMutationSize}.
765
+ *
766
+ * @group Core
767
+ */
768
+ export declare const maxMutationSize: PositiveInt;
695
769
  /**
696
770
  * Dependency wrapper for the shared {@link EvoluError} store.
697
771
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../../src/local-first/Evolu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Evolu.d.ts","sourceRoot":"","sources":["../../../src/local-first/Evolu.ts"],"names":[],"mappings":"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"}
@@ -57,23 +57,27 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
57
57
  });
58
58
  import { emptyArray, isNonEmptyArray, mapArray, } from "../Array.js";
59
59
  import { assert, assertNonEmptyReadonlyArray, assertNotUndefined, } from "../Assert.js";
60
+ import { createBuffer } from "../Bytes.js";
60
61
  import { createCallbacks } from "../Callbacks.js";
61
62
  import { createConsole } from "../Console.js";
62
63
  import { createUnknownError } from "../Error.js";
63
64
  import { disposable, exhaustiveCheck, todo } from "../Function.js";
64
65
  import { acquireLeaderLock, acquireLeaderLockCallback, } from "../LockManager.js";
65
66
  import { createMicrotaskBatch } from "../Microtask.js";
67
+ import { createMutableRecord, objectToEntries, } from "../Object.js";
66
68
  import { createRefCountByKey } from "../RefCount.js";
67
69
  import { err, ok } from "../Result.js";
68
70
  import { isNonEmptySet } from "../Set.js";
69
- import { SqliteBoolean, sqliteBooleanToBoolean } from "../Sqlite.js";
71
+ import { SqliteBoolean, sqliteBooleanToBoolean, } from "../Sqlite.js";
70
72
  import { createStore } from "../Store.js";
71
- import { brand, createId, createIdFromString, Name, UrlSafeString, } from "../Type.js";
73
+ import { brand, createId, createIdFromString, Id, Name, PositiveInt, UrlSafeString, } from "../Type.js";
72
74
  import { createOwnerWebSocketTransport } from "./Owner.js";
75
+ import { encodeDbChange, } from "./Protocol.js";
73
76
  import { applyPatches } from "./Query.js";
74
- import { evoluSchemaToSqliteSchema } from "./Schema.js";
77
+ import { evoluSchemaToSqliteSchema, isLocalOnlyTable } from "./Schema.js";
75
78
  import { consoleEntryOrErrorBroadcastChannelName } from "./Shared.js";
76
79
  import { DbChange } from "./Storage.js";
80
+ import { createTimestamp } from "./Timestamp.js";
77
81
  /**
78
82
  * Application name.
79
83
  *
@@ -95,6 +99,47 @@ export const AppName = /*#__PURE__*/ brand("AppName", UrlSafeString, (value) =>
95
99
  * @group Testing
96
100
  */
97
101
  export const testAppName = /*#__PURE__*/ AppName.orThrow("AppName");
102
+ /**
103
+ * The largest {@link Mutation}, in bytes.
104
+ *
105
+ * A mutation's size is its change as encoded for sync: the table name, the ID,
106
+ * and every column name and value, with a few bytes of overhead. A string takes
107
+ * at most three bytes per UTF-16 code unit. Every mutation within the limit
108
+ * fits one protocol message, so it can always sync. A larger mutation throws
109
+ * and is not saved. Mutations of local-only tables are exempt, because they
110
+ * never sync. Measure a mutation in advance with {@link Evolu.getMutationSize}.
111
+ *
112
+ * @group Core
113
+ */
114
+ export const maxMutationSize =
115
+ /*#__PURE__*/ PositiveInt.orThrow(640_000);
116
+ /** Measures a mutation as {@link maxMutationSize} describes. */
117
+ const measureMutation = (table, values) => {
118
+ const columns = createMutableRecord();
119
+ for (const [column, value] of objectToEntries(values)) {
120
+ if (value !== undefined && column !== "id" && column !== "isDeleted") {
121
+ columns[column] = value;
122
+ }
123
+ }
124
+ // Measuring with the protocol's encoding keeps the limit and the message size
125
+ // from disagreeing. A separate formula would save the tab about 3 KB
126
+ // compressed, but it would be a second encoding to keep in sync, and it
127
+ // would have to overcount.
128
+ const buffer = createBuffer();
129
+ encodeDbChange(buffer, {
130
+ // Every timestamp and ID takes 16 bytes, and the flags always take one.
131
+ timestamp: createTimestamp(),
132
+ change: DbChange.orThrow({
133
+ table,
134
+ id: mutationSizeId,
135
+ values: columns,
136
+ isInsert: true,
137
+ isDelete: null,
138
+ }),
139
+ });
140
+ return buffer.getLength();
141
+ };
142
+ const mutationSizeId = /*#__PURE__*/ Id.orThrow("A".repeat(22));
98
143
  /**
99
144
  * Creates shared dependencies used by all {@link createEvolu} instances on a
100
145
  * platform.
@@ -397,6 +442,36 @@ export const createEvolu = (schema, config) => async (run) => {
397
442
  : null,
398
443
  };
399
444
  assert(DbChange.is(dbChange), `Invalid DbChange for table '${String(table)}'.`);
445
+ // Copy binary values, so what is saved is what was passed: the caller
446
+ // can change a Uint8Array before the batch is sent, a view of a
447
+ // resizable buffer can grow, and a view of a shared buffer cannot be
448
+ // sent to a SharedWorker at all. Node's Buffer passes validation and
449
+ // its slice shares memory, so only the constructor copies reliably.
450
+ for (const [column, value] of objectToEntries(dbChange.values)) {
451
+ if (typeof value === "object" && value !== null) {
452
+ changeValues[column] = new Uint8Array(value);
453
+ }
454
+ }
455
+ // A change over maxMutationSize could never sync, and a shared worker
456
+ // hosting two databases would stop all work of that database. Correct
457
+ // apps bound column Types, so it is a programmer error and throws like
458
+ // the DbChange check above, before batching: it gets no timestamp, the
459
+ // database worker never sees it, and the code after the call does not
460
+ // run, so a form keeps its input and no row refers to the missing one.
461
+ //
462
+ // Rejected: reporting it through evoluError, which lets that code run
463
+ // as if the mutation was saved; checking in the database worker, which
464
+ // gets it already batched and cannot reach the call site; quarantine,
465
+ // which holds changes stored for sync; and skipping it in sync, which
466
+ // keeps range fingerprints disagreeing. Received changes are not
467
+ // checked, and oversized changes stored before this limit are not
468
+ // recovered, which needs a history-aware design.
469
+ //
470
+ // Local-only tables never sync, so they have no limit.
471
+ if (!isLocalOnlyTable(dbChange.table)) {
472
+ const size = measureMutation(dbChange.table, dbChange.values);
473
+ assert(size <= maxMutationSize, `The mutation of table '${dbChange.table}' is ${size} bytes, over maxMutationSize (${maxMutationSize}). Bound the Types of its columns or check it with evolu.getMutationSize.`);
474
+ }
400
475
  mutateBatch.push({
401
476
  change: { ...dbChange, ownerId: options?.ownerId ?? appOwner.id },
402
477
  onComplete: options?.onComplete,
@@ -458,6 +533,7 @@ export const createEvolu = (schema, config) => async (run) => {
458
533
  insert: createMutation("insert"),
459
534
  update: createMutation("update"),
460
535
  upsert: createMutation("upsert"),
536
+ getMutationSize: (table, values) => measureMutation(String(table), values),
461
537
  loadQuery,
462
538
  loadQueries: (queries) => queries.map((query) => loadQuery(query)),
463
539
  subscribeQuery: (query) => (listener) => {
@@ -103,9 +103,9 @@
103
103
  * fit within the limit, the protocol automatically continues synchronization in
104
104
  * subsequent rounds using range-based reconciliation.
105
105
  *
106
- * Database mutations are limited to 640KB, which is smaller than the protocol
107
- * message limit to ensure efficient sync with
108
- * {@link defaultProtocolMessageRangesMaxSize}.
106
+ * Each mutation is limited to {@link maxMutationSize}, so every change fits one
107
+ * message of {@link defaultProtocolMessageMaxSize} next to the largest ranges
108
+ * section.
109
109
  *
110
110
  * ## Why Binary?
111
111
  *
@@ -512,6 +512,15 @@ version?: NonNegativeInt) => Task<ApplyProtocolMessageAsRelayResult, ProtocolInv
512
512
  * data.
513
513
  */
514
514
  export declare const encodeAndEncryptDbChange: (deps: RandomBytesDep) => (message: CrdtMessage, key: EncryptionKey) => EncryptedDbChange;
515
+ /**
516
+ * Encodes a {@link CrdtMessage} as {@link encodeAndEncryptDbChange} does before
517
+ * padding and encryption.
518
+ *
519
+ * {@link Evolu.getMutationSize} measures mutations with this encoding, so
520
+ * {@link maxMutationSize} limits exactly what is encoded, and every change
521
+ * within it fits one protocol message.
522
+ */
523
+ export declare const encodeDbChange: (buffer: Buffer, message: CrdtMessage) => void;
515
524
  /**
516
525
  * Decrypts and decodes an {@link EncryptedCrdtMessage} using the provided
517
526
  * owner's encryption key. Verifies that the embedded timestamp matches the
@@ -1 +1 @@
1
- {"version":3,"file":"Protocol.d.ts","sourceRoot":"","sources":["../../../src/local-first/Protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Protocol.d.ts","sourceRoot":"","sources":["../../../src/local-first/Protocol.ts"],"names":[],"mappings":"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"}
@@ -103,9 +103,9 @@
103
103
  * fit within the limit, the protocol automatically continues synchronization in
104
104
  * subsequent rounds using range-based reconciliation.
105
105
  *
106
- * Database mutations are limited to 640KB, which is smaller than the protocol
107
- * message limit to ensure efficient sync with
108
- * {@link defaultProtocolMessageRangesMaxSize}.
106
+ * Each mutation is limited to {@link maxMutationSize}, so every change fits one
107
+ * message of {@link defaultProtocolMessageMaxSize} next to the largest ranges
108
+ * section.
109
109
  *
110
110
  * ## Why Binary?
111
111
  *
@@ -175,7 +175,7 @@
175
175
  */
176
176
  import { createMutableArray, isNonEmptyArray, } from "../Array.js";
177
177
  import { assert, assertNonEmptyArray, assertNonNullable, assertNotUndefined, assertSame, } from "../Assert.js";
178
- import { createBuffer, createRunLengthEncoder, decodeFlags, decodeJsonValue, decodeLength, decodeNonNegativeInt, decodeNumber, decodeRle, decodeString, encodeFlags, encodeJsonValue, encodeLength, encodeNonNegativeInt, encodeNumber, encodeString, } from "../Bytes.js";
178
+ import { BufferError, createBuffer, createRunLengthEncoder, decodeFlags, decodeJsonValue, decodeLength, decodeNonNegativeInt, decodeNumber, decodeRle, decodeString, encodeFlags, encodeJsonValue, encodeLength, encodeNonNegativeInt, encodeNumber, encodeString, } from "../Bytes.js";
179
179
  import { createPadmePadding, decryptWithXChaCha20Poly1305, EncryptionKey, encryptWithXChaCha20Poly1305, Entropy24, XChaCha20Poly1305Ciphertext, xChaCha20Poly1305NonceLength, } from "../Crypto.js";
180
180
  import { eqArrayNumber } from "../Eq.js";
181
181
  import { computeBalancedBuckets } from "../Number.js";
@@ -1210,6 +1210,25 @@ const decodeId = (buffer) => {
1210
1210
  */
1211
1211
  export const encodeAndEncryptDbChange = (deps) => (message, key) => {
1212
1212
  const buffer = createBuffer();
1213
+ encodeDbChange(buffer, message);
1214
+ // Add PADMÉ padding (ignored during decoding)
1215
+ buffer.extend(createPadmePadding(buffer.getLength()));
1216
+ const [ciphertext, nonce] = encryptWithXChaCha20Poly1305(deps)(buffer.unwrap(), key);
1217
+ buffer.reset();
1218
+ buffer.extend(nonce);
1219
+ encodeLength(buffer, ciphertext);
1220
+ buffer.extend(ciphertext);
1221
+ return buffer.unwrap();
1222
+ };
1223
+ /**
1224
+ * Encodes a {@link CrdtMessage} as {@link encodeAndEncryptDbChange} does before
1225
+ * padding and encryption.
1226
+ *
1227
+ * {@link Evolu.getMutationSize} measures mutations with this encoding, so
1228
+ * {@link maxMutationSize} limits exactly what is encoded, and every change
1229
+ * within it fits one protocol message.
1230
+ */
1231
+ export const encodeDbChange = (buffer, message) => {
1213
1232
  encodeNonNegativeInt(buffer, protocolVersion);
1214
1233
  // Encode the timestamp to prevent tampering (e.g., a malicious relay
1215
1234
  // assigning this EncryptedDbChange to a different EncryptedCrdtMessage)
@@ -1229,14 +1248,6 @@ export const encodeAndEncryptDbChange = (deps) => (message, key) => {
1229
1248
  encodeString(buffer, column);
1230
1249
  encodeSqliteValue(buffer, value);
1231
1250
  }
1232
- // Add PADMÉ padding (ignored during decoding)
1233
- buffer.extend(createPadmePadding(buffer.getLength()));
1234
- const [ciphertext, nonce] = encryptWithXChaCha20Poly1305(deps)(buffer.unwrap(), key);
1235
- buffer.reset();
1236
- buffer.extend(nonce);
1237
- encodeLength(buffer, ciphertext);
1238
- buffer.extend(ciphertext);
1239
- return buffer.unwrap();
1240
1251
  };
1241
1252
  /**
1242
1253
  * Decrypts and decodes an {@link EncryptedCrdtMessage} using the provided
@@ -1368,22 +1379,33 @@ export const encodeSqliteValue = (buffer, value) => {
1368
1379
  return;
1369
1380
  }
1370
1381
  const json = Json.from.parent(value);
1371
- // Only encode as Json if it survives JSON.parse/JSON.stringify round-trip.
1372
- // Some valid JSON strings like "-0E0" get normalized to "0" during parsing,
1373
- // which would cause data corruption if we don't verify round-trip safety.
1374
- if (json.ok && JSON.stringify(jsonToJsonValue(json.value)) === value) {
1382
+ if (json.ok) {
1383
+ const jsonValue = jsonToJsonValue(json.value);
1375
1384
  jsonBuffer.reset();
1376
1385
  try {
1377
- encodeJsonValue(jsonBuffer, jsonToJsonValue(json.value));
1378
- const jsonBytes = jsonBuffer.unwrap();
1379
- encodeNonNegativeInt(buffer, ProtocolValueType.Json);
1380
- encodeLength(buffer, jsonBytes);
1381
- buffer.extend(jsonBytes);
1386
+ // Encoding first rejects nesting deeper than decoding allows, before
1387
+ // the recursive JSON.stringify below could overflow the stack. Such
1388
+ // a value is encoded as a plain string.
1389
+ encodeJsonValue(jsonBuffer, jsonValue);
1390
+ // Only encode as Json if it survives JSON.parse/JSON.stringify
1391
+ // round-trip. Some valid JSON strings like "-0E0" get normalized to
1392
+ // "0" during parsing, which would cause data corruption if we don't
1393
+ // verify round-trip safety.
1394
+ if (JSON.stringify(jsonValue) === value) {
1395
+ const jsonBytes = jsonBuffer.unwrap();
1396
+ encodeNonNegativeInt(buffer, ProtocolValueType.Json);
1397
+ encodeLength(buffer, jsonBytes);
1398
+ buffer.extend(jsonBytes);
1399
+ return;
1400
+ }
1401
+ }
1402
+ catch (error) {
1403
+ if (!(error instanceof BufferError))
1404
+ throw error;
1382
1405
  }
1383
1406
  finally {
1384
1407
  jsonBuffer.reset();
1385
1408
  }
1386
- return;
1387
1409
  }
1388
1410
  const base64Url = Base64Url.from.parent(value);
1389
1411
  if (base64Url.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"Relay.d.ts","sourceRoot":"","sources":["../../../src/local-first/Relay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,IAAI,EAAsC,MAAM,YAAY,CAAC;AACtE,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,OAAO,EAIR,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAEV,iBAAiB,EACjB,OAAO,EACP,aAAa,EAEd,MAAM,cAAc,CAAC;AAStB,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgFG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CACxB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;QACP,iEAAiE;QACjE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;KAC9B,KACE,SAAS,CAAC,OAAO,CAAC,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,KAAM,SAAQ,eAAe;IAC5C,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,wBAAwB,SAC5B,iBAAiB,GAAG,kBAAkB,cACpC,aAAa,KAAG,OAuLxB,CAAC;AAEJ,eAAO,MAAM,wBAAwB,SAAU,SAAS,KAAG,IAuB1D,CAAC"}
1
+ {"version":3,"file":"Relay.d.ts","sourceRoot":"","sources":["../../../src/local-first/Relay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,IAAI,EAAyC,MAAM,YAAY,CAAC;AACzE,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,OAAO,EAIR,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAEV,iBAAiB,EACjB,OAAO,EACP,aAAa,EAEd,MAAM,cAAc,CAAC;AAStB,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgFG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CACxB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;QACP,iEAAiE;QACjE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;KAC9B,KACE,SAAS,CAAC,OAAO,CAAC,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,KAAM,SAAQ,eAAe;IAC5C,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,wBAAwB,SAC5B,iBAAiB,GAAG,kBAAkB,cACpC,aAAa,KAAG,OAyLxB,CAAC;AAEJ,eAAO,MAAM,wBAAwB,SAAU,SAAS,KAAG,IAuB1D,CAAC"}