@e280/stz 0.3.4 → 0.3.6

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.4",
3
+ "version": "0.3.6",
4
4
  "description": "everyday ts fns for everything",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
package/s/cubby.ts ADDED
@@ -0,0 +1,6 @@
1
+
2
+ export type Cubby<X = unknown> = {
3
+ get(): Promise<X | undefined>
4
+ set(data: X | undefined): Promise<void>
5
+ }
6
+
package/s/index.ts CHANGED
@@ -13,6 +13,7 @@ export * from "./debounce/types.js"
13
13
  export * from "./deep/index.js"
14
14
  export * from "./dig/dig.js"
15
15
 
16
+ export * from "./queue/lane.js"
16
17
  export * from "./queue/queue.js"
17
18
  export * from "./rand/index.js"
18
19
 
@@ -31,6 +32,7 @@ export * from "./collect.js"
31
32
  export * from "./concurrent.js"
32
33
  export * from "./constructor.js"
33
34
  export * from "./count.js"
35
+ export * from "./cubby.js"
34
36
  export * from "./cycle.js"
35
37
  export * from "./data-view-from.js"
36
38
  export * from "./deadline.js"
@@ -0,0 +1,10 @@
1
+
2
+ import {queue} from "./queue.js"
3
+
4
+ /** create a serialized execution lane for arbitrary async functions. */
5
+ export function lane(limit = Infinity) {
6
+ return queue((fn: () => Promise<unknown>) => fn(), limit) as (
7
+ <R>(fn: () => Promise<R>) => Promise<R>
8
+ )
9
+ }
10
+
@@ -1,11 +1,11 @@
1
1
 
2
- import {Science, expect} from "@e280/science"
2
+ import {suite, test, expect} from "@e280/science"
3
3
 
4
4
  import {nap} from "../nap.js"
5
5
  import {queue} from "./queue.js"
6
6
 
