effect-app 3.15.0 → 3.15.1

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,11 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 3.15.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 049b54a: improve: add NEA support to Array.groupByT.
8
+
3
9
  ## 3.15.0
4
10
 
5
11
  ### 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,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "3.15.0",
3
+ "version": "3.15.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
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 {