@terrygonguet/utils 0.0.12 → 0.0.13

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.
@@ -1,13 +1,13 @@
1
- var d = Object.defineProperty;
2
- var S = (r, e, t) => e in r ? d(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
- var u = (r, e, t) => (S(r, typeof e != "symbol" ? e + "" : e, t), t);
4
- const a = "@terrygonguet/utils/functional/result", l = "@terrygonguet/utils/functional/result/Success", w = "@terrygonguet/utils/functional/result/Failure";
5
- class f {
1
+ var S = Object.defineProperty;
2
+ var v = (r, e, t) => e in r ? S(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
+ var u = (r, e, t) => (v(r, typeof e != "symbol" ? e + "" : e, t), t);
4
+ const a = "@terrygonguet/utils/functional/result", f = "@terrygonguet/utils/functional/result/Success", w = "@terrygonguet/utils/functional/result/Failure";
5
+ class l {
6
6
  constructor(e) {
7
7
  u(this, "value");
8
8
  Object.defineProperties(this, {
9
9
  $_kind: { value: a, enumerable: !1, writable: !1 },
10
- $_variant: { value: l, enumerable: !1, writable: !1 },
10
+ $_variant: { value: f, enumerable: !1, writable: !1 },
11
11
  value: { value: e, writable: !1 }
12
12
  });
13
13
  }
@@ -24,13 +24,13 @@ class f {
24
24
  return e(this.value);
25
25
  }
26
26
  map(e) {
27
- return new f(e(this.value));
27
+ return new l(e(this.value));
28
28
  }
29
29
  flatMap(e) {
30
30
  return e(this.value);
31
31
  }
32
32
  toJSON() {
33
- return { $_kind: a, $_variant: l, value: this.value };
33
+ return { $_kind: a, $_variant: f, value: this.value };
34
34
  }
35
35
  }
36
36
  class g {
@@ -38,7 +38,7 @@ class g {
38
38
  u(this, "reason");
39
39
  Object.defineProperties(this, {
40
40
  $_kind: { value: a, enumerable: !1, writable: !1 },
41
- $_variant: { value: l, enumerable: !1, writable: !1 },
41
+ $_variant: { value: f, enumerable: !1, writable: !1 },
42
42
  reason: { value: e, writable: !1 }
43
43
  });
44
44
  }
@@ -64,18 +64,18 @@ class g {
64
64
  return { $_kind: a, $_variant: w, reason: this.reason };
65
65
  }
66
66
  }
67
- function v(r, e) {
67
+ function y(r, e) {
68
68
  return e ? r.toResult(e) : r.toResult();
69
69
  }
70
70
  const c = {
71
71
  Success(r) {
72
- return new f(r);
72
+ return new l(r);
73
73
  },
74
74
  Failure(r) {
75
75
  return new g(r);
76
76
  },
77
77
  try(r) {
78
- return new y(r);
78
+ return new d(r);
79
79
  },
80
80
  fromPromise(r, e, t) {
81
81
  return r.then(
@@ -83,20 +83,20 @@ const c = {
83
83
  b(t, this.Failure)
84
84
  );
85
85
  },
86
- fromMaybe: v,
86
+ fromMaybe: y,
87
87
  JSONReviver(r, e) {
88
88
  if ((e == null ? void 0 : e.$_kind) == a) {
89
89
  const t = e == null ? void 0 : e.$_variant;
90
- return t == l ? new f(e == null ? void 0 : e.value) : t == w ? new g(e == null ? void 0 : e.reason) : e;
90
+ return t == f ? new l(e == null ? void 0 : e.value) : t == w ? new g(e == null ? void 0 : e.reason) : e;
91
91
  } else
92
92
  return e;
93
93
  }
94
94
  };
95
- class y {
95
+ class d {
96
96
  constructor(e) {
97
97
  u(this, "tryFn");
98
98
  u(this, "catchFn");
99
- this.tryFn = e, this.catchFn = p;
99
+ this.tryFn = e, this.catchFn = $;
100
100
  }
101
101
  catch(e) {
102
102
  return this.catchFn = e, this;
@@ -111,8 +111,8 @@ class y {
111
111
  }
112
112
  }
113
113
  }
114
- const h = "@terrygonguet/utils/functional/maybe", _ = "@terrygonguet/utils/functional/maybe/Some", $ = "@terrygonguet/utils/functional/maybe/None";
115
- class o {
114
+ const h = "@terrygonguet/utils/functional/maybe", _ = "@terrygonguet/utils/functional/maybe/Some", p = "@terrygonguet/utils/functional/maybe/None";
115
+ class i {
116
116
  constructor(e) {
117
117
  u(this, "value");
118
118
  Object.defineProperties(this, {
@@ -131,7 +131,7 @@ class o {
131
131
  return this.value;
132
132
  }
133
133
  map(e) {
134
- return new o(e(this.value));
134
+ return new i(e(this.value));
135
135
  }
136
136
  flatMap(e) {
137
137
  return e(this.value);
@@ -165,12 +165,12 @@ class k {
165
165
  return e ? c.Failure(e == null ? void 0 : e()) : c.Failure(void 0);
166
166
  }
167
167
  toJSON() {
168
- return { $_kind: h, $_variant: $ };
168
+ return { $_kind: h, $_variant: p };
169
169
  }
170
170
  }
171
171
  const N = new k(), s = {
172
172
  Some(r) {
173
- return new o(r);
173
+ return new i(r);
174
174
  },
175
175
  None() {
176
176
  return N;
@@ -181,20 +181,20 @@ const N = new k(), s = {
181
181
  case void 0:
182
182
  return this.None();
183
183
  default:
184
- return new o(r);
184
+ return new i(r);
185
185
  }
186
186
  },
187
187
  /**
188
188
  * CAUTION: this method swallows errors and simply returns None!
189
189
  * Use `Result.fromPromise()` if you need error details.
190
190
  */
191
- fromPromise(r, e = p) {
191
+ fromPromise(r, e = $) {
192
192
  return r.then(b(e, s.from), M(this.None()));
193
193
  },
194
194
  JSONReviver(r, e) {
195
195
  if ((e == null ? void 0 : e.$_kind) == h) {
196
196
  const t = e == null ? void 0 : e.$_variant;
197
- return t == _ ? new o(e == null ? void 0 : e.value) : t == $ ? s.None() : e;
197
+ return t == _ ? new i(e == null ? void 0 : e.value) : t == p ? s.None() : e;
198
198
  } else
199
199
  return e;
200
200
  }
@@ -207,7 +207,7 @@ function F(r, e) {
207
207
  );
208
208
  var t = arguments;
209
209
  return function() {
210
- for (var n = t[0].apply(this, arguments), i = t.length, m = 1; m < i; m++)
210
+ for (var n = t[0].apply(this, arguments), o = t.length, m = 1; m < o; m++)
211
211
  n = t[m].call(this, n);
212
212
  return n;
213
213
  };
@@ -220,11 +220,11 @@ function x(r, ...e) {
220
220
  throw new Error(
221
221
  "expected at least one (and probably more) function arguments"
222
222
  );
223
- for (var t = e[0](r), n = e.length, i = 1; i < n; i++)
224
- t = e[i](t);
223
+ for (var t = e[0](r), n = e.length, o = 1; o < n; o++)
224
+ t = e[o](t);
225
225
  return t;
226
226
  }
227
- function p(r) {
227
+ function $(r) {
228
228
  return r;
229
229
  }
230
230
  function M(r) {
@@ -247,6 +247,11 @@ function O(r, e) {
247
247
  return t == -1 ? s.None() : s.Some(t);
248
248
  }
249
249
  }
250
+ function C(r, ...e) {
251
+ for (const t of e)
252
+ r = r == null ? void 0 : r[t];
253
+ return s.from(r);
254
+ }
250
255
  export {
251
256
  s as Maybe,
252
257
  c as Result,
@@ -255,6 +260,7 @@ export {
255
260
  M as constant,
256
261
  E as find,
257
262
  O as findIndex,
258
- p as identity,
259
- J as pipe
263
+ $ as identity,
264
+ J as pipe,
265
+ C as prop
260
266
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terrygonguet/utils",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "type": "module",
5
5
  "module": "./dist/index.js",
6
6
  "author": {
@@ -43,3 +43,38 @@ export function findIndex<T>(dataOrPredicate: T[] | Predicate<T>, predicate?: Pr
43
43
  return idx == -1 ? Maybe.None<number>() : Maybe.Some(idx)
44
44
  }
45
45
  }
46
+
47
+ export function prop<T extends {}, K1 extends keyof T = keyof T>(data: T, key1: K1): Maybe<T[K1]>
48
+ export function prop<
49
+ T extends {},
50
+ K1 extends keyof T = keyof T,
51
+ K2 extends keyof T[K1] = keyof T[K1],
52
+ >(data: T, key1: K1, key2: K2): Maybe<T[K1][K2]>
53
+ export function prop<
54
+ T extends {},
55
+ K1 extends keyof T = keyof T,
56
+ K2 extends keyof T[K1] = keyof T[K1],
57
+ K3 extends keyof T[K1][K2] = keyof T[K1][K2],
58
+ >(data: T, key1: K1, key2: K2, key: K3): Maybe<T[K1][K2][K3]>
59
+ export function prop<
60
+ T extends {},
61
+ K1 extends keyof T = keyof T,
62
+ K2 extends keyof T[K1] = keyof T[K1],
63
+ K3 extends keyof T[K1][K2] = keyof T[K1][K2],
64
+ K4 extends keyof T[K1][K2][K3] = keyof T[K1][K2][K3],
65
+ >(data: T, key1: K1, key2: K2, key: K3, key4: K4): Maybe<T[K1][K2][K3][K4]>
66
+ export function prop<
67
+ T extends {},
68
+ K1 extends keyof T = keyof T,
69
+ K2 extends keyof T[K1] = keyof T[K1],
70
+ K3 extends keyof T[K1][K2] = keyof T[K1][K2],
71
+ K4 extends keyof T[K1][K2][K3] = keyof T[K1][K2][K3],
72
+ K5 extends keyof T[K1][K2][K3][K4] = keyof T[K1][K2][K3][K4],
73
+ >(data: T, key1: K1, key2: K2, key: K3, key4: K4, key5: K5): Maybe<T[K1][K2][K3][K4][K5]>
74
+
75
+ export function prop(data: any, ...path: string[]) {
76
+ for (const key of path) {
77
+ data = data?.[key]
78
+ }
79
+ return Maybe.from(data)
80
+ }
@@ -12,3 +12,8 @@ export declare function find<T>(predicate: Predicate<T>): (data: T[]) => Maybe<T
12
12
  export declare function find<T>(data: T[], predicate: Predicate<T>): Maybe<T>;
13
13
  export declare function findIndex<T>(predicate: Predicate<T>): (data: T[]) => Maybe<number>;
14
14
  export declare function findIndex<T>(data: T[], predicate: Predicate<T>): Maybe<number>;
15
+ export declare function prop<T extends {}, K1 extends keyof T = keyof T>(data: T, key1: K1): Maybe<T[K1]>;
16
+ export declare function prop<T extends {}, K1 extends keyof T = keyof T, K2 extends keyof T[K1] = keyof T[K1]>(data: T, key1: K1, key2: K2): Maybe<T[K1][K2]>;
17
+ export declare function prop<T extends {}, K1 extends keyof T = keyof T, K2 extends keyof T[K1] = keyof T[K1], K3 extends keyof T[K1][K2] = keyof T[K1][K2]>(data: T, key1: K1, key2: K2, key: K3): Maybe<T[K1][K2][K3]>;
18
+ export declare function prop<T extends {}, K1 extends keyof T = keyof T, K2 extends keyof T[K1] = keyof T[K1], K3 extends keyof T[K1][K2] = keyof T[K1][K2], K4 extends keyof T[K1][K2][K3] = keyof T[K1][K2][K3]>(data: T, key1: K1, key2: K2, key: K3, key4: K4): Maybe<T[K1][K2][K3][K4]>;
19
+ export declare function prop<T extends {}, K1 extends keyof T = keyof T, K2 extends keyof T[K1] = keyof T[K1], K3 extends keyof T[K1][K2] = keyof T[K1][K2], K4 extends keyof T[K1][K2][K3] = keyof T[K1][K2][K3], K5 extends keyof T[K1][K2][K3][K4] = keyof T[K1][K2][K3][K4]>(data: T, key1: K1, key2: K2, key: K3, key4: K4, key5: K5): Maybe<T[K1][K2][K3][K4][K5]>;