@monstermann/set 0.1.1 → 0.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/README.md +776 -0
- package/dist/Set/add.d.mts +12 -4
- package/dist/Set/add.mjs +12 -4
- package/dist/Set/addAll.d.mts +12 -4
- package/dist/Set/addAll.mjs +12 -4
- package/dist/Set/clone.d.mts +9 -4
- package/dist/Set/clone.mjs +9 -4
- package/dist/Set/compact.d.mts +11 -4
- package/dist/Set/compact.mjs +11 -4
- package/dist/Set/create.d.mts +9 -2
- package/dist/Set/create.mjs +9 -2
- package/dist/Set/difference.d.mts +12 -4
- package/dist/Set/difference.mjs +17 -13
- package/dist/Set/forEach.d.mts +15 -4
- package/dist/Set/forEach.mjs +15 -4
- package/dist/Set/has.d.mts +12 -4
- package/dist/Set/has.mjs +12 -4
- package/dist/Set/hasAll.d.mts +12 -4
- package/dist/Set/hasAll.mjs +12 -4
- package/dist/Set/hasAny.d.mts +12 -4
- package/dist/Set/hasAny.mjs +12 -4
- package/dist/Set/hasNone.d.mts +12 -4
- package/dist/Set/hasNone.mjs +12 -4
- package/dist/Set/index.d.mts +1 -7
- package/dist/Set/index.mjs +0 -12
- package/dist/Set/intersection.d.mts +12 -4
- package/dist/Set/intersection.mjs +17 -13
- package/dist/Set/is.d.mts +9 -4
- package/dist/Set/is.mjs +9 -4
- package/dist/Set/isDisjointFrom.d.mts +12 -4
- package/dist/Set/isDisjointFrom.mjs +12 -4
- package/dist/Set/isEmpty.d.mts +11 -4
- package/dist/Set/isEmpty.mjs +11 -4
- package/dist/Set/isShallowEqual.d.mts +12 -4
- package/dist/Set/isShallowEqual.mjs +12 -4
- package/dist/Set/isSubsetOf.d.mts +12 -4
- package/dist/Set/isSubsetOf.mjs +12 -4
- package/dist/Set/isSupersetOf.d.mts +12 -4
- package/dist/Set/isSupersetOf.mjs +12 -4
- package/dist/Set/mapEach.d.mts +15 -4
- package/dist/Set/mapEach.mjs +15 -4
- package/dist/Set/remove.d.mts +12 -4
- package/dist/Set/remove.mjs +12 -4
- package/dist/Set/removeAll.d.mts +12 -4
- package/dist/Set/removeAll.mjs +12 -4
- package/dist/Set/size.d.mts +11 -4
- package/dist/Set/size.mjs +11 -4
- package/dist/Set/symmetricDifference.d.mts +12 -4
- package/dist/Set/symmetricDifference.mjs +22 -16
- package/dist/Set/toArray.d.mts +9 -4
- package/dist/Set/toArray.mjs +9 -4
- package/dist/Set/union.d.mts +12 -4
- package/dist/Set/union.mjs +19 -9
- package/package.json +2 -2
- package/dist/Set/addOr.d.mts +0 -28
- package/dist/Set/addOr.mjs +0 -34
- package/dist/Set/addOrElse.d.mts +0 -35
- package/dist/Set/addOrElse.mjs +0 -41
- package/dist/Set/addOrThrow.d.mts +0 -28
- package/dist/Set/addOrThrow.mjs +0 -34
- package/dist/Set/removeOr.d.mts +0 -28
- package/dist/Set/removeOr.mjs +0 -34
- package/dist/Set/removeOrElse.d.mts +0 -35
- package/dist/Set/removeOrElse.mjs +0 -41
- package/dist/Set/removeOrThrow.d.mts +0 -28
- package/dist/Set/removeOrThrow.mjs +0 -34
package/dist/Set/union.mjs
CHANGED
|
@@ -2,36 +2,46 @@ import { dfdlT } from "@monstermann/dfdl";
|
|
|
2
2
|
|
|
3
3
|
//#region src/Set/union.ts
|
|
4
4
|
/**
|
|
5
|
+
* # union
|
|
6
|
+
*
|
|
5
7
|
* ```ts
|
|
6
|
-
* function Set.union
|
|
8
|
+
* function Set.union<T, U>(
|
|
9
|
+
* target: Set<T>,
|
|
10
|
+
* source: Set<U>,
|
|
11
|
+
* ): Set<T | U>
|
|
7
12
|
* ```
|
|
8
13
|
*
|
|
9
|
-
*
|
|
14
|
+
* Returns a set containing all values from both sets.
|
|
10
15
|
*
|
|
11
|
-
*
|
|
16
|
+
* ## Example
|
|
17
|
+
*
|
|
18
|
+
* ```ts [data-first]
|
|
12
19
|
* import { Set } from "@monstermann/set";
|
|
13
20
|
*
|
|
14
21
|
* Set.union(Set.create([1, 2]), Set.create([2, 3, 4])); // Set([1, 2, 3, 4])
|
|
15
22
|
* Set.union(Set.create([1, 2]), Set.create([3, 4])); // Set([1, 2, 3, 4])
|
|
16
23
|
* ```
|
|
17
24
|
*
|
|
18
|
-
* ```ts
|
|
25
|
+
* ```ts [data-last]
|
|
19
26
|
* import { Set } from "@monstermann/set";
|
|
20
27
|
*
|
|
21
28
|
* pipe(Set.create([1, 2]), Set.union(Set.create([2, 3, 4]))); // Set([1, 2, 3, 4])
|
|
22
29
|
* pipe(Set.create([1, 2]), Set.union(Set.create([3, 4]))); // Set([1, 2, 3, 4])
|
|
23
30
|
* ```
|
|
31
|
+
*
|
|
24
32
|
*/
|
|
25
33
|
const union = dfdlT((target, source) => {
|
|
26
34
|
if (source.size === 0) return target;
|
|
27
35
|
if (target.size === 0) return source;
|
|
36
|
+
let result;
|
|
28
37
|
for (const element of source) if (!target.has(element)) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
if (result === void 0) {
|
|
39
|
+
result = /* @__PURE__ */ new Set();
|
|
40
|
+
for (const a of target) result.add(a);
|
|
41
|
+
}
|
|
42
|
+
result.add(element);
|
|
33
43
|
}
|
|
34
|
-
return target;
|
|
44
|
+
return result ?? target;
|
|
35
45
|
}, 2);
|
|
36
46
|
|
|
37
47
|
//#endregion
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monstermann/set",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"description": "Functional utilities for sets.",
|
|
6
6
|
"author": "Michael Ostermann <michaelostermann@me.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -34,6 +34,6 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@monstermann/dfdl": "^0.1.0",
|
|
37
|
-
"@monstermann/remmi": "^0.
|
|
37
|
+
"@monstermann/remmi": "^0.1.0"
|
|
38
38
|
}
|
|
39
39
|
}
|
package/dist/Set/addOr.d.mts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
//#region src/Set/addOr.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* ```ts
|
|
4
|
-
* function Set.addOr(target, value, or)
|
|
5
|
-
* ```
|
|
6
|
-
*
|
|
7
|
-
* Example
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { Set } from "@monstermann/set";
|
|
11
|
-
*
|
|
12
|
-
* Set.addOr(Set.create([1, 2]), 3, null); // Set([1, 2, 3])
|
|
13
|
-
* Set.addOr(Set.create([1, 2]), 2, null); // null
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { Set } from "@monstermann/set";
|
|
18
|
-
*
|
|
19
|
-
* pipe(Set.create([1, 2]), Set.addOr(3, null)); // Set([1, 2, 3])
|
|
20
|
-
* pipe(Set.create([1, 2]), Set.addOr(2, null)); // null
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
declare const addOr: {
|
|
24
|
-
<T, U>(value: NoInfer<T>, or: U): (target: ReadonlySet<T>) => Set<T> | U;
|
|
25
|
-
<T, U>(target: ReadonlySet<T>, value: NoInfer<T>, or: U): Set<T> | U;
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
export { addOr };
|
package/dist/Set/addOr.mjs
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
-
import { cloneSet } from "@monstermann/remmi";
|
|
3
|
-
|
|
4
|
-
//#region src/Set/addOr.ts
|
|
5
|
-
/**
|
|
6
|
-
* ```ts
|
|
7
|
-
* function Set.addOr(target, value, or)
|
|
8
|
-
* ```
|
|
9
|
-
*
|
|
10
|
-
* Example
|
|
11
|
-
*
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { Set } from "@monstermann/set";
|
|
14
|
-
*
|
|
15
|
-
* Set.addOr(Set.create([1, 2]), 3, null); // Set([1, 2, 3])
|
|
16
|
-
* Set.addOr(Set.create([1, 2]), 2, null); // null
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* import { Set } from "@monstermann/set";
|
|
21
|
-
*
|
|
22
|
-
* pipe(Set.create([1, 2]), Set.addOr(3, null)); // Set([1, 2, 3])
|
|
23
|
-
* pipe(Set.create([1, 2]), Set.addOr(2, null)); // null
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
const addOr = dfdlT((target, value, or) => {
|
|
27
|
-
if (target.has(value)) return or;
|
|
28
|
-
const result = cloneSet(target);
|
|
29
|
-
result.add(value);
|
|
30
|
-
return result;
|
|
31
|
-
}, 3);
|
|
32
|
-
|
|
33
|
-
//#endregion
|
|
34
|
-
export { addOr };
|
package/dist/Set/addOrElse.d.mts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
//#region src/Set/addOrElse.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* ```ts
|
|
4
|
-
* function Set.addOrElse(target, value, orElse)
|
|
5
|
-
* ```
|
|
6
|
-
*
|
|
7
|
-
* Example
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { Set } from "@monstermann/set";
|
|
11
|
-
*
|
|
12
|
-
* Set.addOrElse(Set.create([1, 2]), 3, (set) => set.size); // Set([1, 2, 3])
|
|
13
|
-
* Set.addOrElse(Set.create([1, 2]), 2, (set) => set.size); // 2
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { Set } from "@monstermann/set";
|
|
18
|
-
*
|
|
19
|
-
* pipe(
|
|
20
|
-
* Set.create([1, 2]),
|
|
21
|
-
* Set.addOrElse(3, (set) => set.size),
|
|
22
|
-
* ); // Set([1, 2, 3])
|
|
23
|
-
*
|
|
24
|
-
* pipe(
|
|
25
|
-
* Set.create([1, 2]),
|
|
26
|
-
* Set.addOrElse(2, (set) => set.size),
|
|
27
|
-
* ); // 2
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
declare const addOrElse: {
|
|
31
|
-
<T, U>(value: NoInfer<T>, orElse: (target: ReadonlySet<NoInfer<T>>) => U): (target: ReadonlySet<T>) => Set<T> | U;
|
|
32
|
-
<T, U>(target: ReadonlySet<T>, value: NoInfer<T>, orElse: (target: ReadonlySet<NoInfer<T>>) => U): Set<T> | U;
|
|
33
|
-
};
|
|
34
|
-
//#endregion
|
|
35
|
-
export { addOrElse };
|
package/dist/Set/addOrElse.mjs
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
-
import { cloneSet } from "@monstermann/remmi";
|
|
3
|
-
|
|
4
|
-
//#region src/Set/addOrElse.ts
|
|
5
|
-
/**
|
|
6
|
-
* ```ts
|
|
7
|
-
* function Set.addOrElse(target, value, orElse)
|
|
8
|
-
* ```
|
|
9
|
-
*
|
|
10
|
-
* Example
|
|
11
|
-
*
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { Set } from "@monstermann/set";
|
|
14
|
-
*
|
|
15
|
-
* Set.addOrElse(Set.create([1, 2]), 3, (set) => set.size); // Set([1, 2, 3])
|
|
16
|
-
* Set.addOrElse(Set.create([1, 2]), 2, (set) => set.size); // 2
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* import { Set } from "@monstermann/set";
|
|
21
|
-
*
|
|
22
|
-
* pipe(
|
|
23
|
-
* Set.create([1, 2]),
|
|
24
|
-
* Set.addOrElse(3, (set) => set.size),
|
|
25
|
-
* ); // Set([1, 2, 3])
|
|
26
|
-
*
|
|
27
|
-
* pipe(
|
|
28
|
-
* Set.create([1, 2]),
|
|
29
|
-
* Set.addOrElse(2, (set) => set.size),
|
|
30
|
-
* ); // 2
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
const addOrElse = dfdlT((target, value, orElse) => {
|
|
34
|
-
if (target.has(value)) return orElse(target);
|
|
35
|
-
const result = cloneSet(target);
|
|
36
|
-
result.add(value);
|
|
37
|
-
return result;
|
|
38
|
-
}, 3);
|
|
39
|
-
|
|
40
|
-
//#endregion
|
|
41
|
-
export { addOrElse };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
//#region src/Set/addOrThrow.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* ```ts
|
|
4
|
-
* function Set.addOrThrow(target, value)
|
|
5
|
-
* ```
|
|
6
|
-
*
|
|
7
|
-
* Example
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { Set } from "@monstermann/set";
|
|
11
|
-
*
|
|
12
|
-
* Set.addOrThrow(Set.create([1, 2]), 3); // Set([1, 2, 3])
|
|
13
|
-
* Set.addOrThrow(Set.create([1, 2]), 2); // throws FnError
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { Set } from "@monstermann/set";
|
|
18
|
-
*
|
|
19
|
-
* pipe(Set.create([1, 2]), Set.addOrThrow(3)); // Set([1, 2, 3])
|
|
20
|
-
* pipe(Set.create([1, 2]), Set.addOrThrow(2)); // throws FnError
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
declare const addOrThrow: {
|
|
24
|
-
<T>(value: NoInfer<T>): (target: ReadonlySet<T>) => Set<T>;
|
|
25
|
-
<T>(target: ReadonlySet<T>, value: NoInfer<T>): Set<T>;
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
export { addOrThrow };
|
package/dist/Set/addOrThrow.mjs
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
-
import { cloneSet } from "@monstermann/remmi";
|
|
3
|
-
|
|
4
|
-
//#region src/Set/addOrThrow.ts
|
|
5
|
-
/**
|
|
6
|
-
* ```ts
|
|
7
|
-
* function Set.addOrThrow(target, value)
|
|
8
|
-
* ```
|
|
9
|
-
*
|
|
10
|
-
* Example
|
|
11
|
-
*
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { Set } from "@monstermann/set";
|
|
14
|
-
*
|
|
15
|
-
* Set.addOrThrow(Set.create([1, 2]), 3); // Set([1, 2, 3])
|
|
16
|
-
* Set.addOrThrow(Set.create([1, 2]), 2); // throws FnError
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* import { Set } from "@monstermann/set";
|
|
21
|
-
*
|
|
22
|
-
* pipe(Set.create([1, 2]), Set.addOrThrow(3)); // Set([1, 2, 3])
|
|
23
|
-
* pipe(Set.create([1, 2]), Set.addOrThrow(2)); // throws FnError
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
const addOrThrow = dfdlT((target, value) => {
|
|
27
|
-
if (target.has(value)) throw new Error("Set.addOrThrow: Value already exists.");
|
|
28
|
-
const result = cloneSet(target);
|
|
29
|
-
result.add(value);
|
|
30
|
-
return result;
|
|
31
|
-
}, 2);
|
|
32
|
-
|
|
33
|
-
//#endregion
|
|
34
|
-
export { addOrThrow };
|
package/dist/Set/removeOr.d.mts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
//#region src/Set/removeOr.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* ```ts
|
|
4
|
-
* function Set.removeOr(target, value, or)
|
|
5
|
-
* ```
|
|
6
|
-
*
|
|
7
|
-
* Example
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { Set } from "@monstermann/set";
|
|
11
|
-
*
|
|
12
|
-
* Set.removeOr(Set.create([1, 2, 3]), 2, null); // Set([1, 3])
|
|
13
|
-
* Set.removeOr(Set.create([1, 2, 3]), 4, null); // null
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { Set } from "@monstermann/set";
|
|
18
|
-
*
|
|
19
|
-
* pipe(Set.create([1, 2, 3]), Set.removeOr(2, null)); // Set([1, 3])
|
|
20
|
-
* pipe(Set.create([1, 2, 3]), Set.removeOr(4, null)); // null
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
declare const removeOr: {
|
|
24
|
-
<T, U>(value: NoInfer<T>, or: U): (target: ReadonlySet<T>) => Set<T> | U;
|
|
25
|
-
<T, U>(target: ReadonlySet<T>, value: NoInfer<T>, or: U): Set<T> | U;
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
export { removeOr };
|
package/dist/Set/removeOr.mjs
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
-
import { cloneSet } from "@monstermann/remmi";
|
|
3
|
-
|
|
4
|
-
//#region src/Set/removeOr.ts
|
|
5
|
-
/**
|
|
6
|
-
* ```ts
|
|
7
|
-
* function Set.removeOr(target, value, or)
|
|
8
|
-
* ```
|
|
9
|
-
*
|
|
10
|
-
* Example
|
|
11
|
-
*
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { Set } from "@monstermann/set";
|
|
14
|
-
*
|
|
15
|
-
* Set.removeOr(Set.create([1, 2, 3]), 2, null); // Set([1, 3])
|
|
16
|
-
* Set.removeOr(Set.create([1, 2, 3]), 4, null); // null
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* import { Set } from "@monstermann/set";
|
|
21
|
-
*
|
|
22
|
-
* pipe(Set.create([1, 2, 3]), Set.removeOr(2, null)); // Set([1, 3])
|
|
23
|
-
* pipe(Set.create([1, 2, 3]), Set.removeOr(4, null)); // null
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
const removeOr = dfdlT((target, value, or) => {
|
|
27
|
-
if (!target.has(value)) return or;
|
|
28
|
-
const result = cloneSet(target);
|
|
29
|
-
result.delete(value);
|
|
30
|
-
return result;
|
|
31
|
-
}, 3);
|
|
32
|
-
|
|
33
|
-
//#endregion
|
|
34
|
-
export { removeOr };
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
//#region src/Set/removeOrElse.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* ```ts
|
|
4
|
-
* function Set.removeOrElse(target, value, orElse)
|
|
5
|
-
* ```
|
|
6
|
-
*
|
|
7
|
-
* Example
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { Set } from "@monstermann/set";
|
|
11
|
-
*
|
|
12
|
-
* Set.removeOrElse(Set.create([1, 2, 3]), 2, (set) => set.size); // Set([1, 3])
|
|
13
|
-
* Set.removeOrElse(Set.create([1, 2, 3]), 4, (set) => set.size); // 3
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { Set } from "@monstermann/set";
|
|
18
|
-
*
|
|
19
|
-
* pipe(
|
|
20
|
-
* Set.create([1, 2, 3]),
|
|
21
|
-
* Set.removeOrElse(2, (set) => set.size),
|
|
22
|
-
* ); // Set([1, 3])
|
|
23
|
-
*
|
|
24
|
-
* pipe(
|
|
25
|
-
* Set.create([1, 2, 3]),
|
|
26
|
-
* Set.removeOrElse(4, (set) => set.size),
|
|
27
|
-
* ); // 3
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
declare const removeOrElse: {
|
|
31
|
-
<T, U>(value: NoInfer<T>, orElse: (target: ReadonlySet<NoInfer<T>>) => U): (target: ReadonlySet<T>) => Set<T> | U;
|
|
32
|
-
<T, U>(target: ReadonlySet<T>, value: NoInfer<T>, orElse: (target: ReadonlySet<NoInfer<T>>) => U): Set<T> | U;
|
|
33
|
-
};
|
|
34
|
-
//#endregion
|
|
35
|
-
export { removeOrElse };
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
-
import { cloneSet } from "@monstermann/remmi";
|
|
3
|
-
|
|
4
|
-
//#region src/Set/removeOrElse.ts
|
|
5
|
-
/**
|
|
6
|
-
* ```ts
|
|
7
|
-
* function Set.removeOrElse(target, value, orElse)
|
|
8
|
-
* ```
|
|
9
|
-
*
|
|
10
|
-
* Example
|
|
11
|
-
*
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { Set } from "@monstermann/set";
|
|
14
|
-
*
|
|
15
|
-
* Set.removeOrElse(Set.create([1, 2, 3]), 2, (set) => set.size); // Set([1, 3])
|
|
16
|
-
* Set.removeOrElse(Set.create([1, 2, 3]), 4, (set) => set.size); // 3
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* import { Set } from "@monstermann/set";
|
|
21
|
-
*
|
|
22
|
-
* pipe(
|
|
23
|
-
* Set.create([1, 2, 3]),
|
|
24
|
-
* Set.removeOrElse(2, (set) => set.size),
|
|
25
|
-
* ); // Set([1, 3])
|
|
26
|
-
*
|
|
27
|
-
* pipe(
|
|
28
|
-
* Set.create([1, 2, 3]),
|
|
29
|
-
* Set.removeOrElse(4, (set) => set.size),
|
|
30
|
-
* ); // 3
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
const removeOrElse = dfdlT((target, value, orElse) => {
|
|
34
|
-
if (!target.has(value)) return orElse(target);
|
|
35
|
-
const result = cloneSet(target);
|
|
36
|
-
result.delete(value);
|
|
37
|
-
return result;
|
|
38
|
-
}, 3);
|
|
39
|
-
|
|
40
|
-
//#endregion
|
|
41
|
-
export { removeOrElse };
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
//#region src/Set/removeOrThrow.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* ```ts
|
|
4
|
-
* function Set.removeOrThrow(target, value)
|
|
5
|
-
* ```
|
|
6
|
-
*
|
|
7
|
-
* Example
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { Set } from "@monstermann/set";
|
|
11
|
-
*
|
|
12
|
-
* Set.removeOrThrow(Set.create([1, 2, 3]), 2); // Set([1, 3])
|
|
13
|
-
* Set.removeOrThrow(Set.create([1, 2, 3]), 4); // throws FnError
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { Set } from "@monstermann/set";
|
|
18
|
-
*
|
|
19
|
-
* pipe(Set.create([1, 2, 3]), Set.removeOrThrow(2)); // Set([1, 3])
|
|
20
|
-
* pipe(Set.create([1, 2, 3]), Set.removeOrThrow(4)); // throws FnError
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
declare const removeOrThrow: {
|
|
24
|
-
<T>(value: NoInfer<T>): (target: ReadonlySet<T>) => Set<T>;
|
|
25
|
-
<T>(target: ReadonlySet<T>, value: NoInfer<T>): Set<T>;
|
|
26
|
-
};
|
|
27
|
-
//#endregion
|
|
28
|
-
export { removeOrThrow };
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { dfdlT } from "@monstermann/dfdl";
|
|
2
|
-
import { cloneSet } from "@monstermann/remmi";
|
|
3
|
-
|
|
4
|
-
//#region src/Set/removeOrThrow.ts
|
|
5
|
-
/**
|
|
6
|
-
* ```ts
|
|
7
|
-
* function Set.removeOrThrow(target, value)
|
|
8
|
-
* ```
|
|
9
|
-
*
|
|
10
|
-
* Example
|
|
11
|
-
*
|
|
12
|
-
* ```ts
|
|
13
|
-
* import { Set } from "@monstermann/set";
|
|
14
|
-
*
|
|
15
|
-
* Set.removeOrThrow(Set.create([1, 2, 3]), 2); // Set([1, 3])
|
|
16
|
-
* Set.removeOrThrow(Set.create([1, 2, 3]), 4); // throws FnError
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* import { Set } from "@monstermann/set";
|
|
21
|
-
*
|
|
22
|
-
* pipe(Set.create([1, 2, 3]), Set.removeOrThrow(2)); // Set([1, 3])
|
|
23
|
-
* pipe(Set.create([1, 2, 3]), Set.removeOrThrow(4)); // throws FnError
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
const removeOrThrow = dfdlT((target, value) => {
|
|
27
|
-
if (!target.has(value)) throw new Error("Set.removeOrThrow: Value does not exist.");
|
|
28
|
-
const result = cloneSet(target);
|
|
29
|
-
result.delete(value);
|
|
30
|
-
return result;
|
|
31
|
-
}, 2);
|
|
32
|
-
|
|
33
|
-
//#endregion
|
|
34
|
-
export { removeOrThrow };
|