@evolu/common 7.2.2 → 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.
Files changed (77) hide show
  1. package/dist/src/Function.d.ts +61 -0
  2. package/dist/src/Function.d.ts.map +1 -1
  3. package/dist/src/Function.js +19 -0
  4. package/dist/src/Object.d.ts +32 -1
  5. package/dist/src/Object.d.ts.map +1 -1
  6. package/dist/src/Object.js +32 -1
  7. package/dist/src/Order.d.ts +2 -1
  8. package/dist/src/Order.d.ts.map +1 -1
  9. package/dist/src/Order.js +1 -0
  10. package/dist/src/Result.d.ts +36 -29
  11. package/dist/src/Result.d.ts.map +1 -1
  12. package/dist/src/Sqlite.d.ts +9 -7
  13. package/dist/src/Sqlite.d.ts.map +1 -1
  14. package/dist/src/Sqlite.js +8 -0
  15. package/dist/src/Task.d.ts.map +1 -1
  16. package/dist/src/Task.js +6 -4
  17. package/dist/src/Type.d.ts +30 -2
  18. package/dist/src/Type.d.ts.map +1 -1
  19. package/dist/src/Type.js +82 -0
  20. package/dist/src/local-first/Db.d.ts +1 -5
  21. package/dist/src/local-first/Db.d.ts.map +1 -1
  22. package/dist/src/local-first/Db.js +112 -117
  23. package/dist/src/local-first/Evolu.d.ts +3 -0
  24. package/dist/src/local-first/Evolu.d.ts.map +1 -1
  25. package/dist/src/local-first/Evolu.js +14 -12
  26. package/dist/src/local-first/LocalAuth.d.ts +2 -2
  27. package/dist/src/local-first/Owner.d.ts +3 -0
  28. package/dist/src/local-first/Owner.d.ts.map +1 -1
  29. package/dist/src/local-first/Protocol.d.ts +1 -1
  30. package/dist/src/local-first/Protocol.d.ts.map +1 -1
  31. package/dist/src/local-first/Protocol.js +12 -12
  32. package/dist/src/local-first/PublicKysely.js +1 -1
  33. package/dist/src/local-first/Query.d.ts +54 -6
  34. package/dist/src/local-first/Query.d.ts.map +1 -1
  35. package/dist/src/local-first/Query.js +130 -11
  36. package/dist/src/local-first/Relay.d.ts.map +1 -1
  37. package/dist/src/local-first/Relay.js +17 -18
  38. package/dist/src/local-first/Schema.d.ts +15 -14
  39. package/dist/src/local-first/Schema.d.ts.map +1 -1
  40. package/dist/src/local-first/Schema.js +43 -51
  41. package/dist/src/local-first/Storage.d.ts +2 -2
  42. package/dist/src/local-first/Storage.d.ts.map +1 -1
  43. package/dist/src/local-first/Storage.js +2 -6
  44. package/dist/src/local-first/Sync.d.ts +10 -7
  45. package/dist/src/local-first/Sync.d.ts.map +1 -1
  46. package/dist/src/local-first/Sync.js +154 -103
  47. package/dist/src/local-first/Timestamp.d.ts +13 -0
  48. package/dist/src/local-first/Timestamp.d.ts.map +1 -1
  49. package/dist/src/local-first/Timestamp.js +14 -1
  50. package/dist/src/local-first/index.d.ts +0 -1
  51. package/dist/src/local-first/index.d.ts.map +1 -1
  52. package/dist/src/local-first/index.js +0 -1
  53. package/package.json +1 -1
  54. package/src/Function.ts +74 -0
  55. package/src/Object.ts +40 -1
  56. package/src/Order.ts +2 -1
  57. package/src/Result.ts +38 -29
  58. package/src/Sqlite.ts +18 -7
  59. package/src/Task.ts +6 -4
  60. package/src/Type.ts +134 -1
  61. package/src/local-first/Db.ts +182 -217
  62. package/src/local-first/Evolu.ts +21 -10
  63. package/src/local-first/LocalAuth.ts +2 -2
  64. package/src/local-first/Owner.ts +4 -0
  65. package/src/local-first/Protocol.ts +13 -19
  66. package/src/local-first/PublicKysely.ts +1 -1
  67. package/src/local-first/Query.ts +216 -21
  68. package/src/local-first/Relay.ts +20 -24
  69. package/src/local-first/Schema.ts +83 -70
  70. package/src/local-first/Storage.ts +3 -8
  71. package/src/local-first/Sync.ts +215 -135
  72. package/src/local-first/Timestamp.ts +14 -1
  73. package/src/local-first/index.ts +0 -1
  74. package/dist/src/local-first/Diff.d.ts +0 -43
  75. package/dist/src/local-first/Diff.d.ts.map +0 -1
  76. package/dist/src/local-first/Diff.js +0 -97
  77. package/src/local-first/Diff.ts +0 -144
