@e280/stz 0.0.0-1 → 0.0.0-3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e280/stz",
3
- "version": "0.0.0-1",
3
+ "version": "0.0.0-3",
4
4
  "description": "everyday ts fns for everything",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
package/s/coalesce.ts ADDED
@@ -0,0 +1,5 @@
1
+
2
+ export function coalesce<A extends any[] = []>(...fns: ((...a: A) => void)[]) {
3
+ return (...a: A) => fns.forEach(fn => fn(...a))
4
+ }
5
+
package/s/deadline.ts CHANGED
@@ -1,17 +1,20 @@
1
1
 
2
2
  export class DeadlineError extends Error {
3
3
  name = this.constructor.name
4
- constructor(milliseconds: number) {
5
- super(`deadline exceeded (${milliseconds.toLocaleString()} ms)`)
4
+ constructor(public milliseconds: number, message: string) {
5
+ super(`${message}, timed out in ${(milliseconds / 1000).toFixed(1)} seconds`)
6
6
  }
7
7
  }
8
8
 
9
9
  /** set a deadline for a fn to do something, will reject with a `DeadlineError` if it takes too long */
10
- export function deadline<R>(milliseconds: number, fn: () => Promise<R>) {
10
+ export function deadline<R>(milliseconds: number, message: string, fn: () => Promise<R>) {
11
+ if (milliseconds <= 0 || milliseconds === Infinity)
12
+ return fn()
13
+
11
14
  return new Promise<R>((resolve, reject) => {
12
15
 
13
16
  const id = setTimeout(
14
- () => reject(new DeadlineError(milliseconds)),
17
+ () => reject(new DeadlineError(milliseconds, message)),
15
18
  milliseconds,
16
19
  )
17
20
 
@@ -21,4 +24,3 @@ export function deadline<R>(milliseconds: number, fn: () => Promise<R>) {
21
24
  .finally(() => clearTimeout(id))
22
25
  })
23
26
  }
24
-
package/s/drill.ts ADDED
@@ -0,0 +1,22 @@
1
+
2
+ import {is} from "./is.js"
3
+
4
+ /**
5
+ * return a value within an object tree, found at the given path.
6
+ */
7
+ export function drill<xResult>(
8
+ object: {[key: string]: any},
9
+ path: string[],
10
+ ): xResult {
11
+
12
+ let current: any = object
13
+
14
+ for (const key of path) {
15
+ current = current[key]
16
+ if (is.unavailable(current))
17
+ break
18
+ }
19
+
20
+ return current
21
+ }
22
+
package/s/index.ts CHANGED
@@ -7,10 +7,12 @@ export * from "./data/bytes.js"
7
7
  export * from "./data/hex.js"
8
8
  export * from "./data/txt.js"
9
9
 
10
+ export * from "./coalesce.js"
10
11
  export * from "./concurrent.js"
11
12
  export * from "./deadline.js"
12
13
  export * from "./dedupe.js"
13
14
  export * from "./defer-promise.js"
15
+ export * from "./drill.js"
14
16
  export * from "./escape-regex.js"
15
17
  export * from "./hat.js"
16
18
  export * from "./is.js"
package/s/pubsub.ts CHANGED
@@ -57,12 +57,18 @@ export function xub<A extends any[] = []>() {
57
57
  }
58
58
 
59
59
  /** create a subscriber fn that can be published to */
60
- export function sub<A extends any[] = []>(): Sub<A> {
61
- return xub<A>()[1]
60
+ export function sub<A extends any[] = []>(listener?: Listener<A>): Sub<A> {
61
+ const fn = xub<A>()[1]
62
+ if (listener)
63
+ fn.sub(listener)
64
+ return fn
62
65
  }
63
66
 
64
67
  /** create a publisher fn that can be subscribed to */
65
- export function pub<A extends any[] = []>(): Pub<A> {
66
- return xub<A>()[0]
68
+ export function pub<A extends any[] = []>(listener?: Listener<A>): Pub<A> {
69
+ const fn = xub<A>()[0]
70
+ if (listener)
71
+ fn.sub(listener)
72
+ return fn
67
73
  }
68
74
 
@@ -0,0 +1 @@
1
+ export declare function coalesce<A extends any[] = []>(...fns: ((...a: A) => void)[]): (...a: A) => void;
package/x/coalesce.js ADDED
@@ -0,0 +1,4 @@
1
+ export function coalesce(...fns) {
2
+ return (...a) => fns.forEach(fn => fn(...a));
3
+ }
4
+ //# sourceMappingURL=coalesce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coalesce.js","sourceRoot":"","sources":["../s/coalesce.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,QAAQ,CAAuB,GAAG,GAA0B;IAC3E,OAAO,CAAC,GAAG,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC"}
package/x/deadline.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare class DeadlineError extends Error {
2
+ milliseconds: number;
2
3
  name: string;
3
- constructor(milliseconds: number);
4
+ constructor(milliseconds: number, message: string);
4
5
  }
5
6
  /** set a deadline for a fn to do something, will reject with a `DeadlineError` if it takes too long */
6
- export declare function deadline<R>(milliseconds: number, fn: () => Promise<R>): Promise<R>;
7
+ export declare function deadline<R>(milliseconds: number, message: string, fn: () => Promise<R>): Promise<R>;
package/x/deadline.js CHANGED
@@ -1,13 +1,17 @@
1
1
  export class DeadlineError extends Error {
2
+ milliseconds;
2
3
  name = this.constructor.name;
3
- constructor(milliseconds) {
4
- super(`deadline exceeded (${milliseconds.toLocaleString()} ms)`);
4
+ constructor(milliseconds, message) {
5
+ super(`${message}, timed out in ${(milliseconds / 1000).toFixed(1)} seconds`);
6
+ this.milliseconds = milliseconds;
5
7
  }
6
8
  }
7
9
  /** set a deadline for a fn to do something, will reject with a `DeadlineError` if it takes too long */
8
- export function deadline(milliseconds, fn) {
10
+ export function deadline(milliseconds, message, fn) {
11
+ if (milliseconds <= 0 || milliseconds === Infinity)
12
+ return fn();
9
13
  return new Promise((resolve, reject) => {
10
- const id = setTimeout(() => reject(new DeadlineError(milliseconds)), milliseconds);
14
+ const id = setTimeout(() => reject(new DeadlineError(milliseconds, message)), milliseconds);
11
15
  fn()
12
16
  .then(resolve)
13
17
  .catch(reject)
package/x/deadline.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"deadline.js","sourceRoot":"","sources":["../s/deadline.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,aAAc,SAAQ,KAAK;IACvC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC5B,YAAY,YAAoB;QAC/B,KAAK,CAAC,sBAAsB,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;IACjE,CAAC;CACD;AAED,uGAAuG;AACvG,MAAM,UAAU,QAAQ,CAAI,YAAoB,EAAE,EAAoB;IACrE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAEzC,MAAM,EAAE,GAAG,UAAU,CACpB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,EAC7C,YAAY,CACZ,CAAA;QAED,EAAE,EAAE;aACF,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,MAAM,CAAC;aACb,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"deadline.js","sourceRoot":"","sources":["../s/deadline.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAEpB;IADnB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC5B,YAAmB,YAAoB,EAAE,OAAe;QACvD,KAAK,CAAC,GAAG,OAAO,kBAAkB,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAD3D,iBAAY,GAAZ,YAAY,CAAQ;IAEvC,CAAC;CACD;AAED,uGAAuG;AACvG,MAAM,UAAU,QAAQ,CAAI,YAAoB,EAAE,OAAe,EAAE,EAAoB;IACtF,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,KAAK,QAAQ;QACjD,OAAO,EAAE,EAAE,CAAA;IAEZ,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAEzC,MAAM,EAAE,GAAG,UAAU,CACpB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EACtD,YAAY,CACZ,CAAA;QAED,EAAE,EAAE;aACF,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,MAAM,CAAC;aACb,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACH,CAAC"}
package/x/drill.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * return a value within an object tree, found at the given path.
3
+ */
4
+ export declare function drill<xResult>(object: {
5
+ [key: string]: any;
6
+ }, path: string[]): xResult;
package/x/drill.js ADDED
@@ -0,0 +1,14 @@
1
+ import { is } from "./is.js";
2
+ /**
3
+ * return a value within an object tree, found at the given path.
4
+ */
5
+ export function drill(object, path) {
6
+ let current = object;
7
+ for (const key of path) {
8
+ current = current[key];
9
+ if (is.unavailable(current))
10
+ break;
11
+ }
12
+ return current;
13
+ }
14
+ //# sourceMappingURL=drill.js.map
package/x/drill.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drill.js","sourceRoot":"","sources":["../s/drill.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,SAAS,CAAA;AAE1B;;GAEG;AACH,MAAM,UAAU,KAAK,CACnB,MAA4B,EAC5B,IAAc;IAGf,IAAI,OAAO,GAAQ,MAAM,CAAA;IAEzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;YAC1B,MAAK;IACP,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC"}
package/x/index.d.ts CHANGED
@@ -5,10 +5,12 @@ export * from "./data/base64url.js";
5
5
  export * from "./data/bytes.js";
6
6
  export * from "./data/hex.js";
7
7
  export * from "./data/txt.js";
8
+ export * from "./coalesce.js";
8
9
  export * from "./concurrent.js";
9
10
  export * from "./deadline.js";
10
11
  export * from "./dedupe.js";
11
12
  export * from "./defer-promise.js";
13
+ export * from "./drill.js";
12
14
  export * from "./escape-regex.js";
13
15
  export * from "./hat.js";
14
16
  export * from "./is.js";
package/x/index.js CHANGED
@@ -5,10 +5,12 @@ export * from "./data/base64url.js";
5
5
  export * from "./data/bytes.js";
6
6
  export * from "./data/hex.js";
7
7
  export * from "./data/txt.js";
8
+ export * from "./coalesce.js";
8
9
  export * from "./concurrent.js";
9
10
  export * from "./deadline.js";
10
11
  export * from "./dedupe.js";
11
12
  export * from "./defer-promise.js";
13
+ export * from "./drill.js";
12
14
  export * from "./escape-regex.js";
13
15
  export * from "./hat.js";
14
16
  export * from "./is.js";
package/x/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAA;AACvC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
package/x/pubsub.d.ts CHANGED
@@ -13,6 +13,6 @@ export interface Pub<A extends any[] = []> extends Xub<A> {
13
13
  }
14
14
  export declare function xub<A extends any[] = []>(): [Pub<A>, Sub<A>];
15
15
  /** create a subscriber fn that can be published to */
16
- export declare function sub<A extends any[] = []>(): Sub<A>;
16
+ export declare function sub<A extends any[] = []>(listener?: Listener<A>): Sub<A>;
17
17
  /** create a publisher fn that can be subscribed to */
18
- export declare function pub<A extends any[] = []>(): Pub<A>;
18
+ export declare function pub<A extends any[] = []>(listener?: Listener<A>): Pub<A>;
package/x/pubsub.js CHANGED
@@ -30,11 +30,17 @@ export function xub() {
30
30
  return [pub, sub];
31
31
  }
32
32
  /** create a subscriber fn that can be published to */
33
- export function sub() {
34
- return xub()[1];
33
+ export function sub(listener) {
34
+ const fn = xub()[1];
35
+ if (listener)
36
+ fn.sub(listener);
37
+ return fn;
35
38
  }
36
39
  /** create a publisher fn that can be subscribed to */
37
- export function pub() {
38
- return xub()[0];
40
+ export function pub(listener) {
41
+ const fn = xub()[0];
42
+ if (listener)
43
+ fn.sub(listener);
44
+ return fn;
39
45
  }
40
46
  //# sourceMappingURL=pubsub.js.map
package/x/pubsub.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../s/pubsub.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAmB/C,MAAM,UAAU,GAAG;IAClB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAA;IAElC,SAAS,GAAG,CAAC,EAAe;QAC3B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACX,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,UAAU,GAAG,CAAC,GAAG,CAAI;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,UAAU,IAAI;QAClB,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,YAAY,EAAK,CAAA;QAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YAChC,OAAO,CAAC,CAAC,CAAC,CAAA;YACV,WAAW,EAAE,CAAA;QACd,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IACf,CAAC;IAED,SAAS,KAAK;QACb,GAAG,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IAED,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAqB,CAAA;AACtC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG;IAClB,OAAO,GAAG,EAAK,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG;IAClB,OAAO,GAAG,EAAK,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../s/pubsub.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAmB/C,MAAM,UAAU,GAAG;IAClB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAA;IAElC,SAAS,GAAG,CAAC,EAAe;QAC3B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACX,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,UAAU,GAAG,CAAC,GAAG,CAAI;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,UAAU,IAAI;QAClB,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,YAAY,EAAK,CAAA;QAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YAChC,OAAO,CAAC,CAAC,CAAC,CAAA;YACV,WAAW,EAAE,CAAA;QACd,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IACf,CAAC;IAED,SAAS,KAAK;QACb,GAAG,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IAED,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAqB,CAAA;AACtC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG,CAAuB,QAAsB;IAC/D,MAAM,EAAE,GAAG,GAAG,EAAK,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,QAAQ;QACX,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjB,OAAO,EAAE,CAAA;AACV,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG,CAAuB,QAAsB;IAC/D,MAAM,EAAE,GAAG,GAAG,EAAK,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,QAAQ;QACX,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjB,OAAO,EAAE,CAAA;AACV,CAAC"}