7
- export default Science.suite({
8
- "job runs": Science.test(async() => {
7
+ export default suite({
8
+ "job runs": test(async() => {
9
9
  let concurrent = 0
10
10
  const job = queue(async() => {
11
11
  concurrent++
@@ -19,7 +19,7 @@ export default Science.suite({
19
19
  expect(concurrent).is(0)
20
20
  }),
21
21
 
22
- "sequencing is enforced": Science.test(async() => {
22
+ "sequencing is enforced": test(async() => {
23
23
  let concurrent = 0
24
24
  const job = queue(async() => {
25
25
  concurrent++
@@ -41,7 +41,7 @@ export default Science.suite({
41
41
  expect(concurrent).is(0)
42
42
  }),
43
43
 
44
- "params and return values seem to work": Science.test(async() => {
44
+ "params and return values seem to work": test(async() => {
45
45
  const add = queue(async(a: number, b: number) => {
46
46
  await nap(100)
47
47
  return a + b
@@ -52,7 +52,7 @@ export default Science.suite({
52
52
  expect(await promise2).is(30)
53
53
  }),
54
54
 
55
- "first job throws, second job unaffected": Science.test(async() => {
55
+ "first job throws, second job unaffected": test(async() => {
56
56
  let run = 0
57
57
  const job = queue(async() => {
58
58
  run++
@@ -63,5 +63,16 @@ export default Science.suite({
63
63
  expect(async() => job()).throwsAsync()
64
64
  expect(async() => job()).not.throwsAsync()
65
65
  }),
66
+
67
+ "limit exceeded": test(async() => {
68
+ const job = queue(async() => nap(10), 2)
69
+ await expect(
70
+ async() => await Promise.all([
71
+ job(),
72
+ job(),
73
+ job(),
74
+ ])
75
+ ).throwsAsync()
76
+ }),
66
77
  })
67
78
 
package/s/queue/queue.ts CHANGED
@@ -1,15 +1,24 @@
1
1
 
2
- /**
3
- * create a job queue that ensures the given fn is always called in sequence (not concurrently).
4
- */
2
+ /** create a job queue that ensures the given fn is always called in sequence (not concurrently). */
5
3
  export function queue<Args extends any[], Result>(
6
- fn: (...args: Args) => Promise<Result>
4
+ fn: (...args: Args) => Promise<Result>,
5
+ limit = Infinity,
7
6
  ): (...args: Args) => Promise<Result> {
8
7
 
8
+ let pending = 0
9
9
  let last: Promise<any> = Promise.resolve()
10
10
 
11
11
  return (...args: Args): Promise<Result> => {
12
- const job = () => fn(...args)
12
+ if (pending >= limit)
13
+ return Promise.reject(new Error(`queue limit exceeded (${limit})`))
14
+
15
+ pending++
16
+
17
+ const job = async() => {
18
+ try { return await fn(...args) }
19
+ finally { pending-- }
20
+ }
21
+
13
22
  const current = last.then(job)
14
23
 
15
24
  // prevent unhandled rejection breaking the chain
package/x/cubby.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export type Cubby<X = unknown> = {
2
+ get(): Promise<X | undefined>;
3
+ set(data: X | undefined): Promise<void>;
4
+ };
package/x/cubby.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cubby.js.map
package/x/cubby.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cubby.js","sourceRoot":"","sources":["../s/cubby.ts"],"names":[],"mappings":""}
package/x/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export * from "./debounce/microbounce.js";
9
9
  export * from "./debounce/types.js";
10
10
  export * from "./deep/index.js";
11
11
  export * from "./dig/dig.js";
12
+ export * from "./queue/lane.js";
12
13
  export * from "./queue/queue.js";
13
14
  export * from "./rand/index.js";
14
15
  export * from "./ok/index.js";
@@ -24,6 +25,7 @@ export * from "./collect.js";
24
25
  export * from "./concurrent.js";
25
26
  export * from "./constructor.js";
26
27
  export * from "./count.js";
28
+ export * from "./cubby.js";
27
29
  export * from "./cycle.js";
28
30
  export * from "./data-view-from.js";
29
31
  export * from "./deadline.js";
package/x/index.js CHANGED
@@ -9,6 +9,7 @@ export * from "./debounce/microbounce.js";
9
9
  export * from "./debounce/types.js";
10
10
  export * from "./deep/index.js";
11
11
  export * from "./dig/dig.js";
12
+ export * from "./queue/lane.js";
12
13
  export * from "./queue/queue.js";
13
14
  export * from "./rand/index.js";
14
15
  export * from "./ok/index.js";
@@ -24,6 +25,7 @@ export * from "./collect.js";
24
25
  export * from "./concurrent.js";
25
26
  export * from "./constructor.js";
26
27
  export * from "./count.js";
28
+ export * from "./cubby.js";
27
29
  export * from "./cycle.js";
28
30
  export * from "./data-view-from.js";
29
31
  export * from "./deadline.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,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;AAC/B,cAAc,cAAc,CAAA;AAE5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAE/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,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,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,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,aAAa,CAAA;AAC3B,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,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;AAC/B,cAAc,cAAc,CAAA;AAE5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAE/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,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,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,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,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,2 @@
1
+ /** create a serialized execution lane for arbitrary async functions. */
2
+ export declare function lane(limit?: number): (<R>(fn: () => Promise<R>) => Promise<R>);
@@ -0,0 +1,6 @@
1
+ import { queue } from "./queue.js";
2
+ /** create a serialized execution lane for arbitrary async functions. */
3
+ export function lane(limit = Infinity) {
4
+ return queue((fn) => fn(), limit);
5
+ }
6
+ //# sourceMappingURL=lane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane.js","sourceRoot":"","sources":["../../s/queue/lane.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,wEAAwE;AACxE,MAAM,UAAU,IAAI,CAAC,KAAK,GAAG,QAAQ;IACpC,OAAO,KAAK,CAAC,CAAC,EAA0B,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAEvD,CAAA;AACF,CAAC"}
@@ -1,4 +1,2 @@
1
- /**
2
- * create a job queue that ensures the given fn is always called in sequence (not concurrently).
3
- */
4
- export declare function queue<Args extends any[], Result>(fn: (...args: Args) => Promise<Result>): (...args: Args) => Promise<Result>;
1
+ /** create a job queue that ensures the given fn is always called in sequence (not concurrently). */
2
+ export declare function queue<Args extends any[], Result>(fn: (...args: Args) => Promise<Result>, limit?: number): (...args: Args) => Promise<Result>;
package/x/queue/queue.js CHANGED
@@ -1,10 +1,19 @@
1
- /**
2
- * create a job queue that ensures the given fn is always called in sequence (not concurrently).
3
- */
4
- export function queue(fn) {
1
+ /** create a job queue that ensures the given fn is always called in sequence (not concurrently). */
2
+ export function queue(fn, limit = Infinity) {
3
+ let pending = 0;
5
4
  let last = Promise.resolve();
6
5
  return (...args) => {
7
- const job = () => fn(...args);
6
+ if (pending >= limit)
7
+ return Promise.reject(new Error(`queue limit exceeded (${limit})`));
8
+ pending++;
9
+ const job = async () => {
10
+ try {
11
+ return await fn(...args);
12
+ }
13
+ finally {
14
+ pending--;
15
+ }
16
+ };
8
17
  const current = last.then(job);
9
18
  // prevent unhandled rejection breaking the chain
10
19
  last = current.catch(() => { });
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../s/queue/queue.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,UAAU,KAAK,CACnB,EAAsC;IAGvC,IAAI,IAAI,GAAiB,OAAO,CAAC,OAAO,EAAE,CAAA;IAE1C,OAAO,CAAC,GAAG,IAAU,EAAmB,EAAE;QACzC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAE9B,iDAAiD;QACjD,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAE9B,OAAO,OAAO,CAAA;IACf,CAAC,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../s/queue/queue.ts"],"names":[],"mappings":"AACA,oGAAoG;AACpG,MAAM,UAAU,KAAK,CACnB,EAAsC,EACtC,KAAK,GAAG,QAAQ;IAGjB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,IAAI,GAAiB,OAAO,CAAC,OAAO,EAAE,CAAA;IAE1C,OAAO,CAAC,GAAG,IAAU,EAAmB,EAAE;QACzC,IAAI,OAAO,IAAI,KAAK;YACnB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,KAAK,GAAG,CAAC,CAAC,CAAA;QAEpE,OAAO,EAAE,CAAA;QAET,MAAM,GAAG,GAAG,KAAK,IAAG,EAAE;YACrB,IAAI,CAAC;gBAAC,OAAO,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;YAAC,CAAC;oBACxB,CAAC;gBAAC,OAAO,EAAE,CAAA;YAAC,CAAC;QACtB,CAAC,CAAA;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAE9B,iDAAiD;QACjD,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAE9B,OAAO,OAAO,CAAA;IACf,CAAC,CAAA;AACF,CAAC"}
@@ -1,8 +1,8 @@
1
- import { Science } from "@e280/science";
2
1
  declare const _default: {
3
- "job runs": Science.Test;
4
- "sequencing is enforced": Science.Test;
5
- "params and return values seem to work": Science.Test;
6
- "first job throws, second job unaffected": Science.Test;
2
+ "job runs": import("@e280/science").Test;
3
+ "sequencing is enforced": import("@e280/science").Test;
4
+ "params and return values seem to work": import("@e280/science").Test;
5
+ "first job throws, second job unaffected": import("@e280/science").Test;
6
+ "limit exceeded": import("@e280/science").Test;
7
7
  };
8
8
  export default _default;
@@ -1,8 +1,8 @@
1
- import { Science, expect } from "@e280/science";
1
+ import { suite, test, expect } from "@e280/science";
2
2
  import { nap } from "../nap.js";
3
3
  import { queue } from "./queue.js";
4
- export default Science.suite({
5
- "job runs": Science.test(async () => {
4
+ export default suite({
5
+ "job runs": test(async () => {
6
6
  let concurrent = 0;
7
7
  const job = queue(async () => {
8
8
  concurrent++;
@@ -15,7 +15,7 @@ export default Science.suite({
15
15
  await promise1;
16
16
  expect(concurrent).is(0);
17
17
  }),
18
- "sequencing is enforced": Science.test(async () => {
18
+ "sequencing is enforced": test(async () => {
19
19
  let concurrent = 0;
20
20
  const job = queue(async () => {
21
21
  concurrent++;
@@ -32,7 +32,7 @@ export default Science.suite({
32
32
  await promise2;
33
33
  expect(concurrent).is(0);
34
34
  }),
35
- "params and return values seem to work": Science.test(async () => {
35
+ "params and return values seem to work": test(async () => {
36
36
  const add = queue(async (a, b) => {
37
37
  await nap(100);
38
38
  return a + b;
@@ -42,7 +42,7 @@ export default Science.suite({
42
42
  expect(await promise1).is(3);
43
43
  expect(await promise2).is(30);
44
44
  }),
45
- "first job throws, second job unaffected": Science.test(async () => {
45
+ "first job throws, second job unaffected": test(async () => {
46
46
  let run = 0;
47
47
  const job = queue(async () => {
48
48
  run++;
@@ -53,5 +53,13 @@ export default Science.suite({
53
53
  expect(async () => job()).throwsAsync();
54
54
  expect(async () => job()).not.throwsAsync();
55
55
  }),
56
+ "limit exceeded": test(async () => {
57
+ const job = queue(async () => nap(10), 2);
58
+ await expect(async () => await Promise.all([
59
+ job(),
60
+ job(),
61
+ job(),
62
+ ])).throwsAsync();
63
+ }),
56
64
  });
57
65
  //# sourceMappingURL=queue.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.test.js","sourceRoot":"","sources":["../../s/queue/queue.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.test.js","sourceRoot":"","sources":["../../s/queue/queue.test.ts"],"names":[],"mappings":"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"}