@@ -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"}
@@ -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;
@@ -24,7 +24,7 @@ type StringKeyOf<T> = Extract<keyof T, string>;
24
24
  *
25
25
  * ```ts
26
26
  * type UserId = string & { readonly __brand: "UserId" };
27
- * const users: Record<UserId, string> = {};
27
+ * const users = createRecord<UserId, string>();
28
28
  * const entries = objectToEntries(users); // [UserId, string][]
29
29
  * ```
30
30
  */
@@ -37,5 +37,36 @@ export declare const objectToEntries: <T extends Record<string, any>>(record: T)
37
37
  export declare const mapObject: <K extends string, V, U>(record: ReadonlyRecord<K, V>, fn: (value: V, key: K) => U) => ReadonlyRecord<K, U>;
38
38
  /** Conditionally excludes a property from an object. */
39
39
  export declare const excludeProp: <T extends object, K extends keyof T>(obj: T, prop: K, condition?: boolean) => typeof condition extends true ? T : Omit<T, K>;
40
+ /**
41
+ * Creates a prototype-less object typed as `Record<K, V>`.
42
+ *
43
+ * Use this function when you need a plain record without a prototype chain
44
+ * (e.g. when keys are controlled by external sources) to avoid prototype
45
+ * pollution and accidental collisions with properties like `__proto__`.
46
+ *
47
+ * Example:
48
+ *
49
+ * ```ts
50
+ * const values = createRecord<string, SqliteValue>();
51
+ * values["__proto__"] = someValue; // safe, no prototype pollution
52
+ * ```
53
+ */
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;
40
71
  export {};
41
72
  //# sourceMappingURL=Object.d.ts.map
@@ -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"}
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"}
@@ -18,7 +18,7 @@ export const isPlainObject = (value) => Object.prototype.toString.call(value) ==
18
18
  *
19
19
  * ```ts
20
20
  * type UserId = string & { readonly __brand: "UserId" };
21
- * const users: Record<UserId, string> = {};
21
+ * const users = createRecord<UserId, string>();
22
22
  * const entries = objectToEntries(users); // [UserId, string][]
23
23
  * ```
24
24
  */
@@ -40,3 +40,34 @@ export const excludeProp = (obj, prop, condition) => {
40
40
  const { [prop]: _, ...rest } = obj;
41
41
  return rest;
42
42
  };
