effect-app 2.50.2 → 2.51.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,11 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 2.51.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 54dd59a: cleanup NES
8
+
3
9
  ## 2.50.2
4
10
 
5
11
  ### Patch Changes
@@ -1,3 +1,35 @@
1
- export * from "./NonEmptySetBase.js";
2
- export * as $ from "./NonEmptySetAspects.js";
1
+ import { type Equivalence, Option, type Order } from "effect";
2
+ import { type Set } from "./Set.js";
3
+ export interface NonEmptyBrand {
4
+ readonly NonEmpty: unique symbol;
5
+ }
6
+ export type NonEmptySet<A> = Set<A> & NonEmptyBrand;
7
+ declare class Wrapper<A> {
8
+ wrapped(ord: Order.Order<A>, eq?: Equivalence.Equivalence<A>): {
9
+ insert: (a: A) => (set: NonEmptySet<A>) => NonEmptySet<A>;
10
+ insert_: (set: NonEmptySet<A>, a: A) => NonEmptySet<A>;
11
+ remove: (a: A) => (set: Set<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
12
+ remove_: (set: Set<A>, a: A) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
13
+ reduce: <B>(b: B, f: (b: B, a: A) => B) => (fa: Set<A>) => B;
14
+ reduce_: <B>(fa: Set<A>, b: B, f: (b: B, a: A) => B) => B;
15
+ replace: (a: A) => (set: NonEmptySet<A>) => NonEmptySet<A>;
16
+ replace_: (set: NonEmptySet<A>, a: A) => NonEmptySet<A>;
17
+ toArray: (s: NonEmptySet<A>) => readonly [A, ...A[]];
18
+ fromArray: (as: readonly A[]) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
19
+ fromNonEmptyArray: (arr: readonly [A, ...A[]]) => NonEmptySet<A>;
20
+ from: (it: Iterable<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
21
+ of: (a: A) => NonEmptySet<A>;
22
+ concat_: (set: NonEmptySet<A>, it: Iterable<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
23
+ concat: (it: Iterable<A>) => (set: NonEmptySet<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
24
+ map: <A_1>(f: (x: A_1) => A_1) => (set: NonEmptySet<A_1>) => NonEmptySet<A_1>;
25
+ map_: <A_1>(set: NonEmptySet<A_1>, f: (x: A_1) => A_1) => NonEmptySet<A_1>;
26
+ filterMap: (f: (a: A) => Option.Option<A>) => (fa: Set<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
27
+ filterMap_: <A_1>(fa: Set<A_1>, f: (a: A_1) => Option.Option<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
28
+ };
29
+ }
30
+ export interface NonEmptySetSchemaExtensions<A> extends ReturnType<Wrapper<A>["wrapped"]> {
31
+ }
32
+ export declare const make: <A>(ord: Order.Order<A>, eq?: Equivalence.Equivalence<A>) => NonEmptySetSchemaExtensions<A>;
33
+ export declare function fromSet<A>(set: Set<A>): Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
34
+ export * from "./Set.js";
3
35
  //# sourceMappingURL=NonEmptySet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NonEmptySet.d.ts","sourceRoot":"","sources":["../src/NonEmptySet.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,OAAO,KAAK,CAAC,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"NonEmptySet.d.ts","sourceRoot":"","sources":["../src/NonEmptySet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAA;AAG7D,OAAO,EAAqK,KAAK,GAAG,EAA8B,MAAM,UAAU,CAAA;AAElO,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,MAAM,CAAA;CACjC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAA;AA0DnD,cAAM,OAAO,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;;;;;;;4BAzBtC,mBAAmB;;;;;;;;sCAQT,mBAAmB;;;;;;CAoBpD;AAED,MAAM,WAAW,2BAA2B,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CAAG;AAE5F,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EACnB,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EACnB,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,KAC5B,2BAA2B,CAAC,CAAC,CAAS,CAAA;AAE3C,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,6DAMrC;AAGD,cAAc,UAAU,CAAA"}
@@ -1,3 +1,63 @@
1
- export * from "./NonEmptySetBase.js";
2
- export * as $ from "./NonEmptySetAspects.js";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9uRW1wdHlTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTm9uRW1wdHlTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQTtBQUVwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLHlCQUF5QixDQUFBIn0=
1
+ import { Option } from "effect";
2
+ import { flow, pipe } from "./Function.js";
3
+ import { filter_, filterMap, filterMap_, fromArray as fromArrayOriginal, insert as insertOriginal, insert_ as insert_Original, map, map_, reduce, reduce_, remove, remove_, toArray as toArrayOriginal } from "./Set.js";
4
+ function make_(ord, eq_) {
5
+ const eq = eq_
6
+ ?? ((x, y) => ord(x, y) === 0);
7
+ const fromArray_ = fromArrayOriginal(eq);
8
+ const fromArray = flow(fromArray_, fromSet);
9
+ const fromNonEmptyArray = (arr) => fromArray_(arr);
10
+ const concat_ = (set, it) => fromArray([...set, ...it]);
11
+ const insert__ = insertOriginal(eq);
12
+ const insert = insert__;
13
+ const insert_ = insert_Original;
14
+ function replace_(set, a) {
15
+ return pipe(filter_(set, (x) => !eq(x, a)), insert__(a));
16
+ }
17
+ const toArray__ = toArrayOriginal(ord);
18
+ function toArray(s) {
19
+ return toArray__(s);
20
+ }
21
+ const remove__ = remove(eq);
22
+ const filterMap__ = filterMap(eq);
23
+ return {
24
+ insert,
25
+ insert_,
26
+ remove: (a) => flow(remove__(a), fromSet),
27
+ remove_: flow(remove_(eq), fromSet),
28
+ reduce: reduce(ord),
29
+ reduce_: reduce_(ord),
30
+ replace: (a) => (set) => replace_(set, a),
31
+ replace_,
32
+ toArray,
33
+ fromArray,
34
+ fromNonEmptyArray,
35
+ from: (it) => fromArray([...it]),
36
+ of: (a) => new Set([a]),
37
+ concat_,
38
+ concat: (it) => (set) => concat_(set, it),
39
+ // A and B the same, useful when editing elements.
40
+ map: map(eq),
41
+ map_: map_(eq),
42
+ filterMap: (f) => flow(filterMap__((a) => f(a)), fromSet),
43
+ filterMap_: flow(filterMap_(eq), fromSet)
44
+ };
45
+ // TODO: extend
46
+ }
47
+ class Wrapper {
48
+ wrapped(ord, eq) {
49
+ return make_(ord, eq);
50
+ }
51
+ }
52
+ export const make = make_;
53
+ export function fromSet(set) {
54
+ if (set.size > 0) {
55
+ return Option.some(set);
56
+ }
57
+ else {
58
+ return Option.none();
59
+ }
60
+ }
61
+ // TODO
62
+ export * from "./Set.js";
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9uRW1wdHlTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTm9uRW1wdHlTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixNQUFNLEVBQWMsTUFBTSxRQUFRLENBQUE7QUFFN0QsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLElBQUksY0FBYyxFQUFFLE9BQU8sSUFBSSxlQUFlLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQVksT0FBTyxJQUFJLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQVFsTyxTQUFTLEtBQUssQ0FBSSxHQUFtQixFQUFFLEdBQWdDO0lBQ3JFLE1BQU0sRUFBRSxHQUFHLEdBQUc7V0FDVCxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUVoQyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzNDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUE2QixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFtQixDQUFBO0lBQzlGLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBbUIsRUFBRSxFQUFlLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNwRixNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLENB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
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "2.50.2",
3
+ "version": "2.51.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@effect/rpc": "^0.68.1",
7
+ "@effect/rpc": "^0.68.2",
8
8
  "@effect/rpc-http": "^0.52.4",
9
9
  "@tsconfig/strictest": "^2.0.5",
10
10
  "date-fns": "^4.1.0",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@effect/platform": "^0.90.0",
30
- "effect": "^3.17.4"
30
+ "effect": "^3.17.5"
31
31
  },
32
32
  "typesVersions": {
33
33
  "*": {
@@ -73,14 +73,6 @@
73
73
  "types": "./dist/NonEmptySet.d.ts",
74
74
  "default": "./dist/NonEmptySet.js"
75
75
  },
76
- "./NonEmptySetAspects": {
77
- "types": "./dist/NonEmptySetAspects.d.ts",
78
- "default": "./dist/NonEmptySetAspects.js"
79
- },
80
- "./NonEmptySetBase": {
81
- "types": "./dist/NonEmptySetBase.d.ts",
82
- "default": "./dist/NonEmptySetBase.js"
83
- },
84
76
  "./Operations": {
85
77
  "types": "./dist/Operations.d.ts",
86
78
  "default": "./dist/Operations.js"
@@ -1,3 +1,90 @@
1
- export * from "./NonEmptySetBase.js"
1
+ import { type Equivalence, Option, type Order } from "effect"
2
+ import type { NonEmptyReadonlyArray } from "effect/Array"
3
+ import { flow, pipe } from "./Function.js"
4
+ import { filter_, filterMap, filterMap_, fromArray as fromArrayOriginal, insert as insertOriginal, insert_ as insert_Original, map, map_, reduce, reduce_, remove, remove_, type Set, toArray as toArrayOriginal } from "./Set.js"
2
5
 
3
- export * as $ from "./NonEmptySetAspects.js"
6
+ export interface NonEmptyBrand {
7
+ readonly NonEmpty: unique symbol
8
+ }
9
+
10
+ export type NonEmptySet<A> = Set<A> & NonEmptyBrand
11
+
12
+ function make_<A>(ord: Order.Order<A>, eq_?: Equivalence.Equivalence<A>) {
13
+ const eq = eq_
14
+ ?? ((x, y) => ord(x, y) === 0)
15
+
16
+ const fromArray_ = fromArrayOriginal(eq)
17
+ const fromArray = flow(fromArray_, fromSet)
18
+ const fromNonEmptyArray = (arr: NonEmptyReadonlyArray<A>) => fromArray_(arr) as NonEmptySet<A>
19
+ const concat_ = (set: NonEmptySet<A>, it: Iterable<A>) => fromArray([...set, ...it])
20
+ const insert__ = insertOriginal(eq)
21
+ const insert: (a: A) => (set: NonEmptySet<A>) => NonEmptySet<A> = insert__ as any
22
+ const insert_: (set: NonEmptySet<A>, a: A) => NonEmptySet<A> = insert_Original as any
23
+
24
+ function replace_(set: NonEmptySet<A>, a: A) {
25
+ return (pipe(filter_(set, (x) => !eq(x, a)), insert__(a)) as NonEmptySet<A>)
26
+ }
27
+
28
+ const toArray__ = toArrayOriginal(ord)
29
+
30
+ function toArray(s: NonEmptySet<A>) {
31
+ return toArray__(s) as NonEmptyReadonlyArray<A>
32
+ }
33
+
34
+ const remove__ = remove(eq)
35
+ const filterMap__ = filterMap(eq)
36
+
37
+ return {
38
+ insert,
39
+ insert_,
40
+ remove: (a: A) => flow(remove__(a), fromSet),
41
+ remove_: flow(remove_(eq), fromSet),
42
+ reduce: reduce(ord),
43
+ reduce_: reduce_(ord),
44
+ replace: (a: A) => (set: NonEmptySet<A>) => replace_(set, a),
45
+ replace_,
46
+ toArray,
47
+ fromArray,
48
+ fromNonEmptyArray,
49
+ from: (it: Iterable<A>) => fromArray([...it]),
50
+ of: (a: A) => new Set<A>([a]) as unknown as NonEmptySet<A>,
51
+ concat_,
52
+ concat: (it: Iterable<A>) => (set: NonEmptySet<A>) => concat_(set, it),
53
+
54
+ // A and B the same, useful when editing elements.
55
+ map: map(eq) as unknown as <A>(
56
+ f: (x: A) => A
57
+ ) => (set: NonEmptySet<A>) => NonEmptySet<A>,
58
+ map_: map_(eq) as unknown as <A>(
59
+ set: NonEmptySet<A>,
60
+ f: (x: A) => A
61
+ ) => NonEmptySet<A>,
62
+ filterMap: (f: (a: A) => Option.Option<A>) => flow(filterMap__<A>((a) => f(a)), fromSet),
63
+ filterMap_: flow(filterMap_(eq), fromSet)
64
+ }
65
+ // TODO: extend
66
+ }
67
+
68
+ class Wrapper<A> {
69
+ wrapped(ord: Order.Order<A>, eq?: Equivalence.Equivalence<A>) {
70
+ return make_(ord, eq)
71
+ }
72
+ }
73
+
74
+ export interface NonEmptySetSchemaExtensions<A> extends ReturnType<Wrapper<A>["wrapped"]> {}
75
+
76
+ export const make: <A>(
77
+ ord: Order.Order<A>,
78
+ eq?: Equivalence.Equivalence<A>
79
+ ) => NonEmptySetSchemaExtensions<A> = make_
80
+
81
+ export function fromSet<A>(set: Set<A>) {
82
+ if (set.size > 0) {
83
+ return Option.some(set as NonEmptySet<A>)
84
+ } else {
85
+ return Option.none()
86
+ }
87
+ }
88
+
89
+ // TODO
90
+ export * from "./Set.js"
@@ -1,2 +0,0 @@
1
- export * from "./NonEmptySetBase.js";
2
- //# sourceMappingURL=NonEmptySetAspects.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NonEmptySetAspects.d.ts","sourceRoot":"","sources":["../src/NonEmptySetAspects.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
@@ -1,2 +0,0 @@
1
- export * from "./NonEmptySetBase.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9uRW1wdHlTZXRBc3BlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL05vbkVtcHR5U2V0QXNwZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFBIn0=
@@ -1,35 +0,0 @@
1
- import { type Equivalence, Option, type Order } from "effect";
2
- import { type Set } from "./Set.js";
3
- export interface NonEmptyBrand {
4
- readonly NonEmpty: unique symbol;
5
- }
6
- export type NonEmptySet<A> = Set<A> & NonEmptyBrand;
7
- declare class Wrapper<A> {
8
- wrapped(ord: Order.Order<A>, eq?: Equivalence.Equivalence<A>): {
9
- insert: (a: A) => (set: NonEmptySet<A>) => NonEmptySet<A>;
10
- insert_: (set: NonEmptySet<A>, a: A) => NonEmptySet<A>;
11
- remove: (a: A) => (set: Set<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
12
- remove_: (set: Set<A>, a: A) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
13
- reduce: <B>(b: B, f: (b: B, a: A) => B) => (fa: Set<A>) => B;
14
- reduce_: <B>(fa: Set<A>, b: B, f: (b: B, a: A) => B) => B;
15
- replace: (a: A) => (set: NonEmptySet<A>) => NonEmptySet<A>;
16
- replace_: (set: NonEmptySet<A>, a: A) => NonEmptySet<A>;
17
- toArray: (s: NonEmptySet<A>) => readonly [A, ...A[]];
18
- fromArray: (as: readonly A[]) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
19
- fromNonEmptyArray: (arr: readonly [A, ...A[]]) => NonEmptySet<A>;
20
- from: (it: Iterable<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
21
- of: (a: A) => NonEmptySet<A>;
22
- concat_: (set: NonEmptySet<A>, it: Iterable<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
23
- concat: (it: Iterable<A>) => (set: NonEmptySet<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
24
- map: <A_1>(f: (x: A_1) => A_1) => (set: NonEmptySet<A_1>) => NonEmptySet<A_1>;
25
- map_: <A_1>(set: NonEmptySet<A_1>, f: (x: A_1) => A_1) => NonEmptySet<A_1>;
26
- filterMap: (f: (a: A) => Option.Option<A>) => (fa: Set<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
27
- filterMap_: <A_1>(fa: Set<A_1>, f: (a: A_1) => Option.Option<A>) => Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
28
- };
29
- }
30
- export interface NonEmptySetSchemaExtensions<A> extends ReturnType<Wrapper<A>["wrapped"]> {
31
- }
32
- export declare const make: <A>(ord: Order.Order<A>, eq?: Equivalence.Equivalence<A>) => NonEmptySetSchemaExtensions<A>;
33
- export declare function fromSet<A>(set: Set<A>): Option.None<NonEmptySet<A>> | Option.Some<NonEmptySet<A>>;
34
- export * from "./Set.js";
35
- //# sourceMappingURL=NonEmptySetBase.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NonEmptySetBase.d.ts","sourceRoot":"","sources":["../src/NonEmptySetBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAA;AAG7D,OAAO,EAAqK,KAAK,GAAG,EAA8B,MAAM,UAAU,CAAA;AAElO,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,MAAM,CAAA;CACjC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAA;AA0DnD,cAAM,OAAO,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;;;;;;;4BAzBtC,mBAAmB;;;;;;;;sCAQT,mBAAmB;;;;;;CAoBpD;AAED,MAAM,WAAW,2BAA2B,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CAAG;AAE5F,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EACnB,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EACnB,EAAE,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,KAC5B,2BAA2B,CAAC,CAAC,CAAS,CAAA;AAE3C,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,6DAMrC;AAGD,cAAc,UAAU,CAAA"}
@@ -1,63 +0,0 @@
1
- import { Option } from "effect";
2
- import { flow, pipe } from "./Function.js";
3
- import { filter_, filterMap, filterMap_, fromArray as fromArrayOriginal, insert as insertOriginal, insert_ as insert_Original, map, map_, reduce, reduce_, remove, remove_, toArray as toArrayOriginal } from "./Set.js";
4
- function make_(ord, eq_) {
5
- const eq = eq_
6
- ?? ((x, y) => ord(x, y) === 0);
7
- const fromArray_ = fromArrayOriginal(eq);
8
- const fromArray = flow(fromArray_, fromSet);
9
- const fromNonEmptyArray = (arr) => fromArray_(arr);
10
- const concat_ = (set, it) => fromArray([...set, ...it]);
11
- const insert__ = insertOriginal(eq);
12
- const insert = insert__;
13
- const insert_ = insert_Original;
14
- function replace_(set, a) {
15
- return pipe(filter_(set, (x) => !eq(x, a)), insert__(a));
16
- }
17
- const toArray__ = toArrayOriginal(ord);
18
- function toArray(s) {
19
- return toArray__(s);
20
- }
21
- const remove__ = remove(eq);
22
- const filterMap__ = filterMap(eq);
23
- return {
24
- insert,
25
- insert_,
26
- remove: (a) => flow(remove__(a), fromSet),
27
- remove_: flow(remove_(eq), fromSet),
28
- reduce: reduce(ord),
29
- reduce_: reduce_(ord),
30
- replace: (a) => (set) => replace_(set, a),
31
- replace_,
32
- toArray,
33
- fromArray,
34
- fromNonEmptyArray,
35
- from: (it) => fromArray([...it]),
36
- of: (a) => new Set([a]),
37
- concat_,
38
- concat: (it) => (set) => concat_(set, it),
39
- // A and B the same, useful when editing elements.
40
- map: map(eq),
41
- map_: map_(eq),
42
- filterMap: (f) => flow(filterMap__((a) => f(a)), fromSet),
43
- filterMap_: flow(filterMap_(eq), fromSet)
44
- };
45
- // TODO: extend
46
- }
47
- class Wrapper {
48
- wrapped(ord, eq) {
49
- return make_(ord, eq);
50
- }
51
- }
52
- export const make = make_;
53
- export function fromSet(set) {
54
- if (set.size > 0) {
55
- return Option.some(set);
56
- }
57
- else {
58
- return Option.none();
59
- }
60
- }
61
- // TODO
62
- export * from "./Set.js";
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9uRW1wdHlTZXRCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL05vbkVtcHR5U2V0QmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLE1BQU0sRUFBYyxNQUFNLFFBQVEsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxJQUFJLGlCQUFpQixFQUFFLE1BQU0sSUFBSSxjQUFjLEVBQUUsT0FBTyxJQUFJLGVBQWUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBWSxPQUFPLElBQUksZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBUWxPLFNBQVMsS0FBSyxDQUFJLEdBQW1CLEVBQUUsR0FBZ0M7SUFDckUsTUFBTSxFQUFFLEdBQUcsR0FBRztXQUNULENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBRWhDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDM0MsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQTZCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQW1CLENBQUE7SUFDOUYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFtQixFQUFFLEVBQWUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3BGLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxFQUFF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
@@ -1 +0,0 @@
1
- export * from "./NonEmptySetBase.js"
@@ -1,90 +0,0 @@
1
- import { type Equivalence, Option, type Order } from "effect"
2
- import type { NonEmptyReadonlyArray } from "effect/Array"
3
- import { flow, pipe } from "./Function.js"
4
- import { filter_, filterMap, filterMap_, fromArray as fromArrayOriginal, insert as insertOriginal, insert_ as insert_Original, map, map_, reduce, reduce_, remove, remove_, type Set, toArray as toArrayOriginal } from "./Set.js"
5
-
6
- export interface NonEmptyBrand {
7
- readonly NonEmpty: unique symbol
8
- }
9
-
10
- export type NonEmptySet<A> = Set<A> & NonEmptyBrand
11
-
12
- function make_<A>(ord: Order.Order<A>, eq_?: Equivalence.Equivalence<A>) {
13
- const eq = eq_
14
- ?? ((x, y) => ord(x, y) === 0)
15
-
16
- const fromArray_ = fromArrayOriginal(eq)
17
- const fromArray = flow(fromArray_, fromSet)
18
- const fromNonEmptyArray = (arr: NonEmptyReadonlyArray<A>) => fromArray_(arr) as NonEmptySet<A>
19
- const concat_ = (set: NonEmptySet<A>, it: Iterable<A>) => fromArray([...set, ...it])
20
- const insert__ = insertOriginal(eq)
21
- const insert: (a: A) => (set: NonEmptySet<A>) => NonEmptySet<A> = insert__ as any
22
- const insert_: (set: NonEmptySet<A>, a: A) => NonEmptySet<A> = insert_Original as any
23
-
24
- function replace_(set: NonEmptySet<A>, a: A) {
25
- return (pipe(filter_(set, (x) => !eq(x, a)), insert__(a)) as NonEmptySet<A>)
26
- }
27
-
28
- const toArray__ = toArrayOriginal(ord)
29
-
30
- function toArray(s: NonEmptySet<A>) {
31
- return toArray__(s) as NonEmptyReadonlyArray<A>
32
- }
33
-
34
- const remove__ = remove(eq)
35
- const filterMap__ = filterMap(eq)
36
-
37
- return {
38
- insert,
39
- insert_,
40
- remove: (a: A) => flow(remove__(a), fromSet),
41
- remove_: flow(remove_(eq), fromSet),
42
- reduce: reduce(ord),
43
- reduce_: reduce_(ord),
44
- replace: (a: A) => (set: NonEmptySet<A>) => replace_(set, a),
45
- replace_,
46
- toArray,
47
- fromArray,
48
- fromNonEmptyArray,
49
- from: (it: Iterable<A>) => fromArray([...it]),
50
- of: (a: A) => new Set<A>([a]) as unknown as NonEmptySet<A>,
51
- concat_,
52
- concat: (it: Iterable<A>) => (set: NonEmptySet<A>) => concat_(set, it),
53
-
54
- // A and B the same, useful when editing elements.
55
- map: map(eq) as unknown as <A>(
56
- f: (x: A) => A
57
- ) => (set: NonEmptySet<A>) => NonEmptySet<A>,
58
- map_: map_(eq) as unknown as <A>(
59
- set: NonEmptySet<A>,
60
- f: (x: A) => A
61
- ) => NonEmptySet<A>,
62
- filterMap: (f: (a: A) => Option.Option<A>) => flow(filterMap__<A>((a) => f(a)), fromSet),
63
- filterMap_: flow(filterMap_(eq), fromSet)
64
- }
65
- // TODO: extend
66
- }
67
-
68
- class Wrapper<A> {
69
- wrapped(ord: Order.Order<A>, eq?: Equivalence.Equivalence<A>) {
70
- return make_(ord, eq)
71
- }
72
- }
73
-
74
- export interface NonEmptySetSchemaExtensions<A> extends ReturnType<Wrapper<A>["wrapped"]> {}
75
-
76
- export const make: <A>(
77
- ord: Order.Order<A>,
78
- eq?: Equivalence.Equivalence<A>
79
- ) => NonEmptySetSchemaExtensions<A> = make_
80
-
81
- export function fromSet<A>(set: Set<A>) {
82
- if (set.size > 0) {
83
- return Option.some(set as NonEmptySet<A>)
84
- } else {
85
- return Option.none()
86
- }
87
- }
88
-
89
- // TODO
90
- export * from "./Set.js"