@atolljs/core 0.1.6 → 0.1.8

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.
Files changed (59) hide show
  1. package/README.md +1 -1
  2. package/dist/contract/memoryDevtools.d.ts +30 -0
  3. package/dist/contract/sharedMemory.d.ts +6 -2
  4. package/dist/contract/types.d.ts +13 -0
  5. package/dist/devtools.d.ts +346 -0
  6. package/dist/index.d.ts +8 -2
  7. package/dist/index.js +19 -16
  8. package/dist/index10.js +28 -184
  9. package/dist/index11.js +18 -48
  10. package/dist/index12.js +29 -63
  11. package/dist/index13.js +49 -24
  12. package/dist/index14.js +57 -59
  13. package/dist/index15.js +335 -45
  14. package/dist/index16.js +242 -47
  15. package/dist/index17.js +57 -38
  16. package/dist/index18.js +9 -86
  17. package/dist/index19.js +58 -48
  18. package/dist/index20.js +24 -56
  19. package/dist/index21.js +61 -0
  20. package/dist/index22.js +48 -0
  21. package/dist/index23.js +68 -0
  22. package/dist/index24.js +41 -0
  23. package/dist/index25.js +46 -0
  24. package/dist/index26.js +113 -0
  25. package/dist/index27.js +60 -0
  26. package/dist/index28.js +57 -0
  27. package/dist/index5.js +227 -35
  28. package/dist/index6.js +143 -471
  29. package/dist/index7.js +51 -20
  30. package/dist/index8.js +507 -27
  31. package/dist/index9.js +19 -18
  32. package/dist/pool/dedicatedWorker.d.ts +63 -0
  33. package/dist/pool/devtoolsCommands.d.ts +54 -0
  34. package/dist/pool/subWorkerClient.d.ts +50 -0
  35. package/dist/pool/workerChannel.d.ts +44 -0
  36. package/dist/pool/workerClient.d.ts +38 -8
  37. package/dist/pool/workerPool.d.ts +13 -0
  38. package/dist/reactive.d.ts +15 -0
  39. package/dist/reactiveGraph.d.ts +9 -0
  40. package/dist/userTiming.d.ts +27 -0
  41. package/package.json +2 -1
  42. package/src/contract/memoryDevtools.ts +249 -0
  43. package/src/contract/sharedMemory.ts +39 -9
  44. package/src/contract/types.ts +13 -0
  45. package/src/devtools.ts +735 -0
  46. package/src/index.ts +27 -1
  47. package/src/log.ts +22 -0
  48. package/src/observable.ts +16 -3
  49. package/src/pool/dedicatedWorker.ts +332 -0
  50. package/src/pool/devtoolsCommands.ts +165 -0
  51. package/src/pool/subWorkerClient.ts +70 -0
  52. package/src/pool/workerChannel.ts +99 -0
  53. package/src/pool/workerClient.ts +64 -15
  54. package/src/pool/workerPool.ts +115 -36
  55. package/src/reactive.ts +87 -12
  56. package/src/reactiveGraph.ts +91 -0
  57. package/src/testing/inProcessWorker.ts +4 -3
  58. package/src/userTiming.ts +71 -0
  59. package/src/worker/workerBootstrap.ts +29 -3