43
+ /**
44
+ * Creates a prototype-less object typed as `Record<K, V>`.
45
+ *
46
+ * Use this function when you need a plain record without a prototype chain
47
+ * (e.g. when keys are controlled by external sources) to avoid prototype
48
+ * pollution and accidental collisions with properties like `__proto__`.
49
+ *
50
+ * Example:
51
+ *
52
+ * ```ts
53
+ * const values = createRecord<string, SqliteValue>();
54
+ * values["__proto__"] = someValue; // safe, no prototype pollution
55
+ * ```
56
+ */
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);
@@ -81,5 +81,6 @@ export declare const orderNumber: Order<number>;
81
81
  * ```
82
82
  */
83
83
  export declare const orderBigInt: Order<bigint>;
84
- export declare const orderUint8Array: Order<globalThis.Uint8Array>;
84
+ /** An {@link Order} for Uint8Array. */
85
+ export declare const orderUint8Array: Order<Uint8Array>;
85
86
  //# sourceMappingURL=Order.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Order.d.ts","sourceRoot":"","sources":["../../src/Order.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,GACrB,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAAG,KAAK,CAAC,CAAC,CAER,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GACtB,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAEhB,CAAC;AAEhB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,MAAM,CAAgC,CAAC;AAEvE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,eAAuC,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,eAAuC,CAAC;AAEhE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,CAUxD,CAAC"}
1
+ {"version":3,"file":"Order.d.ts","sourceRoot":"","sources":["../../src/Order.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,GACrB,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAAG,KAAK,CAAC,CAAC,CAER,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GACtB,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,CAEhB,CAAC;AAEhB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,MAAM,CAAgC,CAAC;AAEvE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,eAAuC,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,eAAuC,CAAC;AAEhE,uCAAuC;AACvC,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,UAAU,CAU7C,CAAC"}
package/dist/src/Order.js CHANGED
@@ -65,6 +65,7 @@ export const orderNumber = createOrder((a, b) => a < b);
65
65
  * ```
66
66
  */
67
67
  export const orderBigInt = createOrder((a, b) => a < b);
68
+ /** An {@link Order} for Uint8Array. */
68
69
  export const orderUint8Array = (a, b) => {
69
70
  if (a.byteLength > b.byteLength)
70
71
  return 1;
@@ -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: `const user = getUser()`
88
- * - For a single void operation: `const result = foo()`
89
- * - For multiple void operations: use descriptive names for all
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
- * // multiple void operations - use descriptive names
106
- * const baseTables = createBaseTables();
107
- * if (!baseTables.ok) return baseTables;
108
- *
109
- * const relayTables = createRelayTables();
110
- * if (!relayTables.ok) return relayTables;
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 resetResult = deps.sqlite.transaction(() => {
128
- * const dropAllTablesResult = dropAllTables(deps);
129
- * if (!dropAllTablesResult.ok) return dropAllTablesResult;
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
- * const ensureDbSchemaResult = ensureDbSchema(deps)(
136
- * message.restore.dbSchema,
137
- * dbSchema.value,
138
- * );
139
- * if (!ensureDbSchemaResult.ok) return ensureDbSchemaResult;
140
- *
141
- * const initializeDbResult = initializeDb(deps)(
142
- * message.restore.mnemonic,
143
- * );
144
- * if (!initializeDbResult.ok) return initializeDbResult;
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 (!resetResult.ok) {
150
- * deps.postMessage({ type: "onError", error: resetResult.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 parseResult = trySync(
264
+ * const result = trySync(
258
265
  * () => JSON.parse(data),
259
266
  * (error) => ({ type: "ParseError", message: String(error) }),
260
267
  * );
261
268
  *
262
- * if (!parseResult.ok) {
263
- * logError(parseResult.error);
269
+ * if (!result.ok) {
270
+ * logError(result.error);
264
271
  * return;
265
272
  * }
266
273
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../src/Result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8UG;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"}
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"}
@@ -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<"TimestampString">;
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
  /**
@@ -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;IACjB,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC3C;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,iBAAiB,CAAC,CAAC;AAExD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,wlBAA0C,CAAC;AACnE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;AAElD,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,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;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"}
1
+ {"version":3,"file":"Sqlite.d.ts","sourceRoot":"","sources":["../../src/Sqlite.ts"],"names":[],"mappings":"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"}
@@ -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.
@@ -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
- const delayResult = await wait(NonNegativeInt.orThrow(delay))(context);
261
- if (!delayResult.ok) {
262
- // If delay was aborted, return AbortError (will be handled by toTask)
263
- return delayResult;
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
  });
@@ -201,7 +201,7 @@
201
201
  * @module
202
202
  */
203
203
  import type { Brand } from "./Brand.js";
204
- import { type RandomBytesDep } from "./Crypto.js";
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
  *