batchkit 0.3.0 → 0.3.1
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/dist/batch.d.ts.map +1 -1
- package/dist/index.js +25 -7
- package/dist/trace.d.ts +7 -1
- package/dist/trace.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/batch.ts +5 -6
- package/src/trace.ts +37 -2
package/dist/batch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,OAAO,EACP,OAAO,EACP,YAAY,EAEZ,KAAK,EAIN,MAAM,SAAS,CAAC;AAEjB,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAClB,OAAO,GAAE,YAAY,CAAC,CAAC,CAAM,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,OAAO,EACP,OAAO,EACP,YAAY,EAEZ,KAAK,EAIN,MAAM,SAAS,CAAC;AAEjB,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAClB,OAAO,GAAE,YAAY,CAAC,CAAC,CAAM,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAiTf"}
|
package/dist/index.js
CHANGED
|
@@ -67,11 +67,30 @@ function onIdle(options) {
|
|
|
67
67
|
|
|
68
68
|
// src/trace.ts
|
|
69
69
|
var devtoolsHook = null;
|
|
70
|
+
var pendingBatchers = [];
|
|
70
71
|
function __setDevtoolsHook(hook) {
|
|
71
72
|
devtoolsHook = hook;
|
|
73
|
+
if (hook && pendingBatchers.length > 0) {
|
|
74
|
+
for (const pending of pendingBatchers) {
|
|
75
|
+
const emitter = hook.onBatcherCreated({
|
|
76
|
+
fn: pending.fn,
|
|
77
|
+
name: pending.name,
|
|
78
|
+
stack: pending.stack
|
|
79
|
+
});
|
|
80
|
+
pending.setEmitter(emitter);
|
|
81
|
+
}
|
|
82
|
+
pendingBatchers.length = 0;
|
|
83
|
+
} else if (!hook) {
|
|
84
|
+
pendingBatchers.length = 0;
|
|
85
|
+
}
|
|
72
86
|
}
|
|
73
|
-
function
|
|
74
|
-
|
|
87
|
+
function registerBatcher(info, setEmitter) {
|
|
88
|
+
if (devtoolsHook) {
|
|
89
|
+
const emitter = devtoolsHook.onBatcherCreated(info);
|
|
90
|
+
setEmitter(emitter);
|
|
91
|
+
} else {
|
|
92
|
+
pendingBatchers.push({ ...info, setEmitter });
|
|
93
|
+
}
|
|
75
94
|
}
|
|
76
95
|
function createTracer(name, handler, getDevtoolsEmitter) {
|
|
77
96
|
let batchCounter = 0;
|
|
@@ -107,11 +126,10 @@ function batch(fn, match, options = {}) {
|
|
|
107
126
|
} = options;
|
|
108
127
|
const scheduler = schedule ?? (waitMs ? wait(waitMs) : microtask);
|
|
109
128
|
let devtoolsEmitter;
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
129
|
+
const creationStack = new Error().stack;
|
|
130
|
+
registerBatcher({ fn, name, stack: creationStack }, (emitter) => {
|
|
131
|
+
devtoolsEmitter = emitter;
|
|
132
|
+
});
|
|
115
133
|
const tracer = createTracer(name, traceHandler, () => devtoolsEmitter);
|
|
116
134
|
const matchFn = normalizeMatch(match);
|
|
117
135
|
const isIndexedMatch = isIndexed(match);
|
package/dist/trace.d.ts
CHANGED
|
@@ -9,7 +9,13 @@ export interface DevtoolsHook {
|
|
|
9
9
|
}): ((event: TraceEvent) => void) | undefined;
|
|
10
10
|
}
|
|
11
11
|
export declare function __setDevtoolsHook(hook: DevtoolsHook | null): void;
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function registerBatcher(info: {
|
|
13
|
+
fn: {
|
|
14
|
+
toString(): string;
|
|
15
|
+
};
|
|
16
|
+
name: string | undefined;
|
|
17
|
+
stack: string | undefined;
|
|
18
|
+
}, setEmitter: (emitter: ((event: TraceEvent) => void) | undefined) => void): void;
|
|
13
19
|
export declare function createTracer<K>(name: string | undefined, handler: TraceHandler<K> | undefined, getDevtoolsEmitter: (() => ((event: TraceEvent<K>) => void) | undefined) | undefined): {
|
|
14
20
|
emit: (event: TraceEventData<K>) => void;
|
|
15
21
|
nextBatchId: () => string;
|
package/dist/trace.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,IAAI,EAAE;QACrB,EAAE,EAAE;YAAE,QAAQ,IAAI,MAAM,CAAA;SAAE,CAAC;QAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/C;
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,IAAI,EAAE;QACrB,EAAE,EAAE;YAAE,QAAQ,IAAI,MAAM,CAAA;SAAE,CAAC;QAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/C;AAYD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAiBjE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE;IACJ,EAAE,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,EACD,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,KAAK,IAAI,GACvE,IAAI,CAON;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,EACpC,kBAAkB,EACd,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,GACpD,SAAS;kBAIQ,eAAe,CAAC,CAAC;uBAiBd,MAAM;EAK/B"}
|
package/package.json
CHANGED
package/src/batch.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BatchError } from './errors';
|
|
2
2
|
import { createIndexedMatcher, isIndexed, normalizeMatch } from './match';
|
|
3
3
|
import { microtask, wait } from './schedulers';
|
|
4
|
-
import { createTracer,
|
|
4
|
+
import { createTracer, registerBatcher } from './trace';
|
|
5
5
|
import type {
|
|
6
6
|
Batcher,
|
|
7
7
|
BatchFn,
|
|
@@ -30,12 +30,11 @@ export function batch<K, V>(
|
|
|
30
30
|
const scheduler: Scheduler = schedule ?? (waitMs ? wait(waitMs) : microtask);
|
|
31
31
|
|
|
32
32
|
let devtoolsEmitter: ((event: TraceEvent) => void) | undefined;
|
|
33
|
-
const
|
|
33
|
+
const creationStack = new Error().stack;
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
35
|
+
registerBatcher({ fn, name, stack: creationStack }, (emitter) => {
|
|
36
|
+
devtoolsEmitter = emitter;
|
|
37
|
+
});
|
|
39
38
|
|
|
40
39
|
const tracer = createTracer(name, traceHandler, () => devtoolsEmitter);
|
|
41
40
|
|
package/src/trace.ts
CHANGED
|
@@ -8,14 +8,49 @@ export interface DevtoolsHook {
|
|
|
8
8
|
}): ((event: TraceEvent) => void) | undefined;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
interface PendingBatcher {
|
|
12
|
+
fn: { toString(): string };
|
|
13
|
+
name: string | undefined;
|
|
14
|
+
stack: string | undefined;
|
|
15
|
+
setEmitter: (emitter: ((event: TraceEvent) => void) | undefined) => void;
|
|
16
|
+
}
|
|
17
|
+
|
|
11
18
|
let devtoolsHook: DevtoolsHook | null = null;
|
|
19
|
+
const pendingBatchers: PendingBatcher[] = [];
|
|
12
20
|
|
|
13
21
|
export function __setDevtoolsHook(hook: DevtoolsHook | null): void {
|
|
14
22
|
devtoolsHook = hook;
|
|
23
|
+
|
|
24
|
+
if (hook && pendingBatchers.length > 0) {
|
|
25
|
+
for (const pending of pendingBatchers) {
|
|
26
|
+
const emitter = hook.onBatcherCreated({
|
|
27
|
+
fn: pending.fn,
|
|
28
|
+
name: pending.name,
|
|
29
|
+
stack: pending.stack,
|
|
30
|
+
});
|
|
31
|
+
pending.setEmitter(emitter);
|
|
32
|
+
}
|
|
33
|
+
pendingBatchers.length = 0;
|
|
34
|
+
} else if (!hook) {
|
|
35
|
+
// clear pending batchers when hook is removed
|
|
36
|
+
pendingBatchers.length = 0;
|
|
37
|
+
}
|
|
15
38
|
}
|
|
16
39
|
|
|
17
|
-
export function
|
|
18
|
-
|
|
40
|
+
export function registerBatcher(
|
|
41
|
+
info: {
|
|
42
|
+
fn: { toString(): string };
|
|
43
|
+
name: string | undefined;
|
|
44
|
+
stack: string | undefined;
|
|
45
|
+
},
|
|
46
|
+
setEmitter: (emitter: ((event: TraceEvent) => void) | undefined) => void,
|
|
47
|
+
): void {
|
|
48
|
+
if (devtoolsHook) {
|
|
49
|
+
const emitter = devtoolsHook.onBatcherCreated(info);
|
|
50
|
+
setEmitter(emitter);
|
|
51
|
+
} else {
|
|
52
|
+
pendingBatchers.push({ ...info, setEmitter });
|
|
53
|
+
}
|
|
19
54
|
}
|
|
20
55
|
|
|
21
56
|
export function createTracer<K>(
|