@nisli/core 0.56.0 → 0.57.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/README.md +70 -9
- package/dist/bundler/component.js +409 -0
- package/dist/bundler/component.js.map +7 -0
- package/dist/bundler/context.js +27 -0
- package/dist/bundler/context.js.map +7 -0
- package/dist/bundler/diagnostics.js +55 -0
- package/dist/bundler/diagnostics.js.map +7 -0
- package/dist/bundler/disposable.js +9 -0
- package/dist/bundler/disposable.js.map +7 -0
- package/dist/bundler/element-context.js +47 -0
- package/dist/bundler/element-context.js.map +7 -0
- package/dist/bundler/emitter.js +70 -0
- package/dist/bundler/emitter.js.map +7 -0
- package/dist/bundler/hmr/registry.js +72 -0
- package/dist/bundler/hmr/registry.js.map +7 -0
- package/dist/bundler/hmr/transform.js +30 -0
- package/dist/bundler/hmr/transform.js.map +7 -0
- package/dist/bundler/index.js +103 -0
- package/dist/bundler/index.js.map +7 -0
- package/dist/bundler/injector.js +75 -0
- package/dist/bundler/injector.js.map +7 -0
- package/dist/bundler/lifecycle.js +56 -0
- package/dist/bundler/lifecycle.js.map +7 -0
- package/dist/bundler/projection.js +92 -0
- package/dist/bundler/projection.js.map +7 -0
- package/dist/bundler/query.js +302 -0
- package/dist/bundler/query.js.map +7 -0
- package/dist/bundler/ref.js +16 -0
- package/dist/bundler/ref.js.map +7 -0
- package/dist/bundler/resource.js +99 -0
- package/dist/bundler/resource.js.map +7 -0
- package/dist/bundler/settle.js +43 -0
- package/dist/bundler/settle.js.map +7 -0
- package/dist/bundler/signal.js +403 -0
- package/dist/bundler/signal.js.map +7 -0
- package/dist/bundler/template-audit.js +162 -0
- package/dist/bundler/template-audit.js.map +7 -0
- package/dist/bundler/template.js +922 -0
- package/dist/bundler/template.js.map +7 -0
- package/dist/bundler/view-transition.js +20 -0
- package/dist/bundler/view-transition.js.map +7 -0
- package/dist/bundler/vite-hmr/plugin.js +32 -0
- package/dist/bundler/vite-hmr/plugin.js.map +7 -0
- package/dist/bundler/vite-hmr/runtime.js +8 -0
- package/dist/bundler/vite-hmr/runtime.js.map +7 -0
- package/dist/index.js +2682 -47
- package/dist/index.js.map +7 -1
- package/dist/index.production.js +2 -0
- package/dist/index.production.js.map +6 -0
- package/dist/{diagnostics.d.ts → types/diagnostics.d.ts} +8 -15
- package/dist/{template-audit.d.ts → types/template-audit.d.ts} +4 -5
- package/dist/{template.d.ts → types/template.d.ts} +2 -1
- package/package.json +15 -10
- package/dist/component.js +0 -633
- package/dist/component.js.map +0 -1
- package/dist/context.js +0 -55
- package/dist/context.js.map +0 -1
- package/dist/diagnostics.js +0 -118
- package/dist/diagnostics.js.map +0 -1
- package/dist/disposable.js +0 -8
- package/dist/disposable.js.map +0 -1
- package/dist/element-context.js +0 -108
- package/dist/element-context.js.map +0 -1
- package/dist/emitter.js +0 -91
- package/dist/emitter.js.map +0 -1
- package/dist/hmr/registry.js +0 -136
- package/dist/hmr/registry.js.map +0 -1
- package/dist/hmr/transform.js +0 -52
- package/dist/hmr/transform.js.map +0 -1
- package/dist/injector.js +0 -118
- package/dist/injector.js.map +0 -1
- package/dist/lifecycle.js +0 -117
- package/dist/lifecycle.js.map +0 -1
- package/dist/projection.js +0 -179
- package/dist/projection.js.map +0 -1
- package/dist/query.js +0 -429
- package/dist/query.js.map +0 -1
- package/dist/ref.js +0 -43
- package/dist/ref.js.map +0 -1
- package/dist/resource.js +0 -129
- package/dist/resource.js.map +0 -1
- package/dist/settle.js +0 -106
- package/dist/settle.js.map +0 -1
- package/dist/signal.js +0 -645
- package/dist/signal.js.map +0 -1
- package/dist/template-audit.js +0 -246
- package/dist/template-audit.js.map +0 -1
- package/dist/template.js +0 -1244
- package/dist/template.js.map +0 -1
- package/dist/view-transition.js +0 -98
- package/dist/view-transition.js.map +0 -1
- package/dist/vite-hmr/plugin.js +0 -62
- package/dist/vite-hmr/plugin.js.map +0 -1
- package/dist/vite-hmr/runtime.js +0 -17
- package/dist/vite-hmr/runtime.js.map +0 -1
- /package/dist/{component.d.ts → types/component.d.ts} +0 -0
- /package/dist/{context.d.ts → types/context.d.ts} +0 -0
- /package/dist/{disposable.d.ts → types/disposable.d.ts} +0 -0
- /package/dist/{element-context.d.ts → types/element-context.d.ts} +0 -0
- /package/dist/{emitter.d.ts → types/emitter.d.ts} +0 -0
- /package/dist/{hmr → types/hmr}/registry.d.ts +0 -0
- /package/dist/{hmr → types/hmr}/transform.d.ts +0 -0
- /package/dist/{index.d.ts → types/index.d.ts} +0 -0
- /package/dist/{injector.d.ts → types/injector.d.ts} +0 -0
- /package/dist/{lifecycle.d.ts → types/lifecycle.d.ts} +0 -0
- /package/dist/{projection.d.ts → types/projection.d.ts} +0 -0
- /package/dist/{query.d.ts → types/query.d.ts} +0 -0
- /package/dist/{ref.d.ts → types/ref.d.ts} +0 -0
- /package/dist/{resource.d.ts → types/resource.d.ts} +0 -0
- /package/dist/{settle.d.ts → types/settle.d.ts} +0 -0
- /package/dist/{signal.d.ts → types/signal.d.ts} +0 -0
- /package/dist/{view-transition.d.ts → types/view-transition.d.ts} +0 -0
- /package/dist/{vite-hmr → types/vite-hmr}/plugin.d.ts +0 -0
- /package/dist/{vite-hmr → types/vite-hmr}/runtime.d.ts +0 -0
package/dist/settle.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* settle.ts — Awaitable async quiescence (ADR 0030.2 T2).
|
|
3
|
-
*
|
|
4
|
-
* `await settle()` resolves when every framework-started logical async
|
|
5
|
-
* request has TERMINATED and the reactive graph is quiescent. Query runs
|
|
6
|
-
* (query.ts) and resource loads (resource.ts) enroll here when they start
|
|
7
|
-
* and deregister at *termination* — commit, terminal error after retries,
|
|
8
|
-
* or abort — never at raw promise settlement. An abort-ignoring fetcher
|
|
9
|
-
* whose run was superseded therefore cannot wedge `settle()`: the run's
|
|
10
|
-
* registry entry closed at the abort even though the underlying promise
|
|
11
|
-
* never resolves.
|
|
12
|
-
*
|
|
13
|
-
* ```ts
|
|
14
|
-
* mount(app);
|
|
15
|
-
* await settle();
|
|
16
|
-
* expect(screen.textContent).toContain('loaded'); // no waitFor polling
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* Contract and bounds:
|
|
20
|
-
* - This is a **test/verify primitive** (and the SSG pre-snapshot barrier).
|
|
21
|
-
* Awaiting it in a live app with continuous background refetch/polling is
|
|
22
|
-
* unbounded *by design* — each commit may legally schedule the next
|
|
23
|
-
* request. A scope argument waits for a second consumer (ADR 0030.2 §8).
|
|
24
|
-
* - Each iteration awaits the pending registry, then `tick()` (signal.ts's
|
|
25
|
-
* bounded microtask-drain contract). Timer-scheduled work is NOT awaited
|
|
26
|
-
* beyond what a pending logical request itself spans.
|
|
27
|
-
* - Iteration-capped at 50 like `tick()`; hitting the cap emits diagnostic
|
|
28
|
-
* N603 and resolves — never a silent hang, never an unbounded loop.
|
|
29
|
-
*
|
|
30
|
-
* MERGE ITEM: `__resetPending()` should be folded into `resetInjector()`
|
|
31
|
-
* (injector.ts is owned by another worktree); until then test teardown
|
|
32
|
-
* calls it directly.
|
|
33
|
-
*/
|
|
34
|
-
import { tick } from './signal.js';
|
|
35
|
-
// ── Pending logical-request registry ────────────────────────────────
|
|
36
|
-
/**
|
|
37
|
-
* One entry per in-flight logical request. The promise is a *termination*
|
|
38
|
-
* promise resolved by the enroller's `done()` callback — deliberately not
|
|
39
|
-
* the fetcher/loader promise itself (see module doc).
|
|
40
|
-
*/
|
|
41
|
-
const pending = new Set();
|
|
42
|
-
/**
|
|
43
|
-
* Enroll a logical async request. Returns its `done()` terminator: call it
|
|
44
|
-
* at commit, terminal error, or abort. Idempotent — a superseded run whose
|
|
45
|
-
* terminator was already invoked by the superseding path may safely call
|
|
46
|
-
* it again from its own settlement branch.
|
|
47
|
-
*
|
|
48
|
-
* @internal — called by query.ts runs and resource.ts loader generations.
|
|
49
|
-
*/
|
|
50
|
-
export function __enrollPending() {
|
|
51
|
-
let resolve;
|
|
52
|
-
const entry = new Promise((res) => { resolve = res; });
|
|
53
|
-
pending.add(entry);
|
|
54
|
-
let done = false;
|
|
55
|
-
return () => {
|
|
56
|
-
if (done)
|
|
57
|
-
return;
|
|
58
|
-
done = true;
|
|
59
|
-
pending.delete(entry);
|
|
60
|
-
resolve();
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Reset the registry. Test-teardown escape hatch: entries orphaned by a
|
|
65
|
-
* test that never terminated its fetchers would otherwise leak into the
|
|
66
|
-
* next test's `settle()`.
|
|
67
|
-
*
|
|
68
|
-
* @internal
|
|
69
|
-
*/
|
|
70
|
-
export function __resetPending() {
|
|
71
|
-
pending.clear();
|
|
72
|
-
}
|
|
73
|
-
/** Current number of enrolled (unterminated) logical requests. @internal */
|
|
74
|
-
export function __pendingCount() {
|
|
75
|
-
return pending.size;
|
|
76
|
-
}
|
|
77
|
-
// ── Diagnostics + test isolation ────────────────────────────────────
|
|
78
|
-
// Reporting goes through the core diagnostics leaf. The pending registry
|
|
79
|
-
// self-registers with resetInjector() so test teardown clears it without
|
|
80
|
-
// an upside-down import (settle → injector, never the reverse).
|
|
81
|
-
import { diag, isDev } from './diagnostics.js';
|
|
82
|
-
import { registerResetHook } from './injector.js';
|
|
83
|
-
registerResetHook(__resetPending);
|
|
84
|
-
// ── settle() ────────────────────────────────────────────────────────
|
|
85
|
-
/**
|
|
86
|
-
* Await async quiescence: loop `tick()` → `Promise.allSettled(pending)`
|
|
87
|
-
* until a full `tick()` leaves the pending registry empty.
|
|
88
|
-
*
|
|
89
|
-
* The `tick()` *first* ordering matters: observer effects created since
|
|
90
|
-
* the last flush are what *start* runs (and enroll them) — the registry
|
|
91
|
-
* can only be trusted empty after the reactive graph has flushed.
|
|
92
|
-
*/
|
|
93
|
-
export async function settle() {
|
|
94
|
-
for (let i = 0; i < 50; i++) {
|
|
95
|
-
await tick();
|
|
96
|
-
if (pending.size === 0)
|
|
97
|
-
return;
|
|
98
|
-
await Promise.allSettled([...pending]);
|
|
99
|
-
}
|
|
100
|
-
if (isDev())
|
|
101
|
-
diag('N603', 'settle() did not reach quiescence within 50 iterations — something '
|
|
102
|
-
+ 'keeps scheduling new async work (a self-invalidating query or a '
|
|
103
|
-
+ 'polling loop?). settle() is a test/verify primitive; under live '
|
|
104
|
-
+ 'background refetch it is unbounded by design. Returning anyway.');
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=settle.js.map
|
package/dist/settle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settle.js","sourceRoot":"","sources":["../src/settle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,uEAAuE;AAEvE;;;;GAIG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,OAAoB,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,GAAG,EAAE;QACV,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,gEAAgE;AAChE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,iBAAiB,CAAC,cAAc,CAAC,CAAC;AAElC,uEAAuE;AAEvE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAC/B,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,EAAE;QAAE,IAAI,CACf,MAAM,EACN,qEAAqE;cACnE,kEAAkE;cAClE,kEAAkE;cAClE,iEAAiE,CACpE,CAAC;AACJ,CAAC"}
|