@e280/stz 0.2.24 → 0.2.25

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.
Files changed (64) hide show
  1. package/package.json +7 -5
  2. package/s/index.ts +2 -0
  3. package/s/maybe/fns/get.ts +9 -0
  4. package/s/maybe/fns/is-nay.ts +7 -0
  5. package/s/maybe/fns/is-yay.ts +7 -0
  6. package/s/maybe/fns/nay.ts +7 -0
  7. package/s/maybe/fns/problems.ts +9 -0
  8. package/s/maybe/fns/require.ts +8 -0
  9. package/s/maybe/fns/yay.ts +7 -0
  10. package/s/maybe/index.barrel.ts +15 -0
  11. package/s/maybe/index.ts +5 -0
  12. package/s/maybe/test.ts +97 -0
  13. package/s/maybe/types.ts +6 -0
  14. package/s/maybe/validators/all.ts +24 -0
  15. package/s/maybe/validators/allow.ts +17 -0
  16. package/s/maybe/validators/deny.ts +17 -0
  17. package/s/tests.test.ts +2 -0
  18. package/x/index.d.ts +1 -0
  19. package/x/index.js +1 -0
  20. package/x/index.js.map +1 -1
  21. package/x/maybe/fns/get.d.ts +2 -0
  22. package/x/maybe/fns/get.js +6 -0
  23. package/x/maybe/fns/get.js.map +1 -0
  24. package/x/maybe/fns/is-nay.d.ts +2 -0
  25. package/x/maybe/fns/is-nay.js +4 -0
  26. package/x/maybe/fns/is-nay.js.map +1 -0
  27. package/x/maybe/fns/is-yay.d.ts +2 -0
  28. package/x/maybe/fns/is-yay.js +4 -0
  29. package/x/maybe/fns/is-yay.js.map +1 -0
  30. package/x/maybe/fns/nay.d.ts +2 -0
  31. package/x/maybe/fns/nay.js +4 -0
  32. package/x/maybe/fns/nay.js.map +1 -0
  33. package/x/maybe/fns/problems.d.ts +2 -0
  34. package/x/maybe/fns/problems.js +6 -0
  35. package/x/maybe/fns/problems.js.map +1 -0
  36. package/x/maybe/fns/require.d.ts +2 -0
  37. package/x/maybe/fns/require.js +6 -0
  38. package/x/maybe/fns/require.js.map +1 -0
  39. package/x/maybe/fns/yay.d.ts +2 -0
  40. package/x/maybe/fns/yay.js +4 -0
  41. package/x/maybe/fns/yay.js.map +1 -0
  42. package/x/maybe/index.barrel.d.ts +11 -0
  43. package/x/maybe/index.barrel.js +12 -0
  44. package/x/maybe/index.barrel.js.map +1 -0
  45. package/x/maybe/index.d.ts +3 -0
  46. package/x/maybe/index.js +4 -0
  47. package/x/maybe/index.js.map +1 -0
  48. package/x/maybe/test.d.ts +20 -0
  49. package/x/maybe/test.js +80 -0
  50. package/x/maybe/test.js.map +1 -0
  51. package/x/maybe/types.d.ts +10 -0
  52. package/x/maybe/types.js +2 -0
  53. package/x/maybe/types.js.map +1 -0
  54. package/x/maybe/validators/all.d.ts +2 -0
  55. package/x/maybe/validators/all.js +19 -0
  56. package/x/maybe/validators/all.js.map +1 -0
  57. package/x/maybe/validators/allow.d.ts +2 -0
  58. package/x/maybe/validators/allow.js +8 -0
  59. package/x/maybe/validators/allow.js.map +1 -0
  60. package/x/maybe/validators/deny.d.ts +2 -0
  61. package/x/maybe/validators/deny.js +8 -0
  62. package/x/maybe/validators/deny.js.map +1 -0
  63. package/x/tests.test.js +2 -0
  64. package/x/tests.test.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e280/stz",
