effect-app 3.15.0 → 3.16.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/CHANGELOG.md +12 -0
- package/dist/Array.d.ts +1 -0
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +14 -1
- package/package.json +11 -11
- package/src/Array.ts +30 -0
- package/tsconfig.json +3 -1
package/CHANGELOG.md
CHANGED
package/dist/Array.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare const isArray: {
|
|
|
10
10
|
export declare function NEAFromArray<T>(ar: Array<T>): Option.None<[T, ...T[]]> | Option.Some<[T, ...T[]]>;
|
|
11
11
|
export declare function NEROArrayFromArray<T>(ar: ReadonlyArray<T>): Option.None<readonly [T, ...T[]]> | Option.Some<readonly [T, ...T[]]>;
|
|
12
12
|
export declare const groupByT: (<A, Key>(f: (a: NoInfer<A>) => Key) => (as: ReadonlyArray<A>) => Array<readonly [Key, NonEmptyArray<A>]>) & (<A, Key>(as: ReadonlyArray<A>, f: (a: A) => Key) => Array<readonly [Key, NonEmptyArray<A>]>);
|
|
13
|
+
export declare const groupByTNonEmpty: (<A, Key>(f: (a: NoInfer<A>) => Key) => (as: NonEmptyReadonlyArray<A>) => NonEmptyArray<readonly [Key, NonEmptyArray<A>]>) & (<A, Key>(as: NonEmptyReadonlyArray<A>, f: (a: A) => Key) => NonEmptyArray<readonly [Key, NonEmptyArray<A>]>);
|
|
13
14
|
export declare function randomElement<A>(a: NonEmptyReadonlyArray<A>): A;
|
|
14
15
|
export declare function randomElement<A>(a: ReadonlyArray<A>): A | undefined;
|
|
15
16
|
export declare function filterWith<A>(self: ReadonlyArray<A>, predicates: ReadonlyArray<Predicate<A>>): A[];
|
package/dist/Array.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../src/Array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGxE,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,eAAO,MAAM,eAAe,6DAAsD,CAAA;AAElF,eAAO,MAAM,OAAO,EAAE;IAEpB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;CACrC,CAAA;AAEjB,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,uDAE3C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,yEAEzD;AAED,eAAO,MAAM,QAAQ,IAClB,CAAC,EAAE,GAAG,KACF,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,KACtB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MACrE,CAAC,EAAE,GAAG,MACD,aAAa,CAAC,CAAC,CAAC,KACjB,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,KACb,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAe5C,CAAA;AAEF,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAChE,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAKpE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAE5F;AAED;;GAEG;AACH,wBAAiB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,iCAM5D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,oBAE1D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,oDAE5G;AAED,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../src/Array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGxE,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,eAAO,MAAM,eAAe,6DAAsD,CAAA;AAElF,eAAO,MAAM,OAAO,EAAE;IAEpB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;CACrC,CAAA;AAEjB,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,uDAE3C;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,yEAEzD;AAED,eAAO,MAAM,QAAQ,IAClB,CAAC,EAAE,GAAG,KACF,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,KACtB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MACrE,CAAC,EAAE,GAAG,MACD,aAAa,CAAC,CAAC,CAAC,KACjB,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,KACb,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAe5C,CAAA;AAEF,eAAO,MAAM,gBAAgB,IAC1B,CAAC,EAAE,GAAG,KACF,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,KACtB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MACrF,CAAC,EAAE,GAAG,MACD,qBAAqB,CAAC,CAAC,CAAC,KACzB,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,KACb,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAepD,CAAA;AAQF,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAChE,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAKpE,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAE5F;AAED;;GAEG;AACH,wBAAiB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,iCAM5D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,oBAE1D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,oDAE5G;AAED,cAAc,cAAc,CAAA"}
|
package/dist/Array.js
CHANGED
|
@@ -24,6 +24,19 @@ export const groupByT = dual(2, (as, f) => {
|
|
|
24
24
|
}
|
|
25
25
|
return [...r.entries()];
|
|
26
26
|
});
|
|
27
|
+
export const groupByTNonEmpty = dual(2, (as, f) => {
|
|
28
|
+
const r = new Map();
|
|
29
|
+
for (const a of as) {
|
|
30
|
+
const k = f(a);
|
|
31
|
+
if (r.has(k)) {
|
|
32
|
+
r.get(k).push(a);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
r.set(k, [a]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return [...r.entries()];
|
|
39
|
+
});
|
|
27
40
|
export function randomElement(a) {
|
|
28
41
|
return a[Math.floor(Math.random() * a.length)];
|
|
29
42
|
}
|
|
@@ -49,4 +62,4 @@ export function forEachEffectNA(as, f) {
|
|
|
49
62
|
return Effect.map(T.forEach(as, f), (_) => Option.getOrNull(toNonEmptyArray(_)));
|
|
50
63
|
}
|
|
51
64
|
export * from "effect/Array";
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFdEMsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBa0IsTUFBTSxlQUFlLENBQUE7QUFDcEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFFckMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUE7QUFFbEYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUloQixLQUFLLENBQUMsT0FBTyxDQUFBO0FBRWpCLE1BQU0sVUFBVSxZQUFZLENBQUksRUFBWTtJQUMxQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDeEUsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBSSxFQUFvQjtJQUN4RCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDaEYsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBUTFCLENBQUMsRUFBRSxDQUNILEVBQW9CLEVBQ3BCLENBQWdCLEVBQ3lCLEVBQUU7SUFDM0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUE7SUFDMUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVB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
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-app",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.16.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@effect/rpc": "^0.
|
|
7
|
+
"@effect/rpc": "^0.73.0",
|
|
8
8
|
"@tsconfig/strictest": "^2.0.8",
|
|
9
9
|
"date-fns": "^4.1.0",
|
|
10
10
|
"nanoid": "^5.1.6",
|
|
@@ -13,21 +13,21 @@
|
|
|
13
13
|
"ts-pattern": "^5.9.0",
|
|
14
14
|
"ts-toolbelt": "^9.6.0",
|
|
15
15
|
"uuid": "^13.0.0",
|
|
16
|
-
"validator": "^13.15.
|
|
16
|
+
"validator": "^13.15.26"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@faker-js/faker": "^8.4.1",
|
|
20
|
-
"@types/node": "
|
|
20
|
+
"@types/node": "25.0.8",
|
|
21
21
|
"@types/uuid": "^11.0.0",
|
|
22
|
-
"@types/validator": "^13.15.
|
|
23
|
-
"fast-check": "~4.3
|
|
22
|
+
"@types/validator": "^13.15.10",
|
|
23
|
+
"fast-check": "~4.5.3",
|
|
24
24
|
"typescript": "~5.9.3",
|
|
25
|
-
"vitest": "^4.0.
|
|
26
|
-
"@effect-app/eslint-shared-config": "0.
|
|
25
|
+
"vitest": "^4.0.17",
|
|
26
|
+
"@effect-app/eslint-shared-config": "0.5.0"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@effect/platform": "^0.
|
|
30
|
-
"effect": "^3.19.
|
|
29
|
+
"@effect/platform": "^0.94.1",
|
|
30
|
+
"effect": "^3.19.14"
|
|
31
31
|
},
|
|
32
32
|
"typesVersions": {
|
|
33
33
|
"*": {
|
|
@@ -312,6 +312,6 @@
|
|
|
312
312
|
"testsuite": "pnpm lint && pnpm circular && pnpm run test:run",
|
|
313
313
|
"ncu": "ncu",
|
|
314
314
|
"pub": "pnpm prepublish && npm publish --access public",
|
|
315
|
-
"prepublish": "
|
|
315
|
+
"prepublish": "cp -f ./tsconfig.json ./tsconfig.json.bak && node ../../scripts/mergeTsConfig.mjs ./tsconfig.json"
|
|
316
316
|
}
|
|
317
317
|
}
|
package/src/Array.ts
CHANGED
|
@@ -45,6 +45,36 @@ export const groupByT = dual<
|
|
|
45
45
|
return [...r.entries()]
|
|
46
46
|
})
|
|
47
47
|
|
|
48
|
+
export const groupByTNonEmpty = dual<
|
|
49
|
+
<A, Key>(
|
|
50
|
+
f: (a: NoInfer<A>) => Key
|
|
51
|
+
) => (as: NonEmptyReadonlyArray<A>) => NonEmptyArray<readonly [Key, NonEmptyArray<A>]>,
|
|
52
|
+
<A, Key>(
|
|
53
|
+
as: NonEmptyReadonlyArray<A>,
|
|
54
|
+
f: (a: A) => Key
|
|
55
|
+
) => NonEmptyArray<readonly [Key, NonEmptyArray<A>]>
|
|
56
|
+
>(2, <A, Key>(
|
|
57
|
+
as: NonEmptyReadonlyArray<A>,
|
|
58
|
+
f: (a: A) => Key
|
|
59
|
+
): NonEmptyArray<readonly [Key, NonEmptyArray<A>]> => {
|
|
60
|
+
const r = new Map<Key, NonEmptyArray<A>>()
|
|
61
|
+
for (const a of as) {
|
|
62
|
+
const k = f(a)
|
|
63
|
+
if (r.has(k)) {
|
|
64
|
+
r.get(k)!.push(a)
|
|
65
|
+
} else {
|
|
66
|
+
r.set(k, [a])
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return [...r.entries()] as unknown as NonEmptyArray<readonly [Key, NonEmptyArray<A>]>
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
// const a = [1, 2, 3] as const
|
|
73
|
+
// const b = [1, 2, 3]
|
|
74
|
+
|
|
75
|
+
// const a1 = groupByTNonEmpty(a, (x) => x % 2) // $ExpectType NonEmptyReadonlyArray<readonly [number, NonEmptyArray<number>]>
|
|
76
|
+
// const b1 = groupByT(b, (x) => x % 2) // $ExpectType Array<readonly [number, NonEmptyArray<number>]>
|
|
77
|
+
|
|
48
78
|
export function randomElement<A>(a: NonEmptyReadonlyArray<A>): A
|
|
49
79
|
export function randomElement<A>(a: ReadonlyArray<A>): A | undefined
|
|
50
80
|
export function randomElement<A>(a: ReadonlyArray<A>): A | undefined {
|
package/tsconfig.json
CHANGED
|
@@ -35,7 +35,9 @@
|
|
|
35
35
|
{
|
|
36
36
|
"name": "@effect/language-service",
|
|
37
37
|
"diagnosticSeverity": {
|
|
38
|
-
"missingEffectServiceDependency": "error"
|
|
38
|
+
"missingEffectServiceDependency": "error",
|
|
39
|
+
"effectFnOpportunity": "warning",
|
|
40
|
+
"globalErrorInEffectFailure": "warning"
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
],
|