@evolu/common 8.7.0 → 8.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/Array.d.ts +21 -21
- package/dist/src/Array.js +5 -5
- package/dist/src/Assert.d.ts +478 -141
- package/dist/src/Assert.d.ts.map +1 -1
- package/dist/src/Assert.js +644 -99
- package/dist/src/{Buffer.d.ts → Binary.d.ts} +85 -12
- package/dist/src/Binary.d.ts.map +1 -0
- package/dist/src/{Buffer.js → Binary.js} +206 -24
- package/dist/src/Console.d.ts +2 -10
- package/dist/src/Console.d.ts.map +1 -1
- package/dist/src/Console.js +6 -12
- package/dist/src/Crypto.d.ts +5 -5
- package/dist/src/Crypto.js +1 -1
- package/dist/src/Eq.d.ts +35 -40
- package/dist/src/Eq.d.ts.map +1 -1
- package/dist/src/Eq.js +51 -87
- package/dist/src/Function.d.ts +9 -14
- package/dist/src/Function.d.ts.map +1 -1
- package/dist/src/Function.js +7 -9
- package/dist/src/Http.d.ts +6 -7
- package/dist/src/Http.d.ts.map +1 -1
- package/dist/src/LeakDetector.d.ts.map +1 -1
- package/dist/src/LeakDetector.js +1 -0
- package/dist/src/LockManager.d.ts +1 -1
- package/dist/src/LockManager.js +1 -1
- package/dist/src/Lookup.d.ts +3 -2
- package/dist/src/Lookup.d.ts.map +1 -1
- package/dist/src/Lookup.js +4 -3
- package/dist/src/Number.d.ts +1 -1
- package/dist/src/Number.d.ts.map +1 -1
- package/dist/src/Number.js +1 -1
- package/dist/src/Object.d.ts +4 -4
- package/dist/src/Object.d.ts.map +1 -1
- package/dist/src/Object.js +5 -4
- package/dist/src/Option.d.ts +1 -2
- package/dist/src/Option.d.ts.map +1 -1
- package/dist/src/Option.js +1 -2
- package/dist/src/Platform.js +2 -0
- package/dist/src/Polyfills.js +4 -1
- package/dist/src/Random.d.ts +1 -1
- package/dist/src/Result.d.ts +49 -54
- package/dist/src/Result.d.ts.map +1 -1
- package/dist/src/Result.js +17 -22
- package/dist/src/Set.d.ts +6 -6
- package/dist/src/Set.js +2 -2
- package/dist/src/Sqlite.js +1 -1
- package/dist/src/String.js +3 -2
- package/dist/src/Task.d.ts +32 -32
- package/dist/src/Task.d.ts.map +1 -1
- package/dist/src/Task.js +20 -22
- package/dist/src/Test.d.ts +31 -3
- package/dist/src/Test.d.ts.map +1 -1
- package/dist/src/Test.js +46 -3
- package/dist/src/Time.d.ts +3 -11
- package/dist/src/Time.d.ts.map +1 -1
- package/dist/src/Time.js +10 -18
- package/dist/src/Type.d.ts +87 -85
- package/dist/src/Type.d.ts.map +1 -1
- package/dist/src/Type.js +70 -63
- package/dist/src/Types.d.ts +12 -12
- package/dist/src/Types.js +1 -1
- package/dist/src/WebSocket.d.ts +4 -7
- package/dist/src/WebSocket.d.ts.map +1 -1
- package/dist/src/Worker.d.ts +1 -1
- package/dist/src/Worker.js +7 -7
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/intl/_en.d.ts.map +1 -1
- package/dist/src/intl/_en.js +1 -1
- package/dist/src/intl/ar.d.ts.map +1 -1
- package/dist/src/intl/ar.js +1 -1
- package/dist/src/intl/bn.d.ts.map +1 -1
- package/dist/src/intl/bn.js +1 -1
- package/dist/src/intl/ca.d.ts.map +1 -1
- package/dist/src/intl/ca.js +1 -1
- package/dist/src/intl/cs.d.ts.map +1 -1
- package/dist/src/intl/cs.js +1 -1
- package/dist/src/intl/da.d.ts.map +1 -1
- package/dist/src/intl/da.js +1 -1
- package/dist/src/intl/de.d.ts.map +1 -1
- package/dist/src/intl/de.js +1 -1
- package/dist/src/intl/el.d.ts.map +1 -1
- package/dist/src/intl/el.js +1 -1
- package/dist/src/intl/es.d.ts.map +1 -1
- package/dist/src/intl/es.js +1 -1
- package/dist/src/intl/fa.d.ts.map +1 -1
- package/dist/src/intl/fa.js +1 -1
- package/dist/src/intl/fi.d.ts.map +1 -1
- package/dist/src/intl/fi.js +1 -1
- package/dist/src/intl/fil.d.ts.map +1 -1
- package/dist/src/intl/fil.js +1 -1
- package/dist/src/intl/fr.d.ts.map +1 -1
- package/dist/src/intl/fr.js +1 -1
- package/dist/src/intl/he.d.ts.map +1 -1
- package/dist/src/intl/he.js +1 -1
- package/dist/src/intl/hi.d.ts.map +1 -1
- package/dist/src/intl/hi.js +1 -1
- package/dist/src/intl/hr.d.ts.map +1 -1
- package/dist/src/intl/hr.js +1 -1
- package/dist/src/intl/hu.d.ts.map +1 -1
- package/dist/src/intl/hu.js +1 -1
- package/dist/src/intl/id.d.ts.map +1 -1
- package/dist/src/intl/id.js +1 -1
- package/dist/src/intl/it.d.ts.map +1 -1
- package/dist/src/intl/it.js +1 -1
- package/dist/src/intl/ja.d.ts.map +1 -1
- package/dist/src/intl/ja.js +1 -1
- package/dist/src/intl/ko.d.ts.map +1 -1
- package/dist/src/intl/ko.js +1 -1
- package/dist/src/intl/ml.d.ts.map +1 -1
- package/dist/src/intl/ml.js +1 -1
- package/dist/src/intl/mr.d.ts.map +1 -1
- package/dist/src/intl/mr.js +1 -1
- package/dist/src/intl/ms.d.ts.map +1 -1
- package/dist/src/intl/ms.js +1 -1
- package/dist/src/intl/nb.d.ts.map +1 -1
- package/dist/src/intl/nb.js +1 -1
- package/dist/src/intl/nl.d.ts.map +1 -1
- package/dist/src/intl/nl.js +1 -1
- package/dist/src/intl/pa.d.ts.map +1 -1
- package/dist/src/intl/pa.js +1 -1
- package/dist/src/intl/pl.d.ts.map +1 -1
- package/dist/src/intl/pl.js +1 -1
- package/dist/src/intl/pt-BR.d.ts.map +1 -1
- package/dist/src/intl/pt-BR.js +1 -1
- package/dist/src/intl/pt.d.ts.map +1 -1
- package/dist/src/intl/pt.js +1 -1
- package/dist/src/intl/ro.d.ts.map +1 -1
- package/dist/src/intl/ro.js +1 -1
- package/dist/src/intl/sk.d.ts.map +1 -1
- package/dist/src/intl/sk.js +1 -1
- package/dist/src/intl/sl.d.ts.map +1 -1
- package/dist/src/intl/sl.js +1 -1
- package/dist/src/intl/sv.d.ts.map +1 -1
- package/dist/src/intl/sv.js +1 -1
- package/dist/src/intl/sw.d.ts.map +1 -1
- package/dist/src/intl/sw.js +1 -1
- package/dist/src/intl/ta.d.ts.map +1 -1
- package/dist/src/intl/ta.js +1 -1
- package/dist/src/intl/te.d.ts.map +1 -1
- package/dist/src/intl/te.js +1 -1
- package/dist/src/intl/th.d.ts.map +1 -1
- package/dist/src/intl/th.js +1 -1
- package/dist/src/intl/tr.d.ts.map +1 -1
- package/dist/src/intl/tr.js +1 -1
- package/dist/src/intl/uk.d.ts.map +1 -1
- package/dist/src/intl/uk.js +1 -1
- package/dist/src/intl/ur.d.ts.map +1 -1
- package/dist/src/intl/ur.js +1 -1
- package/dist/src/intl/vi.d.ts.map +1 -1
- package/dist/src/intl/vi.js +1 -1
- package/dist/src/intl/zh-CN.d.ts.map +1 -1
- package/dist/src/intl/zh-CN.js +1 -1
- package/dist/src/intl/zh-TW.d.ts.map +1 -1
- package/dist/src/intl/zh-TW.js +1 -1
- package/dist/src/local-first/Evolu.d.ts +12 -12
- package/dist/src/local-first/Evolu.d.ts.map +1 -1
- package/dist/src/local-first/Evolu.js +2 -2
- package/dist/src/local-first/Protocol.d.ts +14 -76
- package/dist/src/local-first/Protocol.d.ts.map +1 -1
- package/dist/src/local-first/Protocol.js +29 -206
- package/dist/src/local-first/Query.d.ts +11 -11
- package/dist/src/local-first/Query.js +6 -6
- package/dist/src/local-first/Relay.d.ts +2 -2
- package/dist/src/local-first/Schema.d.ts +3 -5
- package/dist/src/local-first/Schema.d.ts.map +1 -1
- package/dist/src/local-first/Schema.js +2 -4
- package/dist/src/local-first/Shared.d.ts.map +1 -1
- package/dist/src/local-first/Shared.js +5 -5
- package/dist/src/local-first/Storage.js +4 -4
- package/dist/src/local-first/Timestamp.d.ts +9 -0
- package/dist/src/local-first/Timestamp.d.ts.map +1 -1
- package/dist/src/local-first/Timestamp.js +13 -10
- package/package.json +7 -4
- package/src/Array.test.ts +809 -0
- package/src/Array.ts +21 -21
- package/src/Assert.test.ts +1181 -0
- package/src/Assert.ts +971 -227
- package/src/BigInt.test.ts +28 -0
- package/src/Binary.test.ts +1128 -0
- package/src/{Buffer.ts → Binary.ts} +273 -46
- package/src/Brand.test.ts +90 -0
- package/src/Cache.test.ts +183 -0
- package/src/Callbacks.test.ts +66 -0
- package/src/Console.test.ts +809 -0
- package/src/Console.ts +9 -17
- package/src/Crypto.test.ts +138 -0
- package/src/Crypto.ts +5 -5
- package/src/Eq.test.ts +333 -0
- package/src/Eq.ts +110 -176
- package/src/Error.test.ts +118 -0
- package/src/Function.test.ts +204 -0
- package/src/Function.ts +10 -15
- package/src/Http.test.ts +816 -0
- package/src/Http.ts +6 -7
- package/src/LeakDetector.test.ts +210 -0
- package/src/LeakDetector.ts +1 -0
- package/src/LockManager.ts +2 -2
- package/src/Lookup.test.ts +418 -0
- package/src/Lookup.ts +4 -3
- package/src/Microtask.test.ts +140 -0
- package/src/Number.test.ts +218 -0
- package/src/Number.ts +2 -2
- package/src/Object.test.ts +293 -0
- package/src/Object.ts +5 -4
- package/src/Option.test.ts +104 -0
- package/src/Option.ts +1 -2
- package/src/Order.test.ts +56 -0
- package/src/Platform.ts +2 -0
- package/src/Polyfills.ts +3 -4
- package/src/Random.test.ts +89 -0
- package/src/Random.ts +1 -1
- package/src/Ref.test.ts +139 -0
- package/src/RefCount.test.ts +184 -0
- package/src/Relation.test.ts +505 -0
- package/src/Resource.test.ts +4623 -0
- package/src/Result.test.ts +1829 -0
- package/src/Result.ts +49 -54
- package/src/Schedule.test.ts +1554 -0
- package/src/Set.test.ts +279 -0
- package/src/Set.ts +6 -6
- package/src/Sqlite.ts +1 -1
- package/src/Store.test.ts +288 -0
- package/src/String.test.ts +54 -0
- package/src/String.ts +3 -3
- package/src/Task.test.ts +10820 -0
- package/src/Task.ts +38 -43
- package/src/Test.test.ts +88 -0
- package/src/Test.ts +49 -3
- package/src/Time.test.ts +926 -0
- package/src/Time.ts +13 -21
- package/src/Type.base64.test.ts +88 -0
- package/src/Type.test.ts +20465 -0
- package/src/Type.ts +114 -111
- package/src/Types.test.ts +324 -0
- package/src/Types.ts +13 -13
- package/src/WebSocket.ts +4 -7
- package/src/Worker.test.ts +755 -0
- package/src/Worker.ts +13 -18
- package/src/index.ts +1 -1
- package/src/intl/_en.ts +1 -1
- package/src/intl/ar.ts +1 -1
- package/src/intl/bn.ts +1 -1
- package/src/intl/ca.ts +1 -1
- package/src/intl/cs.ts +1 -1
- package/src/intl/da.ts +1 -1
- package/src/intl/de.ts +1 -1
- package/src/intl/el.ts +1 -1
- package/src/intl/es.ts +1 -1
- package/src/intl/fa.ts +1 -1
- package/src/intl/fi.ts +1 -1
- package/src/intl/fil.ts +1 -1
- package/src/intl/fr.ts +1 -1
- package/src/intl/he.ts +1 -1
- package/src/intl/hi.ts +1 -1
- package/src/intl/hr.ts +1 -1
- package/src/intl/hu.ts +1 -1
- package/src/intl/id.ts +1 -1
- package/src/intl/intl.test.ts +3106 -0
- package/src/intl/it.ts +1 -1
- package/src/intl/ja.ts +1 -1
- package/src/intl/ko.ts +1 -1
- package/src/intl/ml.ts +1 -1
- package/src/intl/mr.ts +1 -1
- package/src/intl/ms.ts +1 -1
- package/src/intl/nb.ts +1 -1
- package/src/intl/nl.ts +1 -1
- package/src/intl/pa.ts +1 -1
- package/src/intl/pl.ts +1 -1
- package/src/intl/pt-BR.ts +1 -1
- package/src/intl/pt.ts +1 -1
- package/src/intl/ro.ts +1 -1
- package/src/intl/sk.ts +1 -1
- package/src/intl/sl.ts +1 -1
- package/src/intl/sv.ts +1 -1
- package/src/intl/sw.ts +1 -1
- package/src/intl/ta.ts +1 -1
- package/src/intl/te.ts +1 -1
- package/src/intl/th.ts +1 -1
- package/src/intl/tr.ts +1 -1
- package/src/intl/uk.ts +1 -1
- package/src/intl/ur.ts +1 -1
- package/src/intl/vi.ts +1 -1
- package/src/intl/zh-CN.ts +1 -1
- package/src/intl/zh-TW.ts +1 -1
- package/src/local-first/Evolu.test.ts +1921 -0
- package/src/local-first/Evolu.ts +18 -14
- package/src/local-first/Owner.test.ts +83 -0
- package/src/local-first/Protocol.test.ts +1037 -0
- package/src/local-first/Protocol.ts +58 -261
- package/src/local-first/Query.test.ts +349 -0
- package/src/local-first/Query.ts +11 -11
- package/src/local-first/Relay.ts +2 -2
- package/src/local-first/Schema.ts +3 -5
- package/src/local-first/Shared.test.ts +1828 -0
- package/src/local-first/Shared.ts +9 -8
- package/src/local-first/Storage.ts +4 -4
- package/src/local-first/Timestamp.test.ts +374 -0
- package/src/local-first/Timestamp.ts +22 -10
- package/dist/src/Buffer.d.ts.map +0 -1
|
@@ -10,8 +10,10 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module
|
|
12
12
|
*/
|
|
13
|
-
import
|
|
14
|
-
|
|
13
|
+
import { bytesToUtf8, utf8ToBytes } from "@noble/ciphers/utils.js";
|
|
14
|
+
import type { FiniteNumber, JsonValue, NonNegativeInt, PositiveInt } from "./Type.ts";
|
|
15
|
+
export { bytesToHex, concatBytes, hexToBytes } from "@noble/ciphers/utils.js";
|
|
16
|
+
export { bytesToUtf8, utf8ToBytes };
|
|
15
17
|
/**
|
|
16
18
|
* Custom error for {@link Buffer}-related failures like premature end of data.
|
|
17
19
|
* Provides better stack traces for debugging binary protocol issues.
|
|
@@ -39,9 +41,9 @@ export declare class BufferError extends Error {
|
|
|
39
41
|
*
|
|
40
42
|
* ```ts
|
|
41
43
|
* import {
|
|
42
|
-
* assert,
|
|
43
44
|
* assertEqual,
|
|
44
45
|
* assertErr,
|
|
46
|
+
* assertInstanceOf,
|
|
45
47
|
* createBuffer,
|
|
46
48
|
* createIdFromString,
|
|
47
49
|
* IdBytes,
|
|
@@ -50,11 +52,9 @@ export declare class BufferError extends Error {
|
|
|
50
52
|
* idToIdBytes,
|
|
51
53
|
* NonNegativeInt,
|
|
52
54
|
* trySync,
|
|
53
|
-
* } from "@evolu/common";
|
|
54
|
-
* import {
|
|
55
55
|
* decodeNonNegativeInt,
|
|
56
56
|
* encodeNonNegativeInt,
|
|
57
|
-
* } from "@evolu/common
|
|
57
|
+
* } from "@evolu/common";
|
|
58
58
|
*
|
|
59
59
|
* const buffer = createBuffer();
|
|
60
60
|
* const id = createIdFromString("buffer-example");
|
|
@@ -69,11 +69,8 @@ export declare class BufferError extends Error {
|
|
|
69
69
|
* assertEqual(decodedId, id);
|
|
70
70
|
* const result = trySync(() => decodeNonNegativeInt(decoder));
|
|
71
71
|
* assertErr(result);
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* result.error.message === "Buffer parse ended prematurely",
|
|
75
|
-
* "Expected the premature-buffer-end error.",
|
|
76
|
-
* );
|
|
72
|
+
* assertInstanceOf(result.error, Error);
|
|
73
|
+
* assertEqual(result.error.message, "Buffer parse ended prematurely");
|
|
77
74
|
* ```
|
|
78
75
|
*
|
|
79
76
|
* For more on exponential growth, see:
|
|
@@ -121,6 +118,82 @@ export interface Buffer {
|
|
|
121
118
|
}
|
|
122
119
|
/** Creates a {@link Buffer} for efficient byte operations. */
|
|
123
120
|
export declare const createBuffer: (arrayLike?: Uint8Array | ArrayLike<number>) => Buffer;
|
|
121
|
+
/**
|
|
122
|
+
* Evolu uses MessagePack to handle finite numbers except for NonNegativeInt.
|
|
123
|
+
* For NonNegativeInt, Evolu provides more efficient encoding.
|
|
124
|
+
*/
|
|
125
|
+
export declare const encodeNumber: (buffer: Buffer, number: FiniteNumber) => void;
|
|
126
|
+
export declare const decodeNumber: (buffer: Buffer) => FiniteNumber;
|
|
127
|
+
/**
|
|
128
|
+
* Encodes an array of boolean flags into a single byte.
|
|
129
|
+
*
|
|
130
|
+
* Each element in the array corresponds to a bit (0-7). Array can have 0-8
|
|
131
|
+
* elements.
|
|
132
|
+
*
|
|
133
|
+
* ### Example
|
|
134
|
+
*
|
|
135
|
+
* ```ts
|
|
136
|
+
* import { assertEqual, createBuffer, encodeFlags } from "@evolu/common";
|
|
137
|
+
*
|
|
138
|
+
* const buffer = createBuffer();
|
|
139
|
+
* encodeFlags(buffer, [true, false, true]);
|
|
140
|
+
*
|
|
141
|
+
* assertEqual(buffer.unwrap(), new Uint8Array([0b101]));
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare const encodeFlags: (buffer: Buffer, flags: ReadonlyArray<boolean>) => void;
|
|
145
|
+
/**
|
|
146
|
+
* Decodes a byte into an array of boolean flags.
|
|
147
|
+
*
|
|
148
|
+
* ### Example
|
|
149
|
+
*
|
|
150
|
+
* ```ts
|
|
151
|
+
* import {
|
|
152
|
+
* assertEqual,
|
|
153
|
+
* createBuffer,
|
|
154
|
+
* decodeFlags,
|
|
155
|
+
* PositiveInt,
|
|
156
|
+
* } from "@evolu/common";
|
|
157
|
+
*
|
|
158
|
+
* const buffer = createBuffer([0b101]);
|
|
159
|
+
* const flags = decodeFlags(buffer, PositiveInt.orThrow(3));
|
|
160
|
+
*
|
|
161
|
+
* assertEqual(flags, [true, false, true]);
|
|
162
|
+
* assertEqual(buffer.getLength(), 0);
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export declare const decodeFlags: (buffer: Buffer, count: PositiveInt) => ReadonlyArray<boolean>;
|
|
166
|
+
/**
|
|
167
|
+
* Encodes a non-negative integer into a variable-length integer format. It's
|
|
168
|
+
* more efficient than encoding via {@link encodeNumber}.
|
|
169
|
+
*
|
|
170
|
+
* https://en.wikipedia.org/wiki/Variable-length_quantity
|
|
171
|
+
*/
|
|
172
|
+
export declare const encodeNonNegativeInt: (buffer: Buffer, value: NonNegativeInt) => void;
|
|
173
|
+
/**
|
|
174
|
+
* Decodes a non-negative integer from a variable-length integer format.
|
|
175
|
+
*
|
|
176
|
+
* https://en.wikipedia.org/wiki/Variable-length_quantity
|
|
177
|
+
*/
|
|
178
|
+
export declare const decodeNonNegativeInt: (buffer: Buffer) => NonNegativeInt;
|
|
179
|
+
/** Encodes the length of an array-like value. */
|
|
180
|
+
export declare const encodeLength: (buffer: Buffer, value: ArrayLike<unknown>) => void;
|
|
181
|
+
/** Decodes an array-like value length. */
|
|
182
|
+
export declare const decodeLength: typeof decodeNonNegativeInt;
|
|
183
|
+
/** Encodes a length-prefixed UTF-8 string. */
|
|
184
|
+
export declare const encodeString: (buffer: Buffer, value: string) => void;
|
|
185
|
+
/** Decodes a length-prefixed UTF-8 string. */
|
|
186
|
+
export declare const decodeString: (buffer: Buffer) => string;
|
|
187
|
+
/** Incrementally encodes consecutive equal values using run-length encoding. */
|
|
188
|
+
export interface RunLengthEncoder<T> {
|
|
189
|
+
readonly add: (value: T) => void;
|
|
190
|
+
readonly getLength: () => NonNegativeInt;
|
|
191
|
+
readonly unwrap: () => Uint8Array;
|
|
192
|
+
}
|
|
193
|
+
/** Creates an incremental run-length encoder. */
|
|
194
|
+
export declare const createRunLengthEncoder: <T>(encodeValue: (buffer: Buffer, value: T) => void) => RunLengthEncoder<T>;
|
|
195
|
+
/** Decodes a run-length encoded sequence. */
|
|
196
|
+
export declare const decodeRle: <T>(buffer: Buffer, length: NonNegativeInt, decodeValue: () => T) => ReadonlyArray<T>;
|
|
124
197
|
/**
|
|
125
198
|
* Encodes a {@link JsonValue} using the MessagePack format.
|
|
126
199
|
*
|
|
@@ -178,4 +251,4 @@ export declare const encodeJsonValue: (buffer: Buffer, value: JsonValue) => void
|
|
|
178
251
|
* ```
|
|
179
252
|
*/
|
|
180
253
|
export declare const decodeJsonValue: (buffer: Buffer) => JsonValue;
|
|
181
|
-
//# sourceMappingURL=
|
|
254
|
+
//# sourceMappingURL=Binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Binary.d.ts","sourceRoot":"","sources":["../../src/Binary.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
import { bytesToUtf8, utf8ToBytes } from "@noble/ciphers/utils.js";
|
|
14
|
+
export { bytesToHex, concatBytes, hexToBytes } from "@noble/ciphers/utils.js";
|
|
15
|
+
export { bytesToUtf8, utf8ToBytes };
|
|
14
16
|
/**
|
|
15
17
|
* Custom error for {@link Buffer}-related failures like premature end of data.
|
|
16
18
|
* Provides better stack traces for debugging binary protocol issues.
|
|
@@ -26,9 +28,7 @@ export class BufferError extends Error {
|
|
|
26
28
|
export const createBuffer = (arrayLike) => {
|
|
27
29
|
const initialLength = arrayLike?.length ?? 0;
|
|
28
30
|
assertNonNegativeInt(initialLength, "arrayLike.length");
|
|
29
|
-
let value = arrayLike
|
|
30
|
-
? new globalThis.Uint8Array(arrayLike)
|
|
31
|
-
: new globalThis.Uint8Array(512);
|
|
31
|
+
let value = arrayLike ? new Uint8Array(arrayLike) : new Uint8Array(512);
|
|
32
32
|
let length = initialLength;
|
|
33
33
|
const buffer = {
|
|
34
34
|
getCapacity: () => value.length,
|
|
@@ -41,7 +41,7 @@ export const createBuffer = (arrayLike) => {
|
|
|
41
41
|
if (value.length < targetSize) {
|
|
42
42
|
const oldValue = value;
|
|
43
43
|
const newCapacity = Math.max(value.length * 2, targetSize);
|
|
44
|
-
value = new
|
|
44
|
+
value = new Uint8Array(newCapacity);
|
|
45
45
|
value.set(oldValue);
|
|
46
46
|
}
|
|
47
47
|
value.set(arg, length);
|
|
@@ -74,23 +74,207 @@ export const createBuffer = (arrayLike) => {
|
|
|
74
74
|
};
|
|
75
75
|
return buffer;
|
|
76
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* Evolu uses MessagePack to handle finite numbers except for NonNegativeInt.
|
|
79
|
+
* For NonNegativeInt, Evolu provides more efficient encoding.
|
|
80
|
+
*/
|
|
81
|
+
export const encodeNumber = (buffer, number) => {
|
|
82
|
+
encodeJsonValue(buffer, number);
|
|
83
|
+
};
|
|
84
|
+
export const decodeNumber = (buffer) => {
|
|
85
|
+
const value = decodeJsonValue(buffer);
|
|
86
|
+
if (typeof value !== "number") {
|
|
87
|
+
throw new BufferError("Expected an encoded number.");
|
|
88
|
+
}
|
|
89
|
+
return value;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Encodes an array of boolean flags into a single byte.
|
|
93
|
+
*
|
|
94
|
+
* Each element in the array corresponds to a bit (0-7). Array can have 0-8
|
|
95
|
+
* elements.
|
|
96
|
+
*
|
|
97
|
+
* ### Example
|
|
98
|
+
*
|
|
99
|
+
* ```ts
|
|
100
|
+
* import { assertEqual, createBuffer, encodeFlags } from "@evolu/common";
|
|
101
|
+
*
|
|
102
|
+
* const buffer = createBuffer();
|
|
103
|
+
* encodeFlags(buffer, [true, false, true]);
|
|
104
|
+
*
|
|
105
|
+
* assertEqual(buffer.unwrap(), new Uint8Array([0b101]));
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export const encodeFlags = (buffer, flags) => {
|
|
109
|
+
let byte = 0;
|
|
110
|
+
for (let i = 0; i < flags.length && i < 8; i++) {
|
|
111
|
+
if (flags[i]) {
|
|
112
|
+
byte |= 1 << i;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
buffer.extend([byte]);
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Decodes a byte into an array of boolean flags.
|
|
119
|
+
*
|
|
120
|
+
* ### Example
|
|
121
|
+
*
|
|
122
|
+
* ```ts
|
|
123
|
+
* import {
|
|
124
|
+
* assertEqual,
|
|
125
|
+
* createBuffer,
|
|
126
|
+
* decodeFlags,
|
|
127
|
+
* PositiveInt,
|
|
128
|
+
* } from "@evolu/common";
|
|
129
|
+
*
|
|
130
|
+
* const buffer = createBuffer([0b101]);
|
|
131
|
+
* const flags = decodeFlags(buffer, PositiveInt.orThrow(3));
|
|
132
|
+
*
|
|
133
|
+
* assertEqual(flags, [true, false, true]);
|
|
134
|
+
* assertEqual(buffer.getLength(), 0);
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export const decodeFlags = (buffer, count) => {
|
|
138
|
+
const byte = buffer.shift();
|
|
139
|
+
const length = Math.min(count, 8);
|
|
140
|
+
// oxlint-disable-next-line unicorn/no-new-array -- Preallocation is intentional in this decoding hot path.
|
|
141
|
+
const flags = new Array(length);
|
|
142
|
+
for (let i = 0; i < length; i++) {
|
|
143
|
+
flags[i] = (byte & (1 << i)) !== 0;
|
|
144
|
+
}
|
|
145
|
+
return flags;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Encodes a non-negative integer into a variable-length integer format. It's
|
|
149
|
+
* more efficient than encoding via {@link encodeNumber}.
|
|
150
|
+
*
|
|
151
|
+
* https://en.wikipedia.org/wiki/Variable-length_quantity
|
|
152
|
+
*/
|
|
153
|
+
export const encodeNonNegativeInt = (buffer, value) => {
|
|
154
|
+
if (value === 0) {
|
|
155
|
+
buffer.extend([0]);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
let remaining = BigInt(value);
|
|
159
|
+
const bytes = [];
|
|
160
|
+
while (remaining !== 0n) {
|
|
161
|
+
const byte = Number(remaining & 127n);
|
|
162
|
+
bytes.push(byte);
|
|
163
|
+
remaining >>= 7n;
|
|
164
|
+
}
|
|
165
|
+
for (let i = 0; i < bytes.length - 1; i++) {
|
|
166
|
+
bytes[i] |= 128;
|
|
167
|
+
}
|
|
168
|
+
buffer.extend(bytes);
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Decodes a non-negative integer from a variable-length integer format.
|
|
172
|
+
*
|
|
173
|
+
* https://en.wikipedia.org/wiki/Variable-length_quantity
|
|
174
|
+
*/
|
|
175
|
+
export const decodeNonNegativeInt = (buffer) => {
|
|
176
|
+
let result = 0n;
|
|
177
|
+
let shift = 0n;
|
|
178
|
+
let byte = 0;
|
|
179
|
+
// 8 is the smallest required count
|
|
180
|
+
for (let byteCount = 0; byteCount < 8; byteCount++) {
|
|
181
|
+
byte = buffer.shift();
|
|
182
|
+
result |= BigInt(byte & 127) << shift;
|
|
183
|
+
if ((byte & 128) === 0)
|
|
184
|
+
break;
|
|
185
|
+
shift += 7n;
|
|
186
|
+
}
|
|
187
|
+
if ((byte & 128) !== 0) {
|
|
188
|
+
throw new BufferError("Variable-length quantity must terminate within 8 bytes.");
|
|
189
|
+
}
|
|
190
|
+
const value = Number(result);
|
|
191
|
+
assertNonNegativeInt(value, "Decoded integer");
|
|
192
|
+
return value;
|
|
193
|
+
};
|
|
194
|
+
/** Encodes the length of an array-like value. */
|
|
195
|
+
export const encodeLength = (buffer, value) => {
|
|
196
|
+
assertNonNegativeInt(value.length, "Array-like length");
|
|
197
|
+
encodeNonNegativeInt(buffer, value.length);
|
|
198
|
+
};
|
|
199
|
+
/** Decodes an array-like value length. */
|
|
200
|
+
export const decodeLength = decodeNonNegativeInt;
|
|
201
|
+
/** Encodes a length-prefixed UTF-8 string. */
|
|
202
|
+
export const encodeString = (buffer, value) => {
|
|
203
|
+
const bytes = utf8ToBytes(value);
|
|
204
|
+
encodeLength(buffer, bytes);
|
|
205
|
+
buffer.extend(bytes);
|
|
206
|
+
};
|
|
207
|
+
/** Decodes a length-prefixed UTF-8 string. */
|
|
208
|
+
export const decodeString = (buffer) => {
|
|
209
|
+
const length = decodeLength(buffer);
|
|
210
|
+
const bytes = buffer.shiftN(length);
|
|
211
|
+
return bytesToUtf8(bytes);
|
|
212
|
+
};
|
|
213
|
+
/** Creates an incremental run-length encoder. */
|
|
214
|
+
export const createRunLengthEncoder = (encodeValue) => {
|
|
215
|
+
const buffer = createBuffer();
|
|
216
|
+
let previousLength = 0;
|
|
217
|
+
let previousValue = null;
|
|
218
|
+
let runLength = 0;
|
|
219
|
+
return {
|
|
220
|
+
add: (value) => {
|
|
221
|
+
if (Object.is(value, previousValue)) {
|
|
222
|
+
runLength++;
|
|
223
|
+
buffer.truncate(previousLength);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
previousValue = value;
|
|
227
|
+
runLength = 1;
|
|
228
|
+
}
|
|
229
|
+
previousLength = buffer.getLength();
|
|
230
|
+
encodeValue(buffer, value);
|
|
231
|
+
encodeNonNegativeInt(buffer, runLength);
|
|
232
|
+
},
|
|
233
|
+
getLength: () => buffer.getLength(),
|
|
234
|
+
unwrap: () => buffer.unwrap(),
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
/** Decodes a run-length encoded sequence. */
|
|
238
|
+
export const decodeRle = (buffer, length, decodeValue) => {
|
|
239
|
+
// oxlint-disable-next-line unicorn/no-new-array -- Preallocation is intentional in this decoding hot path.
|
|
240
|
+
const values = new Array(length);
|
|
241
|
+
let index = 0;
|
|
242
|
+
while (index < length) {
|
|
243
|
+
const value = decodeValue();
|
|
244
|
+
const runLength = decodeNonNegativeInt(buffer);
|
|
245
|
+
// Prevent infinite loop on malformed input.
|
|
246
|
+
if (runLength === 0) {
|
|
247
|
+
throw new BufferError("Invalid RLE encoding: runLength must be positive");
|
|
248
|
+
}
|
|
249
|
+
const remaining = length - index;
|
|
250
|
+
// Prevent CPU/memory amplification via oversized runLength.
|
|
251
|
+
if (runLength > remaining) {
|
|
252
|
+
throw new BufferError(`Invalid RLE encoding: runLength ${runLength} exceeds remaining ${remaining}`);
|
|
253
|
+
}
|
|
254
|
+
for (let i = 0; i < runLength; i++) {
|
|
255
|
+
values[index] = value;
|
|
256
|
+
index++;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return values;
|
|
260
|
+
};
|
|
77
261
|
const jsonKeyCacheSize = 4096;
|
|
78
262
|
const maxCachedJsonKeyByteLength = 32;
|
|
79
263
|
const maxJsonNestingDepth = 1_000;
|
|
80
|
-
let jsonEncoderTarget = new
|
|
81
|
-
let jsonEncoderTargetView = new
|
|
264
|
+
let jsonEncoderTarget = new Uint8Array(8192);
|
|
265
|
+
let jsonEncoderTargetView = new DataView(jsonEncoderTarget.buffer);
|
|
82
266
|
let jsonEncoderPosition = 0;
|
|
83
267
|
let jsonEncoderDepth = 0;
|
|
84
268
|
let jsonEncoderIsActive = false;
|
|
85
|
-
const emptyJsonDecoderSource = new
|
|
86
|
-
const emptyJsonDecoderView = new
|
|
269
|
+
const emptyJsonDecoderSource = new Uint8Array(0);
|
|
270
|
+
const emptyJsonDecoderView = new DataView(emptyJsonDecoderSource.buffer);
|
|
87
271
|
let jsonDecoderSource = emptyJsonDecoderSource;
|
|
88
272
|
let jsonDecoderView = emptyJsonDecoderView;
|
|
89
273
|
let jsonDecoderPosition = 0;
|
|
90
274
|
let jsonDecoderDepth = 0;
|
|
91
|
-
const jsonStringFromCharCode =
|
|
275
|
+
const jsonStringFromCharCode = String.fromCharCode;
|
|
92
276
|
// Cache only short keys and use a fixed table to bound retained memory.
|
|
93
|
-
const jsonKeyCache =
|
|
277
|
+
const jsonKeyCache = Array.from({ length: jsonKeyCacheSize }, () => undefined);
|
|
94
278
|
/**
|
|
95
279
|
* Encodes a {@link JsonValue} using the MessagePack format.
|
|
96
280
|
*
|
|
@@ -165,7 +349,7 @@ export const encodeJsonValue = (buffer, value) => {
|
|
|
165
349
|
export const decodeJsonValue = (buffer) => {
|
|
166
350
|
const source = buffer.unwrap();
|
|
167
351
|
jsonDecoderSource = source;
|
|
168
|
-
jsonDecoderView = new
|
|
352
|
+
jsonDecoderView = new DataView(source.buffer, source.byteOffset, source.byteLength);
|
|
169
353
|
jsonDecoderPosition = 0;
|
|
170
354
|
try {
|
|
171
355
|
const value = decodeJsonValueFromSource();
|
|
@@ -195,7 +379,7 @@ const encodeJsonValueToTarget = (value) => {
|
|
|
195
379
|
encodeJsonStringToTarget(value);
|
|
196
380
|
return;
|
|
197
381
|
case "number": {
|
|
198
|
-
if (
|
|
382
|
+
if (Object.is(value, -0)) {
|
|
199
383
|
ensureJsonEncoderCapacity(9);
|
|
200
384
|
jsonEncoderTarget[jsonEncoderPosition++] = 0xcb;
|
|
201
385
|
jsonEncoderTargetView.setFloat64(jsonEncoderPosition, value);
|
|
@@ -225,9 +409,7 @@ const encodeJsonValueToTarget = (value) => {
|
|
|
225
409
|
}
|
|
226
410
|
return;
|
|
227
411
|
}
|
|
228
|
-
if (
|
|
229
|
-
value >= -0x80000000 &&
|
|
230
|
-
value < 0) {
|
|
412
|
+
if (Number.isInteger(value) && value >= -0x80000000 && value < 0) {
|
|
231
413
|
if (value >= -0x20) {
|
|
232
414
|
writeJsonEncoderByte(0x100 + value);
|
|
233
415
|
}
|
|
@@ -264,7 +446,7 @@ const encodeJsonValueToTarget = (value) => {
|
|
|
264
446
|
throw new BufferError(`JSON nesting exceeds the maximum depth of ${maxJsonNestingDepth}.`);
|
|
265
447
|
}
|
|
266
448
|
jsonEncoderDepth++;
|
|
267
|
-
if (
|
|
449
|
+
if (Array.isArray(value)) {
|
|
268
450
|
const array = value;
|
|
269
451
|
const length = array.length;
|
|
270
452
|
writeJsonCollectionHeader(length, 0x90, 0xdc, 0xdd);
|
|
@@ -274,7 +456,7 @@ const encodeJsonValueToTarget = (value) => {
|
|
|
274
456
|
return;
|
|
275
457
|
}
|
|
276
458
|
const object = value;
|
|
277
|
-
const keys =
|
|
459
|
+
const keys = Object.keys(object);
|
|
278
460
|
writeJsonCollectionHeader(keys.length, 0x80, 0xde, 0xdf);
|
|
279
461
|
for (const key of keys) {
|
|
280
462
|
encodeJsonStringToTarget(key);
|
|
@@ -380,12 +562,12 @@ const ensureJsonEncoderCapacity = (additionalLength) => {
|
|
|
380
562
|
assertNonNegativeInt(requiredLength, "Encoded JSON value length");
|
|
381
563
|
if (requiredLength <= jsonEncoderTarget.length)
|
|
382
564
|
return;
|
|
383
|
-
const newCapacity =
|
|
565
|
+
const newCapacity = Math.max(jsonEncoderTarget.length * 2, requiredLength);
|
|
384
566
|
assertNonNegativeInt(newCapacity, "JSON encoder capacity");
|
|
385
567
|
const oldTarget = jsonEncoderTarget;
|
|
386
|
-
jsonEncoderTarget = new
|
|
568
|
+
jsonEncoderTarget = new Uint8Array(newCapacity);
|
|
387
569
|
jsonEncoderTarget.set(oldTarget.subarray(0, jsonEncoderPosition));
|
|
388
|
-
jsonEncoderTargetView = new
|
|
570
|
+
jsonEncoderTargetView = new DataView(jsonEncoderTarget.buffer);
|
|
389
571
|
};
|
|
390
572
|
const assertMessagePackLength = (length, name) => {
|
|
391
573
|
if (length > 0xffffffff) {
|
|
@@ -461,7 +643,7 @@ const decodeJsonFloat = (byteLength) => {
|
|
|
461
643
|
? jsonDecoderView.getFloat32(jsonDecoderPosition)
|
|
462
644
|
: jsonDecoderView.getFloat64(jsonDecoderPosition);
|
|
463
645
|
jsonDecoderPosition += byteLength;
|
|
464
|
-
if (!
|
|
646
|
+
if (!Number.isFinite(value)) {
|
|
465
647
|
throw new BufferError("A decoded JSON number must be finite.");
|
|
466
648
|
}
|
|
467
649
|
return value;
|
|
@@ -685,7 +867,7 @@ const decodeJsonMap = (length) => {
|
|
|
685
867
|
}
|
|
686
868
|
const entryValue = decodeJsonValueFromSource();
|
|
687
869
|
if (key === "__proto__") {
|
|
688
|
-
|
|
870
|
+
Object.defineProperty(value, key, {
|
|
689
871
|
value: entryValue,
|
|
690
872
|
configurable: true,
|
|
691
873
|
enumerable: true,
|
|
@@ -765,7 +947,7 @@ const assertJsonDecoderHasRemainingBytes = (requiredBytes) => {
|
|
|
765
947
|
}
|
|
766
948
|
};
|
|
767
949
|
const assertNonNegativeInt = (value, name) => {
|
|
768
|
-
if (!
|
|
950
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
769
951
|
throw new BufferError(`${name} must be a non-negative safe integer.`);
|
|
770
952
|
}
|
|
771
953
|
};
|
package/dist/src/Console.d.ts
CHANGED
|
@@ -326,7 +326,7 @@ export declare const createConsole: ({ name, level, output, path, formatter, }?:
|
|
|
326
326
|
*
|
|
327
327
|
* const output = createNativeConsoleOutput();
|
|
328
328
|
*
|
|
329
|
-
* assertType<
|
|
329
|
+
* assertType<typeof output, ConsoleOutput>();
|
|
330
330
|
* assertEqual(typeof output.write, "function");
|
|
331
331
|
* ```
|
|
332
332
|
*/
|
|
@@ -371,15 +371,7 @@ export declare const createNativeConsoleOutput: () => ConsoleOutput;
|
|
|
371
371
|
* assertType(Data, nested);
|
|
372
372
|
* assertEqual(nested, ["+1.500s [relay] [db]", "opened"]);
|
|
373
373
|
*
|
|
374
|
-
* const localTimestamp = new
|
|
375
|
-
* 2026,
|
|
376
|
-
* 0,
|
|
377
|
-
* 28,
|
|
378
|
-
* 14,
|
|
379
|
-
* 30,
|
|
380
|
-
* 15,
|
|
381
|
-
* 123,
|
|
382
|
-
* ).getTime();
|
|
374
|
+
* const localTimestamp = new Date(2026, 0, 28, 14, 30, 15, 123).getTime();
|
|
383
375
|
* const formatAbsolute = createConsoleFormatter({
|
|
384
376
|
* time: testCreateTime({ startAt: Millis.orThrow(localTimestamp) }),
|
|
385
377
|
* })({ timestampFormat: "absolute" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../src/Console.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../src/Console.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Console.js
CHANGED
|
@@ -71,14 +71,16 @@ export const createConsole = ({ name = "", level = "log", output = createNativeC
|
|
|
71
71
|
*
|
|
72
72
|
* const output = createNativeConsoleOutput();
|
|
73
73
|
*
|
|
74
|
-
* assertType<
|
|
74
|
+
* assertType<typeof output, ConsoleOutput>();
|
|
75
75
|
* assertEqual(typeof output.write, "function");
|
|
76
76
|
* ```
|
|
77
77
|
*/
|
|
78
78
|
export const createNativeConsoleOutput = () => ({
|
|
79
79
|
write: (entry, formatter) => {
|
|
80
80
|
const args = formatter ? formatter(entry) : entry.args;
|
|
81
|
-
|
|
81
|
+
// oxlint-disable-next-line evolu/no-unnecessary-global-this -- Write to the global object console even if a realm lexical binding shadows it.
|
|
82
|
+
const nativeConsole = globalThis.console;
|
|
83
|
+
nativeConsole[entry.method](...args);
|
|
82
84
|
},
|
|
83
85
|
});
|
|
84
86
|
/**
|
|
@@ -121,15 +123,7 @@ export const createNativeConsoleOutput = () => ({
|
|
|
121
123
|
* assertType(Data, nested);
|
|
122
124
|
* assertEqual(nested, ["+1.500s [relay] [db]", "opened"]);
|
|
123
125
|
*
|
|
124
|
-
* const localTimestamp = new
|
|
125
|
-
* 2026,
|
|
126
|
-
* 0,
|
|
127
|
-
* 28,
|
|
128
|
-
* 14,
|
|
129
|
-
* 30,
|
|
130
|
-
* 15,
|
|
131
|
-
* 123,
|
|
132
|
-
* ).getTime();
|
|
126
|
+
* const localTimestamp = new Date(2026, 0, 28, 14, 30, 15, 123).getTime();
|
|
133
127
|
* const formatAbsolute = createConsoleFormatter({
|
|
134
128
|
* time: testCreateTime({ startAt: Millis.orThrow(localTimestamp) }),
|
|
135
129
|
* })({ timestampFormat: "absolute" });
|
|
@@ -156,7 +150,7 @@ export const createConsoleFormatter = ({ time = createTime() } = {}) => (config
|
|
|
156
150
|
timestamp = formatMillisAsClockTime(now);
|
|
157
151
|
break;
|
|
158
152
|
case "iso":
|
|
159
|
-
timestamp = new
|
|
153
|
+
timestamp = new Date(now).toISOString();
|
|
160
154
|
break;
|
|
161
155
|
}
|
|
162
156
|
const path = entry.path.length > 0 ? entry.path.map((p) => `[${p}]`).join(" ") : "";
|
package/dist/src/Crypto.d.ts
CHANGED
|
@@ -49,10 +49,10 @@ export interface RandomBytes {
|
|
|
49
49
|
* const seed = randomBytes.create(64);
|
|
50
50
|
* const custom = randomBytes.create(48);
|
|
51
51
|
*
|
|
52
|
-
* assertType<
|
|
53
|
-
* assertType<
|
|
54
|
-
* assertType<
|
|
55
|
-
* assertType<
|
|
52
|
+
* assertType<typeof nonce16, Entropy16>();
|
|
53
|
+
* assertType<typeof nonce24, Entropy24>();
|
|
54
|
+
* assertType<typeof key, Entropy32>();
|
|
55
|
+
* assertType<typeof seed, Entropy64>();
|
|
56
56
|
* assertEqual(custom.length, 48);
|
|
57
57
|
* ```
|
|
58
58
|
*/
|
|
@@ -127,7 +127,7 @@ export type XChaCha20Poly1305Ciphertext = typeof XChaCha20Poly1305Ciphertext.Out
|
|
|
127
127
|
* randomBytes: createRandomBytes(),
|
|
128
128
|
* })(plaintext, encryptionKey);
|
|
129
129
|
*
|
|
130
|
-
* assertType<
|
|
130
|
+
* assertType<typeof ciphertext, XChaCha20Poly1305Ciphertext>();
|
|
131
131
|
* assertEqual(nonce.length, 24);
|
|
132
132
|
* ```
|
|
133
133
|
*
|
package/dist/src/Crypto.js
CHANGED
|
@@ -85,7 +85,7 @@ export const XChaCha20Poly1305Ciphertext = /*#__PURE__*/ brand("XChaCha20Poly130
|
|
|
85
85
|
* randomBytes: createRandomBytes(),
|
|
86
86
|
* })(plaintext, encryptionKey);
|
|
87
87
|
*
|
|
88
|
-
* assertType<
|
|
88
|
+
* assertType<typeof ciphertext, XChaCha20Poly1305Ciphertext>();
|
|
89
89
|
* assertEqual(nonce.length, 24);
|
|
90
90
|
* ```
|
|
91
91
|
*
|