@@ -0,0 +1,113 @@
1
+ import { scoped as e } from "./index7.js";
2
+ import { disposeNodes as t, graphNode as n, graphSource as r } from "./index25.js";
3
+ import { createEffect as i, createMemo as a, createRenderEffect as o, createRoot as s, createSignal as c } from "solid-js";
4
+ //#region src/reactive.ts
5
+ var l = e("reactive");
6
+ function u(e, t) {
7
+ if (e === t) return !0;
8
+ if (e == null || t == null) return !1;
9
+ let n = Object.keys(e), r = Object.keys(t);
10
+ return n.length === r.length && n.every((n) => Object.is(e[n], t[n]));
11
+ }
12
+ var d = (e, i) => {
13
+ let a = e._version;
14
+ if (!a) throw Error("This connector does not support remote observation.");
15
+ let o = typeof Atomics.waitAsync == "function", s = n("bridge", `${o ? "waitAsync" : "poll"} ${e._path ?? `@${e.byteOffset}`}`, [r(e._path)]), c = p(e, a, i);
16
+ return {
17
+ node: s,
18
+ stop: () => {
19
+ c(), t(s);
20
+ }
21
+ };
22
+ }, f = (e, t) => d(e, t).stop, p = (e, t, n) => {
23
+ let r = !1, i = Atomics.load(t.view, t.index);
24
+ if (typeof Atomics.waitAsync == "function") return l.debug(`observing remote writes (offset ${e.byteOffset}, waitAsync)`), (async () => {
25
+ for (; !r;) {
26
+ let a = Atomics.waitAsync(t.view, t.index, i);
27
+ a.async && await a.value, i = Atomics.load(t.view, t.index), r || (l.trace(`remote write observed (offset ${e.byteOffset})`), n());
28
+ }
29
+ l.debug(`stopped observing (offset ${e.byteOffset})`);
30
+ })(), () => {
31
+ r = !0;
32
+ };
33
+ l.warn(`Atomics.waitAsync unavailable — observing via 50ms poll (offset ${e.byteOffset})`);
34
+ let a = setInterval(() => {
35
+ let e = Atomics.load(t.view, t.index);
36
+ e !== i && (i = e, n());
37
+ }, 50);
38
+ return () => {
39
+ r = !0, clearInterval(a);
40
+ };
41
+ }, m = null, h = () => {
42
+ if (m !== null) return m;
43
+ try {
44
+ let e = 0, t;
45
+ s(() => {
46
+ let [n, r] = c(0);
47
+ t = r, o(() => {
48
+ n(), e++;
49
+ });
50
+ }), t?.(1), m = e > 1;
51
+ } catch {
52
+ m = !1;
53
+ }
54
+ return m || l.warn("solid-js resolved to the SSR build — watch() falls back to direct version watching"), m;
55
+ };
56
+ function g(e) {
57
+ let [t, n] = c(e.read(), { equals: !1 }), r = () => n(() => e.read());
58
+ return {
59
+ get: t,
60
+ peek: () => e.read(),
61
+ set: (t) => {
62
+ e.write(t), r();
63
+ },
64
+ observeRemote: () => f(e, r)
65
+ };
66
+ }
67
+ function _(e, t, n, r) {
68
+ return v(e, n ? t : ((e) => e), n ?? t, r, {
69
+ sliced: n !== void 0,
70
+ label: "watch"
71
+ }).stop;
72
+ }
73
+ function v(e, r, o, u, f) {
74
+ let p = e._path ?? `@${e.byteOffset}`, m = null, g = null, _ = null, v = () => {
75
+ g = f.sliced ? n("derived", `select(${p})`, [m]) : null, _ = n("effect", `${f.label}(${p})`, [g ?? m]);
76
+ }, y = () => t(_, g);
77
+ if (!h()) {
78
+ let t = (e, t) => e === void 0 || t === void 0 ? e === t : (u?.equals ?? Object.is)(e, t), n, i = () => {
79
+ let i = e.read(), a = i == null ? void 0 : r(i);
80
+ if (a === void 0 || t(n, a)) return;
81
+ let s = n;
82
+ n = a, o(a, s);
83
+ };
84
+ i();
85
+ let a = d(e, i);
86
+ return m = a.node, v(), l.debug(`watching connector at offset ${e.byteOffset} (direct)`), {
87
+ effect: _,
88
+ stop: () => {
89
+ l.debug(`watch stopped (offset ${e.byteOffset})`), a.stop(), y();
90
+ }
91
+ };
92
+ }
93
+ let [b, x] = c(e.read(), { equals: !1 }), S = d(e, () => x(() => e.read()));
94
+ m = S.node, v();
95
+ let C = s((e) => {
96
+ let t = a(() => {
97
+ let e = b();
98
+ return e == null ? void 0 : r(e);
99
+ }, void 0, u?.equals ? { equals: (e, t) => e === void 0 || t === void 0 ? e === t : u.equals(e, t) } : void 0);
100
+ return i((e) => {
101
+ let n = t();
102
+ return n !== void 0 && o(n, e), n;
103
+ }), e;
104
+ });
105
+ return l.debug(`watching connector at offset ${e.byteOffset}`), {
106
+ effect: _,
107
+ stop: () => {
108
+ l.debug(`watch stopped (offset ${e.byteOffset})`), S.stop(), C(), y();
109
+ }
110
+ };
111
+ }
112
+ //#endregion
113
+ export { g as reactive, u as shallowEqual, _ as watch, v as watchNodes };
@@ -0,0 +1,60 @@
1
+ import { scoped as e } from "./index7.js";
2
+ import { relabelNode as t } from "./index25.js";
3
+ import { watchNodes as n } from "./index26.js";
4
+ //#region src/observable.ts
5
+ var r = e("observe");
6
+ function i(e, i, a, o) {
7
+ let s = a ?? ((e) => e), c = o?.equals ?? Object.is, l, u = -1, d = null, f = null, p = null, m = null, h = null, g = /* @__PURE__ */ new Set(), _ = () => t(h, `observe(${String(i)}) · ${g.size} sub${g.size === 1 ? "" : "s"}`), v = () => {
8
+ if (d || f) return;
9
+ let t;
10
+ try {
11
+ t = e.connector(String(i));
12
+ } catch {
13
+ f = e.onBound(() => {
14
+ let e = f;
15
+ f = null, e?.(), v();
16
+ });
17
+ return;
18
+ }
19
+ let u = n(t, s, (e) => {
20
+ if (l === void 0 || !c(l, e)) {
21
+ l = e;
22
+ for (let t of g) t(e);
23
+ }
24
+ }, o, {
25
+ sliced: a !== void 0,
26
+ label: "observe"
27
+ });
28
+ d = u.stop, h = u.effect, _(), m = t, p ??= e.onBound(() => {
29
+ let t;
30
+ try {
31
+ t = e.connector(String(i));
32
+ } catch {
33
+ return;
34
+ }
35
+ t !== m && (d?.(), d = null, m = null, v());
36
+ }), r.debug(`observing "${String(i)}" (offset ${t.byteOffset})`);
37
+ }, y = () => {
38
+ d?.(), d = null, h = null, m = null, f?.(), f = null, p?.(), p = null;
39
+ };
40
+ return {
41
+ get() {
42
+ if (d || e.bound) try {
43
+ let t = e.connector(String(i)), n = t._version ? Atomics.load(t._version.view, t._version.index) : 0;
44
+ if (n !== u) {
45
+ u = n;
46
+ let e = s(t.read());
47
+ (l === void 0 || !c(l, e)) && (l = e);
48
+ }
49
+ } catch {}
50
+ return l;
51
+ },
52
+ subscribe(e) {
53
+ return g.add(e), v(), _(), () => {
54
+ g.delete(e), g.size === 0 ? y() : _();
55
+ };
56
+ }
57
+ };
58
+ }
59
+ //#endregion
60
+ export { i as observe };
@@ -0,0 +1,57 @@
1
+ import { scoped as e } from "./index7.js";
2
+ //#region src/task.ts
3
+ var t = e("task");
4
+ function n(e) {
5
+ let n = 0, r = {
6
+ data: null,
7
+ pending: !1,
8
+ settled: !1,
9
+ elapsedMs: null,
10
+ error: null
11
+ }, i = /* @__PURE__ */ new Set(), a = (e) => {
12
+ r = e;
13
+ for (let t of i) t(e);
14
+ }, o = {
15
+ get: () => r,
16
+ subscribe(e) {
17
+ return i.add(e), () => {
18
+ i.delete(e);
19
+ };
20
+ },
21
+ run(i) {
22
+ let o = ++n, s = performance.now();
23
+ a({
24
+ ...r,
25
+ pending: !0,
26
+ error: null
27
+ }), e(i).then((e) => {
28
+ o === n && a({
29
+ data: e,
30
+ pending: !1,
31
+ settled: !0,
32
+ elapsedMs: performance.now() - s,
33
+ error: null
34
+ });
35
+ }, (e) => {
36
+ o === n && a({
37
+ ...r,
38
+ pending: !1,
39
+ settled: !0,
40
+ error: e
41
+ }), t.error("task run failed", e);
42
+ });
43
+ },
44
+ runOnce(e) {
45
+ r.pending || r.settled || o.run(e);
46
+ }
47
+ };
48
+ return o;
49
+ }
50
+ function r(e) {
51
+ return typeof e == "object" && !!e && typeof e.run == "function" && typeof e.runOnce == "function" && typeof e.get == "function" && typeof e.subscribe == "function";
52
+ }
53
+ function i(e) {
54
+ return r(e) ? e : n(e);
55
+ }
56
+ //#endregion
57
+ export { n as defineTask, r as isAsyncTask, i as toTask };
package/dist/index5.js CHANGED
@@ -1,38 +1,230 @@
1
- //#region src/log.ts
2
- var e = {
3
- trace: 0,
4
- debug: 1,
5
- info: 2,
6
- warn: 3,
7
- error: 4,
8
- off: 5
9
- }, t = typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope ? "worker" : "main", n = ({ level: e, scope: t, message: n, data: r, thread: i, at: a }) => {
10
- let o = `[${(a / 1e3).toFixed(2)}s ${i}:${t}]`, s = e === "error" ? console.error : e === "warn" ? console.warn : e === "info" ? console.info : console.debug;
11
- r === void 0 ? s(`${o} ${n}`) : s(`${o} ${n}`, r);
12
- }, r = "info", i = n, a = (e) => {
13
- r = e;
14
- }, o = () => r, s = (e) => {
15
- i = e ?? n;
16
- };
17
- function c(n, a, o, s) {
18
- e[n] < e[r] || i({
19
- level: n,
20
- scope: a,
21
- message: o,
22
- data: s,
23
- thread: t,
24
- at: performance.now()
1
+ //#region src/devtools.ts
2
+ var e = typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope ? "worker" : "main", t = null, n = null, r = /* @__PURE__ */ new Set(), i = () => {
3
+ if (r.size === 0) {
4
+ t = n;
5
+ return;
6
+ }
7
+ let e = n ? [n, ...r] : [...r];
8
+ t = e.length === 1 ? e[0] : (t) => {
9
+ for (let n of e) try {
10
+ n(t);
11
+ } catch {}
12
+ };
13
+ }, a = (e) => {
14
+ n = e, i();
15
+ }, o = (e) => (r.add(e), i(), () => {
16
+ r.delete(e) && i();
17
+ }), s = (n) => {
18
+ t && t({
19
+ ...n,
20
+ at: performance.now(),
21
+ thread: e
25
22
  });
26
- }
27
- function l(e) {
28
- return {
29
- trace: (t, n) => c("trace", e, t, n),
30
- debug: (t, n) => c("debug", e, t, n),
31
- info: (t, n) => c("info", e, t, n),
32
- warn: (t, n) => c("warn", e, t, n),
33
- error: (t, n) => c("error", e, t, n)
23
+ }, c = (e) => {
24
+ t && t(e);
25
+ }, l = () => t !== null, u = (e, t = 2048) => {
26
+ let n = /* @__PURE__ */ new WeakSet(), r;
27
+ try {
28
+ r = JSON.stringify(e, (e, t) => {
29
+ if (typeof t == "function") return "[fn]";
30
+ if (typeof t == "bigint") return `${t}n`;
31
+ if (t instanceof ArrayBuffer) return `[ArrayBuffer ${t.byteLength}B]`;
32
+ if (ArrayBuffer.isView(t)) return `[${t.constructor.name} ${t.byteLength}B]`;
33
+ if (t instanceof Map) return { "[Map]": [...t.entries()].slice(0, 50) };
34
+ if (t instanceof Set) return { "[Set]": [...t].slice(0, 50) };
35
+ if (t && typeof t == "object") {
36
+ if (n.has(t)) return "[cycle]";
37
+ n.add(t);
38
+ }
39
+ return t;
40
+ }) ?? String(e);
41
+ } catch {
42
+ r = String(e);
43
+ }
44
+ return r.length > t ? `${r.slice(0, t)}…` : r;
45
+ }, d = (e, t = 5e3) => {
46
+ let n = 0, r = /* @__PURE__ */ new WeakSet(), i = (e) => {
47
+ if (++n > t) return 0;
48
+ switch (typeof e) {
49
+ case "string": return 4 + e.length * 2;
50
+ case "number": return 8;
51
+ case "boolean": return 4;
52
+ case "bigint": return 16;
53
+ case "undefined": return 1;
54
+ case "object": {
55
+ if (e === null) return 1;
56
+ if (e instanceof ArrayBuffer || ArrayBuffer.isView(e)) return e.byteLength;
57
+ if (typeof SharedArrayBuffer < "u" && e instanceof SharedArrayBuffer) return 8;
58
+ if (r.has(e)) return 4;
59
+ r.add(e);
60
+ let t = 8;
61
+ if (e instanceof Map) for (let [n, r] of e) t += i(n) + i(r);
62
+ else if (e instanceof Set) for (let n of e) t += i(n);
63
+ else if (Array.isArray(e)) for (let n of e) t += i(n);
64
+ else for (let n of Object.keys(e)) t += 4 + n.length * 2 + i(e[n]);
65
+ return t;
66
+ }
67
+ default: return 0;
68
+ }
34
69
  };
35
- }
36
- var u = (e) => e >= 1 << 20 ? `${(e / (1 << 20)).toFixed(1)}MB` : e >= 1024 ? `${(e / 1024).toFixed(1)}KB` : `${e}B`;
70
+ return i(e);
71
+ }, f = /* @__PURE__ */ new Map(), p = (e, t) => (f.set(e, t), () => {
72
+ f.get(e) === t && f.delete(e);
73
+ }), m = () => [...f.keys()].sort(), h = async (e, t = {}) => {
74
+ if (e === "devtools.commands") return m();
75
+ let n = f.get(e);
76
+ if (!n) throw Error(`unknown devtools command '${e}'`);
77
+ return n(t);
78
+ }, g = !1, _ = () => {
79
+ g || typeof self > "u" || (g = !0, a((e) => {
80
+ self.postMessage({
81
+ type: "ATOLL_DEVTOOLS",
82
+ event: e
83
+ });
84
+ }), T(self), D(self));
85
+ }, v = Symbol.for("atoll.devtools.fetch"), y = 8192, b = /text|json|javascript|xml|html|css|svg|csv|urlencoded|graphql/, x = (e) => e ? [...e.entries()].slice(0, 64) : void 0, S = (e) => {
86
+ if (e != null) return typeof e == "string" ? e.slice(0, y) : e instanceof URLSearchParams ? String(e).slice(0, y) : e instanceof Blob ? `[${e.type || "blob"} ${e.size}B]` : e instanceof ArrayBuffer ? `[ArrayBuffer ${e.byteLength}B]` : ArrayBuffer.isView(e) ? `[${e.constructor.name} ${e.byteLength}B]` : typeof FormData < "u" && e instanceof FormData ? "[FormData]" : "[stream]";
87
+ }, C = async (e, t) => {
88
+ let n = e.body?.getReader();
89
+ if (!n) return;
90
+ let r = [], i = 0;
91
+ try {
92
+ for (; i < t;) {
93
+ let { done: e, value: t } = await n.read();
94
+ if (e || !t) break;
95
+ r.push(t), i += t.byteLength;
96
+ }
97
+ } catch {}
98
+ if (!i) return;
99
+ let a = new Uint8Array(i), o = 0;
100
+ for (let e of r) a.set(e, o), o += e.byteLength;
101
+ return new TextDecoder().decode(a) + (i >= t ? "…" : "");
102
+ }, w = async (e, t) => {
103
+ let n = globalThis.performance;
104
+ if (n?.getEntriesByType) for (let r = 0; r < 12; r++) {
105
+ let r;
106
+ for (let i of n.getEntriesByType("resource")) i.name !== e || i.startTime < t - 5 || (!r || i.startTime < r.startTime) && (r = i);
107
+ if (r) {
108
+ let e = (e, t) => t > e && e > 0 ? t - e : 0;
109
+ return {
110
+ queue: e(r.fetchStart, r.domainLookupStart),
111
+ dns: e(r.domainLookupStart, r.domainLookupEnd),
112
+ tcp: r.secureConnectionStart > 0 ? e(r.connectStart, r.secureConnectionStart) : e(r.connectStart, r.connectEnd),
113
+ tls: r.secureConnectionStart > 0 ? e(r.secureConnectionStart, r.connectEnd) : 0,
114
+ wait: e(r.requestStart, r.responseStart),
115
+ download: e(r.responseStart, r.responseEnd),
116
+ transferSize: r.transferSize,
117
+ encodedSize: r.encodedBodySize,
118
+ decodedSize: r.decodedBodySize
119
+ };
120
+ }
121
+ await new Promise((e) => setTimeout(e, 250));
122
+ }
123
+ }, T = (e) => {
124
+ let t = e.fetch;
125
+ if (!t || t[v]) return;
126
+ let n = 0, r = async (r, i) => {
127
+ let a = performance.now(), o = ++n, c = typeof Request < "u" && r instanceof Request, l = c ? r.url : String(r), u = (() => {
128
+ try {
129
+ return new URL(l, self.location?.href).href;
130
+ } catch {
131
+ return l;
132
+ }
133
+ })(), d = (i?.method ?? (c ? r.method : "GET")).toUpperCase(), f = c && !i?.body ? r.clone() : null, p = x(i?.headers ? new Headers(i.headers) : c ? r.headers : void 0), m = S(i?.body);
134
+ try {
135
+ let n = await t.call(e, r, i), c = n.headers.get("content-length");
136
+ s({
137
+ type: "net:fetch",
138
+ id: o,
139
+ url: l.slice(0, 300),
140
+ method: d,
141
+ status: n.status,
142
+ ms: performance.now() - a,
143
+ bytes: c === null ? void 0 : Number(c),
144
+ reqHeaders: p,
145
+ reqBody: m
146
+ });
147
+ let h = n.clone();
148
+ return (async () => {
149
+ m ??= f ? await f.text().then((e) => e.slice(0, y)).catch(() => void 0) : void 0;
150
+ let e = n.headers.get("content-type") ?? "", t = b.test(e) ? await C(h, y).catch(() => void 0) : void 0, r = await w(u, a);
151
+ s({
152
+ type: "net:fetch-detail",
153
+ id: o,
154
+ reqBody: m,
155
+ resHeaders: x(n.headers),
156
+ resBody: t,
157
+ timing: r,
158
+ transferSize: r?.transferSize,
159
+ encodedSize: r?.encodedSize,
160
+ decodedSize: r?.decodedSize
161
+ });
162
+ })(), n;
163
+ } catch (e) {
164
+ throw s({
165
+ type: "net:fetch",
166
+ id: o,
167
+ url: l.slice(0, 300),
168
+ method: d,
169
+ ms: performance.now() - a,
170
+ error: e instanceof Error ? e.message : String(e),
171
+ reqHeaders: p,
172
+ reqBody: m
173
+ }), e;
174
+ }
175
+ };
176
+ r[v] = !0, e.fetch = r;
177
+ }, E = /* @__PURE__ */ new WeakSet(), D = (e, t = 2500) => {
178
+ if (E.has(e)) return;
179
+ let n = e.performance;
180
+ if (!n) return;
181
+ let r = n.memory, i = typeof WorkerGlobalScope < "u" && globalThis.self instanceof WorkerGlobalScope, a = n.measureUserAgentSpecificMemory?.bind(n), o = globalThis.process?.memoryUsage;
182
+ if (r || a && !i || o) {
183
+ if (E.add(e), a && !i) {
184
+ setInterval(() => {
185
+ a().then((e) => {
186
+ let t = (e.breakdown ?? []).map((e) => ({
187
+ bytes: e.bytes,
188
+ scope: e.attribution?.[0]?.scope,
189
+ url: e.attribution?.[0]?.url
190
+ })).sort((e, t) => t.bytes - e.bytes).slice(0, 24);
191
+ s({
192
+ type: "runtime:memory",
193
+ heapBytes: e.bytes,
194
+ heapLimitBytes: r?.jsHeapSizeLimit,
195
+ contexts: t
196
+ });
197
+ }).catch(() => {
198
+ r && s({
199
+ type: "runtime:memory",
200
+ heapBytes: r.usedJSHeapSize,
201
+ heapLimitBytes: r.jsHeapSizeLimit
202
+ });
203
+ });
204
+ }, Math.max(t, 4e3)).unref?.();
205
+ return;
206
+ }
207
+ setInterval(() => {
208
+ if (r) s({
209
+ type: "runtime:memory",
210
+ heapBytes: r.usedJSHeapSize,
211
+ heapLimitBytes: r.jsHeapSizeLimit
212
+ });
213
+ else if (o) {
214
+ let e = o();
215
+ s({
216
+ type: "runtime:memory",
217
+ heapBytes: e.heapUsed,
218
+ rssBytes: e.rss
219
+ });
220
+ }
221
+ }, t).unref?.();
222
+ }
223
+ }, O = 0, k = /* @__PURE__ */ new Map(), A = (e, t) => {
224
+ let n = t?.toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "");
225
+ if (!n) return `${e}-${++O}`;
226
+ let r = `${n}-${e === "pool" ? "p" : e === "worker" ? "w" : e}`, i = (k.get(r) ?? 0) + 1;
227
+ return k.set(r, i), i === 1 ? r : `${r}${i}`;
228
+ };
37
229
  //#endregion
38
- export { u as fmtBytes, o as getLogLevel, c as log, l as scoped, a as setLogLevel, s as setLogSink };
230
+ export { o as addDevtoolsSink, l as devtoolsEnabled, s as emitDevtools, _ as enableWorkerDevtoolsForwarding, d as estimateCloneBytes, c as forwardDevtools, T as installFetchProbe, D as installMemoryProbe, m as listDevtoolsCommands, A as nextDevtoolsId, u as previewValue, p as registerDevtoolsCommand, h as runDevtoolsCommand, a as setDevtoolsSink };