insomni 0.2.0-alpha.0

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.
@@ -0,0 +1,191 @@
1
+ import { t as getLogger } from "./logger-DSyBF3Y_.mjs";
2
+ //#region src/reactivity/signals.ts
3
+ let currentSubscriber = null;
4
+ function track(source) {
5
+ if (!currentSubscriber) return;
6
+ source.trackingSubs.add(currentSubscriber);
7
+ currentSubscriber.deps.add(source);
8
+ }
9
+ function clearDeps(sub) {
10
+ for (const src of sub.deps) src.trackingSubs.delete(sub);
11
+ sub.deps.clear();
12
+ }
13
+ function notifyTracking(source) {
14
+ const subs = Array.from(source.trackingSubs);
15
+ for (const s of subs) s.notify();
16
+ }
17
+ function runWithSubscriber(sub, body) {
18
+ clearDeps(sub);
19
+ const prev = currentSubscriber;
20
+ currentSubscriber = sub;
21
+ try {
22
+ return body();
23
+ } finally {
24
+ currentSubscriber = prev;
25
+ }
26
+ }
27
+ function signal(initial, opts = {}) {
28
+ const eq = opts.equals ?? Object.is;
29
+ const source = { trackingSubs: /* @__PURE__ */ new Set() };
30
+ const pushSubs = /* @__PURE__ */ new Set();
31
+ let value = initial;
32
+ let disposed = false;
33
+ function write(next) {
34
+ if (disposed) return;
35
+ if (eq(next, value)) return;
36
+ value = next;
37
+ for (const fn of pushSubs) fn(value);
38
+ notifyTracking(source);
39
+ }
40
+ return {
41
+ get() {
42
+ track(source);
43
+ return value;
44
+ },
45
+ peek() {
46
+ return value;
47
+ },
48
+ set(v) {
49
+ write(v);
50
+ },
51
+ update(fn) {
52
+ write(fn(value));
53
+ },
54
+ subscribe(fn) {
55
+ if (disposed) return () => {};
56
+ pushSubs.add(fn);
57
+ return () => {
58
+ pushSubs.delete(fn);
59
+ };
60
+ },
61
+ dispose() {
62
+ if (disposed) return;
63
+ disposed = true;
64
+ pushSubs.clear();
65
+ source.trackingSubs.clear();
66
+ }
67
+ };
68
+ }
69
+ function computed(fn, opts = {}) {
70
+ const eq = opts.equals ?? Object.is;
71
+ const source = { trackingSubs: /* @__PURE__ */ new Set() };
72
+ const pushSubs = /* @__PURE__ */ new Set();
73
+ let value;
74
+ let dirty = true;
75
+ let initialized = false;
76
+ function recompute() {
77
+ runWithSubscriber(sub, () => {
78
+ value = fn();
79
+ });
80
+ dirty = false;
81
+ initialized = true;
82
+ }
83
+ const sub = {
84
+ deps: /* @__PURE__ */ new Set(),
85
+ notify() {
86
+ if (dirty) return;
87
+ if (source.trackingSubs.size === 0 && pushSubs.size === 0) {
88
+ dirty = true;
89
+ return;
90
+ }
91
+ const prev = value;
92
+ const wasInit = initialized;
93
+ recompute();
94
+ if (!wasInit || !eq(prev, value)) {
95
+ for (const f of pushSubs) f(value);
96
+ notifyTracking(source);
97
+ }
98
+ }
99
+ };
100
+ return {
101
+ get() {
102
+ track(source);
103
+ if (dirty) recompute();
104
+ return value;
105
+ },
106
+ peek() {
107
+ if (dirty) recompute();
108
+ return value;
109
+ },
110
+ subscribe(fn) {
111
+ if (dirty) recompute();
112
+ pushSubs.add(fn);
113
+ return () => {
114
+ pushSubs.delete(fn);
115
+ };
116
+ }
117
+ };
118
+ }
119
+ const microtaskScheduler = (run) => queueMicrotask(run);
120
+ const rafScheduler = (run) => {
121
+ if (typeof requestAnimationFrame === "function") requestAnimationFrame(run);
122
+ else queueMicrotask(run);
123
+ };
124
+ let defaultScheduler = typeof requestAnimationFrame === "function" ? rafScheduler : microtaskScheduler;
125
+ function setDefaultScheduler(s) {
126
+ defaultScheduler = s;
127
+ }
128
+ function syncScheduler() {
129
+ return (run) => run();
130
+ }
131
+ function microtaskFlush() {
132
+ return microtaskScheduler;
133
+ }
134
+ function effect(fn, options = {}) {
135
+ const scheduler = options.scheduler ?? defaultScheduler;
136
+ let disposed = false;
137
+ let scheduled = false;
138
+ let cleanup;
139
+ const sub = {
140
+ deps: /* @__PURE__ */ new Set(),
141
+ notify() {
142
+ if (disposed || scheduled) return;
143
+ scheduled = true;
144
+ scheduler(() => {
145
+ scheduled = false;
146
+ if (disposed) return;
147
+ run();
148
+ });
149
+ }
150
+ };
151
+ function run() {
152
+ if (typeof cleanup === "function") {
153
+ try {
154
+ cleanup();
155
+ } catch (err) {
156
+ getLogger().error("effect cleanup threw:", err);
157
+ }
158
+ cleanup = void 0;
159
+ }
160
+ cleanup = runWithSubscriber(sub, fn);
161
+ }
162
+ run();
163
+ return () => {
164
+ if (disposed) return;
165
+ disposed = true;
166
+ clearDeps(sub);
167
+ if (typeof cleanup === "function") try {
168
+ cleanup();
169
+ } catch (err) {
170
+ getLogger().error("effect cleanup threw:", err);
171
+ }
172
+ };
173
+ }
174
+ /** Run `fn` with no current tracking context. Reads inside don't register. */
175
+ function untrack(fn) {
176
+ const prev = currentSubscriber;
177
+ currentSubscriber = null;
178
+ try {
179
+ return fn();
180
+ } finally {
181
+ currentSubscriber = prev;
182
+ }
183
+ }
184
+ function isSignal(v) {
185
+ return typeof v === "object" && v !== null && typeof v.get === "function" && typeof v.peek === "function" && typeof v.subscribe === "function";
186
+ }
187
+ function toSignal(value) {
188
+ return isSignal(value) ? value : signal(value);
189
+ }
190
+ //#endregion
191
+ export { setDefaultScheduler as a, toSignal as c, microtaskFlush as i, untrack as l, effect as n, signal as o, isSignal as r, syncScheduler as s, computed as t };
@@ -0,0 +1,2 @@
1
+ import { _ as untrack, a as ReadableSignal, c as SignalOptions, d as isSignal, f as microtaskFlush, g as toSignal, h as syncScheduler, i as EffectOptions, l as computed, m as signal, n as EffectDisposer, o as Scheduler, p as setDefaultScheduler, r as EffectFn, s as Signal, t as Computed, u as effect } from "./index-CmMZCMJT.mjs";
2
+ export { Computed, EffectDisposer, EffectFn, EffectOptions, ReadableSignal, Scheduler, Signal, SignalOptions, computed, effect, isSignal, microtaskFlush, setDefaultScheduler, signal, syncScheduler, toSignal, untrack };
@@ -0,0 +1,2 @@
1
+ import { a as setDefaultScheduler, c as toSignal, i as microtaskFlush, l as untrack, n as effect, o as signal, r as isSignal, s as syncScheduler, t as computed } from "./reactivity-B7I0pvzm.mjs";
2
+ export { computed, effect, isSignal, microtaskFlush, setDefaultScheduler, signal, syncScheduler, toSignal, untrack };