@effect-app/vue 4.0.4 → 4.0.6
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/CHANGELOG.md +26 -0
- package/dist/atomQuery.d.ts.map +1 -1
- package/dist/atomQuery.js +48 -41
- package/dist/dependencyMetadata.d.ts.map +1 -1
- package/dist/dependencyMetadata.js +18 -16
- package/dist/liveQueryInvalidation.d.ts +13 -0
- package/dist/liveQueryInvalidation.d.ts.map +1 -1
- package/dist/liveQueryInvalidation.js +340 -63
- package/package.json +2 -2
- package/src/atomQuery.ts +61 -43
- package/src/dependencyMetadata.ts +19 -14
- package/src/liveQueryInvalidation.ts +337 -58
- package/test/dist/liveQueryLifecycle.test.d.ts.map +1 -0
- package/test/liveQueryInvalidation.test.ts +198 -5
- package/test/liveQueryLifecycle.test.ts +507 -0
|
@@ -1,115 +1,392 @@
|
|
|
1
1
|
import { DataDependencies } from "effect-app/client";
|
|
2
|
-
import * as
|
|
3
|
-
|
|
2
|
+
import * as MutableHashMap from "effect/MutableHashMap";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
const entries = MutableHashMap.empty();
|
|
5
|
+
const fetches = new WeakMap();
|
|
6
|
+
/** One shared `ready()` call per epoch; waiters detach on abort so none accumulate on the promise. */
|
|
7
|
+
let observation;
|
|
4
8
|
let source;
|
|
5
9
|
let unsubscribe;
|
|
6
|
-
let
|
|
7
|
-
let
|
|
10
|
+
let subscribing = false;
|
|
11
|
+
let epoch = 0;
|
|
12
|
+
// a synchronous refresh can remove or replace registrations while dispatching
|
|
13
|
+
const isCurrent = (entry) => Option.getOrUndefined(MutableHashMap.get(entries, entry.key)) === entry;
|
|
14
|
+
const forEachCurrent = (f) => {
|
|
15
|
+
for (const entry of Array.from(MutableHashMap.values(entries))) {
|
|
16
|
+
if (isCurrent(entry))
|
|
17
|
+
f(entry);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
8
20
|
const invalidateEntry = (entry) => {
|
|
9
21
|
entry.timer = undefined;
|
|
10
|
-
|
|
22
|
+
if (isCurrent(entry))
|
|
23
|
+
source?.invalidate([entry.key]);
|
|
24
|
+
};
|
|
25
|
+
// (re)arm for the strictest observer; a stricter observer or write can only bring the deadline forward
|
|
26
|
+
const arm = (entry) => {
|
|
27
|
+
const deadline = entry.firstWriteAt + Math.min(...entry.delays.keys());
|
|
28
|
+
if (entry.timer !== undefined) {
|
|
29
|
+
if (entry.deadline <= deadline)
|
|
30
|
+
return;
|
|
31
|
+
clearTimeout(entry.timer);
|
|
32
|
+
entry.timer = undefined;
|
|
33
|
+
}
|
|
34
|
+
entry.deadline = deadline;
|
|
35
|
+
const wait = deadline - Date.now();
|
|
36
|
+
if (wait <= 0)
|
|
37
|
+
return invalidateEntry(entry);
|
|
38
|
+
entry.timer = setTimeout(() => invalidateEntry(entry), wait);
|
|
11
39
|
};
|
|
12
40
|
const schedule = (entry) => {
|
|
41
|
+
if (entry.timer === undefined)
|
|
42
|
+
entry.firstWriteAt = Date.now();
|
|
43
|
+
arm(entry);
|
|
44
|
+
};
|
|
45
|
+
// catch-up replaces a refetch, so it bypasses write coalescing; a running refetch makes SWR skip its own
|
|
46
|
+
const invalidateNow = (entry) => {
|
|
47
|
+
if (entry.discovering > 0)
|
|
48
|
+
return void (entry.dirty = true);
|
|
13
49
|
if (entry.timer !== undefined)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (maxDelayMs <= 0)
|
|
17
|
-
return invalidateEntry(entry);
|
|
18
|
-
entry.timer = setTimeout(() => invalidateEntry(entry), maxDelayMs);
|
|
50
|
+
clearTimeout(entry.timer);
|
|
51
|
+
invalidateEntry(entry);
|
|
19
52
|
};
|
|
20
|
-
const
|
|
53
|
+
const receive = (writes) => {
|
|
21
54
|
if (!DataDependencies.isNonEmpty(writes))
|
|
22
55
|
return;
|
|
23
|
-
|
|
24
|
-
if (
|
|
56
|
+
forEachCurrent((entry) => {
|
|
57
|
+
if (entry.discovering > 0)
|
|
58
|
+
entry.buffered = DataDependencies.merge(entry.buffered, writes);
|
|
59
|
+
else if (DataDependencies.intersects(entry.reads(), writes))
|
|
25
60
|
schedule(entry);
|
|
26
|
-
}
|
|
61
|
+
});
|
|
27
62
|
};
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
63
|
+
const reset = () => {
|
|
64
|
+
forEachCurrent((entry) => {
|
|
65
|
+
if (entry.discovering > 0)
|
|
66
|
+
entry.dirty = true;
|
|
67
|
+
else if (DataDependencies.isNonEmpty(entry.reads()))
|
|
68
|
+
schedule(entry);
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
const settle = (current, outcome) => {
|
|
72
|
+
if (observation === current)
|
|
73
|
+
observation = undefined;
|
|
74
|
+
if (current.epoch !== epoch)
|
|
31
75
|
return;
|
|
76
|
+
const waiters = Array.from(current.waiters);
|
|
77
|
+
current.waiters.clear();
|
|
78
|
+
for (const f of waiters)
|
|
79
|
+
f(outcome);
|
|
80
|
+
};
|
|
81
|
+
const observeReady = (waiter) => {
|
|
82
|
+
let current = observation;
|
|
83
|
+
if (current === undefined || current.epoch !== epoch) {
|
|
84
|
+
const started = { epoch, waiters: new Set([waiter]) };
|
|
85
|
+
current = observation = started;
|
|
86
|
+
// the waiter is attached first: `ready()` may reconfigure synchronously
|
|
87
|
+
let ready;
|
|
88
|
+
try {
|
|
89
|
+
ready = source?.ready() ?? Promise.resolve();
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
ready = Promise.reject(error);
|
|
93
|
+
}
|
|
94
|
+
ready.then(() => settle(started, { _tag: "ready" }), (error) => settle(started, { _tag: "failed", error }));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
current.waiters.add(waiter);
|
|
32
98
|
}
|
|
33
|
-
|
|
99
|
+
const observed = current;
|
|
100
|
+
return () => observed.waiters.delete(waiter);
|
|
34
101
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
102
|
+
/** Whether the current source became ready before being replaced; rejects with its error or on abort. */
|
|
103
|
+
const readyOnce = (signal) => new Promise((resolve, reject) => {
|
|
104
|
+
if (signal?.aborted === true)
|
|
105
|
+
return reject(signal.reason);
|
|
106
|
+
if (source === undefined)
|
|
107
|
+
return resolve(true);
|
|
108
|
+
let detach;
|
|
109
|
+
let aborted = false;
|
|
110
|
+
const onAbort = () => {
|
|
111
|
+
aborted = true;
|
|
112
|
+
detach?.();
|
|
113
|
+
reject(signal?.reason);
|
|
114
|
+
};
|
|
115
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
116
|
+
// `ready()` may abort synchronously, before `detach` exists
|
|
117
|
+
detach = observeReady((outcome) => {
|
|
118
|
+
signal?.removeEventListener("abort", onAbort);
|
|
119
|
+
if (outcome._tag === "failed")
|
|
120
|
+
reject(outcome.error);
|
|
121
|
+
else
|
|
122
|
+
resolve(outcome._tag === "ready");
|
|
123
|
+
});
|
|
124
|
+
if (aborted)
|
|
125
|
+
detach();
|
|
126
|
+
});
|
|
127
|
+
/** Resolves with the epoch whose readiness was observed; a reconfigured source supersedes the wait. */
|
|
128
|
+
const waitReady = async (signal) => {
|
|
129
|
+
const target = epoch;
|
|
130
|
+
let ready;
|
|
131
|
+
try {
|
|
132
|
+
ready = await readyOnce(signal);
|
|
40
133
|
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
// a reconfiguration can run between settlement and this continuation
|
|
136
|
+
if (epoch === target || signal?.aborted === true)
|
|
137
|
+
throw error;
|
|
138
|
+
return waitReady(signal);
|
|
139
|
+
}
|
|
140
|
+
return ready && epoch === target ? target : waitReady(signal);
|
|
141
|
+
};
|
|
142
|
+
const cancelCatchUp = (entry) => {
|
|
143
|
+
entry.catchUp?.abort();
|
|
144
|
+
entry.catchUp = undefined;
|
|
145
|
+
};
|
|
146
|
+
// a reconfigured source restarts it; a live fetch or unregistering cancels it
|
|
147
|
+
const catchUp = (entry) => {
|
|
148
|
+
cancelCatchUp(entry);
|
|
149
|
+
if (source === undefined)
|
|
150
|
+
return;
|
|
151
|
+
const target = epoch;
|
|
152
|
+
const controller = new AbortController();
|
|
153
|
+
entry.catchUp = controller;
|
|
154
|
+
readyOnce(controller.signal).then((ready) => {
|
|
155
|
+
if (entry.catchUp === controller)
|
|
156
|
+
entry.catchUp = undefined;
|
|
157
|
+
if (!ready || epoch !== target || !isCurrent(entry))
|
|
158
|
+
return;
|
|
159
|
+
if (entry.awaitingReady === 0 && entry.coveredEpoch !== target)
|
|
160
|
+
invalidateNow(entry);
|
|
161
|
+
}, () => { });
|
|
162
|
+
};
|
|
163
|
+
const unsubscribeNow = () => {
|
|
164
|
+
const current = unsubscribe;
|
|
165
|
+
unsubscribe = undefined;
|
|
166
|
+
current?.();
|
|
41
167
|
};
|
|
42
168
|
const ensureSubscribed = () => {
|
|
43
|
-
if (unsubscribe
|
|
44
|
-
|
|
169
|
+
if (unsubscribe !== undefined || subscribing || source === undefined || MutableHashMap.size(entries) === 0)
|
|
170
|
+
return;
|
|
171
|
+
const target = epoch;
|
|
172
|
+
const active = () => epoch === target;
|
|
173
|
+
subscribing = true;
|
|
174
|
+
let handle;
|
|
175
|
+
try {
|
|
176
|
+
handle = source.subscribe((writes) => {
|
|
177
|
+
if (active())
|
|
178
|
+
receive(writes);
|
|
179
|
+
}, () => {
|
|
180
|
+
if (active())
|
|
181
|
+
reset();
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
subscribing = false;
|
|
186
|
+
}
|
|
187
|
+
if (!active() || MutableHashMap.size(entries) === 0) {
|
|
188
|
+
handle();
|
|
189
|
+
return ensureSubscribed();
|
|
45
190
|
}
|
|
191
|
+
unsubscribe = handle;
|
|
46
192
|
};
|
|
47
193
|
export const configureLiveQueryInvalidation = (next) => {
|
|
48
|
-
|
|
49
|
-
unsubscribe = undefined;
|
|
194
|
+
unsubscribeNow();
|
|
50
195
|
source = next;
|
|
196
|
+
epoch++;
|
|
197
|
+
const previous = observation;
|
|
198
|
+
observation = undefined;
|
|
199
|
+
if (previous !== undefined) {
|
|
200
|
+
const waiters = Array.from(previous.waiters);
|
|
201
|
+
previous.waiters.clear();
|
|
202
|
+
for (const f of waiters)
|
|
203
|
+
f({ _tag: "switched" });
|
|
204
|
+
}
|
|
51
205
|
ensureSubscribed();
|
|
206
|
+
forEachCurrent(catchUp);
|
|
52
207
|
};
|
|
53
208
|
export const registerLiveQuery = (key, reads, options) => {
|
|
54
|
-
const hash = Hash.hash(key);
|
|
55
209
|
const delay = options.maxDelayMs ?? 0;
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
|
|
59
|
-
|
|
210
|
+
let entry = Option.getOrUndefined(MutableHashMap.get(entries, key));
|
|
211
|
+
if (entry !== undefined) {
|
|
212
|
+
entry.observers++;
|
|
213
|
+
entry.delays.set(delay, (entry.delays.get(delay) ?? 0) + 1);
|
|
214
|
+
if (entry.timer !== undefined)
|
|
215
|
+
arm(entry);
|
|
60
216
|
}
|
|
61
217
|
else {
|
|
62
|
-
|
|
218
|
+
entry = {
|
|
63
219
|
key,
|
|
64
220
|
reads,
|
|
65
221
|
observers: 1,
|
|
66
222
|
delays: new Map([[delay, 1]]),
|
|
67
|
-
timer: undefined
|
|
68
|
-
|
|
223
|
+
timer: undefined,
|
|
224
|
+
firstWriteAt: 0,
|
|
225
|
+
deadline: 0,
|
|
226
|
+
discovering: 0,
|
|
227
|
+
awaitingReady: 0,
|
|
228
|
+
buffered: DataDependencies.empty(),
|
|
229
|
+
dirty: false,
|
|
230
|
+
coveredEpoch: -1,
|
|
231
|
+
catchUp: undefined
|
|
232
|
+
};
|
|
233
|
+
MutableHashMap.set(entries, key, entry);
|
|
234
|
+
ensureSubscribed();
|
|
235
|
+
// writes missed while unsubscribed (cached result, or a fetch that started before this registration)
|
|
236
|
+
catchUp(entry);
|
|
69
237
|
}
|
|
70
|
-
|
|
238
|
+
const registered = entry;
|
|
239
|
+
let active = true;
|
|
71
240
|
return () => {
|
|
72
|
-
|
|
73
|
-
if (entry === undefined)
|
|
241
|
+
if (!active)
|
|
74
242
|
return;
|
|
75
|
-
|
|
243
|
+
active = false;
|
|
244
|
+
const delayObservers = registered.delays.get(delay) ?? 0;
|
|
76
245
|
if (delayObservers <= 1)
|
|
77
|
-
|
|
246
|
+
registered.delays.delete(delay);
|
|
78
247
|
else
|
|
79
|
-
|
|
80
|
-
if (--
|
|
248
|
+
registered.delays.set(delay, delayObservers - 1);
|
|
249
|
+
if (--registered.observers > 0)
|
|
81
250
|
return;
|
|
82
|
-
if (
|
|
83
|
-
clearTimeout(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
251
|
+
if (registered.timer !== undefined)
|
|
252
|
+
clearTimeout(registered.timer);
|
|
253
|
+
registered.timer = undefined;
|
|
254
|
+
cancelCatchUp(registered);
|
|
255
|
+
if (isCurrent(registered))
|
|
256
|
+
MutableHashMap.remove(entries, key);
|
|
257
|
+
if (MutableHashMap.size(entries) === 0)
|
|
258
|
+
unsubscribeNow();
|
|
90
259
|
};
|
|
91
260
|
};
|
|
261
|
+
/** Synchronously starts a live fetch for a registered key; release it with `releaseLiveQueryFetch` on every exit. */
|
|
262
|
+
export const acquireLiveQueryFetch = (key) => {
|
|
263
|
+
const entry = Option.getOrUndefined(MutableHashMap.get(entries, key));
|
|
264
|
+
if (entry === undefined || source === undefined)
|
|
265
|
+
return undefined;
|
|
266
|
+
entry.discovering++;
|
|
267
|
+
entry.awaitingReady++;
|
|
268
|
+
// this fetch awaits readiness itself, covering the epoch the catch-up was waiting for
|
|
269
|
+
cancelCatchUp(entry);
|
|
270
|
+
const fetch = { key };
|
|
271
|
+
fetches.set(fetch, { entry, awaiting: true, released: false });
|
|
272
|
+
return fetch;
|
|
273
|
+
};
|
|
274
|
+
const stopAwaiting = (state) => {
|
|
275
|
+
if (!state.awaiting)
|
|
276
|
+
return;
|
|
277
|
+
state.awaiting = false;
|
|
278
|
+
state.entry.awaitingReady--;
|
|
279
|
+
};
|
|
280
|
+
/** Waits until writes after this point reach the fetch; abort to stop waiting. */
|
|
281
|
+
export const awaitLiveQueryFetch = async (fetch, signal) => {
|
|
282
|
+
const state = fetches.get(fetch);
|
|
283
|
+
if (state === undefined || state.released)
|
|
284
|
+
return;
|
|
285
|
+
try {
|
|
286
|
+
// every `await` is a gap in which the source can be switched: only settle for a still-current epoch
|
|
287
|
+
for (;;) {
|
|
288
|
+
const target = epoch;
|
|
289
|
+
let ready;
|
|
290
|
+
try {
|
|
291
|
+
ready = await waitReady(signal);
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
if (signal?.aborted === true || epoch === target)
|
|
295
|
+
throw error;
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
if (ready !== epoch)
|
|
299
|
+
continue;
|
|
300
|
+
state.entry.coveredEpoch = Math.max(state.entry.coveredEpoch, ready);
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
finally {
|
|
305
|
+
stopAwaiting(state);
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
export const releaseLiveQueryFetch = (fetch) => {
|
|
309
|
+
const state = fetches.get(fetch);
|
|
310
|
+
if (state === undefined || state.released)
|
|
311
|
+
return;
|
|
312
|
+
state.released = true;
|
|
313
|
+
stopAwaiting(state);
|
|
314
|
+
state.entry.discovering--;
|
|
315
|
+
finishDiscovery(state.entry);
|
|
316
|
+
};
|
|
317
|
+
const finishDiscovery = (entry) => {
|
|
318
|
+
if (entry.discovering > 0 || !isCurrent(entry))
|
|
319
|
+
return;
|
|
320
|
+
const { buffered, dirty } = entry;
|
|
321
|
+
entry.buffered = DataDependencies.empty();
|
|
322
|
+
entry.dirty = false;
|
|
323
|
+
if (dirty || DataDependencies.intersects(entry.reads(), buffered))
|
|
324
|
+
schedule(entry);
|
|
325
|
+
};
|
|
326
|
+
/** Waits for the current source; a reconfigured source supersedes a pending wait on the previous one. */
|
|
327
|
+
export const liveQueryReady = async () => {
|
|
328
|
+
for (;;) {
|
|
329
|
+
const target = epoch;
|
|
330
|
+
try {
|
|
331
|
+
if (await waitReady() === epoch)
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
if (epoch === target)
|
|
336
|
+
throw error;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
// Boolean callers cannot say which fetch ended: their entries keep buffering until every legacy fetch has
|
|
341
|
+
// ended. Other queries are unaffected; bookkeeping is per entry, not per call.
|
|
342
|
+
const legacyEntries = new Map();
|
|
343
|
+
let legacyDiscovering = 0;
|
|
344
|
+
/** @deprecated Waits for all concurrent legacy fetches; use `acquireLiveQueryFetch` + `awaitLiveQueryFetch`. */
|
|
92
345
|
export const beginLiveQueryFetch = async (key) => {
|
|
93
|
-
|
|
346
|
+
const fetch = acquireLiveQueryFetch(key);
|
|
347
|
+
const state = fetch && fetches.get(fetch);
|
|
348
|
+
if (fetch === undefined || state === undefined)
|
|
94
349
|
return false;
|
|
95
|
-
|
|
350
|
+
// hand the discovery count over to the legacy barrier
|
|
351
|
+
state.released = true;
|
|
352
|
+
legacyDiscovering++;
|
|
353
|
+
legacyEntries.set(state.entry, (legacyEntries.get(state.entry) ?? 0) + 1);
|
|
96
354
|
try {
|
|
97
|
-
|
|
98
|
-
|
|
355
|
+
for (;;) {
|
|
356
|
+
const target = epoch;
|
|
357
|
+
let ready;
|
|
358
|
+
try {
|
|
359
|
+
ready = await waitReady();
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
if (epoch === target)
|
|
363
|
+
throw error;
|
|
364
|
+
continue;
|
|
365
|
+
}
|
|
366
|
+
if (ready !== epoch)
|
|
367
|
+
continue;
|
|
368
|
+
state.entry.coveredEpoch = Math.max(state.entry.coveredEpoch, ready);
|
|
369
|
+
break;
|
|
370
|
+
}
|
|
99
371
|
}
|
|
100
372
|
catch (error) {
|
|
101
|
-
|
|
373
|
+
endLiveQueryFetch(true);
|
|
102
374
|
throw error;
|
|
103
375
|
}
|
|
376
|
+
finally {
|
|
377
|
+
stopAwaiting(state);
|
|
378
|
+
}
|
|
379
|
+
return true;
|
|
104
380
|
};
|
|
381
|
+
/** @deprecated Pairs with `beginLiveQueryFetch`; use `releaseLiveQueryFetch`. */
|
|
105
382
|
export const endLiveQueryFetch = (wasLive) => {
|
|
106
|
-
if (!wasLive)
|
|
383
|
+
if (!wasLive || legacyDiscovering === 0 || --legacyDiscovering > 0)
|
|
107
384
|
return;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
385
|
+
const ended = Array.from(legacyEntries);
|
|
386
|
+
legacyEntries.clear();
|
|
387
|
+
for (const [entry, count] of ended) {
|
|
388
|
+
entry.discovering -= count;
|
|
389
|
+
finishDiscovery(entry);
|
|
390
|
+
}
|
|
114
391
|
};
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZVF1ZXJ5SW52YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xpdmVRdWVyeUludmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQTtBQXlCbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUE7QUFDakQsSUFBSSxNQUErQyxDQUFBO0FBQ25ELElBQUksV0FBcUMsQ0FBQTtBQUN6QyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUE7QUFDbkIsSUFBSSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUE7QUFFN0MsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUU7SUFDaEQsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUE7SUFDdkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBQ2pDLENBQUMsQ0FBQTtBQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO0lBQ3pDLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTTtJQUNyQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELElBQUksVUFBVSxJQUFJLENBQUM7UUFBRSxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsRCxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUE7QUFDcEUsQ0FBQyxDQUFBO0FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUF5QyxFQUFFLEVBQUU7SUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFNO0lBQ2hELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDckMsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQztZQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6RSxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUF5QyxFQUFFLEVBQUU7SUFDNUQsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDL0QsT0FBTTtJQUNSLENBQUM7SUFDRCxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDbEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO0lBQ2pCLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN6QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7SUFDNUIsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxRSxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDaEQsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLENBQUMsSUFBaUMsRUFBRSxFQUFFO0lBQ2xGLFdBQVcsRUFBRSxFQUFFLENBQUE7SUFDZixXQUFXLEdBQUcsU0FBUyxDQUFBO0lBQ3ZCLE1BQU0sR0FBRyxJQUFJLENBQUE7SUFDYixnQkFBZ0IsRUFBRSxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLEdBQTJCLEVBQzNCLEtBQThDLEVBQzlDLE9BQXlCLEVBQ3pCLEVBQUU7SUFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDaEIsR0FBRztZQUNILEtBQUs7WUFDTCxTQUFTLEVBQUUsQ0FBQztZQUNaLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsS0FBSyxFQUFFLFNBQVM7U0FDakIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELGdCQUFnQixFQUFFLENBQUE7SUFFbEIsT0FBTyxHQUFHLEVBQUU7UUFDVixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9CLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFNO1FBQy9CLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuRCxJQUFJLGNBQWMsSUFBSSxDQUFDO1lBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7O1lBQzlDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDaEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQztZQUFFLE9BQU07UUFDakMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLFdBQVcsRUFBRSxFQUFFLENBQUE7WUFDZixXQUFXLEdBQUcsU0FBUyxDQUFBO1lBQ3ZCLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUMzQyxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxFQUFFLEdBQTJCLEVBQUUsRUFBRTtJQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxLQUFLLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN0RSxXQUFXLEVBQUUsQ0FBQTtJQUNiLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3BCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixXQUFXLEVBQUUsQ0FBQTtRQUNiLE1BQU0sS0FBSyxDQUFBO0lBQ2IsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO0lBQ3BELElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTTtJQUNwQixXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzFDLElBQUksV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7UUFBRSxPQUFNO0lBQzNFLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQTtJQUM3QixjQUFjLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDekMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ2xCLENBQUMsQ0FBQSJ9
|
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZVF1ZXJ5SW52YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xpdmVRdWVyeUludmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNwRCxPQUFPLEtBQUssY0FBYyxNQUFNLHVCQUF1QixDQUFBO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBaUR2QyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxFQUEwQyxDQUFBO0FBQzlFLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUE4QixDQUFBO0FBS3pELHNHQUFzRztBQUN0RyxJQUFJLFdBQTJHLENBQUE7QUFDL0csSUFBSSxNQUErQyxDQUFBO0FBQ25ELElBQUksV0FBcUMsQ0FBQTtBQUN6QyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUE7QUFDdkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFBO0FBRWIsOEVBQThFO0FBQzlFLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUE7QUFFcEgsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFrQyxFQUFFLEVBQUU7SUFDNUQsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9ELElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQztZQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEVBQUU7SUFDaEQsS0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/vue",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"@vueuse/core": "^14.3.0",
|
|
16
16
|
"change-case": "^5.4.4",
|
|
17
17
|
"query-string": "^9.4.0",
|
|
18
|
-
"effect-app": "4.0.
|
|
18
|
+
"effect-app": "4.0.6"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"@effect/atom-vue": "^4.0.6",
|