3
- "version": "0.2.24",
3
+ "version": "0.2.25",
4
4
  "description": "everyday ts fns for everything",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
@@ -8,7 +8,8 @@
8
8
  "main": "./x/index.js",
9
9
  "sideEffects": false,
10
10
  "exports": {
11
- ".": "./x/index.js"
11
+ ".": "./x/index.js",
12
+ "./maybe": "./x/maybe/index.js"
12
13
  },
13
14
  "files": [
14
15
  "x",
@@ -22,13 +23,14 @@
22
23
  },
23
24
  "devDependencies": {
24
25
  "@e280/science": "^0.1.8",
25
- "@types/node": "^25.3.5",
26
- "typescript": "^5.9.3"
26
+ "@types/node": "^25.5.0",
27
+ "typescript": "^6.0.2"
27
28
  },
28
29
  "keywords": [
29
30
  "standard",
30
31
  "std",
31
- "steeze"
32
+ "steeze",
33
+ "utils"
32
34
  ],
33
35
  "homepage": "https://github.com/e280/stz#readme",
34
36
  "repository": {
package/s/index.ts CHANGED
@@ -25,6 +25,8 @@ export * from "./queue/queue.js"
25
25
 
26
26
  export * from "./toq/index.js"
27
27
 
28
+ export * from "./maybe/index.js"
29
+
28
30
  export * from "./all.js"
29
31
  export * from "./coalesce.js"
30
32
  export * from "./collect.js"
@@ -0,0 +1,9 @@
1
+
2
+ import {Maybe} from "../types.js"
3
+
4
+ export function get<X>(maybe: Maybe<X>) {
5
+ return maybe.yay
6
+ ? maybe.value
7
+ : undefined
8
+ }
9
+
@@ -0,0 +1,7 @@
1
+
2
+ import {Maybe, Nay} from "../types.js"
3
+
4
+ export function isNay(maybe: Maybe<any>): maybe is Nay {
5
+ return !maybe.yay
6
+ }
7
+
@@ -0,0 +1,7 @@
1
+
2
+ import {Maybe, Yay} from "../types.js"
3
+
4
+ export function isYay<X>(maybe: Maybe<X>): maybe is Yay<X> {
5
+ return maybe.yay
6
+ }
7
+
@@ -0,0 +1,7 @@
1
+
2
+ import {Nay} from "../types.js"
3
+
4
+ export function nay(...problems: string[]): Nay {
5
+ return {yay: false, problems}
6
+ }
7
+
@@ -0,0 +1,9 @@
1
+
2
+ import {Maybe} from "../types.js"
3
+
4
+ export function problems(maybe: Maybe<unknown>) {
5
+ return maybe.yay
6
+ ? undefined
7
+ : maybe.problems
8
+ }
9
+
@@ -0,0 +1,8 @@
1
+
2
+ import {Maybe} from "../types.js"
3
+
4
+ export function require<X>(maybe: Maybe<X>) {
5
+ if (!maybe.yay) throw new Error(maybe.problems.join("; "))
6
+ return maybe.value
7
+ }
8
+
@@ -0,0 +1,7 @@
1
+
2
+ import {Yay} from "../types.js"
3
+
4
+ export function yay<X>(value: X): Yay<X> {
5
+ return {yay: true, value}
6
+ }
7
+
@@ -0,0 +1,15 @@
1
+
2
+ export * from "./fns/get.js"
3
+ export * from "./fns/is-nay.js"
4
+ export * from "./fns/is-yay.js"
5
+ export * from "./fns/nay.js"
6
+ export * from "./fns/problems.js"
7
+ export * from "./fns/require.js"
8
+ export * from "./fns/yay.js"
9
+
10
+ export * from "./validators/all.js"
11
+ export * from "./validators/allow.js"
12
+ export * from "./validators/deny.js"
13
+
14
+ export * from "./types.js"
15
+
@@ -0,0 +1,5 @@
1
+
2
+ export * as maybe from "./index.barrel.js"
3
+ export {yay, nay, allow, deny} from "./index.barrel.js"
4
+ export * from "./types.js"
5
+
@@ -0,0 +1,97 @@
1
+
2
+ import {expect, suite, test} from "@e280/science"
3
+ import {maybe, yay, nay, allow, deny} from "./index.js"
4
+
5
+ export default suite({
6
+ fns: {
7
+ "get": test(async() => {
8
+ expect(maybe.get(yay(123))).is(123)
9
+ expect(maybe.get(nay("nope"))).is(undefined)
10
+ }),
11
+
12
+ "isNay": test(async() => {
13
+ expect(maybe.isNay(yay(123))).is(false)
14
+ expect(maybe.isNay(nay("nope"))).is(true)
15
+ }),
16
+
17
+ "isYay": test(async() => {
18
+ expect(maybe.isYay(yay(123))).is(true)
19
+ expect(maybe.isYay(nay("nope"))).is(false)
20
+ }),
21
+
22
+ "nay": test(async() => {
23
+ expect(nay("nope").yay).is(false)
24
+ expect("value" in nay("nope")).is(false)
25
+ expect(nay("nope").problems).ok()
26
+ expect(nay("nope").problems.length).is(1)
27
+ expect(nay("a", "b").problems.length).is(2)
28
+ expect(nay().problems).ok()
29
+ expect(nay().problems.length).is(0)
30
+ }),
31
+
32
+ "problems": test(async() => {
33
+ expect(maybe.problems(yay(123))).is(undefined)
34
+ expect(maybe.problems(nay("nope"))).ok()
35
+ expect(maybe.problems(nay("nope"))!.length).is(1)
36
+ }),
37
+
38
+ "require": test(async() => {
39
+ expect(maybe.require(yay(123))).is(123)
40
+ expect(() => maybe.require(nay("nope"))).throws()
41
+ }),
42
+
43
+ "yay": test(async() => {
44
+ expect(yay(123).yay).is(true)
45
+ expect(yay(123).value).is(123)
46
+ expect("problems" in yay(123)).is(false)
47
+ }),
48
+ },
49
+
50
+ validators: {
51
+ "allow": test(async() => {
52
+ const allowBig = allow<number>("must be big", n => n > 99)
53
+ expect(allowBig(1).yay).is(false)
54
+ expect(allowBig(123).yay).is(true)
55
+ expect(maybe.problems(allowBig(1))!.length).is(1)
56
+ }),
57
+
58
+ "allow, null problem": test(async() => {
59
+ const allowBig = allow<number>(null, n => n > 99)
60
+ expect(allowBig(1).yay).is(false)
61
+ expect(allowBig(123).yay).is(true)
62
+ expect(maybe.problems(allowBig(1))!.length).is(0)
63
+ }),
64
+
65
+ "deny": test(async() => {
66
+ const denyBig = deny<number>("cannot be big", n => n > 99)
67
+ expect(denyBig(1).yay).is(true)
68
+ expect(denyBig(123).yay).is(false)
69
+ expect(maybe.problems(denyBig(123))!.length).is(1)
70
+ }),
71
+
72
+ "deny, null problem": test(async() => {
73
+ const denyBig = deny<number>(null, n => n > 99)
74
+ expect(denyBig(1).yay).is(true)
75
+ expect(denyBig(123).yay).is(false)
76
+ expect(maybe.problems(denyBig(123))!.length).is(0)
77
+ }),
78
+
79
+ "all": test(async() => {
80
+ const validator = maybe.all<number>(
81
+ allow("must be integer", n => Number.isInteger(n)),
82
+ deny("too big", n => n > 10),
83
+ )
84
+ expect(validator(5).yay).is(true)
85
+ expect(validator(5.1).yay).is(false)
86
+ expect(validator(15).yay).is(false)
87
+ expect(maybe.problems(validator(15.1))!.includes("must be integer")).ok()
88
+ expect(maybe.problems(validator(15.1))!.includes("too big")).ok()
89
+ }),
90
+
91
+ "all without validators passes": test(async() => {
92
+ const validator = maybe.all<number>()
93
+ expect(validator(5).yay).is(true)
94
+ }),
95
+ },
96
+ })
97
+
@@ -0,0 +1,6 @@
1
+
2
+ export type Yay<X> = {yay: true, value: X}
3
+ export type Nay = {yay: false, problems: string[]}
4
+ export type Maybe<X> = Yay<X> | Nay
5
+ export type Validator<X> = (x: X) => Maybe<X>
6
+
@@ -0,0 +1,24 @@
1
+
2
+ import {nay} from "../fns/nay.js"
3
+ import {yay} from "../fns/yay.js"
4
+ import {Validator} from "../types.js"
5
+
6
+ export function all<X>(...validators: Validator<X>[]): Validator<X> {
7
+ return x => {
8
+ let failures = 0
9
+ const probs: string[] = []
10
+
11
+ for (const validator of validators) {
12
+ const maybe = validator(x)
13
+ if (!maybe.yay) {
14
+ failures++
15
+ probs.push(...maybe.problems)
16
+ }
17
+ }
18
+
19
+ return (failures > 0)
20
+ ? nay(...probs)
21
+ : yay(x)
22
+ }
23
+ }
24
+
@@ -0,0 +1,17 @@
1
+
2
+ import {nay} from "../fns/nay.js"
3
+ import {yay} from "../fns/yay.js"
4
+ import {Validator} from "../types.js"
5
+
6
+ export function allow<X>(
7
+ problem: string | null | undefined,
8
+ allowed: (x: X) => boolean,
9
+ ): Validator<X> {
10
+
11
+ return x => (
12
+ allowed(x)
13
+ ? yay(x)
14
+ : (problem ? nay(problem) : nay())
15
+ )
16
+ }
17
+
@@ -0,0 +1,17 @@
1
+
2
+ import {nay} from "../fns/nay.js"
3
+ import {yay} from "../fns/yay.js"
4
+ import {Validator} from "../types.js"
5
+
6
+ export function deny<X>(
7
+ problem: string | null | undefined,
8
+ denied: (x: X) => boolean,
9
+ ): Validator<X> {
10
+
11
+ return x => (
12
+ denied(x)
13
+ ? (problem ? nay(problem) : nay())
14
+ : yay(x)
15
+ )
16
+ }
17
+
package/s/tests.test.ts CHANGED
@@ -7,6 +7,7 @@ import microbounce from "./debounce/microbounce.test.js"
7
7
  import deep from "./deep/index.test.js"
8
8
  import queue from "./queue/queue.test.js"
9
9
  import toq from "./toq/toq.test.js"
10
+ import maybe from "./maybe/test.js"
10
11
 
11
12
  await Science.run({
12
13
  data,
@@ -15,5 +16,6 @@ await Science.run({
15
16
  deep,
16
17
  queue,
17
18
  toq,
19
+ maybe,
18
20
  })
19
21
 
package/x/index.d.ts CHANGED
@@ -18,6 +18,7 @@ export * from "./g/set.js";
18
18
  export * from "./g/weak-map.js";
19
19
  export * from "./queue/queue.js";
20
20
  export * from "./toq/index.js";
21
+ export * from "./maybe/index.js";
21
22
  export * from "./all.js";
22
23
  export * from "./coalesce.js";
23
24
  export * from "./collect.js";
package/x/index.js CHANGED
@@ -18,6 +18,7 @@ export * from "./g/set.js";
18
18
  export * from "./g/weak-map.js";
19
19
  export * from "./queue/queue.js";
20
20
  export * from "./toq/index.js";
21
+ export * from "./maybe/index.js";
21
22
  export * from "./all.js";
22
23
  export * from "./coalesce.js";
23
24
  export * from "./collect.js";
package/x/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,iBAAiB,CAAA;AAE/B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,iBAAiB,CAAA;AAE/B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Maybe } from "../types.js";
2
+ export declare function get<X>(maybe: Maybe<X>): X | undefined;
@@ -0,0 +1,6 @@
1
+ export function get(maybe) {
2
+ return maybe.yay
3
+ ? maybe.value
4
+ : undefined;
5
+ }
6
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../s/maybe/fns/get.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,CAAI,KAAe;IACrC,OAAO,KAAK,CAAC,GAAG;QACf,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,SAAS,CAAA;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Maybe, Nay } from "../types.js";
2
+ export declare function isNay(maybe: Maybe<any>): maybe is Nay;
@@ -0,0 +1,4 @@
1
+ export function isNay(maybe) {
2
+ return !maybe.yay;
3
+ }
4
+ //# sourceMappingURL=is-nay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-nay.js","sourceRoot":"","sources":["../../../s/maybe/fns/is-nay.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,KAAK,CAAC,KAAiB;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAA;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Maybe, Yay } from "../types.js";
2
+ export declare function isYay<X>(maybe: Maybe<X>): maybe is Yay<X>;
@@ -0,0 +1,4 @@
1
+ export function isYay(maybe) {
2
+ return maybe.yay;
3
+ }
4
+ //# sourceMappingURL=is-yay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-yay.js","sourceRoot":"","sources":["../../../s/maybe/fns/is-yay.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,KAAK,CAAI,KAAe;IACvC,OAAO,KAAK,CAAC,GAAG,CAAA;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Nay } from "../types.js";
2
+ export declare function nay(...problems: string[]): Nay;
@@ -0,0 +1,4 @@
1
+ export function nay(...problems) {
2
+ return { yay: false, problems };
3
+ }
4
+ //# sourceMappingURL=nay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nay.js","sourceRoot":"","sources":["../../../s/maybe/fns/nay.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,CAAC,GAAG,QAAkB;IACxC,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Maybe } from "../types.js";
2
+ export declare function problems(maybe: Maybe<unknown>): string[] | undefined;
@@ -0,0 +1,6 @@
1
+ export function problems(maybe) {
2
+ return maybe.yay
3
+ ? undefined
4
+ : maybe.problems;
5
+ }
6
+ //# sourceMappingURL=problems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"problems.js","sourceRoot":"","sources":["../../../s/maybe/fns/problems.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,QAAQ,CAAC,KAAqB;IAC7C,OAAO,KAAK,CAAC,GAAG;QACf,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAA;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Maybe } from "../types.js";
2
+ export declare function require<X>(maybe: Maybe<X>): X;
@@ -0,0 +1,6 @@
1
+ export function require(maybe) {
2
+ if (!maybe.yay)
3
+ throw new Error(maybe.problems.join("; "));
4
+ return maybe.value;
5
+ }
6
+ //# sourceMappingURL=require.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require.js","sourceRoot":"","sources":["../../../s/maybe/fns/require.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,OAAO,CAAI,KAAe;IACzC,IAAI,CAAC,KAAK,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1D,OAAO,KAAK,CAAC,KAAK,CAAA;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Yay } from "../types.js";
2
+ export declare function yay<X>(value: X): Yay<X>;
@@ -0,0 +1,4 @@
1
+ export function yay(value) {
2
+ return { yay: true, value };
3
+ }
4
+ //# sourceMappingURL=yay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yay.js","sourceRoot":"","sources":["../../../s/maybe/fns/yay.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC9B,OAAO,EAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAC,CAAA;AAC1B,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from "./fns/get.js";
2
+ export * from "./fns/is-nay.js";
3
+ export * from "./fns/is-yay.js";
4
+ export * from "./fns/nay.js";
5
+ export * from "./fns/problems.js";
6
+ export * from "./fns/require.js";
7
+ export * from "./fns/yay.js";
8
+ export * from "./validators/all.js";
9
+ export * from "./validators/allow.js";
10
+ export * from "./validators/deny.js";
11
+ export * from "./types.js";
@@ -0,0 +1,12 @@
1
+ export * from "./fns/get.js";
2
+ export * from "./fns/is-nay.js";
3
+ export * from "./fns/is-yay.js";
4
+ export * from "./fns/nay.js";
5
+ export * from "./fns/problems.js";
6
+ export * from "./fns/require.js";
7
+ export * from "./fns/yay.js";
8
+ export * from "./validators/all.js";
9
+ export * from "./validators/allow.js";
10
+ export * from "./validators/deny.js";
11
+ export * from "./types.js";
12
+ //# sourceMappingURL=index.barrel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.barrel.js","sourceRoot":"","sources":["../../s/maybe/index.barrel.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAE5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * as maybe from "./index.barrel.js";
2
+ export { yay, nay, allow, deny } from "./index.barrel.js";
3
+ export * from "./types.js";
@@ -0,0 +1,4 @@
1
+ export * as maybe from "./index.barrel.js";
2
+ export { yay, nay, allow, deny } from "./index.barrel.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../s/maybe/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAA;AACvD,cAAc,YAAY,CAAA"}
@@ -0,0 +1,20 @@
1
+ declare const _default: {
2
+ fns: {
3
+ get: import("@e280/science").Test;
4
+ isNay: import("@e280/science").Test;
5
+ isYay: import("@e280/science").Test;
6
+ nay: import("@e280/science").Test;
7
+ problems: import("@e280/science").Test;
8
+ require: import("@e280/science").Test;
9
+ yay: import("@e280/science").Test;
10
+ };
11
+ validators: {
12
+ allow: import("@e280/science").Test;
13
+ "allow, null problem": import("@e280/science").Test;
14
+ deny: import("@e280/science").Test;
15
+ "deny, null problem": import("@e280/science").Test;
16
+ all: import("@e280/science").Test;
17
+ "all without validators passes": import("@e280/science").Test;
18
+ };
19
+ };
20
+ export default _default;
@@ -0,0 +1,80 @@
1
+ import { expect, suite, test } from "@e280/science";
2
+ import { maybe, yay, nay, allow, deny } from "./index.js";
3
+ export default suite({
4
+ fns: {
5
+ "get": test(async () => {
6
+ expect(maybe.get(yay(123))).is(123);
7
+ expect(maybe.get(nay("nope"))).is(undefined);
8
+ }),
9
+ "isNay": test(async () => {
10
+ expect(maybe.isNay(yay(123))).is(false);
11
+ expect(maybe.isNay(nay("nope"))).is(true);
12
+ }),
13
+ "isYay": test(async () => {
14
+ expect(maybe.isYay(yay(123))).is(true);
15
+ expect(maybe.isYay(nay("nope"))).is(false);
16
+ }),
17
+ "nay": test(async () => {
18
+ expect(nay("nope").yay).is(false);
19
+ expect("value" in nay("nope")).is(false);
20
+ expect(nay("nope").problems).ok();
21
+ expect(nay("nope").problems.length).is(1);
22
+ expect(nay("a", "b").problems.length).is(2);
23
+ expect(nay().problems).ok();
24
+ expect(nay().problems.length).is(0);
25
+ }),
26
+ "problems": test(async () => {
27
+ expect(maybe.problems(yay(123))).is(undefined);
28
+ expect(maybe.problems(nay("nope"))).ok();
29
+ expect(maybe.problems(nay("nope")).length).is(1);
30
+ }),
31
+ "require": test(async () => {
32
+ expect(maybe.require(yay(123))).is(123);
33
+ expect(() => maybe.require(nay("nope"))).throws();
34
+ }),
35
+ "yay": test(async () => {
36
+ expect(yay(123).yay).is(true);
37
+ expect(yay(123).value).is(123);
38
+ expect("problems" in yay(123)).is(false);
39
+ }),
40
+ },
41
+ validators: {
42
+ "allow": test(async () => {
43
+ const allowBig = allow("must be big", n => n > 99);
44
+ expect(allowBig(1).yay).is(false);
45
+ expect(allowBig(123).yay).is(true);
46
+ expect(maybe.problems(allowBig(1)).length).is(1);
47
+ }),
48
+ "allow, null problem": test(async () => {
49
+ const allowBig = allow(null, n => n > 99);
50
+ expect(allowBig(1).yay).is(false);
51
+ expect(allowBig(123).yay).is(true);
52
+ expect(maybe.problems(allowBig(1)).length).is(0);
53
+ }),
54
+ "deny": test(async () => {
55
+ const denyBig = deny("cannot be big", n => n > 99);
56
+ expect(denyBig(1).yay).is(true);
57
+ expect(denyBig(123).yay).is(false);
58
+ expect(maybe.problems(denyBig(123)).length).is(1);
59
+ }),
60
+ "deny, null problem": test(async () => {
61
+ const denyBig = deny(null, n => n > 99);
62
+ expect(denyBig(1).yay).is(true);
63
+ expect(denyBig(123).yay).is(false);
64
+ expect(maybe.problems(denyBig(123)).length).is(0);
65
+ }),
66
+ "all": test(async () => {
67
+ const validator = maybe.all(allow("must be integer", n => Number.isInteger(n)), deny("too big", n => n > 10));
68
+ expect(validator(5).yay).is(true);
69
+ expect(validator(5.1).yay).is(false);
70
+ expect(validator(15).yay).is(false);
71
+ expect(maybe.problems(validator(15.1)).includes("must be integer")).ok();
72
+ expect(maybe.problems(validator(15.1)).includes("too big")).ok();
73
+ }),
74
+ "all without validators passes": test(async () => {
75
+ const validator = maybe.all();
76
+ expect(validator(5).yay).is(true);
77
+ }),
78
+ },
79
+ });
80
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../s/maybe/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type Yay<X> = {
2
+ yay: true;
3
+ value: X;
4
+ };
5
+ export type Nay = {
6
+ yay: false;
7
+ problems: string[];
8
+ };
9
+ export type Maybe<X> = Yay<X> | Nay;
10
+ export type Validator<X> = (x: X) => Maybe<X>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../s/maybe/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { Validator } from "../types.js";
2
+ export declare function all<X>(...validators: Validator<X>[]): Validator<X>;
@@ -0,0 +1,19 @@
1
+ import { nay } from "../fns/nay.js";
2
+ import { yay } from "../fns/yay.js";
3
+ export function all(...validators) {
4
+ return x => {
5
+ let failures = 0;
6
+ const probs = [];
7
+ for (const validator of validators) {
8
+ const maybe = validator(x);
9
+ if (!maybe.yay) {
10
+ failures++;
11
+ probs.push(...maybe.problems);
12
+ }
13
+ }
14
+ return (failures > 0)
15
+ ? nay(...probs)
16
+ : yay(x);
17
+ };
18
+ }
19
+ //# sourceMappingURL=all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all.js","sourceRoot":"","sources":["../../../s/maybe/validators/all.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AACjC,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AAGjC,MAAM,UAAU,GAAG,CAAI,GAAG,UAA0B;IACnD,OAAO,CAAC,CAAC,EAAE;QACV,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAChB,QAAQ,EAAE,CAAA;gBACV,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC9B,CAAC;QACF,CAAC;QAED,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACpB,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACf,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACV,CAAC,CAAA;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Validator } from "../types.js";
2
+ export declare function allow<X>(problem: string | null | undefined, allowed: (x: X) => boolean): Validator<X>;
@@ -0,0 +1,8 @@
1
+ import { nay } from "../fns/nay.js";
2
+ import { yay } from "../fns/yay.js";
3
+ export function allow(problem, allowed) {
4
+ return x => (allowed(x)
5
+ ? yay(x)
6
+ : (problem ? nay(problem) : nay()));
7
+ }
8
+ //# sourceMappingURL=allow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allow.js","sourceRoot":"","sources":["../../../s/maybe/validators/allow.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AACjC,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AAGjC,MAAM,UAAU,KAAK,CACnB,OAAkC,EAClC,OAA0B;IAG3B,OAAO,CAAC,CAAC,EAAE,CAAC,CACX,OAAO,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CACnC,CAAA;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Validator } from "../types.js";
2
+ export declare function deny<X>(problem: string | null | undefined, denied: (x: X) => boolean): Validator<X>;
@@ -0,0 +1,8 @@
1
+ import { nay } from "../fns/nay.js";
2
+ import { yay } from "../fns/yay.js";
3
+ export function deny(problem, denied) {
4
+ return x => (denied(x)
5
+ ? (problem ? nay(problem) : nay())
6
+ : yay(x));
7
+ }
8
+ //# sourceMappingURL=deny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deny.js","sourceRoot":"","sources":["../../../s/maybe/validators/deny.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AACjC,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAA;AAGjC,MAAM,UAAU,IAAI,CAClB,OAAkC,EAClC,MAAyB;IAG1B,OAAO,CAAC,CAAC,EAAE,CAAC,CACX,MAAM,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CACT,CAAA;AACF,CAAC"}
package/x/tests.test.js CHANGED
@@ -5,6 +5,7 @@ import microbounce from "./debounce/microbounce.test.js";
5
5
  import deep from "./deep/index.test.js";
