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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 3.16.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 1a102e2: update packages
8
+
9
+ ## 3.15.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 049b54a: improve: add NEA support to Array.groupByT.
14
+
3
15
  ## 3.15.0
4
16
 
5
17
  ### Minor Changes
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[];
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFdEMsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBa0IsTUFBTSxlQUFlLENBQUE7QUFDcEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFFckMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUE7QUFFbEYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUloQixLQUFLLENBQUMsT0FBTyxDQUFBO0FBRWpCLE1BQU0sVUFBVSxZQUFZLENBQUksRUFBWTtJQUMxQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDeEUsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBSSxFQUFvQjtJQUN4RCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDaEYsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBUTFCLENBQUMsRUFBRSxDQUNILEVBQW9CLEVBQ3BCLENBQWdCLEVBQ3lCLEVBQUU7SUFDM0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUE7SUFDMUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNiLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtBQUN6QixDQUFDLENBQUMsQ0FBQTtBQUlGLE1BQU0sVUFBVSxhQUFhLENBQUksQ0FBbUI7SUFDbEQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7QUFDaEQsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUksSUFBc0IsRUFBRSxVQUF1QztJQUMzRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDMUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUksTUFBbUIsRUFBRSxJQUFZO0lBQzNELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQTtJQUV6QixPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdCLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFJLE1BQW1CLEVBQUUsSUFBWTtJQUN6RCxPQUFPLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0FBQ2xELENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFhLEVBQTRCLEVBQUUsQ0FBbUM7SUFDM0csT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDbEYsQ0FBQztBQUVELGNBQWMsY0FBYyxDQUFBIn0=
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.15.0",
3
+ "version": "3.16.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@effect/rpc": "^0.72.1",
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.23"
16
+ "validator": "^13.15.26"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@faker-js/faker": "^8.4.1",
20
- "@types/node": "24.10.1",
20
+ "@types/node": "25.0.8",
21
21
  "@types/uuid": "^11.0.0",
22
- "@types/validator": "^13.15.8",
23
- "fast-check": "~4.3.0",
22
+ "@types/validator": "^13.15.10",
23
+ "fast-check": "~4.5.3",
24
24
  "typescript": "~5.9.3",
25
- "vitest": "^4.0.9",
26
- "@effect-app/eslint-shared-config": "0.4.1"
25
+ "vitest": "^4.0.17",
26
+ "@effect-app/eslint-shared-config": "0.5.0"
27
27
  },
28
28
  "peerDependencies": {
29
- "@effect/platform": "^0.93.2",
30
- "effect": "^3.19.3"
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": "pnpm build && cp -f ./tsconfig.json ./tsconfig.json.bak && node ../../scripts/mergeTsConfig.mjs ./tsconfig.json"
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
  ],