@atolljs/core 0.1.5 → 0.1.7

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/index5.js CHANGED
@@ -1,38 +1,159 @@
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 = (e) => {
3
+ t = e;
4
+ }, r = (n) => {
5
+ t && t({
6
+ ...n,
7
+ at: performance.now(),
8
+ thread: e
25
9
  });
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)
10
+ }, i = (e) => {
11
+ t && t(e);
12
+ }, a = () => t !== null, o = !1, s = () => {
13
+ o || typeof self > "u" || (o = !0, n((e) => {
14
+ self.postMessage({
15
+ type: "ATOLL_DEVTOOLS",
16
+ event: e
17
+ });
18
+ }), h(self), _(self));
19
+ }, c = Symbol.for("atoll.devtools.fetch"), l = 8192, u = /text|json|javascript|xml|html|css|svg|csv|urlencoded|graphql/, d = (e) => e ? [...e.entries()].slice(0, 64) : void 0, f = (e) => {
20
+ if (e != null) return typeof e == "string" ? e.slice(0, l) : e instanceof URLSearchParams ? String(e).slice(0, l) : 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]";
21
+ }, p = async (e, t) => {
22
+ let n = e.body?.getReader();
23
+ if (!n) return;
24
+ let r = [], i = 0;
25
+ try {
26
+ for (; i < t;) {
27
+ let { done: e, value: t } = await n.read();
28
+ if (e || !t) break;
29
+ r.push(t), i += t.byteLength;
30
+ }
31
+ } catch {}
32
+ if (!i) return;
33
+ let a = new Uint8Array(i), o = 0;
34
+ for (let e of r) a.set(e, o), o += e.byteLength;
35
+ return new TextDecoder().decode(a) + (i >= t ? "…" : "");
36
+ }, m = async (e, t) => {
37
+ let n = globalThis.performance;
38
+ if (n?.getEntriesByType) for (let r = 0; r < 12; r++) {
39
+ let r;
40
+ for (let i of n.getEntriesByType("resource")) i.name !== e || i.startTime < t - 5 || (!r || i.startTime < r.startTime) && (r = i);
41
+ if (r) {
42
+ let e = (e, t) => t > e && e > 0 ? t - e : 0;
43
+ return {
44
+ queue: e(r.fetchStart, r.domainLookupStart),
45
+ dns: e(r.domainLookupStart, r.domainLookupEnd),
46
+ tcp: r.secureConnectionStart > 0 ? e(r.connectStart, r.secureConnectionStart) : e(r.connectStart, r.connectEnd),
47
+ tls: r.secureConnectionStart > 0 ? e(r.secureConnectionStart, r.connectEnd) : 0,
48
+ wait: e(r.requestStart, r.responseStart),
49
+ download: e(r.responseStart, r.responseEnd),
50
+ transferSize: r.transferSize,
51
+ encodedSize: r.encodedBodySize,
52
+ decodedSize: r.decodedBodySize
53
+ };
54
+ }
55
+ await new Promise((e) => setTimeout(e, 250));
56
+ }
57
+ }, h = (e) => {
58
+ let t = e.fetch;
59
+ if (!t || t[c]) return;
60
+ let n = 0, i = async (i, a) => {
61
+ let o = performance.now(), s = ++n, c = typeof Request < "u" && i instanceof Request, h = c ? i.url : String(i), g = (() => {
62
+ try {
63
+ return new URL(h, self.location?.href).href;
64
+ } catch {
65
+ return h;
66
+ }
67
+ })(), _ = (a?.method ?? (c ? i.method : "GET")).toUpperCase(), v = c && !a?.body ? i.clone() : null, y = d(a?.headers ? new Headers(a.headers) : c ? i.headers : void 0), b = f(a?.body);
68
+ try {
69
+ let n = await t.call(e, i, a), c = n.headers.get("content-length");
70
+ r({
71
+ type: "net:fetch",
72
+ id: s,
73
+ url: h.slice(0, 300),
74
+ method: _,
75
+ status: n.status,
76
+ ms: performance.now() - o,
77
+ bytes: c === null ? void 0 : Number(c),
78
+ reqHeaders: y,
79
+ reqBody: b
80
+ });
81
+ let f = n.clone();
82
+ return (async () => {
83
+ b ??= v ? await v.text().then((e) => e.slice(0, l)).catch(() => void 0) : void 0;
84
+ let e = n.headers.get("content-type") ?? "", t = u.test(e) ? await p(f, l).catch(() => void 0) : void 0, i = await m(g, o);
85
+ r({
86
+ type: "net:fetch-detail",
87
+ id: s,
88
+ reqBody: b,
89
+ resHeaders: d(n.headers),
90
+ resBody: t,
91
+ timing: i,
92
+ transferSize: i?.transferSize,
93
+ encodedSize: i?.encodedSize,
94
+ decodedSize: i?.decodedSize
95
+ });
96
+ })(), n;
97
+ } catch (e) {
98
+ throw r({
99
+ type: "net:fetch",
100
+ id: s,
101
+ url: h.slice(0, 300),
102
+ method: _,
103
+ ms: performance.now() - o,
104
+ error: e instanceof Error ? e.message : String(e),
105
+ reqHeaders: y,
106
+ reqBody: b
107
+ }), e;
108
+ }
34
109
  };
35
- }
36
- var u = (e) => e >= 1 << 20 ? `${(e / (1 << 20)).toFixed(1)}MB` : e >= 1024 ? `${(e / 1024).toFixed(1)}KB` : `${e}B`;
110
+ i[c] = !0, e.fetch = i;
111
+ }, g = /* @__PURE__ */ new WeakSet(), _ = (e, t = 2500) => {
112
+ if (g.has(e)) return;
113
+ let n = e.performance;
114
+ if (!n) return;
115
+ let i = n.memory, a = typeof WorkerGlobalScope < "u" && globalThis.self instanceof WorkerGlobalScope, o = n.measureUserAgentSpecificMemory?.bind(n), s = globalThis.process?.memoryUsage;
116
+ if (i || o && !a || s) {
117
+ if (g.add(e), o && !a) {
118
+ setInterval(() => {
119
+ o().then((e) => {
120
+ let t = (e.breakdown ?? []).map((e) => ({
121
+ bytes: e.bytes,
122
+ scope: e.attribution?.[0]?.scope,
123
+ url: e.attribution?.[0]?.url
124
+ })).sort((e, t) => t.bytes - e.bytes).slice(0, 24);
125
+ r({
126
+ type: "runtime:memory",
127
+ heapBytes: e.bytes,
128
+ heapLimitBytes: i?.jsHeapSizeLimit,
129
+ contexts: t
130
+ });
131
+ }).catch(() => {
132
+ i && r({
133
+ type: "runtime:memory",
134
+ heapBytes: i.usedJSHeapSize,
135
+ heapLimitBytes: i.jsHeapSizeLimit
136
+ });
137
+ });
138
+ }, Math.max(t, 4e3)).unref?.();
139
+ return;
140
+ }
141
+ setInterval(() => {
142
+ if (i) r({
143
+ type: "runtime:memory",
144
+ heapBytes: i.usedJSHeapSize,
145
+ heapLimitBytes: i.jsHeapSizeLimit
146
+ });
147
+ else if (s) {
148
+ let e = s();
149
+ r({
150
+ type: "runtime:memory",
151
+ heapBytes: e.heapUsed,
152
+ rssBytes: e.rss
153
+ });
154
+ }
155
+ }, t).unref?.();
156
+ }
157
+ }, v = 0, y = (e) => `${e}-${++v}`;
37
158
  //#endregion
38
- export { u as fmtBytes, o as getLogLevel, c as log, l as scoped, a as setLogLevel, s as setLogSink };
159
+ export { a as devtoolsEnabled, r as emitDevtools, s as enableWorkerDevtoolsForwarding, i as forwardDevtools, h as installFetchProbe, _ as installMemoryProbe, y as nextDevtoolsId, n as setDevtoolsSink };