6
6
  import queue from "./queue/queue.test.js";
7
7
  import toq from "./toq/toq.test.js";
8
+ import maybe from "./maybe/test.js";
8
9
  await Science.run({
9
10
  data,
10
11
  debounce,
@@ -12,5 +13,6 @@ await Science.run({
12
13
  deep,
13
14
  queue,
14
15
  toq,
16
+ maybe,
15
17
  });
16
18
  //# sourceMappingURL=tests.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tests.test.js","sourceRoot":"","sources":["../s/tests.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AAErC,OAAO,IAAI,MAAM,qBAAqB,CAAA;AACtC,OAAO,QAAQ,MAAM,6BAA6B,CAAA;AAClD,OAAO,WAAW,MAAM,gCAAgC,CAAA;AACxD,OAAO,IAAI,MAAM,sBAAsB,CAAA;AACvC,OAAO,KAAK,MAAM,uBAAuB,CAAA;AACzC,OAAO,GAAG,MAAM,mBAAmB,CAAA;AAEnC,MAAM,OAAO,CAAC,GAAG,CAAC;IACjB,IAAI;IACJ,QAAQ;IACR,WAAW;IACX,IAAI;IACJ,KAAK;IACL,GAAG;CACH,CAAC,CAAA"}
1
+ {"version":3,"file":"tests.test.js","sourceRoot":"","sources":["../s/tests.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AAErC,OAAO,IAAI,MAAM,qBAAqB,CAAA;AACtC,OAAO,QAAQ,MAAM,6BAA6B,CAAA;AAClD,OAAO,WAAW,MAAM,gCAAgC,CAAA;AACxD,OAAO,IAAI,MAAM,sBAAsB,CAAA;AACvC,OAAO,KAAK,MAAM,uBAAuB,CAAA;AACzC,OAAO,GAAG,MAAM,mBAAmB,CAAA;AACnC,OAAO,KAAK,MAAM,iBAAiB,CAAA;AAEnC,MAAM,OAAO,CAAC,GAAG,CAAC;IACjB,IAAI;IACJ,QAAQ;IACR,WAAW;IACX,IAAI;IACJ,KAAK;IACL,GAAG;IACH,KAAK;CACL,CAAC,CAAA"}