@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 +1 -1
- package/s/deadline.ts +18 -4
- package/s/utensils/map.ts +5 -2
- package/x/deadline.d.ts +1 -1
- package/x/deadline.js +13 -3
- package/x/deadline.js.map +1 -1
- package/x/utensils/map.d.ts +4 -3
- package/x/utensils/map.js +3 -1
- package/x/utensils/map.js.map +1 -1
package/package.json
CHANGED
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
|
|
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
|
|
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
|
|
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,
|
|
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"}
|
package/x/utensils/map.d.ts
CHANGED
|
@@ -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
|
|
9
|
-
|
|
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
|
|
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
|
package/x/utensils/map.js.map
CHANGED
|
@@ -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,
|
|
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"}
|