@evolu/common 8.10.0 → 8.11.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/Config.d.ts +22 -22
- package/dist/src/Config.d.ts.map +1 -1
- package/dist/src/Console.d.ts +62 -7
- package/dist/src/Console.d.ts.map +1 -1
- package/dist/src/Console.js +20 -4
- package/dist/src/Crypto.d.ts +76 -4
- package/dist/src/Crypto.d.ts.map +1 -1
- package/dist/src/Crypto.js +55 -4
- package/dist/src/Error.d.ts +45 -0
- package/dist/src/Error.d.ts.map +1 -1
- package/dist/src/Error.js +69 -0
- package/dist/src/Fs.d.ts +92 -18
- package/dist/src/Fs.d.ts.map +1 -1
- package/dist/src/Fs.js +2 -0
- package/dist/src/Identicon.d.ts +2 -2
- package/dist/src/Identicon.js +2 -2
- package/dist/src/LeakDetector.d.ts +22 -3
- package/dist/src/LeakDetector.d.ts.map +1 -1
- package/dist/src/LeakDetector.js +12 -2
- package/dist/src/LockManager.d.ts +8 -0
- package/dist/src/LockManager.d.ts.map +1 -1
- package/dist/src/LockManager.js +6 -0
- package/dist/src/Object.d.ts.map +1 -1
- package/dist/src/Object.js +5 -0
- package/dist/src/Platform.d.ts +47 -7
- package/dist/src/Platform.d.ts.map +1 -1
- package/dist/src/Platform.js +24 -5
- package/dist/src/Random.d.ts +25 -2
- package/dist/src/Random.d.ts.map +1 -1
- package/dist/src/Random.js +14 -2
- package/dist/src/Resource.d.ts +156 -1
- package/dist/src/Resource.d.ts.map +1 -1
- package/dist/src/Resource.js +201 -72
- package/dist/src/Schedule.d.ts +11 -10
- package/dist/src/Schedule.d.ts.map +1 -1
- package/dist/src/Schedule.js +1 -1
- package/dist/src/Sqlite.d.ts +132 -16
- package/dist/src/Sqlite.d.ts.map +1 -1
- package/dist/src/Sqlite.js +63 -9
- package/dist/src/Task.d.ts +15 -4
- package/dist/src/Task.d.ts.map +1 -1
- package/dist/src/Task.js +41 -15
- package/dist/src/Test.d.ts +9 -0
- package/dist/src/Test.d.ts.map +1 -1
- package/dist/src/Test.js +4 -0
- package/dist/src/Time.d.ts +106 -9
- package/dist/src/Time.d.ts.map +1 -1
- package/dist/src/Time.js +55 -4
- package/dist/src/Type.d.ts +1455 -1310
- package/dist/src/Type.d.ts.map +1 -1
- package/dist/src/Type.js +1274 -517
- package/dist/src/WebSocket.d.ts +164 -13
- package/dist/src/WebSocket.d.ts.map +1 -1
- package/dist/src/WebSocket.js +133 -24
- package/dist/src/Worker.d.ts +90 -8
- package/dist/src/Worker.d.ts.map +1 -1
- package/dist/src/Worker.js +28 -2
- package/dist/src/index.d.ts +6 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -3
- package/dist/src/local-first/Db.d.ts +52 -3
- package/dist/src/local-first/Db.d.ts.map +1 -1
- package/dist/src/local-first/Db.js +412 -137
- package/dist/src/local-first/Evolu.d.ts +336 -211
- package/dist/src/local-first/Evolu.d.ts.map +1 -1
- package/dist/src/local-first/Evolu.js +102 -15
- package/dist/src/local-first/Owner.d.ts +13 -30
- package/dist/src/local-first/Owner.d.ts.map +1 -1
- package/dist/src/local-first/Owner.js +13 -30
- package/dist/src/local-first/Protocol.d.ts +94 -16
- package/dist/src/local-first/Protocol.d.ts.map +1 -1
- package/dist/src/local-first/Protocol.js +118 -38
- package/dist/src/local-first/Query.d.ts +8 -15
- package/dist/src/local-first/Query.d.ts.map +1 -1
- package/dist/src/local-first/Schema.d.ts +335 -21
- package/dist/src/local-first/Schema.d.ts.map +1 -1
- package/dist/src/local-first/Schema.js +214 -17
- package/dist/src/local-first/Shared.d.ts +537 -22
- package/dist/src/local-first/Shared.d.ts.map +1 -1
- package/dist/src/local-first/Shared.js +1437 -234
- package/dist/src/local-first/Storage.d.ts +192 -14
- package/dist/src/local-first/Storage.d.ts.map +1 -1
- package/dist/src/local-first/Storage.js +81 -20
- package/dist/src/local-first/Timestamp.d.ts +392 -41
- package/dist/src/local-first/Timestamp.d.ts.map +1 -1
- package/dist/src/local-first/Timestamp.js +403 -81
- package/dist/src/local-first/index.d.ts +0 -1
- package/dist/src/local-first/index.d.ts.map +1 -1
- package/dist/src/local-first/index.js +0 -1
- package/package.json +1 -1
- package/src/Assert.test.ts +2 -5
- package/src/Config.test.ts +2 -6
- package/src/Config.ts +133 -133
- package/src/Console.ts +62 -7
- package/src/Crypto.ts +76 -4
- package/src/Eq.test.ts +2 -3
- package/src/Error.test.ts +76 -3
- package/src/Error.ts +71 -0
- package/src/Fs.ts +92 -18
- package/src/Identicon.ts +2 -2
- package/src/LeakDetector.ts +22 -3
- package/src/LockManager.ts +8 -0
- package/src/Object.test.ts +27 -12
- package/src/Object.ts +5 -0
- package/src/Platform.ts +50 -8
- package/src/Random.ts +25 -2
- package/src/Resource.test.ts +837 -0
- package/src/Resource.ts +235 -15
- package/src/Schedule.test.ts +50 -12
- package/src/Schedule.ts +24 -14
- package/src/Sqlite.ts +137 -17
- package/src/Task.test.ts +189 -8
- package/src/Task.ts +56 -17
- package/src/Test.ts +9 -0
- package/src/Time.ts +106 -9
- package/src/Type.test.ts +946 -1028
- package/src/Type.ts +4195 -3136
- package/src/Types.test.ts +4 -14
- package/src/WebSocket.ts +313 -40
- package/src/Worker.ts +90 -8
- package/src/index.ts +15 -6
- package/src/local-first/Db.ts +644 -339
- package/src/local-first/Evolu.test.ts +686 -21
- package/src/local-first/Evolu.ts +450 -228
- package/src/local-first/Owner.ts +13 -30
- package/src/local-first/Protocol.test.ts +617 -10
- package/src/local-first/Protocol.ts +196 -72
- package/src/local-first/Query.ts +8 -15
- package/src/local-first/Schema.test.ts +143 -0
- package/src/local-first/Schema.ts +363 -24
- package/src/local-first/Shared.test.ts +7731 -559
- package/src/local-first/Shared.ts +2036 -267
- package/src/local-first/Storage.ts +218 -32
- package/src/local-first/Timestamp.test.ts +344 -70
- package/src/local-first/Timestamp.ts +434 -118
- package/src/local-first/index.ts +0 -1
- package/dist/src/local-first/Error.d.ts +0 -12
- package/dist/src/local-first/Error.d.ts.map +0 -1
- package/dist/src/local-first/Error.js +0 -6
- package/dist/src/local-first/LocalAuth.d.ts +0 -150
- package/dist/src/local-first/LocalAuth.d.ts.map +0 -1
- package/dist/src/local-first/LocalAuth.js +0 -179
- package/src/local-first/Error.ts +0 -17
- package/src/local-first/LocalAuth.ts +0 -457
package/dist/src/Config.d.ts
CHANGED
|
@@ -42,31 +42,11 @@ import type { CompileTimeError, IsUnion, UnionToIntersection } from "./Types.ts"
|
|
|
42
42
|
*/
|
|
43
43
|
export declare const EnvName: import("./Type.ts").BrandType<import("./Type.ts").BrandType<import("./Type.ts").Type<"String", string, string, import("./Type.ts").TypeOfError<"String">, null, import("./Type.ts").TypeOfError<"String">, never, string, true>, "ConstantCaseIdentifier", import("./Type.ts").IdentifierError<"CONSTANT_CASE">>, "MaxLength255", import("./Type.ts").MaxLengthError<255>>;
|
|
44
44
|
export type EnvName = typeof EnvName.Output;
|
|
45
|
-
/** Fields and one-level namespace groups used to construct an {@link env} Type. */
|
|
46
|
-
export type EnvProps = Readonly<Record<string, ObjectProps[string] | ObjectProps>>;
|
|
47
|
-
type EnvDeclarationKind<Key> = Key extends string ? Key extends Uppercase<Key> ? "group" : Key extends Uncapitalize<Key> ? "field" : "invalid" : "invalid";
|
|
48
|
-
type EnvFlatProps<Props extends EnvProps> = UnionToIntersection<{
|
|
49
|
-
[Key in keyof Props]: EnvDeclarationKind<Key> extends "group" ? Props[Key] : EnvDeclarationKind<Key> extends "field" ? {
|
|
50
|
-
readonly [Field in Key]: Props[Key];
|
|
51
|
-
} : never;
|
|
52
|
-
}[keyof Props]> extends infer Flat extends ObjectProps ? Flat : {};
|
|
53
|
-
type EnvFieldType<Field> = Field extends TypeNode ? Field : Field extends {
|
|
54
|
-
readonly type: infer T extends TypeNode;
|
|
55
|
-
} ? T : never;
|
|
56
|
-
type EnvKeysValidation<Props> = (string extends keyof Props ? CompileTimeError<"Env", "Environment properties must use fixed string keys."> : never) | (IsUnion<Props> extends true ? CompileTimeError<"Env", "Environment properties must use one concrete schema."> : never) | {
|
|
57
|
-
[Key in keyof Props]: Key extends string ? ValidateLiteral<Key> extends Key ? never : CompileTimeError<"Env", "Environment properties must use fixed string keys."> : CompileTimeError<"Env", "Environment properties must use fixed string keys.">;
|
|
58
|
-
}[keyof Props];
|
|
59
|
-
type EnvFieldValidation<Field> = IsUnion<Field> extends true ? CompileTimeError<"Env", "Environment fields must use one concrete Type."> : EnvFieldType<Field> extends infer T extends AnyType ? IsUnion<T> extends true ? CompileTimeError<"Env", "Environment fields must use one concrete Type."> : [T["CanonicalInput"]] extends [string] ? Extract<"ObjectMissingProperty" | "ObjectPropertyAccess" | "ObjectExcessProperty", InferErrors<T>["type"]> extends never ? never : CompileTimeError<"Env", "Environment fields must not use error tags reserved for Object structure."> : CompileTimeError<"Env", "Environment fields must encode to strings."> : CompileTimeError<"Env", "Environment fields must use one concrete Type.">;
|
|
60
|
-
type EnvFieldsValidation<Props extends ObjectProps> = EnvKeysValidation<Props> | {
|
|
61
|
-
[Key in keyof Props]: EnvDeclarationKind<Key> extends "field" ? EnvFieldValidation<Props[Key]> : CompileTimeError<"Env", "Environment fields must use camelCase names.">;
|
|
62
|
-
}[keyof Props];
|
|
63
|
-
type EnvValidation<Props extends EnvProps> = EnvKeysValidation<Props> | {
|
|
64
|
-
[Key in keyof Props]: EnvDeclarationKind<Key> extends "group" ? Props[Key] extends ObjectProps ? EnvFieldsValidation<Props[Key]> : CompileTimeError<"Env", "Environment namespaces must contain a group of fields."> : EnvDeclarationKind<Key> extends "field" ? Props[Key] extends ObjectProps[string] ? EnvFieldValidation<Props[Key]> : CompileTimeError<"Env", "Environment fields must be Types, optional properties, or defaulted properties."> : CompileTimeError<"Env", "Environment declarations must use camelCase field names or CONSTANT_CASE namespace names.">;
|
|
65
|
-
}[keyof Props];
|
|
66
|
-
type EnvKeyType = TransformType<typeof String, typeof CamelCaseIdentifier, "EnvKey", never, string>;
|
|
67
45
|
/** The configuration codec returned by {@link env}. */
|
|
68
46
|
export interface EnvType<Props extends EnvProps> extends TransformType<typeof Unknown, ObjectKeysType<EnvKeyType, ObjectType<EnvFlatProps<Props>>>, "Env", never, Readonly<Record<string, ObjectType<EnvFlatProps<Props>>["CanonicalInput"][keyof ObjectType<EnvFlatProps<Props>>["CanonicalInput"]]>>> {
|
|
69
47
|
}
|
|
48
|
+
/** Fields and one-level namespace groups used to construct an {@link env} Type. */
|
|
49
|
+
export type EnvProps = Readonly<Record<string, ObjectProps[string] | ObjectProps>>;
|
|
70
50
|
/**
|
|
71
51
|
* Creates a reversible environment-variable codec with a flat decoded output.
|
|
72
52
|
*
|
|
@@ -138,5 +118,25 @@ export interface EnvType<Props extends EnvProps> extends TransformType<typeof Un
|
|
|
138
118
|
* ```
|
|
139
119
|
*/
|
|
140
120
|
export declare const env: <const Props extends EnvProps>(props: Props, ..._validation: [EnvValidation<Props>] extends [never] ? [] : [EnvValidation<Props>]) => EnvType<Props>;
|
|
121
|
+
type EnvFlatProps<Props extends EnvProps> = UnionToIntersection<{
|
|
122
|
+
[Key in keyof Props]: EnvDeclarationKind<Key> extends "group" ? Props[Key] : EnvDeclarationKind<Key> extends "field" ? {
|
|
123
|
+
readonly [Field in Key]: Props[Key];
|
|
124
|
+
} : never;
|
|
125
|
+
}[keyof Props]> extends infer Flat extends ObjectProps ? Flat : {};
|
|
126
|
+
type EnvKeyType = TransformType<typeof String, typeof CamelCaseIdentifier, "EnvKey", never, string>;
|
|
127
|
+
type EnvValidation<Props extends EnvProps> = EnvKeysValidation<Props> | {
|
|
128
|
+
[Key in keyof Props]: EnvDeclarationKind<Key> extends "group" ? Props[Key] extends ObjectProps ? EnvFieldsValidation<Props[Key]> : CompileTimeError<"Env", "Environment namespaces must contain a group of fields."> : EnvDeclarationKind<Key> extends "field" ? Props[Key] extends ObjectProps[string] ? EnvFieldValidation<Props[Key]> : CompileTimeError<"Env", "Environment fields must be Types, optional properties, or defaulted properties."> : CompileTimeError<"Env", "Environment declarations must use camelCase field names or CONSTANT_CASE namespace names.">;
|
|
129
|
+
}[keyof Props];
|
|
130
|
+
type EnvFieldsValidation<Props extends ObjectProps> = EnvKeysValidation<Props> | {
|
|
131
|
+
[Key in keyof Props]: EnvDeclarationKind<Key> extends "field" ? EnvFieldValidation<Props[Key]> : CompileTimeError<"Env", "Environment fields must use camelCase names.">;
|
|
132
|
+
}[keyof Props];
|
|
133
|
+
type EnvFieldValidation<Field> = IsUnion<Field> extends true ? CompileTimeError<"Env", "Environment fields must use one concrete Type."> : EnvFieldType<Field> extends infer T extends AnyType ? IsUnion<T> extends true ? CompileTimeError<"Env", "Environment fields must use one concrete Type."> : [T["CanonicalInput"]] extends [string] ? Extract<"ObjectMissingProperty" | "ObjectPropertyAccess" | "ObjectExcessProperty", InferErrors<T>["type"]> extends never ? never : CompileTimeError<"Env", "Environment fields must not use error tags reserved for Object structure."> : CompileTimeError<"Env", "Environment fields must encode to strings."> : CompileTimeError<"Env", "Environment fields must use one concrete Type.">;
|
|
134
|
+
type EnvFieldType<Field> = Field extends TypeNode ? Field : Field extends {
|
|
135
|
+
readonly type: infer T extends TypeNode;
|
|
136
|
+
} ? T : never;
|
|
137
|
+
type EnvKeysValidation<Props> = (string extends keyof Props ? CompileTimeError<"Env", "Environment properties must use fixed string keys."> : never) | (IsUnion<Props> extends true ? CompileTimeError<"Env", "Environment properties must use one concrete schema."> : never) | {
|
|
138
|
+
[Key in keyof Props]: Key extends string ? ValidateLiteral<Key> extends Key ? never : CompileTimeError<"Env", "Environment properties must use fixed string keys."> : CompileTimeError<"Env", "Environment properties must use fixed string keys.">;
|
|
139
|
+
}[keyof Props];
|
|
140
|
+
type EnvDeclarationKind<Key> = Key extends string ? Key extends Uppercase<Key> ? "group" : Key extends Uncapitalize<Key> ? "field" : "invalid" : "invalid";
|
|
141
141
|
export {};
|
|
142
142
|
//# sourceMappingURL=Config.d.ts.map
|
package/dist/src/Config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,EACL,mBAAmB,EAOnB,MAAM,EAEN,OAAO,EACP,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEd,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,OAAO,4WAAuD,CAAC;AAC5E,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC;AAE5C,mFAAmF;AACnF,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAC7B,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,CAClD,CAAC;
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Console.d.ts
CHANGED
|
@@ -82,6 +82,7 @@ import { type Millis, type TimeDep } from "./Time.ts";
|
|
|
82
82
|
* For testing, use {@link testCreateConsole} which creates a {@link TestConsole}
|
|
83
83
|
* with array output and snapshot helpers.
|
|
84
84
|
*
|
|
85
|
+
* @group Core
|
|
85
86
|
* @see {@link createConsole}
|
|
86
87
|
*/
|
|
87
88
|
export interface Console {
|
|
@@ -145,6 +146,11 @@ export interface Console {
|
|
|
145
146
|
*/
|
|
146
147
|
readonly write: (entry: ConsoleEntry) => void;
|
|
147
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Dependency wrapper for {@link Console}.
|
|
151
|
+
*
|
|
152
|
+
* @group Core
|
|
153
|
+
*/
|
|
148
154
|
export interface ConsoleDep {
|
|
149
155
|
readonly console: Console;
|
|
150
156
|
}
|
|
@@ -161,6 +167,8 @@ export interface ConsoleDep {
|
|
|
161
167
|
* - `"warn"` — Recoverable issues that may need attention
|
|
162
168
|
* - `"error"` — Failures requiring immediate attention
|
|
163
169
|
* - `"silent"` — Disables all logging
|
|
170
|
+
*
|
|
171
|
+
* @group Core
|
|
164
172
|
*/
|
|
165
173
|
export type ConsoleLevel = "trace" | "debug" | "log" | "info" | "warn" | "error" | "silent";
|
|
166
174
|
/**
|
|
@@ -168,6 +176,8 @@ export type ConsoleLevel = "trace" | "debug" | "log" | "info" | "warn" | "error"
|
|
|
168
176
|
*
|
|
169
177
|
* Contains all information needed for outputs to route the log: method for
|
|
170
178
|
* routing, path for context, and the original arguments.
|
|
179
|
+
*
|
|
180
|
+
* @group Core
|
|
171
181
|
*/
|
|
172
182
|
export interface ConsoleEntry {
|
|
173
183
|
/** The console method that was called. */
|
|
@@ -182,6 +192,8 @@ export interface ConsoleEntry {
|
|
|
182
192
|
*
|
|
183
193
|
* Used in {@link ConsoleEntry} to identify which console method was invoked.
|
|
184
194
|
* Outputs can route or format differently based on the method.
|
|
195
|
+
*
|
|
196
|
+
* @group Core
|
|
185
197
|
*/
|
|
186
198
|
export type ConsoleMethod = "trace" | "debug" | "log" | "info" | "warn" | "error" | "dir" | "table" | "time" | "timeLog" | "timeEnd" | "count" | "countReset";
|
|
187
199
|
/**
|
|
@@ -191,6 +203,8 @@ export type ConsoleMethod = "trace" | "debug" | "log" | "info" | "warn" | "error
|
|
|
191
203
|
* array for testing, etc.).
|
|
192
204
|
*
|
|
193
205
|
* Use {@link createNativeConsoleOutput} for native console output.
|
|
206
|
+
*
|
|
207
|
+
* @group Output
|
|
194
208
|
*/
|
|
195
209
|
export interface ConsoleOutput {
|
|
196
210
|
/** Write a log entry to this output. */
|
|
@@ -201,9 +215,15 @@ export interface ConsoleOutput {
|
|
|
201
215
|
*
|
|
202
216
|
* Used by {@link ConsoleConfig.formatter} and {@link ConsoleOutput.write}. Create
|
|
203
217
|
* one with {@link createConsoleFormatter}.
|
|
218
|
+
*
|
|
219
|
+
* @group Output
|
|
204
220
|
*/
|
|
205
221
|
export type ConsoleFormatter = (entry: ConsoleEntry) => ReadonlyArray<unknown>;
|
|
206
|
-
/**
|
|
222
|
+
/**
|
|
223
|
+
* Configuration for {@link createConsole}.
|
|
224
|
+
*
|
|
225
|
+
* @group Core
|
|
226
|
+
*/
|
|
207
227
|
export interface ConsoleConfig {
|
|
208
228
|
/** Name of this console. Defaults to empty string. */
|
|
209
229
|
readonly name?: string;
|
|
@@ -225,7 +245,11 @@ export interface ConsoleConfig {
|
|
|
225
245
|
*/
|
|
226
246
|
readonly formatter?: ConsoleFormatter;
|
|
227
247
|
}
|
|
228
|
-
/**
|
|
248
|
+
/**
|
|
249
|
+
* Configuration for {@link createConsoleFormatter}.
|
|
250
|
+
*
|
|
251
|
+
* @group Output
|
|
252
|
+
*/
|
|
229
253
|
export interface ConsoleFormatterConfig {
|
|
230
254
|
/**
|
|
231
255
|
* Timestamp format to prepend to log messages.
|
|
@@ -244,7 +268,11 @@ export interface ConsoleFormatterConfig {
|
|
|
244
268
|
*/
|
|
245
269
|
readonly startTime?: Millis;
|
|
246
270
|
}
|
|
247
|
-
/**
|
|
271
|
+
/**
|
|
272
|
+
* Timestamp format for {@link ConsoleFormatterConfig}.
|
|
273
|
+
*
|
|
274
|
+
* @group Output
|
|
275
|
+
*/
|
|
248
276
|
export type ConsoleEntryTimestampFormat = "relative" | "absolute" | "iso" | "none";
|
|
249
277
|
/**
|
|
250
278
|
* A {@link ConsoleOutput} that stores the latest entry in a
|
|
@@ -279,6 +307,8 @@ export type ConsoleEntryTimestampFormat = "relative" | "absolute" | "iso" | "non
|
|
|
279
307
|
* args: ["connected"],
|
|
280
308
|
* });
|
|
281
309
|
* ```
|
|
310
|
+
*
|
|
311
|
+
* @group Output
|
|
282
312
|
*/
|
|
283
313
|
export interface ConsoleStoreOutput extends ConsoleOutput {
|
|
284
314
|
/** Latest entry written to this output. */
|
|
@@ -287,6 +317,8 @@ export interface ConsoleStoreOutput extends ConsoleOutput {
|
|
|
287
317
|
/**
|
|
288
318
|
* Dependency providing the latest {@link ConsoleEntry} from a
|
|
289
319
|
* {@link ConsoleStoreOutput}.
|
|
320
|
+
*
|
|
321
|
+
* @group Output
|
|
290
322
|
*/
|
|
291
323
|
export interface ConsoleStoreOutputEntryDep {
|
|
292
324
|
readonly consoleStoreOutputEntry: ReadonlyStore<ConsoleEntry | null>;
|
|
@@ -295,6 +327,8 @@ export interface ConsoleStoreOutputEntryDep {
|
|
|
295
327
|
* A test console that captures all output for assertions.
|
|
296
328
|
*
|
|
297
329
|
* Use as a drop-in replacement for {@link Console} in tests.
|
|
330
|
+
*
|
|
331
|
+
* @group Testing
|
|
298
332
|
*/
|
|
299
333
|
export interface TestConsole extends Console {
|
|
300
334
|
/** Gets all captured entries and clears the internal buffer. */
|
|
@@ -302,10 +336,19 @@ export interface TestConsole extends Console {
|
|
|
302
336
|
/** Clears all captured entries. */
|
|
303
337
|
readonly clearEntries: () => void;
|
|
304
338
|
}
|
|
339
|
+
/**
|
|
340
|
+
* Dependency wrapper for {@link TestConsole}.
|
|
341
|
+
*
|
|
342
|
+
* @group Testing
|
|
343
|
+
*/
|
|
305
344
|
export interface TestConsoleDep {
|
|
306
345
|
readonly console: TestConsole;
|
|
307
346
|
}
|
|
308
|
-
/**
|
|
347
|
+
/**
|
|
348
|
+
* Creates a {@link Console}.
|
|
349
|
+
*
|
|
350
|
+
* @group Core
|
|
351
|
+
*/
|
|
309
352
|
export declare const createConsole: ({ name, level, output, path, formatter, }?: ConsoleConfig) => Console;
|
|
310
353
|
/**
|
|
311
354
|
* Creates a {@link ConsoleOutput} that writes to `globalThis.console`.
|
|
@@ -318,7 +361,6 @@ export declare const createConsole: ({ name, level, output, path, formatter, }?:
|
|
|
318
361
|
*
|
|
319
362
|
* ```ts
|
|
320
363
|
* import {
|
|
321
|
-
* assertEqual,
|
|
322
364
|
* assertType,
|
|
323
365
|
* createNativeConsoleOutput,
|
|
324
366
|
* type ConsoleOutput,
|
|
@@ -327,8 +369,9 @@ export declare const createConsole: ({ name, level, output, path, formatter, }?:
|
|
|
327
369
|
* const output = createNativeConsoleOutput();
|
|
328
370
|
*
|
|
329
371
|
* assertType<typeof output, ConsoleOutput>();
|
|
330
|
-
* assertEqual(typeof output.write, "function");
|
|
331
372
|
* ```
|
|
373
|
+
*
|
|
374
|
+
* @group Output
|
|
332
375
|
*/
|
|
333
376
|
export declare const createNativeConsoleOutput: () => ConsoleOutput;
|
|
334
377
|
/**
|
|
@@ -379,9 +422,15 @@ export declare const createNativeConsoleOutput: () => ConsoleOutput;
|
|
|
379
422
|
* assertType(Data, absolute);
|
|
380
423
|
* assertEqual(absolute, ["14:30:15.123 [relay]", "connected"]);
|
|
381
424
|
* ```
|
|
425
|
+
*
|
|
426
|
+
* @group Output
|
|
382
427
|
*/
|
|
383
428
|
export declare const createConsoleFormatter: ({ time }?: Partial<TimeDep>) => (config?: ConsoleFormatterConfig) => ConsoleFormatter;
|
|
384
|
-
/**
|
|
429
|
+
/**
|
|
430
|
+
* Creates a {@link ConsoleStoreOutput}.
|
|
431
|
+
*
|
|
432
|
+
* @group Output
|
|
433
|
+
*/
|
|
385
434
|
export declare const createConsoleStoreOutput: () => ConsoleStoreOutput;
|
|
386
435
|
/**
|
|
387
436
|
* Creates a {@link ConsoleOutput} that captures entries to an array.
|
|
@@ -408,6 +457,8 @@ export declare const createConsoleStoreOutput: () => ConsoleStoreOutput;
|
|
|
408
457
|
* { method: "info", path: [], args: ["connected"] },
|
|
409
458
|
* ]);
|
|
410
459
|
* ```
|
|
460
|
+
*
|
|
461
|
+
* @group Output
|
|
411
462
|
*/
|
|
412
463
|
export declare const createConsoleArrayOutput: (entries: Array<ConsoleEntry>) => ConsoleOutput;
|
|
413
464
|
/**
|
|
@@ -445,6 +496,8 @@ export declare const createConsoleArrayOutput: (entries: Array<ConsoleEntry>) =>
|
|
|
445
496
|
* assertType(Data, entries[0]);
|
|
446
497
|
* assertEqual(storedEntry, entries[0]);
|
|
447
498
|
* ```
|
|
499
|
+
*
|
|
500
|
+
* @group Output
|
|
448
501
|
*/
|
|
449
502
|
export declare const createMultiOutput: (outputs: ReadonlyArray<ConsoleOutput>) => ConsoleOutput;
|
|
450
503
|
/**
|
|
@@ -466,6 +519,8 @@ export declare const createMultiOutput: (outputs: ReadonlyArray<ConsoleOutput>)
|
|
|
466
519
|
* { method: "info", path: ["relay"], args: ["connected"] },
|
|
467
520
|
* ]);
|
|
468
521
|
* ```
|
|
522
|
+
*
|
|
523
|
+
* @group Testing
|
|
469
524
|
*/
|
|
470
525
|
export declare const testCreateConsole: ({ level, }?: {
|
|
471
526
|
level?: ConsoleLevel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../src/Console.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,OAAO,EACb,MAAM,WAAW,CAAC;AAEnB
|
|
1
|
+
{"version":3,"file":"Console.d.ts","sourceRoot":"","sources":["../../src/Console.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Console.js
CHANGED
|
@@ -15,7 +15,11 @@ const levelOrder = {
|
|
|
15
15
|
error: 5,
|
|
16
16
|
silent: 6,
|
|
17
17
|
};
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Creates a {@link Console}.
|
|
20
|
+
*
|
|
21
|
+
* @group Core
|
|
22
|
+
*/
|
|
19
23
|
export const createConsole = ({ name = "", level = "log", output = createNativeConsoleOutput(), path = [], formatter, } = {}) => {
|
|
20
24
|
const childrenSet = new Set();
|
|
21
25
|
let ownLevel = null;
|
|
@@ -63,7 +67,6 @@ export const createConsole = ({ name = "", level = "log", output = createNativeC
|
|
|
63
67
|
*
|
|
64
68
|
* ```ts
|
|
65
69
|
* import {
|
|
66
|
-
* assertEqual,
|
|
67
70
|
* assertType,
|
|
68
71
|
* createNativeConsoleOutput,
|
|
69
72
|
* type ConsoleOutput,
|
|
@@ -72,8 +75,9 @@ export const createConsole = ({ name = "", level = "log", output = createNativeC
|
|
|
72
75
|
* const output = createNativeConsoleOutput();
|
|
73
76
|
*
|
|
74
77
|
* assertType<typeof output, ConsoleOutput>();
|
|
75
|
-
* assertEqual(typeof output.write, "function");
|
|
76
78
|
* ```
|
|
79
|
+
*
|
|
80
|
+
* @group Output
|
|
77
81
|
*/
|
|
78
82
|
export const createNativeConsoleOutput = () => ({
|
|
79
83
|
write: (entry, formatter) => {
|
|
@@ -131,6 +135,8 @@ export const createNativeConsoleOutput = () => ({
|
|
|
131
135
|
* assertType(Data, absolute);
|
|
132
136
|
* assertEqual(absolute, ["14:30:15.123 [relay]", "connected"]);
|
|
133
137
|
* ```
|
|
138
|
+
*
|
|
139
|
+
* @group Output
|
|
134
140
|
*/
|
|
135
141
|
export const createConsoleFormatter = ({ time = createTime() } = {}) => (config = {}) => {
|
|
136
142
|
const format = config.timestampFormat ?? "none";
|
|
@@ -158,7 +164,11 @@ export const createConsoleFormatter = ({ time = createTime() } = {}) => (config
|
|
|
158
164
|
return prefix ? [prefix, ...entry.args] : entry.args;
|
|
159
165
|
};
|
|
160
166
|
};
|
|
161
|
-
/**
|
|
167
|
+
/**
|
|
168
|
+
* Creates a {@link ConsoleStoreOutput}.
|
|
169
|
+
*
|
|
170
|
+
* @group Output
|
|
171
|
+
*/
|
|
162
172
|
export const createConsoleStoreOutput = () => {
|
|
163
173
|
const entry = createStore(null);
|
|
164
174
|
return {
|
|
@@ -191,6 +201,8 @@ export const createConsoleStoreOutput = () => {
|
|
|
191
201
|
* { method: "info", path: [], args: ["connected"] },
|
|
192
202
|
* ]);
|
|
193
203
|
* ```
|
|
204
|
+
*
|
|
205
|
+
* @group Output
|
|
194
206
|
*/
|
|
195
207
|
export const createConsoleArrayOutput = (entries) => ({
|
|
196
208
|
write: (entry) => {
|
|
@@ -232,6 +244,8 @@ export const createConsoleArrayOutput = (entries) => ({
|
|
|
232
244
|
* assertType(Data, entries[0]);
|
|
233
245
|
* assertEqual(storedEntry, entries[0]);
|
|
234
246
|
* ```
|
|
247
|
+
*
|
|
248
|
+
* @group Output
|
|
235
249
|
*/
|
|
236
250
|
export const createMultiOutput = (outputs) => ({
|
|
237
251
|
write: (entry, formatter) => {
|
|
@@ -258,6 +272,8 @@ export const createMultiOutput = (outputs) => ({
|
|
|
258
272
|
* { method: "info", path: ["relay"], args: ["connected"] },
|
|
259
273
|
* ]);
|
|
260
274
|
* ```
|
|
275
|
+
*
|
|
276
|
+
* @group Testing
|
|
261
277
|
*/
|
|
262
278
|
export const testCreateConsole = ({ level = "trace", } = {}) => {
|
|
263
279
|
const entries = [];
|
package/dist/src/Crypto.d.ts
CHANGED
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
import type { RandomLibDep } from "./Random.ts";
|
|
11
11
|
import type { Result } from "./Result.ts";
|
|
12
12
|
import { NonNegativeInt, type Typed } from "./Type.ts";
|
|
13
|
+
/**
|
|
14
|
+
* Cryptographically secure random bytes with length-branded results.
|
|
15
|
+
*
|
|
16
|
+
* @group Random bytes
|
|
17
|
+
*/
|
|
13
18
|
export interface RandomBytes {
|
|
14
19
|
/**
|
|
15
20
|
* Creates cryptographically secure random bytes with type-safe length
|
|
@@ -62,42 +67,89 @@ export interface RandomBytes {
|
|
|
62
67
|
create(bytesLength: 64): Entropy64;
|
|
63
68
|
create(bytesLength: number): Entropy;
|
|
64
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Dependency wrapper for {@link RandomBytes}.
|
|
72
|
+
*
|
|
73
|
+
* @group Random bytes
|
|
74
|
+
*/
|
|
65
75
|
export interface RandomBytesDep {
|
|
66
76
|
readonly randomBytes: RandomBytes;
|
|
67
77
|
}
|
|
68
78
|
declare const Entropy: import("./Type.ts").BrandType<import("./Type.ts").Type<"Uint8Array", Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, import("./Type.ts").ObjectTagError<"Uint8Array">, null, import("./Type.ts").ObjectTagError<"Uint8Array">, never, Uint8Array<ArrayBufferLike>, true>, "Entropy", never>;
|
|
69
79
|
type Entropy = typeof Entropy.Output;
|
|
80
|
+
/**
|
|
81
|
+
* Cryptographic entropy of exactly 16 bytes.
|
|
82
|
+
*
|
|
83
|
+
* @group Random bytes
|
|
84
|
+
*/
|
|
70
85
|
export declare const Entropy16: import("./Type.ts").BrandType<import("./Type.ts").BrandType<import("./Type.ts").Type<"Uint8Array", Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, import("./Type.ts").ObjectTagError<"Uint8Array">, null, import("./Type.ts").ObjectTagError<"Uint8Array">, never, Uint8Array<ArrayBufferLike>, true>, "Entropy", never>, "Length16", import("./Type.ts").LengthError<16>>;
|
|
71
86
|
export type Entropy16 = typeof Entropy16.Output;
|
|
87
|
+
/**
|
|
88
|
+
* Cryptographic entropy of exactly 24 bytes.
|
|
89
|
+
*
|
|
90
|
+
* @group Random bytes
|
|
91
|
+
*/
|
|
72
92
|
export declare const Entropy24: import("./Type.ts").BrandType<import("./Type.ts").BrandType<import("./Type.ts").Type<"Uint8Array", Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, import("./Type.ts").ObjectTagError<"Uint8Array">, null, import("./Type.ts").ObjectTagError<"Uint8Array">, never, Uint8Array<ArrayBufferLike>, true>, "Entropy", never>, "Length24", import("./Type.ts").LengthError<24>>;
|
|
73
93
|
export type Entropy24 = typeof Entropy24.Output;
|
|
94
|
+
/**
|
|
95
|
+
* Cryptographic entropy of exactly 32 bytes.
|
|
96
|
+
*
|
|
97
|
+
* @group Random bytes
|
|
98
|
+
*/
|
|
74
99
|
export declare const Entropy32: import("./Type.ts").BrandType<import("./Type.ts").BrandType<import("./Type.ts").Type<"Uint8Array", Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, import("./Type.ts").ObjectTagError<"Uint8Array">, null, import("./Type.ts").ObjectTagError<"Uint8Array">, never, Uint8Array<ArrayBufferLike>, true>, "Entropy", never>, "Length32", import("./Type.ts").LengthError<32>>;
|
|
75
100
|
export type Entropy32 = typeof Entropy32.Output;
|
|
101
|
+
/**
|
|
102
|
+
* Cryptographic entropy of exactly 64 bytes.
|
|
103
|
+
*
|
|
104
|
+
* @group Random bytes
|
|
105
|
+
*/
|
|
76
106
|
export declare const Entropy64: import("./Type.ts").BrandType<import("./Type.ts").BrandType<import("./Type.ts").Type<"Uint8Array", Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, import("./Type.ts").ObjectTagError<"Uint8Array">, null, import("./Type.ts").ObjectTagError<"Uint8Array">, never, Uint8Array<ArrayBufferLike>, true>, "Entropy", never>, "Length64", import("./Type.ts").LengthError<64>>;
|
|
77
107
|
export type Entropy64 = typeof Entropy64.Output;
|
|
108
|
+
/**
|
|
109
|
+
* Creates {@link RandomBytes} backed by the platform's secure random number
|
|
110
|
+
* generator.
|
|
111
|
+
*
|
|
112
|
+
* @group Random bytes
|
|
113
|
+
*/
|
|
78
114
|
export declare const createRandomBytes: () => RandomBytes;
|
|
79
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Creates seeded random bytes for deterministic tests.
|
|
117
|
+
*
|
|
118
|
+
* @group Testing
|
|
119
|
+
*/
|
|
80
120
|
export declare const testCreateRandomBytes: (deps: RandomLibDep) => RandomBytes;
|
|
81
121
|
/**
|
|
82
122
|
* SLIP21.
|
|
83
123
|
*
|
|
84
124
|
* https://github.com/satoshilabs/slips/blob/master/slip-0021.md
|
|
125
|
+
*
|
|
126
|
+
* @group Key derivation
|
|
85
127
|
*/
|
|
86
128
|
export declare const createSlip21: (seed: Entropy16 | Entropy32 | Entropy64, path: ReadonlyArray<string | number>) => Entropy32;
|
|
87
129
|
/**
|
|
88
130
|
* Derives a single node in the SLIP-21 hierarchical key derivation.
|
|
89
131
|
*
|
|
132
|
+
* @group Key derivation
|
|
90
133
|
* @see {@link createSlip21}
|
|
91
134
|
*/
|
|
92
135
|
export declare const deriveSlip21Node: (label: string, parentNode: Entropy64) => Entropy64;
|
|
93
|
-
/**
|
|
136
|
+
/**
|
|
137
|
+
* The encryption key for symmetric encryption.
|
|
138
|
+
*
|
|
139
|
+
* @group Encryption
|
|
140
|
+
*/
|
|
94
141
|
export declare const EncryptionKey: import("./Type.ts").BrandType<import("./Type.ts").BrandType<import("./Type.ts").BrandType<import("./Type.ts").Type<"Uint8Array", Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, import("./Type.ts").ObjectTagError<"Uint8Array">, null, import("./Type.ts").ObjectTagError<"Uint8Array">, never, Uint8Array<ArrayBufferLike>, true>, "Entropy", never>, "Length32", import("./Type.ts").LengthError<32>>, "EncryptionKey", never>;
|
|
95
142
|
export type EncryptionKey = typeof EncryptionKey.Output;
|
|
96
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* The nonce length for XChaCha20-Poly1305 encryption.
|
|
145
|
+
*
|
|
146
|
+
* @group Encryption
|
|
147
|
+
*/
|
|
97
148
|
export declare const xChaCha20Poly1305NonceLength = 24;
|
|
98
149
|
/**
|
|
99
150
|
* Branded Uint8Array for XChaCha20-Poly1305 encryption.
|
|
100
151
|
*
|
|
152
|
+
* @group Encryption
|
|
101
153
|
* @see {@link encryptWithXChaCha20Poly1305}
|
|
102
154
|
*/
|
|
103
155
|
export declare const XChaCha20Poly1305Ciphertext: import("./Type.ts").BrandType<import("./Type.ts").Type<"Uint8Array", Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, import("./Type.ts").ObjectTagError<"Uint8Array">, null, import("./Type.ts").ObjectTagError<"Uint8Array">, never, Uint8Array<ArrayBufferLike>, true>, "XChaCha20Poly1305Ciphertext", never>;
|
|
@@ -131,9 +183,15 @@ export type XChaCha20Poly1305Ciphertext = typeof XChaCha20Poly1305Ciphertext.Out
|
|
|
131
183
|
* assertEqual(nonce.length, 24);
|
|
132
184
|
* ```
|
|
133
185
|
*
|
|
186
|
+
* @group Encryption
|
|
134
187
|
* @see https://github.com/paulmillr/noble-ciphers
|
|
135
188
|
*/
|
|
136
189
|
export declare const encryptWithXChaCha20Poly1305: (deps: RandomBytesDep) => (plaintext: Uint8Array, encryptionKey: EncryptionKey) => [XChaCha20Poly1305Ciphertext, Entropy24];
|
|
190
|
+
/**
|
|
191
|
+
* Error returned by {@link decryptWithXChaCha20Poly1305} when decryption fails.
|
|
192
|
+
*
|
|
193
|
+
* @group Encryption
|
|
194
|
+
*/
|
|
137
195
|
export interface DecryptWithXChaCha20Poly1305Error extends Typed<"DecryptWithXChaCha20Poly1305Error"> {
|
|
138
196
|
readonly error: unknown;
|
|
139
197
|
}
|
|
@@ -176,6 +234,8 @@ export interface DecryptWithXChaCha20Poly1305Error extends Typed<"DecryptWithXCh
|
|
|
176
234
|
*
|
|
177
235
|
* assertOk(decryptMessage(), "secret message");
|
|
178
236
|
* ```
|
|
237
|
+
*
|
|
238
|
+
* @group Encryption
|
|
179
239
|
*/
|
|
180
240
|
export declare const decryptWithXChaCha20Poly1305: (ciphertext: XChaCha20Poly1305Ciphertext, nonce: Entropy24, encryptionKey: EncryptionKey) => Result<Uint8Array, DecryptWithXChaCha20Poly1305Error>;
|
|
181
241
|
/**
|
|
@@ -185,18 +245,30 @@ export declare const decryptWithXChaCha20Poly1305: (ciphertext: XChaCha20Poly130
|
|
|
185
245
|
* wide range of encrypted data sizes.
|
|
186
246
|
*
|
|
187
247
|
* See the PURBs paper for details: https://bford.info/pub/sec/purb.pdf
|
|
248
|
+
*
|
|
249
|
+
* @group Padding
|
|
188
250
|
*/
|
|
189
251
|
export declare const createPadmePaddedLength: (length: NonNegativeInt) => NonNegativeInt;
|
|
190
|
-
/**
|
|
252
|
+
/**
|
|
253
|
+
* Creates a PADMÉ padding array of zeros for the given input length.
|
|
254
|
+
*
|
|
255
|
+
* @group Padding
|
|
256
|
+
*/
|
|
191
257
|
export declare const createPadmePadding: (length: NonNegativeInt) => Uint8Array;
|
|
192
258
|
/**
|
|
193
259
|
* Performs a timing-safe comparison of two Uint8Arrays. Returns true if they
|
|
194
260
|
* are equal, false otherwise. Takes constant time regardless of where the
|
|
195
261
|
* arrays differ.
|
|
196
262
|
*
|
|
263
|
+
* @group Comparison
|
|
197
264
|
* @see https://nodejs.org/api/crypto.html#cryptotimingsafeequala-b
|
|
198
265
|
*/
|
|
199
266
|
export type TimingSafeEqual = (a: Uint8Array, b: Uint8Array) => boolean;
|
|
267
|
+
/**
|
|
268
|
+
* Dependency wrapper for {@link TimingSafeEqual}.
|
|
269
|
+
*
|
|
270
|
+
* @group Comparison
|
|
271
|
+
*/
|
|
200
272
|
export interface TimingSafeEqualDep {
|
|
201
273
|
readonly timingSafeEqual: TimingSafeEqual;
|
|
202
274
|
}
|
package/dist/src/Crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../src/Crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAGL,cAAc,EAEd,KAAK,KAAK,EAEX,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED,QAAA,MAAM,OAAO,uSAA6C,CAAC;AAC3D,KAAK,OAAO,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC;AAErC,eAAO,MAAM,SAAS,uXAAoC,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAEhD,eAAO,MAAM,SAAS,uXAAoC,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAEhD,eAAO,MAAM,SAAS,uXAAoC,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAEhD,eAAO,MAAM,SAAS,uXAAoC,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC;AAEhD,eAAO,MAAM,iBAAiB,QAAO,WAEnC,CAAC;AAEH
|
|
1
|
+
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../src/Crypto.ts"],"names":[],"mappings":"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"}
|