@adviser/cement 0.4.54 → 0.4.55
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/cjs/on-func.cjs +37 -0
- package/cjs/on-func.cjs.map +1 -0
- package/cjs/on-func.d.ts +9 -0
- package/cjs/on-func.d.ts.map +1 -0
- package/cjs/on-func.test.cjs +43 -0
- package/cjs/on-func.test.cjs.map +1 -0
- package/cjs/on-func.test.d.ts +2 -0
- package/cjs/on-func.test.d.ts.map +1 -0
- package/cjs/poller.test.cjs +6 -6
- package/cjs/poller.test.cjs.map +1 -1
- package/cjs/version.cjs +1 -1
- package/deno.json +1 -1
- package/esm/on-func.d.ts +9 -0
- package/esm/on-func.d.ts.map +1 -0
- package/esm/on-func.js +34 -0
- package/esm/on-func.js.map +1 -0
- package/esm/on-func.test.d.ts +2 -0
- package/esm/on-func.test.d.ts.map +1 -0
- package/esm/on-func.test.js +41 -0
- package/esm/on-func.test.js.map +1 -0
- package/esm/poller.test.js +6 -6
- package/esm/poller.test.js.map +1 -1
- package/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/on-func.ts +44 -0
- package/ts/cjs/on-func.d.ts +9 -0
- package/ts/cjs/on-func.d.ts.map +1 -0
- package/ts/cjs/on-func.js +37 -0
- package/ts/cjs/on-func.js.map +1 -0
- package/ts/cjs/on-func.test.d.ts +2 -0
- package/ts/cjs/on-func.test.d.ts.map +1 -0
- package/ts/cjs/on-func.test.js +43 -0
- package/ts/cjs/on-func.test.js.map +1 -0
- package/ts/cjs/poller.test.js +6 -6
- package/ts/cjs/poller.test.js.map +1 -1
- package/ts/cjs/version.js +1 -1
- package/ts/esm/on-func.d.ts +9 -0
- package/ts/esm/on-func.d.ts.map +1 -0
- package/ts/esm/on-func.js +34 -0
- package/ts/esm/on-func.js.map +1 -0
- package/ts/esm/on-func.test.d.ts +2 -0
- package/ts/esm/on-func.test.d.ts.map +1 -0
- package/ts/esm/on-func.test.js +41 -0
- package/ts/esm/on-func.test.js.map +1 -0
- package/ts/esm/poller.test.js +6 -6
- package/ts/esm/poller.test.js.map +1 -1
- package/ts/esm/version.js +1 -1
package/cjs/on-func.cjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnFunc = OnFunc;
|
|
4
|
+
class OnFuncInstance {
|
|
5
|
+
fns = new Set();
|
|
6
|
+
addFunctions(...fns) {
|
|
7
|
+
for (const fn of fns) {
|
|
8
|
+
this.fns.add(fn);
|
|
9
|
+
}
|
|
10
|
+
return () => {
|
|
11
|
+
for (const fn of fns) {
|
|
12
|
+
this.fns.delete(fn);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
invoke(...a) {
|
|
17
|
+
for (const fn of this.fns) {
|
|
18
|
+
try {
|
|
19
|
+
fn(a);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
// ignore errors
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async invokeAsync(...a) {
|
|
27
|
+
await Promise.allSettled(Array.from(this.fns).map((fn) => Promise.resolve(fn(a))));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function OnFunc() {
|
|
31
|
+
const instance = new OnFuncInstance();
|
|
32
|
+
const ret = instance.addFunctions.bind(instance);
|
|
33
|
+
ret.invoke = instance.invoke.bind(instance);
|
|
34
|
+
ret.invokeAsync = instance.invokeAsync.bind(instance);
|
|
35
|
+
return ret;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=on-func.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.js","sourceRoot":"","sources":["../../../src/on-func.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc;IACT,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE5C,YAAY,CAAC,GAAG,GAA0B,EAAc;QACtD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACX,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;QAAA,CACF,CAAC;IAAA,CACH;IAEM,MAAM,CAAC,GAAG,CAAO,EAAQ;QAC9B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,EAAE,CAAC,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,gBAAgB;YAClB,CAAC;QACH,CAAC;IAAA,CACF;IAEM,KAAK,CAAC,WAAW,CAAC,GAAG,CAAO,EAAiB;QAClD,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA,CACpF;CACF;AAUD,kBAAoG;IAClG,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAmB,CAAC;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAkC,CAAC;IAClF,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA4C,CAAC;IACvF,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAiD,CAAC;IACtG,OAAO,GAAG,CAAC;AAAA,CACZ"}
|
package/cjs/on-func.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ReturnOnFunc<Args extends unknown[]> {
|
|
2
|
+
(fn: (...a: Args) => unknown): () => void;
|
|
3
|
+
invoke(...a: Args): void;
|
|
4
|
+
invokeAsync(...a: Args): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
type ExtractArgs<T> = T extends (...args: infer A) => void ? A : never;
|
|
7
|
+
export declare function OnFunc<Fn extends (...args: unknown[]) => unknown>(): ReturnOnFunc<ExtractArgs<Fn>>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=on-func.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.d.ts","sourceRoot":"","sources":["../../../src/on-func.ts"],"names":[],"mappings":"AA6BA,UAAU,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE;IAC3C,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvE,wBAAgB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,KAAK,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAMlG"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const on_func_js_1 = require("./on-func.cjs");
|
|
4
|
+
const promise_sleep_js_1 = require("./utils/promise-sleep.cjs");
|
|
5
|
+
class OnFunctionTest {
|
|
6
|
+
onFunAction = (0, on_func_js_1.OnFunc)();
|
|
7
|
+
onVoidAction = (0, on_func_js_1.OnFunc)();
|
|
8
|
+
}
|
|
9
|
+
it("OnFunctionTest", async () => {
|
|
10
|
+
const test = new OnFunctionTest();
|
|
11
|
+
expect(typeof test.onFunAction).toBe("function");
|
|
12
|
+
test.onVoidAction.invoke();
|
|
13
|
+
const unregs = [];
|
|
14
|
+
const asyncFns = new Array(3).fill(0).map(() => vi.fn((_a, _b) => (0, promise_sleep_js_1.sleep)(10)));
|
|
15
|
+
for (const fn of asyncFns) {
|
|
16
|
+
unregs.push(test.onFunAction(fn));
|
|
17
|
+
}
|
|
18
|
+
const fns = new Array(3).fill(0).map(() => vi.fn((_a, _b) => 10));
|
|
19
|
+
for (const fn of fns) {
|
|
20
|
+
unregs.push(test.onFunAction(fn));
|
|
21
|
+
}
|
|
22
|
+
test.onFunAction.invoke(1, "23");
|
|
23
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
24
|
+
expect(fn.mock.calls).toEqual([[[1, "23"]]]);
|
|
25
|
+
fn.mock.calls.length = 0;
|
|
26
|
+
}
|
|
27
|
+
const start = performance.now();
|
|
28
|
+
await test.onFunAction.invokeAsync(2, "34");
|
|
29
|
+
const duration = performance.now() - start;
|
|
30
|
+
expect(duration).toBeGreaterThanOrEqual(10);
|
|
31
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
32
|
+
expect(fn.mock.calls).toEqual([[[2, "34"]]]);
|
|
33
|
+
fn.mock.calls.length = 0;
|
|
34
|
+
}
|
|
35
|
+
for (const unreg of unregs) {
|
|
36
|
+
unreg();
|
|
37
|
+
}
|
|
38
|
+
test.onFunAction.invoke(3, "45");
|
|
39
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
40
|
+
expect(fn.mock.calls).toEqual([]);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=on-func.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.test.js","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.test.d.ts","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":""}
|
package/cjs/poller.test.cjs
CHANGED
|
@@ -19,11 +19,11 @@ it("polls until success", async () => {
|
|
|
19
19
|
.mockImplementationOnce(() => {
|
|
20
20
|
throw new Error("should not be called");
|
|
21
21
|
});
|
|
22
|
-
const start =
|
|
22
|
+
const start = performance.now();
|
|
23
23
|
const result = await (0, poller_js_1.poller)(seq, {
|
|
24
24
|
intervalMs: 10,
|
|
25
25
|
});
|
|
26
|
-
const duration =
|
|
26
|
+
const duration = performance.now() - start;
|
|
27
27
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
28
28
|
expect(result).toEqual({
|
|
29
29
|
state: "success",
|
|
@@ -44,11 +44,11 @@ it("polls action throws error", async () => {
|
|
|
44
44
|
.mockImplementationOnce(() => {
|
|
45
45
|
throw new Error("should not be called");
|
|
46
46
|
});
|
|
47
|
-
const start =
|
|
47
|
+
const start = performance.now();
|
|
48
48
|
const result = await (0, poller_js_1.poller)(seq, {
|
|
49
49
|
intervalMs: 10,
|
|
50
50
|
});
|
|
51
|
-
const duration =
|
|
51
|
+
const duration = performance.now() - start;
|
|
52
52
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
53
53
|
expect(result).toEqual({
|
|
54
54
|
state: "error",
|
|
@@ -72,11 +72,11 @@ it("polls until error", async () => {
|
|
|
72
72
|
.mockImplementationOnce(() => {
|
|
73
73
|
throw new Error("should not be called");
|
|
74
74
|
});
|
|
75
|
-
const start =
|
|
75
|
+
const start = performance.now();
|
|
76
76
|
const result = await (0, poller_js_1.poller)(seq, {
|
|
77
77
|
intervalMs: 10,
|
|
78
78
|
});
|
|
79
|
-
const duration =
|
|
79
|
+
const duration = performance.now() - start;
|
|
80
80
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
81
81
|
expect(result).toEqual({
|
|
82
82
|
state: "error",
|
package/cjs/poller.test.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":";;AAAA,2CAA0E;AAC1E,+DAAiD;AAEjD,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAA,wBAAK,EAAC,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC;IAAA,CACH,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":"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"}
|
package/cjs/version.cjs
CHANGED
package/deno.json
CHANGED
package/esm/on-func.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ReturnOnFunc<Args extends unknown[]> {
|
|
2
|
+
(fn: (...a: Args) => unknown): () => void;
|
|
3
|
+
invoke(...a: Args): void;
|
|
4
|
+
invokeAsync(...a: Args): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
type ExtractArgs<T> = T extends (...args: infer A) => void ? A : never;
|
|
7
|
+
export declare function OnFunc<Fn extends (...args: unknown[]) => unknown>(): ReturnOnFunc<ExtractArgs<Fn>>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=on-func.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.d.ts","sourceRoot":"","sources":["../../../src/on-func.ts"],"names":[],"mappings":"AA6BA,UAAU,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE;IAC3C,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvE,wBAAgB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,KAAK,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAMlG"}
|
package/esm/on-func.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class OnFuncInstance {
|
|
2
|
+
fns = new Set();
|
|
3
|
+
addFunctions(...fns) {
|
|
4
|
+
for (const fn of fns) {
|
|
5
|
+
this.fns.add(fn);
|
|
6
|
+
}
|
|
7
|
+
return () => {
|
|
8
|
+
for (const fn of fns) {
|
|
9
|
+
this.fns.delete(fn);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
invoke(...a) {
|
|
14
|
+
for (const fn of this.fns) {
|
|
15
|
+
try {
|
|
16
|
+
fn(a);
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
// ignore errors
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async invokeAsync(...a) {
|
|
24
|
+
await Promise.allSettled(Array.from(this.fns).map((fn) => Promise.resolve(fn(a))));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function OnFunc() {
|
|
28
|
+
const instance = new OnFuncInstance();
|
|
29
|
+
const ret = instance.addFunctions.bind(instance);
|
|
30
|
+
ret.invoke = instance.invoke.bind(instance);
|
|
31
|
+
ret.invokeAsync = instance.invokeAsync.bind(instance);
|
|
32
|
+
return ret;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=on-func.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.js","sourceRoot":"","sources":["../../../src/on-func.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc;IACT,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE5C,YAAY,CAAC,GAAG,GAA0B,EAAc;QACtD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACX,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;QAAA,CACF,CAAC;IAAA,CACH;IAEM,MAAM,CAAC,GAAG,CAAO,EAAQ;QAC9B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,EAAE,CAAC,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,gBAAgB;YAClB,CAAC;QACH,CAAC;IAAA,CACF;IAEM,KAAK,CAAC,WAAW,CAAC,GAAG,CAAO,EAAiB;QAClD,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA,CACpF;CACF;AAUD,MAAM,UAAU,MAAM,GAA8E;IAClG,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAmB,CAAC;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAkC,CAAC;IAClF,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA4C,CAAC;IACvF,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAiD,CAAC;IACtG,OAAO,GAAG,CAAC;AAAA,CACZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.test.d.ts","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { OnFunc } from "./on-func.js";
|
|
2
|
+
import { sleep } from "./utils/promise-sleep.js";
|
|
3
|
+
class OnFunctionTest {
|
|
4
|
+
onFunAction = OnFunc();
|
|
5
|
+
onVoidAction = OnFunc();
|
|
6
|
+
}
|
|
7
|
+
it("OnFunctionTest", async () => {
|
|
8
|
+
const test = new OnFunctionTest();
|
|
9
|
+
expect(typeof test.onFunAction).toBe("function");
|
|
10
|
+
test.onVoidAction.invoke();
|
|
11
|
+
const unregs = [];
|
|
12
|
+
const asyncFns = new Array(3).fill(0).map(() => vi.fn((_a, _b) => sleep(10)));
|
|
13
|
+
for (const fn of asyncFns) {
|
|
14
|
+
unregs.push(test.onFunAction(fn));
|
|
15
|
+
}
|
|
16
|
+
const fns = new Array(3).fill(0).map(() => vi.fn((_a, _b) => 10));
|
|
17
|
+
for (const fn of fns) {
|
|
18
|
+
unregs.push(test.onFunAction(fn));
|
|
19
|
+
}
|
|
20
|
+
test.onFunAction.invoke(1, "23");
|
|
21
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
22
|
+
expect(fn.mock.calls).toEqual([[[1, "23"]]]);
|
|
23
|
+
fn.mock.calls.length = 0;
|
|
24
|
+
}
|
|
25
|
+
const start = performance.now();
|
|
26
|
+
await test.onFunAction.invokeAsync(2, "34");
|
|
27
|
+
const duration = performance.now() - start;
|
|
28
|
+
expect(duration).toBeGreaterThanOrEqual(10);
|
|
29
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
30
|
+
expect(fn.mock.calls).toEqual([[[2, "34"]]]);
|
|
31
|
+
fn.mock.calls.length = 0;
|
|
32
|
+
}
|
|
33
|
+
for (const unreg of unregs) {
|
|
34
|
+
unreg();
|
|
35
|
+
}
|
|
36
|
+
test.onFunAction.invoke(3, "45");
|
|
37
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
38
|
+
expect(fn.mock.calls).toEqual([]);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=on-func.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.test.js","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":"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"}
|
package/esm/poller.test.js
CHANGED
|
@@ -17,11 +17,11 @@ it("polls until success", async () => {
|
|
|
17
17
|
.mockImplementationOnce(() => {
|
|
18
18
|
throw new Error("should not be called");
|
|
19
19
|
});
|
|
20
|
-
const start =
|
|
20
|
+
const start = performance.now();
|
|
21
21
|
const result = await poller(seq, {
|
|
22
22
|
intervalMs: 10,
|
|
23
23
|
});
|
|
24
|
-
const duration =
|
|
24
|
+
const duration = performance.now() - start;
|
|
25
25
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
26
26
|
expect(result).toEqual({
|
|
27
27
|
state: "success",
|
|
@@ -42,11 +42,11 @@ it("polls action throws error", async () => {
|
|
|
42
42
|
.mockImplementationOnce(() => {
|
|
43
43
|
throw new Error("should not be called");
|
|
44
44
|
});
|
|
45
|
-
const start =
|
|
45
|
+
const start = performance.now();
|
|
46
46
|
const result = await poller(seq, {
|
|
47
47
|
intervalMs: 10,
|
|
48
48
|
});
|
|
49
|
-
const duration =
|
|
49
|
+
const duration = performance.now() - start;
|
|
50
50
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
51
51
|
expect(result).toEqual({
|
|
52
52
|
state: "error",
|
|
@@ -70,11 +70,11 @@ it("polls until error", async () => {
|
|
|
70
70
|
.mockImplementationOnce(() => {
|
|
71
71
|
throw new Error("should not be called");
|
|
72
72
|
});
|
|
73
|
-
const start =
|
|
73
|
+
const start = performance.now();
|
|
74
74
|
const result = await poller(seq, {
|
|
75
75
|
intervalMs: 10,
|
|
76
76
|
});
|
|
77
|
-
const duration =
|
|
77
|
+
const duration = performance.now() - start;
|
|
78
78
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
79
79
|
expect(result).toEqual({
|
|
80
80
|
state: "error",
|
package/esm/poller.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuC,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC;IAAA,CACH,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":"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"}
|
package/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.4.
|
|
1
|
+
export const VERSION = "0.4.55";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
package/src/on-func.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
class OnFuncInstance<Args extends unknown[]> {
|
|
2
|
+
readonly fns = new Set<(a: Args) => void>();
|
|
3
|
+
|
|
4
|
+
addFunctions(...fns: ((a: Args) => void)[]): () => void {
|
|
5
|
+
for (const fn of fns) {
|
|
6
|
+
this.fns.add(fn);
|
|
7
|
+
}
|
|
8
|
+
return () => {
|
|
9
|
+
for (const fn of fns) {
|
|
10
|
+
this.fns.delete(fn);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public invoke(...a: Args): void {
|
|
16
|
+
for (const fn of this.fns) {
|
|
17
|
+
try {
|
|
18
|
+
fn(a);
|
|
19
|
+
} catch (e) {
|
|
20
|
+
// ignore errors
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public async invokeAsync(...a: Args): Promise<void> {
|
|
26
|
+
await Promise.allSettled(Array.from(this.fns).map((fn) => Promise.resolve(fn(a))));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface ReturnOnFunc<Args extends unknown[]> {
|
|
31
|
+
(fn: (...a: Args) => unknown): () => void; // returns unregister function
|
|
32
|
+
invoke(...a: Args): void;
|
|
33
|
+
invokeAsync(...a: Args): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
type ExtractArgs<T> = T extends (...args: infer A) => void ? A : never;
|
|
37
|
+
|
|
38
|
+
export function OnFunc<Fn extends (...args: unknown[]) => unknown>(): ReturnOnFunc<ExtractArgs<Fn>> {
|
|
39
|
+
const instance = new OnFuncInstance<ExtractArgs<Fn>>();
|
|
40
|
+
const ret = instance.addFunctions.bind(instance) as ReturnOnFunc<ExtractArgs<Fn>>;
|
|
41
|
+
ret.invoke = instance.invoke.bind(instance) as ReturnOnFunc<ExtractArgs<Fn>>["invoke"];
|
|
42
|
+
ret.invokeAsync = instance.invokeAsync.bind(instance) as ReturnOnFunc<ExtractArgs<Fn>>["invokeAsync"];
|
|
43
|
+
return ret;
|
|
44
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ReturnOnFunc<Args extends unknown[]> {
|
|
2
|
+
(fn: (...a: Args) => unknown): () => void;
|
|
3
|
+
invoke(...a: Args): void;
|
|
4
|
+
invokeAsync(...a: Args): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
type ExtractArgs<T> = T extends (...args: infer A) => void ? A : never;
|
|
7
|
+
export declare function OnFunc<Fn extends (...args: unknown[]) => unknown>(): ReturnOnFunc<ExtractArgs<Fn>>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=on-func.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.d.ts","sourceRoot":"","sources":["../../../src/on-func.ts"],"names":[],"mappings":"AA6BA,UAAU,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE;IAC3C,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvE,wBAAgB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,KAAK,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAMlG"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnFunc = OnFunc;
|
|
4
|
+
class OnFuncInstance {
|
|
5
|
+
fns = new Set();
|
|
6
|
+
addFunctions(...fns) {
|
|
7
|
+
for (const fn of fns) {
|
|
8
|
+
this.fns.add(fn);
|
|
9
|
+
}
|
|
10
|
+
return () => {
|
|
11
|
+
for (const fn of fns) {
|
|
12
|
+
this.fns.delete(fn);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
invoke(...a) {
|
|
17
|
+
for (const fn of this.fns) {
|
|
18
|
+
try {
|
|
19
|
+
fn(a);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
// ignore errors
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async invokeAsync(...a) {
|
|
27
|
+
await Promise.allSettled(Array.from(this.fns).map((fn) => Promise.resolve(fn(a))));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function OnFunc() {
|
|
31
|
+
const instance = new OnFuncInstance();
|
|
32
|
+
const ret = instance.addFunctions.bind(instance);
|
|
33
|
+
ret.invoke = instance.invoke.bind(instance);
|
|
34
|
+
ret.invokeAsync = instance.invokeAsync.bind(instance);
|
|
35
|
+
return ret;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=on-func.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.js","sourceRoot":"","sources":["../../../src/on-func.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc;IACT,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE5C,YAAY,CAAC,GAAG,GAA0B,EAAc;QACtD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACX,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;QAAA,CACF,CAAC;IAAA,CACH;IAEM,MAAM,CAAC,GAAG,CAAO,EAAQ;QAC9B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,EAAE,CAAC,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,gBAAgB;YAClB,CAAC;QACH,CAAC;IAAA,CACF;IAEM,KAAK,CAAC,WAAW,CAAC,GAAG,CAAO,EAAiB;QAClD,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA,CACpF;CACF;AAUD,kBAAoG;IAClG,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAmB,CAAC;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAkC,CAAC;IAClF,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA4C,CAAC;IACvF,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAiD,CAAC;IACtG,OAAO,GAAG,CAAC;AAAA,CACZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.test.d.ts","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const on_func_js_1 = require("./on-func.js");
|
|
4
|
+
const promise_sleep_js_1 = require("./utils/promise-sleep.js");
|
|
5
|
+
class OnFunctionTest {
|
|
6
|
+
onFunAction = (0, on_func_js_1.OnFunc)();
|
|
7
|
+
onVoidAction = (0, on_func_js_1.OnFunc)();
|
|
8
|
+
}
|
|
9
|
+
it("OnFunctionTest", async () => {
|
|
10
|
+
const test = new OnFunctionTest();
|
|
11
|
+
expect(typeof test.onFunAction).toBe("function");
|
|
12
|
+
test.onVoidAction.invoke();
|
|
13
|
+
const unregs = [];
|
|
14
|
+
const asyncFns = new Array(3).fill(0).map(() => vi.fn((_a, _b) => (0, promise_sleep_js_1.sleep)(10)));
|
|
15
|
+
for (const fn of asyncFns) {
|
|
16
|
+
unregs.push(test.onFunAction(fn));
|
|
17
|
+
}
|
|
18
|
+
const fns = new Array(3).fill(0).map(() => vi.fn((_a, _b) => 10));
|
|
19
|
+
for (const fn of fns) {
|
|
20
|
+
unregs.push(test.onFunAction(fn));
|
|
21
|
+
}
|
|
22
|
+
test.onFunAction.invoke(1, "23");
|
|
23
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
24
|
+
expect(fn.mock.calls).toEqual([[[1, "23"]]]);
|
|
25
|
+
fn.mock.calls.length = 0;
|
|
26
|
+
}
|
|
27
|
+
const start = performance.now();
|
|
28
|
+
await test.onFunAction.invokeAsync(2, "34");
|
|
29
|
+
const duration = performance.now() - start;
|
|
30
|
+
expect(duration).toBeGreaterThanOrEqual(10);
|
|
31
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
32
|
+
expect(fn.mock.calls).toEqual([[[2, "34"]]]);
|
|
33
|
+
fn.mock.calls.length = 0;
|
|
34
|
+
}
|
|
35
|
+
for (const unreg of unregs) {
|
|
36
|
+
unreg();
|
|
37
|
+
}
|
|
38
|
+
test.onFunAction.invoke(3, "45");
|
|
39
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
40
|
+
expect(fn.mock.calls).toEqual([]);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=on-func.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.test.js","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":"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"}
|
package/ts/cjs/poller.test.js
CHANGED
|
@@ -19,11 +19,11 @@ it("polls until success", async () => {
|
|
|
19
19
|
.mockImplementationOnce(() => {
|
|
20
20
|
throw new Error("should not be called");
|
|
21
21
|
});
|
|
22
|
-
const start =
|
|
22
|
+
const start = performance.now();
|
|
23
23
|
const result = await (0, poller_js_1.poller)(seq, {
|
|
24
24
|
intervalMs: 10,
|
|
25
25
|
});
|
|
26
|
-
const duration =
|
|
26
|
+
const duration = performance.now() - start;
|
|
27
27
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
28
28
|
expect(result).toEqual({
|
|
29
29
|
state: "success",
|
|
@@ -44,11 +44,11 @@ it("polls action throws error", async () => {
|
|
|
44
44
|
.mockImplementationOnce(() => {
|
|
45
45
|
throw new Error("should not be called");
|
|
46
46
|
});
|
|
47
|
-
const start =
|
|
47
|
+
const start = performance.now();
|
|
48
48
|
const result = await (0, poller_js_1.poller)(seq, {
|
|
49
49
|
intervalMs: 10,
|
|
50
50
|
});
|
|
51
|
-
const duration =
|
|
51
|
+
const duration = performance.now() - start;
|
|
52
52
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
53
53
|
expect(result).toEqual({
|
|
54
54
|
state: "error",
|
|
@@ -72,11 +72,11 @@ it("polls until error", async () => {
|
|
|
72
72
|
.mockImplementationOnce(() => {
|
|
73
73
|
throw new Error("should not be called");
|
|
74
74
|
});
|
|
75
|
-
const start =
|
|
75
|
+
const start = performance.now();
|
|
76
76
|
const result = await (0, poller_js_1.poller)(seq, {
|
|
77
77
|
intervalMs: 10,
|
|
78
78
|
});
|
|
79
|
-
const duration =
|
|
79
|
+
const duration = performance.now() - start;
|
|
80
80
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
81
81
|
expect(result).toEqual({
|
|
82
82
|
state: "error",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":";;AAAA,2CAA0E;AAC1E,+DAAiD;AAEjD,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAA,wBAAK,EAAC,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC;IAAA,CACH,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":"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"}
|
package/ts/cjs/version.js
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ReturnOnFunc<Args extends unknown[]> {
|
|
2
|
+
(fn: (...a: Args) => unknown): () => void;
|
|
3
|
+
invoke(...a: Args): void;
|
|
4
|
+
invokeAsync(...a: Args): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
type ExtractArgs<T> = T extends (...args: infer A) => void ? A : never;
|
|
7
|
+
export declare function OnFunc<Fn extends (...args: unknown[]) => unknown>(): ReturnOnFunc<ExtractArgs<Fn>>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=on-func.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.d.ts","sourceRoot":"","sources":["../../../src/on-func.ts"],"names":[],"mappings":"AA6BA,UAAU,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE;IAC3C,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAEvE,wBAAgB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,KAAK,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAMlG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class OnFuncInstance {
|
|
2
|
+
fns = new Set();
|
|
3
|
+
addFunctions(...fns) {
|
|
4
|
+
for (const fn of fns) {
|
|
5
|
+
this.fns.add(fn);
|
|
6
|
+
}
|
|
7
|
+
return () => {
|
|
8
|
+
for (const fn of fns) {
|
|
9
|
+
this.fns.delete(fn);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
invoke(...a) {
|
|
14
|
+
for (const fn of this.fns) {
|
|
15
|
+
try {
|
|
16
|
+
fn(a);
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
// ignore errors
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async invokeAsync(...a) {
|
|
24
|
+
await Promise.allSettled(Array.from(this.fns).map((fn) => Promise.resolve(fn(a))));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function OnFunc() {
|
|
28
|
+
const instance = new OnFuncInstance();
|
|
29
|
+
const ret = instance.addFunctions.bind(instance);
|
|
30
|
+
ret.invoke = instance.invoke.bind(instance);
|
|
31
|
+
ret.invokeAsync = instance.invokeAsync.bind(instance);
|
|
32
|
+
return ret;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=on-func.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.js","sourceRoot":"","sources":["../../../src/on-func.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc;IACT,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE5C,YAAY,CAAC,GAAG,GAA0B,EAAc;QACtD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;YACX,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;QAAA,CACF,CAAC;IAAA,CACH;IAEM,MAAM,CAAC,GAAG,CAAO,EAAQ;QAC9B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,EAAE,CAAC,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,gBAAgB;YAClB,CAAC;QACH,CAAC;IAAA,CACF;IAEM,KAAK,CAAC,WAAW,CAAC,GAAG,CAAO,EAAiB;QAClD,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA,CACpF;CACF;AAUD,MAAM,UAAU,MAAM,GAA8E;IAClG,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAmB,CAAC;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAkC,CAAC;IAClF,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA4C,CAAC;IACvF,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAiD,CAAC;IACtG,OAAO,GAAG,CAAC;AAAA,CACZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.test.d.ts","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { OnFunc } from "./on-func.js";
|
|
2
|
+
import { sleep } from "./utils/promise-sleep.js";
|
|
3
|
+
class OnFunctionTest {
|
|
4
|
+
onFunAction = OnFunc();
|
|
5
|
+
onVoidAction = OnFunc();
|
|
6
|
+
}
|
|
7
|
+
it("OnFunctionTest", async () => {
|
|
8
|
+
const test = new OnFunctionTest();
|
|
9
|
+
expect(typeof test.onFunAction).toBe("function");
|
|
10
|
+
test.onVoidAction.invoke();
|
|
11
|
+
const unregs = [];
|
|
12
|
+
const asyncFns = new Array(3).fill(0).map(() => vi.fn((_a, _b) => sleep(10)));
|
|
13
|
+
for (const fn of asyncFns) {
|
|
14
|
+
unregs.push(test.onFunAction(fn));
|
|
15
|
+
}
|
|
16
|
+
const fns = new Array(3).fill(0).map(() => vi.fn((_a, _b) => 10));
|
|
17
|
+
for (const fn of fns) {
|
|
18
|
+
unregs.push(test.onFunAction(fn));
|
|
19
|
+
}
|
|
20
|
+
test.onFunAction.invoke(1, "23");
|
|
21
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
22
|
+
expect(fn.mock.calls).toEqual([[[1, "23"]]]);
|
|
23
|
+
fn.mock.calls.length = 0;
|
|
24
|
+
}
|
|
25
|
+
const start = performance.now();
|
|
26
|
+
await test.onFunAction.invokeAsync(2, "34");
|
|
27
|
+
const duration = performance.now() - start;
|
|
28
|
+
expect(duration).toBeGreaterThanOrEqual(10);
|
|
29
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
30
|
+
expect(fn.mock.calls).toEqual([[[2, "34"]]]);
|
|
31
|
+
fn.mock.calls.length = 0;
|
|
32
|
+
}
|
|
33
|
+
for (const unreg of unregs) {
|
|
34
|
+
unreg();
|
|
35
|
+
}
|
|
36
|
+
test.onFunAction.invoke(3, "45");
|
|
37
|
+
for (const fn of [...asyncFns, ...fns]) {
|
|
38
|
+
expect(fn.mock.calls).toEqual([]);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=on-func.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"on-func.test.js","sourceRoot":"","sources":["../../../src/on-func.test.ts"],"names":[],"mappings":"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"}
|
package/ts/esm/poller.test.js
CHANGED
|
@@ -17,11 +17,11 @@ it("polls until success", async () => {
|
|
|
17
17
|
.mockImplementationOnce(() => {
|
|
18
18
|
throw new Error("should not be called");
|
|
19
19
|
});
|
|
20
|
-
const start =
|
|
20
|
+
const start = performance.now();
|
|
21
21
|
const result = await poller(seq, {
|
|
22
22
|
intervalMs: 10,
|
|
23
23
|
});
|
|
24
|
-
const duration =
|
|
24
|
+
const duration = performance.now() - start;
|
|
25
25
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
26
26
|
expect(result).toEqual({
|
|
27
27
|
state: "success",
|
|
@@ -42,11 +42,11 @@ it("polls action throws error", async () => {
|
|
|
42
42
|
.mockImplementationOnce(() => {
|
|
43
43
|
throw new Error("should not be called");
|
|
44
44
|
});
|
|
45
|
-
const start =
|
|
45
|
+
const start = performance.now();
|
|
46
46
|
const result = await poller(seq, {
|
|
47
47
|
intervalMs: 10,
|
|
48
48
|
});
|
|
49
|
-
const duration =
|
|
49
|
+
const duration = performance.now() - start;
|
|
50
50
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
51
51
|
expect(result).toEqual({
|
|
52
52
|
state: "error",
|
|
@@ -70,11 +70,11 @@ it("polls until error", async () => {
|
|
|
70
70
|
.mockImplementationOnce(() => {
|
|
71
71
|
throw new Error("should not be called");
|
|
72
72
|
});
|
|
73
|
-
const start =
|
|
73
|
+
const start = performance.now();
|
|
74
74
|
const result = await poller(seq, {
|
|
75
75
|
intervalMs: 10,
|
|
76
76
|
});
|
|
77
|
-
const duration =
|
|
77
|
+
const duration = performance.now() - start;
|
|
78
78
|
expect(duration).toBeGreaterThanOrEqual(80);
|
|
79
79
|
expect(result).toEqual({
|
|
80
80
|
state: "error",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuC,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC;IAAA,CACH,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"poller.test.js","sourceRoot":"","sources":["../../../src/poller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuC,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,cAAc;SACvB,CAAC;IAAA,CACH,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE;QAC/B,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAAA,CACjC,CAAC;SACD,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IACL,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE;QAC/B,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,IAAI,KAAK,CAAC,cAAc,CAAC;KACjC,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,EAAE;SACX,EAAE,EAAE;SACJ,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,sBAAsB,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC;SAChC,CAAC;IAAA,CACH,CAAC;SACD,sBAAsB,CAAC,GAAmC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAAA,CACzC,CAAC,CAAC;IACL,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE;QAC/B,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QACrB,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC;KAChC,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC;AAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAA2C,EAAE,CAAC;QACxE,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;SACvB,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;IACH,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,EAAiC,CAAC;AAAA,CACrE,CAAC,CAAC"}
|
package/ts/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.4.
|
|
1
|
+
export const VERSION = "0.4.55";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|