@evolu/common 8.1.0 → 8.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 +1 -0
- package/dist/src/Function.d.ts.map +1 -1
- package/dist/src/Http.d.ts +9 -0
- package/dist/src/Http.d.ts.map +1 -1
- package/dist/src/Number.d.ts +66 -6
- package/dist/src/Number.d.ts.map +1 -1
- package/dist/src/Number.js +11 -3
- package/dist/src/Object.d.ts +1 -0
- package/dist/src/Object.d.ts.map +1 -1
- package/dist/src/RefCount.d.ts +1 -0
- package/dist/src/RefCount.d.ts.map +1 -1
- package/dist/src/Relation.d.ts +2 -0
- package/dist/src/Relation.d.ts.map +1 -1
- package/dist/src/Resource.d.ts +1 -0
- package/dist/src/Resource.d.ts.map +1 -1
- package/dist/src/Result.d.ts +383 -548
- package/dist/src/Result.d.ts.map +1 -1
- package/dist/src/Result.js +296 -46
- package/dist/src/Schedule.d.ts +2 -2
- package/dist/src/Schedule.d.ts.map +1 -1
- package/dist/src/StackTrace.d.ts +1 -0
- package/dist/src/StackTrace.d.ts.map +1 -1
- package/dist/src/Task.d.ts +978 -1061
- package/dist/src/Task.d.ts.map +1 -1
- package/dist/src/Task.js +1010 -159
- package/dist/src/Time.d.ts +71 -34
- package/dist/src/Time.d.ts.map +1 -1
- package/dist/src/Time.js +77 -1
- package/dist/src/Type.d.ts +1740 -795
- package/dist/src/Type.d.ts.map +1 -1
- package/dist/src/Type.js +1634 -211
- package/dist/src/Types.d.ts +0 -24
- package/dist/src/Types.d.ts.map +1 -1
- package/dist/src/intl/_en.d.ts +126 -0
- package/dist/src/intl/_en.d.ts.map +1 -0
- package/dist/src/intl/_en.js +267 -0
- package/dist/src/intl/ar.d.ts +117 -0
- package/dist/src/intl/ar.d.ts.map +1 -0
- package/dist/src/intl/ar.js +245 -0
- package/dist/src/intl/bn.d.ts +117 -0
- package/dist/src/intl/bn.d.ts.map +1 -0
- package/dist/src/intl/bn.js +258 -0
- package/dist/src/intl/ca.d.ts +117 -0
- package/dist/src/intl/ca.d.ts.map +1 -0
- package/dist/src/intl/ca.js +258 -0
- package/dist/src/intl/cs.d.ts +30 -7
- package/dist/src/intl/cs.d.ts.map +1 -1
- package/dist/src/intl/cs.js +65 -28
- package/dist/src/intl/da.d.ts +117 -0
- package/dist/src/intl/da.d.ts.map +1 -0
- package/dist/src/intl/da.js +258 -0
- package/dist/src/intl/de.d.ts +117 -0
- package/dist/src/intl/de.d.ts.map +1 -0
- package/dist/src/intl/de.js +258 -0
- package/dist/src/intl/el.d.ts +117 -0
- package/dist/src/intl/el.d.ts.map +1 -0
- package/dist/src/intl/el.js +265 -0
- package/dist/src/intl/es.d.ts +117 -0
- package/dist/src/intl/es.d.ts.map +1 -0
- package/dist/src/intl/es.js +258 -0
- package/dist/src/intl/fa.d.ts +117 -0
- package/dist/src/intl/fa.d.ts.map +1 -0
- package/dist/src/intl/fa.js +258 -0
- package/dist/src/intl/fi.d.ts +117 -0
- package/dist/src/intl/fi.d.ts.map +1 -0
- package/dist/src/intl/fi.js +258 -0
- package/dist/src/intl/fil.d.ts +117 -0
- package/dist/src/intl/fil.d.ts.map +1 -0
- package/dist/src/intl/fil.js +258 -0
- package/dist/src/intl/fr.d.ts +117 -0
- package/dist/src/intl/fr.d.ts.map +1 -0
- package/dist/src/intl/fr.js +258 -0
- package/dist/src/intl/he.d.ts +117 -0
- package/dist/src/intl/he.d.ts.map +1 -0
- package/dist/src/intl/he.js +258 -0
- package/dist/src/intl/hi.d.ts +117 -0
- package/dist/src/intl/hi.d.ts.map +1 -0
- package/dist/src/intl/hi.js +258 -0
- package/dist/src/intl/hr.d.ts +117 -0
- package/dist/src/intl/hr.d.ts.map +1 -0
- package/dist/src/intl/hr.js +265 -0
- package/dist/src/intl/hu.d.ts +63 -0
- package/dist/src/intl/hu.d.ts.map +1 -0
- package/dist/src/intl/hu.js +204 -0
- package/dist/src/intl/id.d.ts +117 -0
- package/dist/src/intl/id.d.ts.map +1 -0
- package/dist/src/intl/id.js +258 -0
- package/dist/src/intl/index.d.ts +42 -0
- package/dist/src/intl/index.d.ts.map +1 -1
- package/dist/src/intl/index.js +42 -0
- package/dist/src/intl/it.d.ts +117 -0
- package/dist/src/intl/it.d.ts.map +1 -0
- package/dist/src/intl/it.js +258 -0
- package/dist/src/intl/ja.d.ts +117 -0
- package/dist/src/intl/ja.d.ts.map +1 -0
- package/dist/src/intl/ja.js +258 -0
- package/dist/src/intl/ko.d.ts +117 -0
- package/dist/src/intl/ko.d.ts.map +1 -0
- package/dist/src/intl/ko.js +258 -0
- package/dist/src/intl/ml.d.ts +117 -0
- package/dist/src/intl/ml.d.ts.map +1 -0
- package/dist/src/intl/ml.js +258 -0
- package/dist/src/intl/mr.d.ts +117 -0
- package/dist/src/intl/mr.d.ts.map +1 -0
- package/dist/src/intl/mr.js +258 -0
- package/dist/src/intl/ms.d.ts +117 -0
- package/dist/src/intl/ms.d.ts.map +1 -0
- package/dist/src/intl/ms.js +245 -0
- package/dist/src/intl/nb.d.ts +63 -0
- package/dist/src/intl/nb.d.ts.map +1 -0
- package/dist/src/intl/nb.js +191 -0
- package/dist/src/intl/nl.d.ts +117 -0
- package/dist/src/intl/nl.d.ts.map +1 -0
- package/dist/src/intl/nl.js +258 -0
- package/dist/src/intl/pa.d.ts +117 -0
- package/dist/src/intl/pa.d.ts.map +1 -0
- package/dist/src/intl/pa.js +258 -0
- package/dist/src/intl/pl.d.ts +117 -0
- package/dist/src/intl/pl.d.ts.map +1 -0
- package/dist/src/intl/pl.js +242 -0
- package/dist/src/intl/pt-BR.d.ts +117 -0
- package/dist/src/intl/pt-BR.d.ts.map +1 -0
- package/dist/src/intl/pt-BR.js +258 -0
- package/dist/src/intl/pt.d.ts +117 -0
- package/dist/src/intl/pt.d.ts.map +1 -0
- package/dist/src/intl/pt.js +246 -0
- package/dist/src/intl/ro.d.ts +117 -0
- package/dist/src/intl/ro.d.ts.map +1 -0
- package/dist/src/intl/ro.js +258 -0
- package/dist/src/intl/sk.d.ts +117 -0
- package/dist/src/intl/sk.d.ts.map +1 -0
- package/dist/src/intl/sk.js +244 -0
- package/dist/src/intl/sl.d.ts +117 -0
- package/dist/src/intl/sl.d.ts.map +1 -0
- package/dist/src/intl/sl.js +258 -0
- package/dist/src/intl/sv.d.ts +117 -0
- package/dist/src/intl/sv.d.ts.map +1 -0
- package/dist/src/intl/sv.js +258 -0
- package/dist/src/intl/sw.d.ts +63 -0
- package/dist/src/intl/sw.d.ts.map +1 -0
- package/dist/src/intl/sw.js +191 -0
- package/dist/src/intl/ta.d.ts +117 -0
- package/dist/src/intl/ta.d.ts.map +1 -0
- package/dist/src/intl/ta.js +258 -0
- package/dist/src/intl/te.d.ts +117 -0
- package/dist/src/intl/te.d.ts.map +1 -0
- package/dist/src/intl/te.js +258 -0
- package/dist/src/intl/th.d.ts +117 -0
- package/dist/src/intl/th.d.ts.map +1 -0
- package/dist/src/intl/th.js +258 -0
- package/dist/src/intl/tr.d.ts +117 -0
- package/dist/src/intl/tr.d.ts.map +1 -0
- package/dist/src/intl/tr.js +255 -0
- package/dist/src/intl/uk.d.ts +117 -0
- package/dist/src/intl/uk.d.ts.map +1 -0
- package/dist/src/intl/uk.js +258 -0
- package/dist/src/intl/ur.d.ts +117 -0
- package/dist/src/intl/ur.d.ts.map +1 -0
- package/dist/src/intl/ur.js +245 -0
- package/dist/src/intl/vi.d.ts +117 -0
- package/dist/src/intl/vi.d.ts.map +1 -0
- package/dist/src/intl/vi.js +255 -0
- package/dist/src/intl/zh-CN.d.ts +117 -0
- package/dist/src/intl/zh-CN.d.ts.map +1 -0
- package/dist/src/intl/zh-CN.js +258 -0
- package/dist/src/intl/zh-TW.d.ts +117 -0
- package/dist/src/intl/zh-TW.d.ts.map +1 -0
- package/dist/src/intl/zh-TW.js +258 -0
- package/dist/src/local-first/Owner.d.ts +156 -62
- package/dist/src/local-first/Owner.d.ts.map +1 -1
- package/dist/src/local-first/Owner.js +119 -20
- package/package.json +1 -1
- package/src/Function.ts +2 -0
- package/src/Http.ts +9 -0
- package/src/Number.ts +85 -14
- package/src/Object.ts +2 -0
- package/src/RefCount.ts +2 -0
- package/src/Relation.ts +4 -0
- package/src/Resource.ts +2 -0
- package/src/Result.ts +397 -560
- package/src/Schedule.ts +1 -1
- package/src/StackTrace.ts +2 -0
- package/src/Task.ts +1145 -1225
- package/src/Time.ts +110 -62
- package/src/Type.ts +2842 -835
- package/src/Types.ts +0 -49
- package/src/intl/_en.ts +497 -0
- package/src/intl/ar.ts +417 -0
- package/src/intl/bn.ts +486 -0
- package/src/intl/ca.ts +488 -0
- package/src/intl/cs.ts +131 -32
- package/src/intl/da.ts +488 -0
- package/src/intl/de.ts +488 -0
- package/src/intl/el.ts +494 -0
- package/src/intl/es.ts +488 -0
- package/src/intl/fa.ts +487 -0
- package/src/intl/fi.ts +487 -0
- package/src/intl/fil.ts +488 -0
- package/src/intl/fr.ts +488 -0
- package/src/intl/he.ts +486 -0
- package/src/intl/hi.ts +487 -0
- package/src/intl/hr.ts +494 -0
- package/src/intl/hu.ts +387 -0
- package/src/intl/id.ts +487 -0
- package/src/intl/index.ts +42 -0
- package/src/intl/it.ts +488 -0
- package/src/intl/ja.ts +488 -0
- package/src/intl/ko.ts +487 -0
- package/src/intl/ml.ts +487 -0
- package/src/intl/mr.ts +487 -0
- package/src/intl/ms.ts +410 -0
- package/src/intl/nb.ts +364 -0
- package/src/intl/nl.ts +488 -0
- package/src/intl/pa.ts +487 -0
- package/src/intl/pl.ts +450 -0
- package/src/intl/pt-BR.ts +487 -0
- package/src/intl/pt.ts +424 -0
- package/src/intl/ro.ts +488 -0
- package/src/intl/sk.ts +412 -0
- package/src/intl/sl.ts +487 -0
- package/src/intl/sv.ts +488 -0
- package/src/intl/sw.ts +324 -0
- package/src/intl/ta.ts +487 -0
- package/src/intl/te.ts +487 -0
- package/src/intl/th.ts +484 -0
- package/src/intl/tr.ts +487 -0
- package/src/intl/uk.ts +488 -0
- package/src/intl/ur.ts +410 -0
- package/src/intl/vi.ts +435 -0
- package/src/intl/zh-CN.ts +482 -0
- package/src/intl/zh-TW.ts +482 -0
- package/src/local-first/Owner.ts +156 -62
package/src/Number.ts
CHANGED
|
@@ -11,21 +11,86 @@ import type { Result } from "./Result.ts";
|
|
|
11
11
|
import { err, ok } from "./Result.ts";
|
|
12
12
|
import {
|
|
13
13
|
brand,
|
|
14
|
+
Digit1To9,
|
|
15
|
+
Digit1To99,
|
|
14
16
|
lessThanOrEqualTo,
|
|
15
17
|
onePositiveInt,
|
|
16
18
|
NonNegativeInt,
|
|
17
19
|
PositiveInt,
|
|
18
20
|
Ratio,
|
|
21
|
+
templateLiteral,
|
|
22
|
+
union,
|
|
19
23
|
} from "./Type.ts";
|
|
20
|
-
import type {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
import type { Predicate, WidenLiteral } from "./Types.ts";
|
|
25
|
+
|
|
26
|
+
/** Integer literal from `1` to `99`. */
|
|
27
|
+
export type Int1To99 = Digit1To99 extends `${infer Value extends number}`
|
|
28
|
+
? Value
|
|
29
|
+
: never;
|
|
30
|
+
|
|
31
|
+
/** Integer literal from `1` to `100`. */
|
|
32
|
+
export type Int1To100 = Int1To99 | 100;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Integer literal from 0 to 100 or {@link NonNegativeInt}.
|
|
36
|
+
*
|
|
37
|
+
* Convenience input accepting integer literals from 0 to 100 or an
|
|
38
|
+
* already-validated {@link NonNegativeInt} for larger or dynamic values.
|
|
39
|
+
*
|
|
40
|
+
* ### Example
|
|
41
|
+
*
|
|
42
|
+
* ```ts
|
|
43
|
+
* import {
|
|
44
|
+
* NonNegativeInt,
|
|
45
|
+
* type Int0To100OrNonNegativeInt,
|
|
46
|
+
* } from "@evolu/common";
|
|
47
|
+
*
|
|
48
|
+
* const literal: Int0To100OrNonNegativeInt = 10;
|
|
49
|
+
* const validated: Int0To100OrNonNegativeInt = NonNegativeInt.orThrow(101);
|
|
50
|
+
*
|
|
51
|
+
* assert(literal === 10);
|
|
52
|
+
* assert(validated === 101);
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export type Int0To100OrNonNegativeInt = 0 | Int1To100 | NonNegativeInt;
|
|
27
56
|
|
|
28
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* {@link Int1To100} or {@link PositiveInt}.
|
|
59
|
+
*
|
|
60
|
+
* Convenience input accepting integer literals from 1 to 100 or an
|
|
61
|
+
* already-validated {@link PositiveInt} for larger or dynamic values.
|
|
62
|
+
*
|
|
63
|
+
* ### Example
|
|
64
|
+
*
|
|
65
|
+
* ```ts
|
|
66
|
+
* import { PositiveInt, type Int1To100OrPositiveInt } from "@evolu/common";
|
|
67
|
+
*
|
|
68
|
+
* const literal: Int1To100OrPositiveInt = 10;
|
|
69
|
+
* const validated: Int1To100OrPositiveInt = PositiveInt.orThrow(101);
|
|
70
|
+
*
|
|
71
|
+
* assert(literal === 10);
|
|
72
|
+
* assert(validated === 101);
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export type Int1To100OrPositiveInt = Int1To100 | PositiveInt;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* {@link PercentageLiteral} or {@link Ratio}.
|
|
79
|
+
*
|
|
80
|
+
* Convenience input accepting a readable {@link PercentageLiteral} or a
|
|
81
|
+
* validated {@link Ratio}. APIs normalize it to `Ratio`.
|
|
82
|
+
*
|
|
83
|
+
* ### Example
|
|
84
|
+
*
|
|
85
|
+
* ```ts
|
|
86
|
+
* import { Ratio, jitter } from "@evolu/common";
|
|
87
|
+
*
|
|
88
|
+
* const readableJitter = jitter("50%");
|
|
89
|
+
* const computedJitter = jitter(Ratio.orThrow(0.5));
|
|
90
|
+
*
|
|
91
|
+
* expectTypeOf(readableJitter).toEqualTypeOf(computedJitter);
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
29
94
|
export type Percentage = PercentageLiteral | Ratio;
|
|
30
95
|
|
|
31
96
|
/**
|
|
@@ -34,8 +99,18 @@ export type Percentage = PercentageLiteral | Ratio;
|
|
|
34
99
|
* Decimal literals support one decimal place. Use {@link Ratio} for computed
|
|
35
100
|
* values or greater precision.
|
|
36
101
|
*/
|
|
37
|
-
export
|
|
38
|
-
"0%"
|
|
102
|
+
export const PercentageLiteral = /*#__PURE__*/ union(
|
|
103
|
+
"0%",
|
|
104
|
+
"100%",
|
|
105
|
+
/*#__PURE__*/ templateLiteral(Digit1To99, "%"),
|
|
106
|
+
/*#__PURE__*/ templateLiteral(
|
|
107
|
+
/*#__PURE__*/ union("0", Digit1To99),
|
|
108
|
+
".",
|
|
109
|
+
Digit1To9,
|
|
110
|
+
"%",
|
|
111
|
+
),
|
|
112
|
+
);
|
|
113
|
+
export type PercentageLiteral = typeof PercentageLiteral.Output;
|
|
39
114
|
|
|
40
115
|
/** Converts a {@link Percentage} to its numeric {@link Ratio}. */
|
|
41
116
|
export const percentageToRatio = (percentage: Percentage): Ratio =>
|
|
@@ -45,10 +120,6 @@ export const percentageToRatio = (percentage: Percentage): Ratio =>
|
|
|
45
120
|
|
|
46
121
|
export const increment = (n: number): number => n + 1;
|
|
47
122
|
|
|
48
|
-
/** Increments a positive integer, saturating at the maximum safe integer. */
|
|
49
|
-
export const incrementPositiveInt = (n: PositiveInt): PositiveInt =>
|
|
50
|
-
PositiveInt.orNull(increment(n)) ?? n;
|
|
51
|
-
|
|
52
123
|
export const decrement = (n: number): number => n - 1;
|
|
53
124
|
|
|
54
125
|
/** Clamps a number within a given range. */
|
package/src/Object.ts
CHANGED
|
@@ -279,6 +279,8 @@ export function createMutableRecord<
|
|
|
279
279
|
K extends string = string,
|
|
280
280
|
V = unknown,
|
|
281
281
|
>(): Record<K, V>;
|
|
282
|
+
|
|
283
|
+
/** Creates a mutable null-prototype copy of an object. */
|
|
282
284
|
export function createMutableRecord<T extends object>(
|
|
283
285
|
source: T,
|
|
284
286
|
): { -readonly [K in keyof T]: T[K] };
|
package/src/RefCount.ts
CHANGED
|
@@ -88,6 +88,8 @@ export interface CreateRefCountByKeyOptions<
|
|
|
88
88
|
|
|
89
89
|
/** Creates {@link RefCountByKey}. */
|
|
90
90
|
export function createRefCountByKey<TKey = unknown>(): RefCountByKey<TKey>;
|
|
91
|
+
|
|
92
|
+
/** Creates {@link RefCountByKey} with custom logical key lookup. */
|
|
91
93
|
export function createRefCountByKey<TKey, L>(
|
|
92
94
|
options: CreateRefCountByKeyOptions<TKey, L>,
|
|
93
95
|
): RefCountByKey<TKey>;
|
package/src/Relation.ts
CHANGED
|
@@ -181,6 +181,8 @@ export interface CreateRelationOptions<A, B, LA = A, LB = B> {
|
|
|
181
181
|
|
|
182
182
|
/** Creates a {@link Relation}. */
|
|
183
183
|
export function createRelation<A, B>(): Relation<A, B>;
|
|
184
|
+
|
|
185
|
+
/** Creates a {@link Relation} with custom logical key lookups. */
|
|
184
186
|
export function createRelation<A, B, LA, LB>(
|
|
185
187
|
options: CreateRelationOptions<A, B, LA, LB>,
|
|
186
188
|
): Relation<A, B>;
|
|
@@ -371,6 +373,8 @@ export interface RefCountedRelation<A, B> {
|
|
|
371
373
|
|
|
372
374
|
/** Creates a {@link RefCountedRelation}. */
|
|
373
375
|
export function createRefCountedRelation<A, B>(): RefCountedRelation<A, B>;
|
|
376
|
+
|
|
377
|
+
/** Creates a {@link RefCountedRelation} with custom logical key lookups. */
|
|
374
378
|
export function createRefCountedRelation<A, B, LA, LB>(
|
|
375
379
|
options: CreateRelationOptions<A, B, LA, LB>,
|
|
376
380
|
): RefCountedRelation<A, B>;
|
package/src/Resource.ts
CHANGED
|
@@ -705,6 +705,8 @@ export function createSharedResourceByKey<
|
|
|
705
705
|
>(
|
|
706
706
|
create: (key: K) => Task<T, never, D>,
|
|
707
707
|
): Task<SharedResourceByKey<K, T>, never, D>;
|
|
708
|
+
|
|
709
|
+
/** Creates {@link SharedResourceByKey} with lookup or lifecycle options. */
|
|
708
710
|
export function createSharedResourceByKey<K, T extends Resource, D, L = K>(
|
|
709
711
|
create: (key: K) => Task<T, never, D>,
|
|
710
712
|
options: SharedResourceByKeyOptions<K, L>,
|