@e280/stz 0.3.10 → 0.3.12

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.3.10",
3
+ "version": "0.3.12",
4
4
  "description": "everyday ts fns for everything",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
package/s/deadline.ts CHANGED
@@ -1,4 +1,6 @@
1
1
 
2
+ import {is} from "./is.js"
3
+
2
4
  export class DeadlineError extends Error {
3
5
  name = this.constructor.name
4
6
  constructor(public milliseconds: number) {
@@ -6,17 +8,29 @@ export class DeadlineError extends Error {
6
8
  }
7
9
  }
8
10
 
11
+ async function invoke<R>(fn: Promise<R> | (() => Promise<R>)) {
12
+ return is.fn(fn)
13
+ ? fn()
14
+ : fn
15
+ }
16
+
9
17
  /** 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>) {
11
- if (milliseconds <= 0 || milliseconds === Infinity)
12
- return fn()
18
+ export function deadline<R>(milliseconds: number | undefined | null, fn: Promise<R> | (() => Promise<R>)) {
19
+ if (milliseconds === undefined || milliseconds === null || milliseconds === Infinity)
20
+ return invoke(fn)
21
+
22
+ if (milliseconds < 0 || Number.isNaN(milliseconds))
23
+ throw new RangeError("invalid value provided as milliseconds to deadline fn")
24
+
25
+ if (milliseconds === 0)
26
+ return Promise.reject(new DeadlineError(milliseconds))
13
27
 
14
28
  return new Promise<R>((resolve, reject) => {
15
29
  const id = setTimeout(
16
30
  () => reject(new DeadlineError(milliseconds)),
17
31
  milliseconds,
18
32
  )
19
- fn()
33
+ invoke(fn)
20
34
  .then(resolve)
21
35
  .catch(reject)
22
36
  .finally(() => clearTimeout(id))
package/s/utensils/map.ts CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- type MapLike<K, V> = {
2
+ export type MapLike<K, V> = {
3
3
  has(key: K): boolean
4
4
  get(key: K): V | undefined
5
5
  set(key: K, value: V): unknown
@@ -26,9 +26,12 @@ export function guarantee<K, V>(map: MapLike<K, V>, key: K, make: () => V) {
26
26
  }
27
27
  }
28
28
 
29
- export function inserts<K, V, M extends Pick<MapLike<K, V>, "set">>(map: M, entries: Iterable<[K, V]>) {
29
+ export function setEntries<K, V, M extends Pick<MapLike<K, V>, "set">>(map: M, entries: Iterable<[K, V]>) {
30
30
  for (const [key, value] of entries)
31
31
  map.set(key, value)
32
32
  return map
33
33
  }
34
34
 
35
+ /** @deprecated renamed to `setEntries` */
36
+ export const inserts = setEntries
37
+
package/x/deadline.d.ts CHANGED
@@ -4,4 +4,4 @@ export declare class DeadlineError extends Error {
4
4
  constructor(milliseconds: number);
5
5
  }
6
6
  /** set a deadline for a fn to do something, will reject with a `DeadlineError` if it takes too long */
7
- export declare function deadline<R>(milliseconds: number, fn: () => Promise<R>): Promise<R>;
7
+ export declare function deadline<R>(milliseconds: number | undefined | null, fn: Promise<R> | (() => Promise<R>)): Promise<R>;
package/x/deadline.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { is } from "./is.js";
1
2
  export class DeadlineError extends Error {
2
3
  milliseconds;
3
4
  name = this.constructor.name;
@@ -6,13 +7,22 @@ export class DeadlineError extends Error {
6
7
  this.milliseconds = milliseconds;
7
8
  }
8
9
  }
10
+ async function invoke(fn) {
11
+ return is.fn(fn)
12
+ ? fn()
13
+ : fn;
14
+ }
9
15
  /** set a deadline for a fn to do something, will reject with a `DeadlineError` if it takes too long */
10
16
  export function deadline(milliseconds, fn) {
11
- if (milliseconds <= 0 || milliseconds === Infinity)
12
- return fn();
17
+ if (milliseconds === undefined || milliseconds === null || milliseconds === Infinity)
18
+ return invoke(fn);
19
+ if (milliseconds < 0 || Number.isNaN(milliseconds))
20
+ throw new RangeError("invalid value provided as milliseconds to deadline fn");
21
+ if (milliseconds === 0)
22
+ return Promise.reject(new DeadlineError(milliseconds));
13
23
  return new Promise((resolve, reject) => {
14
24
  const id = setTimeout(() => reject(new DeadlineError(milliseconds)), milliseconds);
15
- fn()
25
+ invoke(fn)
16
26
  .then(resolve)
17
27
  .catch(reject)
18
28
  .finally(() => clearTimeout(id));
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;IAEpB,YAAY;IAD/B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC5B,YAAmB,YAAoB;QACtC,KAAK,CAAC,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;4BADtD,YAAY;IAE/B,CAAC;CACD;AAED,uGAAuG;AACvG,MAAM,UAAU,QAAQ,CAAI,YAAoB,EAAE,EAAoB;IACrE,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,KAAK,QAAQ;QACjD,OAAO,EAAE,EAAE,CAAA;IAEZ,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,EAAE,GAAG,UAAU,CACpB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,EAC7C,YAAY,CACZ,CAAA;QACD,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,OAAO,EAAC,EAAE,EAAC,MAAM,SAAS,CAAA;AAE1B,MAAM,OAAO,aAAc,SAAQ,KAAK;IAEpB,YAAY;IAD/B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC5B,YAAmB,YAAoB;QACtC,KAAK,CAAC,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;4BADtD,YAAY;IAE/B,CAAC;CACD;AAED,KAAK,UAAU,MAAM,CAAI,EAAmC;IAC3D,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACf,CAAC,CAAC,EAAE,EAAE;QACN,CAAC,CAAC,EAAE,CAAA;AACN,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,QAAQ,CAAI,YAAuC,EAAE,EAAmC;IACvG,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,QAAQ;QACnF,OAAO,MAAM,CAAC,EAAE,CAAC,CAAA;IAElB,IAAI,YAAY,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,uDAAuD,CAAC,CAAA;IAE9E,IAAI,YAAY,KAAK,CAAC;QACrB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,CAAA;IAEvD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,EAAE,GAAG,UAAU,CACpB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,EAC7C,YAAY,CACZ,CAAA;QACD,MAAM,CAAC,EAAE,CAAC;aACR,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,9 +1,10 @@
1
- type MapLike<K, V> = {
1
+ export type MapLike<K, V> = {
2
2
  has(key: K): boolean;
3
3
  get(key: K): V | undefined;
4
4
  set(key: K, value: V): unknown;
5
5
  };
6
6
  export declare function need<K, V>(map: Pick<MapLike<K, V>, "has" | "get">, key: K, err?: string): V;
7
7
  export declare function guarantee<K, V>(map: MapLike<K, V>, key: K, make: () => V): V;
8
- export declare function inserts<K, V, M extends Pick<MapLike<K, V>, "set">>(map: M, entries: Iterable<[K, V]>): M;
9
- export {};
8
+ export declare function setEntries<K, V, M extends Pick<MapLike<K, V>, "set">>(map: M, entries: Iterable<[K, V]>): M;
9
+ /** @deprecated renamed to `setEntries` */
10
+ export declare const inserts: typeof setEntries;
package/x/utensils/map.js CHANGED
@@ -13,9 +13,11 @@ export function guarantee(map, key, make) {
13
13
  return value;
14
14
  }
15
15
  }
16
- export function inserts(map, entries) {
16
+ export function setEntries(map, entries) {
17
17
  for (const [key, value] of entries)
18
18
  map.set(key, value);
19
19
  return map;
20
20
  }
21
+ /** @deprecated renamed to `setEntries` */
22
+ export const inserts = setEntries;
21
23
  //# sourceMappingURL=map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map.js","sourceRoot":"","sources":["../../s/utensils/map.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,IAAI,CAClB,GAAuC,EACvC,GAAM,EACN,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAE3F,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACf,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAM,CAAA;;QAExB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,SAAS,CAAO,GAAkB,EAAE,GAAM,EAAE,IAAa;IACxE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACf,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;SAChB,CAAC;QACL,MAAM,KAAK,GAAG,IAAI,EAAE,CAAA;QACpB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACnB,OAAO,KAAK,CAAA;IACb,CAAC;AACF,CAAC;AAED,MAAM,UAAU,OAAO,CAA6C,GAAM,EAAE,OAAyB;IACpG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO;QACjC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACpB,OAAO,GAAG,CAAA;AACX,CAAC"}
1
+ {"version":3,"file":"map.js","sourceRoot":"","sources":["../../s/utensils/map.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,IAAI,CAClB,GAAuC,EACvC,GAAM,EACN,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAE3F,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACf,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAM,CAAA;;QAExB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,SAAS,CAAO,GAAkB,EAAE,GAAM,EAAE,IAAa;IACxE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACf,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;SAChB,CAAC;QACL,MAAM,KAAK,GAAG,IAAI,EAAE,CAAA;QACpB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACnB,OAAO,KAAK,CAAA;IACb,CAAC;AACF,CAAC;AAED,MAAM,UAAU,UAAU,CAA6C,GAAM,EAAE,OAAyB;IACvG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO;QACjC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACpB,OAAO,GAAG,CAAA;AACX,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAA"}