@evolu/common 7.2.3 → 7.3.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/Function.d.ts +61 -0
- package/dist/src/Function.d.ts.map +1 -1
- package/dist/src/Function.js +19 -0
- package/dist/src/Object.d.ts +16 -0
- package/dist/src/Object.d.ts.map +1 -1
- package/dist/src/Object.js +16 -0
- package/dist/src/Result.d.ts +36 -29
- package/dist/src/Result.d.ts.map +1 -1
- package/dist/src/Sqlite.d.ts +9 -7
- package/dist/src/Sqlite.d.ts.map +1 -1
- package/dist/src/Sqlite.js +8 -0
- package/dist/src/Task.d.ts.map +1 -1
- package/dist/src/Task.js +6 -4
- package/dist/src/Type.d.ts +30 -2
- package/dist/src/Type.d.ts.map +1 -1
- package/dist/src/Type.js +82 -0
- package/dist/src/local-first/Db.d.ts +1 -5
- package/dist/src/local-first/Db.d.ts.map +1 -1
- package/dist/src/local-first/Db.js +109 -108
- package/dist/src/local-first/Evolu.d.ts +3 -0
- package/dist/src/local-first/Evolu.d.ts.map +1 -1
- package/dist/src/local-first/Evolu.js +6 -7
- package/dist/src/local-first/LocalAuth.d.ts +2 -2
- package/dist/src/local-first/Owner.d.ts +3 -0
- package/dist/src/local-first/Owner.d.ts.map +1 -1
- package/dist/src/local-first/Protocol.d.ts.map +1 -1
- package/dist/src/local-first/Protocol.js +10 -10
- package/dist/src/local-first/PublicKysely.js +1 -1
- package/dist/src/local-first/Query.d.ts +54 -6
- package/dist/src/local-first/Query.d.ts.map +1 -1
- package/dist/src/local-first/Query.js +130 -11
- package/dist/src/local-first/Relay.d.ts.map +1 -1
- package/dist/src/local-first/Relay.js +17 -18
- package/dist/src/local-first/Schema.d.ts +15 -14
- package/dist/src/local-first/Schema.d.ts.map +1 -1
- package/dist/src/local-first/Schema.js +43 -51
- package/dist/src/local-first/Storage.d.ts +2 -2
- package/dist/src/local-first/Storage.d.ts.map +1 -1
- package/dist/src/local-first/Storage.js +2 -6
- package/dist/src/local-first/Sync.d.ts +9 -4
- package/dist/src/local-first/Sync.d.ts.map +1 -1
- package/dist/src/local-first/Sync.js +132 -59
- 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/Function.ts +74 -0
- package/src/Object.ts +20 -0
- package/src/Result.ts +38 -29
- package/src/Sqlite.ts +18 -7
- package/src/Task.ts +6 -4
- package/src/Type.ts +134 -1
- package/src/local-first/Db.ts +181 -209
- package/src/local-first/Evolu.ts +9 -6
- package/src/local-first/LocalAuth.ts +2 -2
- package/src/local-first/Owner.ts +4 -0
- package/src/local-first/Protocol.ts +10 -16
- package/src/local-first/PublicKysely.ts +1 -1
- package/src/local-first/Query.ts +216 -21
- package/src/local-first/Relay.ts +20 -24
- package/src/local-first/Schema.ts +83 -70
- package/src/local-first/Storage.ts +3 -8
- package/src/local-first/Sync.ts +190 -66
- package/src/local-first/index.ts +0 -1
- package/dist/src/local-first/Diff.d.ts +0 -43
- package/dist/src/local-first/Diff.d.ts.map +0 -1
- package/dist/src/local-first/Diff.js +0 -97
- package/src/local-first/Diff.ts +0 -144
package/dist/src/Function.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { NonEmptyArray, NonEmptyReadonlyArray } from "./Array.js";
|
|
2
|
+
import { ReadonlyRecord } from "./Object.js";
|
|
1
3
|
/**
|
|
2
4
|
* Helper function to ensure exhaustive matching in a switch statement. Throws
|
|
3
5
|
* an error if an unhandled case is encountered.
|
|
@@ -28,7 +30,66 @@
|
|
|
28
30
|
* ```
|
|
29
31
|
*/
|
|
30
32
|
export declare const exhaustiveCheck: (value: never) => never;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the input value unchanged.
|
|
35
|
+
*
|
|
36
|
+
* Useful as a default transformation, placeholder callback, or when a function
|
|
37
|
+
* is required but no transformation is needed.
|
|
38
|
+
*
|
|
39
|
+
* ### Example
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* const values = [1, 2, 3];
|
|
43
|
+
* const same = values.map(identity); // [1, 2, 3]
|
|
44
|
+
*
|
|
45
|
+
* const getTransform = (shouldDouble: boolean) =>
|
|
46
|
+
* shouldDouble ? (x: number) => x * 2 : identity;
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
31
49
|
export declare const identity: <A>(a: A) => A;
|
|
50
|
+
/**
|
|
51
|
+
* Casts an array, set, record, or map to its readonly counterpart.
|
|
52
|
+
*
|
|
53
|
+
* Zero runtime cost — returns the same value with a readonly type. Use this to
|
|
54
|
+
* enforce immutability at the type level. Preserves {@link NonEmptyArray} as
|
|
55
|
+
* {@link NonEmptyReadonlyArray}.
|
|
56
|
+
*
|
|
57
|
+
* ### Example
|
|
58
|
+
*
|
|
59
|
+
* ```ts
|
|
60
|
+
* // Array literals become NonEmptyReadonlyArray
|
|
61
|
+
* const items = readonly([1, 2, 3]);
|
|
62
|
+
* // Type: NonEmptyReadonlyArray<number>
|
|
63
|
+
*
|
|
64
|
+
* // NonEmptyArray is preserved as NonEmptyReadonlyArray
|
|
65
|
+
* const nonEmpty: NonEmptyArray<number> = [1, 2, 3];
|
|
66
|
+
* const readonlyNonEmpty = readonly(nonEmpty);
|
|
67
|
+
* // Type: NonEmptyReadonlyArray<number>
|
|
68
|
+
*
|
|
69
|
+
* // Regular arrays become ReadonlyArray
|
|
70
|
+
* const arr: Array<number> = getNumbers();
|
|
71
|
+
* const readonlyArr = readonly(arr);
|
|
72
|
+
* // Type: ReadonlyArray<number>
|
|
73
|
+
*
|
|
74
|
+
* // Sets, Records, and Maps
|
|
75
|
+
* const ids = readonly(new Set(["a", "b"]));
|
|
76
|
+
* // Type: ReadonlySet<string>
|
|
77
|
+
*
|
|
78
|
+
* const users: Record<UserId, string> = { ... };
|
|
79
|
+
* const readonlyUsers = readonly(users);
|
|
80
|
+
* // Type: ReadonlyRecord<UserId, string>
|
|
81
|
+
*
|
|
82
|
+
* const lookup = readonly(new Map([["key", "value"]]));
|
|
83
|
+
* // Type: ReadonlyMap<string, string>
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @experimental
|
|
87
|
+
*/
|
|
88
|
+
export declare function readonly<T>(array: NonEmptyArray<T>): NonEmptyReadonlyArray<T>;
|
|
89
|
+
export declare function readonly<T>(array: Array<T>): ReadonlyArray<T>;
|
|
90
|
+
export declare function readonly<T>(set: Set<T>): ReadonlySet<T>;
|
|
91
|
+
export declare function readonly<K, V>(map: Map<K, V>): ReadonlyMap<K, V>;
|
|
92
|
+
export declare function readonly<K extends keyof any, V>(record: Record<K, V>): ReadonlyRecord<K, V>;
|
|
32
93
|
/**
|
|
33
94
|
* A function that delays computation and returns a value of type T.
|
|
34
95
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Function.d.ts","sourceRoot":"","sources":["../../src/Function.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,KAAG,KAE9C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAAM,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAEnC,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,IAAI,CAAmB,CAAC;AAC1D,eAAO,MAAM,cAAc,EAAE,SAAS,CAAC,SAAS,CAAmB,CAAC;AACpE,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,IAAI,CAAc,CAAC;AACrD,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,IAAI,CAAc,CAAC;AACrD,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,KAAK,CAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"Function.d.ts","sourceRoot":"","sources":["../../src/Function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,KAAG,KAE9C,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAAM,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC/E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACzD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,EAC7C,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GACnB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAWxB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAEnC,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,IAAI,CAAmB,CAAC;AAC1D,eAAO,MAAM,cAAc,EAAE,SAAS,CAAC,SAAS,CAAmB,CAAC;AACpE,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,IAAI,CAAc,CAAC;AACrD,eAAO,MAAM,SAAS,EAAE,SAAS,CAAC,IAAI,CAAc,CAAC;AACrD,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,KAAK,CAAe,CAAC"}
|
package/dist/src/Function.js
CHANGED
|
@@ -30,7 +30,26 @@
|
|
|
30
30
|
export const exhaustiveCheck = (value) => {
|
|
31
31
|
throw new Error(`exhaustiveCheck unhandled case: ${JSON.stringify(value)}`);
|
|
32
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Returns the input value unchanged.
|
|
35
|
+
*
|
|
36
|
+
* Useful as a default transformation, placeholder callback, or when a function
|
|
37
|
+
* is required but no transformation is needed.
|
|
38
|
+
*
|
|
39
|
+
* ### Example
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* const values = [1, 2, 3];
|
|
43
|
+
* const same = values.map(identity); // [1, 2, 3]
|
|
44
|
+
*
|
|
45
|
+
* const getTransform = (shouldDouble: boolean) =>
|
|
46
|
+
* shouldDouble ? (x: number) => x * 2 : identity;
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
33
49
|
export const identity = (a) => a;
|
|
50
|
+
export function readonly(value) {
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
34
53
|
export const constVoid = () => undefined;
|
|
35
54
|
export const constUndefined = () => undefined;
|
|
36
55
|
export const constNull = () => null;
|
package/dist/src/Object.d.ts
CHANGED
|
@@ -52,5 +52,21 @@ export declare const excludeProp: <T extends object, K extends keyof T>(obj: T,
|
|
|
52
52
|
* ```
|
|
53
53
|
*/
|
|
54
54
|
export declare const createRecord: <K extends string = string, V = unknown>() => Record<K, V>;
|
|
55
|
+
/**
|
|
56
|
+
* Safely gets a property from a record, returning `undefined` if the key
|
|
57
|
+
* doesn't exist.
|
|
58
|
+
*
|
|
59
|
+
* TypeScript's `Record<K, V>` type assumes all keys exist, but at runtime
|
|
60
|
+
* accessing a non-existent key returns `undefined`. This helper provides proper
|
|
61
|
+
* typing for that case without needing a type assertion.
|
|
62
|
+
*
|
|
63
|
+
* ### Example
|
|
64
|
+
*
|
|
65
|
+
* ```ts
|
|
66
|
+
* const users: Record<string, User> = { alice: { name: "Alice" } };
|
|
67
|
+
* const user = getProperty(users, "bob"); // User | undefined
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare const getProperty: <K extends string, V>(record: ReadonlyRecord<K, V>, key: string) => V | undefined;
|
|
55
71
|
export {};
|
|
56
72
|
//# sourceMappingURL=Object.d.ts.map
|
package/dist/src/Object.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Object.d.ts","sourceRoot":"","sources":["../../src/Object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,OAAO,KACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAC2B,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAG5E,KAAK,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3D,QAAQ,CAAC,KACR,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAGK,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAC9C,QAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5B,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAC1B,cAAc,CAAC,CAAC,EAAE,CAAC,CAMK,CAAC;AAE5B,wDAAwD;AACxD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAC7D,KAAK,CAAC,EACN,MAAM,CAAC,EACP,YAAY,OAAO,KAClB,OAAO,SAAS,SAAS,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAM/C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,OAAK,MAAM,CAC5E,CAAC,EACD,CAAC,CACqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"Object.d.ts","sourceRoot":"","sources":["../../src/Object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,OAAO,KACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAC2B,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAG5E,KAAK,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3D,QAAQ,CAAC,KACR,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAGK,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAC9C,QAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5B,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAC1B,cAAc,CAAC,CAAC,EAAE,CAAC,CAMK,CAAC;AAE5B,wDAAwD;AACxD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAC7D,KAAK,CAAC,EACN,MAAM,CAAC,EACP,YAAY,OAAO,KAClB,OAAO,SAAS,SAAS,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAM/C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,OAAK,MAAM,CAC5E,CAAC,EACD,CAAC,CACqC,CAAC;AAEzC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,EAC7C,QAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5B,KAAK,MAAM,KACV,CAAC,GAAG,SAA2D,CAAC"}
|
package/dist/src/Object.js
CHANGED
|
@@ -55,3 +55,19 @@ export const excludeProp = (obj, prop, condition) => {
|
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
57
|
export const createRecord = () => Object.create(null);
|
|
58
|
+
/**
|
|
59
|
+
* Safely gets a property from a record, returning `undefined` if the key
|
|
60
|
+
* doesn't exist.
|
|
61
|
+
*
|
|
62
|
+
* TypeScript's `Record<K, V>` type assumes all keys exist, but at runtime
|
|
63
|
+
* accessing a non-existent key returns `undefined`. This helper provides proper
|
|
64
|
+
* typing for that case without needing a type assertion.
|
|
65
|
+
*
|
|
66
|
+
* ### Example
|
|
67
|
+
*
|
|
68
|
+
* ```ts
|
|
69
|
+
* const users: Record<string, User> = { alice: { name: "Alice" } };
|
|
70
|
+
* const user = getProperty(users, "bob"); // User | undefined
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export const getProperty = (record, key) => (key in record ? record[key] : undefined);
|
package/dist/src/Result.d.ts
CHANGED
|
@@ -82,19 +82,22 @@
|
|
|
82
82
|
* };
|
|
83
83
|
* ```
|
|
84
84
|
*
|
|
85
|
+
* For lazy, cancellable async operations, see {@link Task}.
|
|
86
|
+
*
|
|
85
87
|
* ### Naming convention
|
|
86
88
|
*
|
|
87
|
-
* - For values
|
|
88
|
-
* - For
|
|
89
|
-
*
|
|
89
|
+
* - **For values you need:** use a name without Result suffix (`user`, `config`)
|
|
90
|
+
* - **For void operations:** use `result` (no value to name)
|
|
91
|
+
*
|
|
92
|
+
* For multiple void operations, use block scopes to avoid potentially long
|
|
93
|
+
* names like `createBaseTablesResult`, `createRelayTablesResult`, or counters
|
|
94
|
+
* like `result1`, `result2`:
|
|
90
95
|
*
|
|
91
96
|
* ```ts
|
|
92
97
|
* const processUser = () => {
|
|
93
|
-
* // we have a value
|
|
94
98
|
* const user = getUser();
|
|
95
99
|
* if (!user.ok) return user;
|
|
96
100
|
*
|
|
97
|
-
* // single void operation
|
|
98
101
|
* const result = saveToDatabase(user.value);
|
|
99
102
|
* if (!result.ok) return result;
|
|
100
103
|
*
|
|
@@ -102,12 +105,15 @@
|
|
|
102
105
|
* };
|
|
103
106
|
*
|
|
104
107
|
* const setupDatabase = () => {
|
|
105
|
-
* //
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
108
|
+
* // Multiple void operations - use block scopes to avoid name clash
|
|
109
|
+
* {
|
|
110
|
+
* const result = createBaseTables();
|
|
111
|
+
* if (!result.ok) return result;
|
|
112
|
+
* }
|
|
113
|
+
* {
|
|
114
|
+
* const result = createRelayTables();
|
|
115
|
+
* if (!result.ok) return result;
|
|
116
|
+
* }
|
|
111
117
|
*
|
|
112
118
|
* return ok();
|
|
113
119
|
* };
|
|
@@ -124,30 +130,31 @@
|
|
|
124
130
|
* schema, and initializes the database, stopping on the first error:
|
|
125
131
|
*
|
|
126
132
|
* ```ts
|
|
127
|
-
* const
|
|
128
|
-
* const
|
|
129
|
-
* if (!
|
|
133
|
+
* const result = deps.sqlite.transaction(() => {
|
|
134
|
+
* const result = dropAllTables(deps);
|
|
135
|
+
* if (!result.ok) return result;
|
|
130
136
|
*
|
|
131
137
|
* if (message.restore) {
|
|
132
138
|
* const dbSchema = getDbSchema(deps)();
|
|
133
139
|
* if (!dbSchema.ok) return dbSchema;
|
|
134
140
|
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
141
|
+
* {
|
|
142
|
+
* const result = ensureDbSchema(deps)(
|
|
143
|
+
* message.restore.dbSchema,
|
|
144
|
+
* dbSchema.value,
|
|
145
|
+
* );
|
|
146
|
+
* if (!result.ok) return result;
|
|
147
|
+
* }
|
|
148
|
+
* {
|
|
149
|
+
* const result = initializeDb(deps)(message.restore.mnemonic);
|
|
150
|
+
* if (!result.ok) return result;
|
|
151
|
+
* }
|
|
145
152
|
* }
|
|
146
153
|
* return ok();
|
|
147
154
|
* });
|
|
148
155
|
*
|
|
149
|
-
* if (!
|
|
150
|
-
* deps.postMessage({ type: "onError", error:
|
|
156
|
+
* if (!result.ok) {
|
|
157
|
+
* deps.postMessage({ type: "onError", error: result.error });
|
|
151
158
|
* return;
|
|
152
159
|
* }
|
|
153
160
|
* ```
|
|
@@ -254,13 +261,13 @@
|
|
|
254
261
|
* ```ts
|
|
255
262
|
* // ✅ Safe to return void - unsafe code is wrapped and error is handled
|
|
256
263
|
* const processData = (data: string): void => {
|
|
257
|
-
* const
|
|
264
|
+
* const result = trySync(
|
|
258
265
|
* () => JSON.parse(data),
|
|
259
266
|
* (error) => ({ type: "ParseError", message: String(error) }),
|
|
260
267
|
* );
|
|
261
268
|
*
|
|
262
|
-
* if (!
|
|
263
|
-
* logError(
|
|
269
|
+
* if (!result.ok) {
|
|
270
|
+
* logError(result.error);
|
|
264
271
|
* return;
|
|
265
272
|
* }
|
|
266
273
|
*
|
package/dist/src/Result.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../src/Result.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../src/Result.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqVG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAE1C,mCAAmC;AACnC,MAAM,WAAW,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAC5C,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpC;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAC7C,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAErC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC/B,2DAA2D;AAC3D,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAKvC;;;;;;;;;GASG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,GAAG,CAAC,CAAC,CAA2B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAMvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,GAAG,IAC1B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAC1B,IAAI,MAAM,CAAC,EACX,UAAU,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,KAC9B,MAAM,CAAC,CAAC,EAAE,CAAC,CAMb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,QAAQ,GAAU,CAAC,EAAE,CAAC,EACjC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,UAAU,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,KAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAIpB,CAAC"}
|
package/dist/src/Sqlite.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Brand } from "./Brand.js";
|
|
2
2
|
import { ConsoleDep } from "./Console.js";
|
|
3
3
|
import { EncryptionKey } from "./Crypto.js";
|
|
4
|
+
import { Eq } from "./Eq.js";
|
|
4
5
|
import { TransferableError } from "./Error.js";
|
|
5
6
|
import { Result } from "./Result.js";
|
|
6
7
|
import { SimpleName } from "./Type.js";
|
|
@@ -18,8 +19,8 @@ export interface CreateSqliteDriverDep {
|
|
|
18
19
|
readonly createSqliteDriver: CreateSqliteDriver;
|
|
19
20
|
}
|
|
20
21
|
export interface SqliteDriverOptions {
|
|
21
|
-
memory?: boolean;
|
|
22
|
-
encryptionKey?: EncryptionKey | undefined;
|
|
22
|
+
readonly memory?: boolean;
|
|
23
|
+
readonly encryptionKey?: EncryptionKey | undefined;
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
25
26
|
* Cross-platform SQLite abstraction.
|
|
@@ -49,7 +50,7 @@ export interface SqliteQuery {
|
|
|
49
50
|
readonly options?: SqliteQueryOptions;
|
|
50
51
|
}
|
|
51
52
|
/** A type representing a sanitized SQL string. */
|
|
52
|
-
export type SafeSql = string & Brand<"
|
|
53
|
+
export type SafeSql = string & Brand<"SafeSql">;
|
|
53
54
|
/**
|
|
54
55
|
* A value that can be stored in Sqlite.
|
|
55
56
|
*
|
|
@@ -58,6 +59,7 @@ export type SafeSql = string & Brand<"TimestampString">;
|
|
|
58
59
|
*/
|
|
59
60
|
export declare const SqliteValue: import("./Type.js").UnionType<[import("./Type.js").Type<"Null", null, null, import("./Type.js").NullError, null, import("./Type.js").NullError>, import("./Type.js").Type<"String", string, string, import("./Type.js").StringError, string, import("./Type.js").StringError>, import("./Type.js").Type<"Number", number, number, import("./Type.js").NumberError, number, import("./Type.js").NumberError>, import("./Type.js").Type<"Uint8Array", Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, import("./Type.js").Uint8ArrayError, Uint8Array<ArrayBufferLike>, import("./Type.js").Uint8ArrayError>]>;
|
|
60
61
|
export type SqliteValue = typeof SqliteValue.Type;
|
|
62
|
+
export declare const eqSqliteValue: Eq<SqliteValue>;
|
|
61
63
|
export interface SqliteQueryOptions {
|
|
62
64
|
/**
|
|
63
65
|
* If set to `true`, logs the time taken to execute the SQL query. Useful for
|
|
@@ -103,12 +105,12 @@ export interface PreparedStatements<P> extends Disposable {
|
|
|
103
105
|
}
|
|
104
106
|
export declare const createPreparedStatementsCache: <P>(factory: (sql: SafeSql) => P, disposeFn: (statement: P) => void) => PreparedStatements<P>;
|
|
105
107
|
export interface SqlIdentifier {
|
|
106
|
-
type: "SqlIdentifier";
|
|
107
|
-
sql: SafeSql;
|
|
108
|
+
readonly type: "SqlIdentifier";
|
|
109
|
+
readonly sql: SafeSql;
|
|
108
110
|
}
|
|
109
111
|
export interface RawSql {
|
|
110
|
-
type: "RawSql";
|
|
111
|
-
sql: string;
|
|
112
|
+
readonly type: "RawSql";
|
|
113
|
+
readonly sql: string;
|
|
112
114
|
}
|
|
113
115
|
export type SqlTemplateParam = SqliteValue | SqlIdentifier | RawSql;
|
|
114
116
|
/**
|
package/dist/src/Sqlite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sqlite.d.ts","sourceRoot":"","sources":["../../src/Sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAA2B,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAW,MAAM,EAAqB,MAAM,aAAa,CAAC;AACjE,OAAO,EAIL,UAAU,EAIX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAoB,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,KAAK,gBAAgB,CAAC;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,mBAAmB,KAC1B,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Sqlite.d.ts","sourceRoot":"","sources":["../../src/Sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAiB,MAAM,SAAS,CAAC;AAC5C,OAAO,EAA2B,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAW,MAAM,EAAqB,MAAM,aAAa,CAAC;AACjE,OAAO,EAIL,UAAU,EAIX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAoB,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,KAAK,gBAAgB,CAAC;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,mBAAmB,KAC1B,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACpD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC7C,KAAK,EAAE,WAAW,KACf,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EACzB,QAAQ,EAAE,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,KACvC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;IAEhC,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED,kDAAkD;AAClD,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,wlBAA0C,CAAC;AACnE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,WAAW,CAQzC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC/D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,YAAY,GACtB,MAAM,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,MAEhD,MAAM,UAAU,EAChB,UAAU,mBAAmB,KAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CA+Ff,CAAC;AAyB1B,MAAM,WAAW,kBAAkB,CAAC,CAAC,CAAE,SAAQ,UAAU;IACvD,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,OAAO,EAC9B,KAAK,EAAE,WAAW,EAClB,aAAa,CAAC,EAAE,CAAC,KACd,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACpC;AAED,eAAO,MAAM,6BAA6B,GAAI,CAAC,EAC7C,SAAS,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,EAC5B,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,KAChC,kBAAkB,CAAC,CAAC,CAuBtB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,GAAG;cACL,oBAAoB,iBACd,KAAK,CAAC,gBAAgB,CAAC,GACrC,WAAW;2BAoBgB,MAAM,GAAG,aAAa;aAcpC,MAAM,GAAG,MAAM;sBAGpB,oBAAoB,iBACd,KAAK,CAAC,gBAAgB,CAAC,GACrC,WAAW;CArBb,CAAC;AA0BF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,MAAM,CAa3C,CAAC;AAyDF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,sBAAsB,GAChC,MAAM,SAAS,MACf,OAAO,WAAW,KAAG,MAAM,CAAC,IAAI,EAAE,WAAW,CAiB7C,CAAC;AAoBJ;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,yGAAc,CAAC;AACzC,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;;;GAIG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,OAAO,KAAG,aACtB,CAAC;AAEnC;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,aAAa,KAAG,OACxC,CAAC"}
|
package/dist/src/Sqlite.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createLruCache } from "./Cache.js";
|
|
2
|
+
import { eqArrayNumber } from "./Eq.js";
|
|
2
3
|
import { createTransferableError } from "./Error.js";
|
|
3
4
|
import { err, ok, tryAsync, trySync } from "./Result.js";
|
|
4
5
|
import { Null, Number, PositiveInt, String, Uint8Array, union, } from "./Type.js";
|
|
@@ -9,6 +10,13 @@ import { Null, Number, PositiveInt, String, Uint8Array, union, } from "./Type.js
|
|
|
9
10
|
* not support it.
|
|
10
11
|
*/
|
|
11
12
|
export const SqliteValue = union(Null, String, Number, Uint8Array);
|
|
13
|
+
export const eqSqliteValue = (x, y) => {
|
|
14
|
+
if (x instanceof globalThis.Uint8Array &&
|
|
15
|
+
y instanceof globalThis.Uint8Array) {
|
|
16
|
+
return eqArrayNumber(x, y);
|
|
17
|
+
}
|
|
18
|
+
return x === y;
|
|
19
|
+
};
|
|
12
20
|
/**
|
|
13
21
|
* Creates a fully featured {@link Sqlite} instance from a {@link SqliteDriver}
|
|
14
22
|
* implementation.
|
package/dist/src/Task.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../src/Task.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../src/Task.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Task.js
CHANGED
|
@@ -257,10 +257,12 @@ export const retry = ({ retries, initialDelay = "1s", maxDelay = "30s", factor =
|
|
|
257
257
|
onRetry(result.error, attempt, delay);
|
|
258
258
|
}
|
|
259
259
|
// Wait before retry
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
260
|
+
{
|
|
261
|
+
const result = await wait(NonNegativeInt.orThrow(delay))(context);
|
|
262
|
+
if (!result.ok) {
|
|
263
|
+
// If delay was aborted, return AbortError (will be handled by toTask)
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
264
266
|
}
|
|
265
267
|
}
|
|
266
268
|
});
|
package/dist/src/Type.d.ts
CHANGED
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
* @module
|
|
202
202
|
*/
|
|
203
203
|
import type { Brand } from "./Brand.js";
|
|
204
|
-
import {
|
|
204
|
+
import type { RandomBytesDep } from "./Crypto.js";
|
|
205
205
|
import { Result } from "./Result.js";
|
|
206
206
|
import type { TimeDep } from "./Time.js";
|
|
207
207
|
import type { Literal, Refinement, Simplify, WidenLiteral } from "./Types.js";
|
|
@@ -1494,6 +1494,34 @@ export interface ArrayError<Error extends TypeError = TypeError> extends TypeErr
|
|
|
1494
1494
|
}> {
|
|
1495
1495
|
}
|
|
1496
1496
|
export declare const formatArrayError: <Error extends TypeError>(formatTypeError: TypeErrorFormatter<Error>) => TypeErrorFormatter<ArrayError<Error>>;
|
|
1497
|
+
/**
|
|
1498
|
+
* Set of a specific {@link Type}.
|
|
1499
|
+
*
|
|
1500
|
+
* ### Example
|
|
1501
|
+
*
|
|
1502
|
+
* ```ts
|
|
1503
|
+
* const NumberSet = set(Number);
|
|
1504
|
+
*
|
|
1505
|
+
* const result1 = NumberSet.from(new Set([1, 2, 3])); // ok(Set { 1, 2, 3 })
|
|
1506
|
+
* const result2 = NumberSet.from(new Set(["a", "b"])); // err(...)
|
|
1507
|
+
* ```
|
|
1508
|
+
*
|
|
1509
|
+
* @category Base Factories
|
|
1510
|
+
*/
|
|
1511
|
+
export declare const set: <ElementType extends AnyType>(element: ElementType) => SetType<ElementType>;
|
|
1512
|
+
/** SetType extends Type with an additional `element` property for reflection. */
|
|
1513
|
+
export interface SetType<ElementType extends AnyType> extends Type<"Set", ReadonlySet<InferType<ElementType>>, ReadonlySet<InferInput<ElementType>>, SetError<InferError<ElementType>>, ReadonlySet<InferParent<ElementType>>, SetError<InferParentError<ElementType>>> {
|
|
1514
|
+
readonly element: ElementType;
|
|
1515
|
+
}
|
|
1516
|
+
export interface SetError<Error extends TypeError = TypeError> extends TypeErrorWithReason<"Set", {
|
|
1517
|
+
readonly kind: "NotSet";
|
|
1518
|
+
} | {
|
|
1519
|
+
readonly kind: "Element";
|
|
1520
|
+
readonly index: number;
|
|
1521
|
+
readonly error: Error;
|
|
1522
|
+
}> {
|
|
1523
|
+
}
|
|
1524
|
+
export declare const formatSetError: <Error extends TypeError>(formatTypeError: TypeErrorFormatter<Error>) => TypeErrorFormatter<SetError<Error>>;
|
|
1497
1525
|
/**
|
|
1498
1526
|
* Record of a key {@link Type} and value {@link Type}.
|
|
1499
1527
|
*
|
|
@@ -2120,7 +2148,7 @@ export type ValidMutationSize<Props extends Record<string, AnyType>> = BrandType
|
|
|
2120
2148
|
*
|
|
2121
2149
|
* @category Utilities
|
|
2122
2150
|
*/
|
|
2123
|
-
export type TypeErrors<ExtraErrors extends TypeError = never> = StringError | NumberError | BigIntError | BooleanError | UndefinedError | NullError | FunctionError | Uint8ArrayError | InstanceOfError | EvoluTypeError | CurrencyCodeError | DateIsoError | TrimmedError | MinLengthError | MaxLengthError | LengthError | MnemonicError | RegexError | SimplePasswordError | IdError | TableIdError | PositiveError | NegativeError | NonPositiveError | NonNegativeError | IntError | GreaterThanError | LessThanError | GreaterThanOrEqualToError | LessThanOrEqualToError | NonNaNError | FiniteError | MultipleOfError | BetweenError | LiteralError | Int64Error | Int64StringError | JsonError | ValidMutationSizeError | ExtraErrors | ArrayError<TypeErrors<ExtraErrors>> | RecordError<TypeErrors<ExtraErrors>, TypeErrors<ExtraErrors>> | ObjectError<Record<string, TypeErrors<ExtraErrors>>> | ObjectWithRecordError<Record<string, TypeErrors<ExtraErrors>>, TypeErrors<ExtraErrors>, TypeErrors<ExtraErrors>> | UnionError<TypeErrors<ExtraErrors>> | TupleError<TypeErrors<ExtraErrors>>;
|
|
2151
|
+
export type TypeErrors<ExtraErrors extends TypeError = never> = StringError | NumberError | BigIntError | BooleanError | UndefinedError | NullError | FunctionError | Uint8ArrayError | InstanceOfError | EvoluTypeError | CurrencyCodeError | DateIsoError | TrimmedError | MinLengthError | MaxLengthError | LengthError | MnemonicError | RegexError | SimplePasswordError | IdError | TableIdError | PositiveError | NegativeError | NonPositiveError | NonNegativeError | IntError | GreaterThanError | LessThanError | GreaterThanOrEqualToError | LessThanOrEqualToError | NonNaNError | FiniteError | MultipleOfError | BetweenError | LiteralError | Int64Error | Int64StringError | JsonError | ValidMutationSizeError | ExtraErrors | ArrayError<TypeErrors<ExtraErrors>> | SetError<TypeErrors<ExtraErrors>> | RecordError<TypeErrors<ExtraErrors>, TypeErrors<ExtraErrors>> | ObjectError<Record<string, TypeErrors<ExtraErrors>>> | ObjectWithRecordError<Record<string, TypeErrors<ExtraErrors>>, TypeErrors<ExtraErrors>, TypeErrors<ExtraErrors>> | UnionError<TypeErrors<ExtraErrors>> | TupleError<TypeErrors<ExtraErrors>>;
|
|
2124
2152
|
/**
|
|
2125
2153
|
* Formats Evolu Type errors into user-friendly messages.
|
|
2126
2154
|
*
|