@nisli/core 0.55.0 → 0.57.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.
- package/README.md +58 -1
- 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 +847 -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 +2607 -44
- 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/{index.d.ts → types/index.d.ts} +1 -0
- package/dist/{template-audit.d.ts → types/template-audit.d.ts} +4 -5
- package/dist/{template.d.ts → types/template.d.ts} +3 -15
- package/package.json +12 -9
- 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 -1218
- 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/{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/component.js
DELETED
|
@@ -1,633 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* component.ts — Web component shell with typed props and factory composition
|
|
3
|
-
*
|
|
4
|
-
* `component()` is the single entry point for defining components.
|
|
5
|
-
* It registers a custom element and returns a typed factory function.
|
|
6
|
-
*
|
|
7
|
-
* Component authors write a setup function that receives typed props
|
|
8
|
-
* (each wrapped as a Signal) and optionally the host element.
|
|
9
|
-
* The setup function returns a TemplateResult from html`...`.
|
|
10
|
-
*
|
|
11
|
-
* The class internals (connectedCallback, etc.) are completely hidden.
|
|
12
|
-
*/
|
|
13
|
-
import { signal, effect, setContextHook, isSignal, untrack } from './signal.js';
|
|
14
|
-
import { runWithContext, hasContext, getCurrentComponent } from './context.js';
|
|
15
|
-
import { runMountCallbacks } from './lifecycle.js';
|
|
16
|
-
import { diag, formatDiag, isDev } from './diagnostics.js';
|
|
17
|
-
// Wire up effect auto-disposal: when effect() is called during component setup,
|
|
18
|
-
// auto-register the dispose function with the component host.
|
|
19
|
-
setContextHook(() => {
|
|
20
|
-
if (hasContext()) {
|
|
21
|
-
const comp = getCurrentComponent();
|
|
22
|
-
return (disposer) => comp.addDisposer(disposer);
|
|
23
|
-
}
|
|
24
|
-
return null;
|
|
25
|
-
});
|
|
26
|
-
const camelToKebab = (s) => s.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);
|
|
27
|
-
const declType = (decl) => typeof decl === 'string' ? decl : decl.type;
|
|
28
|
-
/** The observed attribute name: an explicit `attr` override, else kebab(key). */
|
|
29
|
-
const declAttrName = (key, decl) => typeof decl === 'object' && decl.attr ? decl.attr : camelToKebab(key);
|
|
30
|
-
/** Resolve a raw attribute string (or null when absent) to the prop value. */
|
|
31
|
-
function resolveAttrValue(decl, raw) {
|
|
32
|
-
const t = declType(decl);
|
|
33
|
-
if (t === 'boolean') {
|
|
34
|
-
const def = typeof decl === 'object' && 'default' in decl && decl.default !== undefined
|
|
35
|
-
? decl.default
|
|
36
|
-
: false;
|
|
37
|
-
if (raw === null)
|
|
38
|
-
return def; // absent → declared default (else false)
|
|
39
|
-
return raw !== 'false'; // bare/any → true, literal "false" → false
|
|
40
|
-
}
|
|
41
|
-
if (t === 'number') {
|
|
42
|
-
const def = typeof decl === 'object' && 'default' in decl ? decl.default : undefined;
|
|
43
|
-
if (raw === null)
|
|
44
|
-
return def; // absent → declared default (else undefined)
|
|
45
|
-
const n = Number(raw);
|
|
46
|
-
// Garbage behaves as ABSENT → the declared default (else undefined). A
|
|
47
|
-
// default exists to guarantee non-undefined; letting garbage fall to
|
|
48
|
-
// literal undefined would reintroduce exactly what the default prevents.
|
|
49
|
-
return Number.isNaN(n) ? def : n;
|
|
50
|
-
}
|
|
51
|
-
// 'string' | 'forward'
|
|
52
|
-
if (raw === null) {
|
|
53
|
-
return typeof decl === 'object' && 'default' in decl ? decl.default : undefined;
|
|
54
|
-
}
|
|
55
|
-
return raw;
|
|
56
|
-
}
|
|
57
|
-
// ── Internal component host ─────────────────────────────────────────
|
|
58
|
-
class ComponentHostImpl {
|
|
59
|
-
element;
|
|
60
|
-
disposers = [];
|
|
61
|
-
setupComplete = false;
|
|
62
|
-
constructor(element) {
|
|
63
|
-
this.element = element;
|
|
64
|
-
}
|
|
65
|
-
addDisposer(fn) {
|
|
66
|
-
this.disposers.push(fn);
|
|
67
|
-
}
|
|
68
|
-
dispose() {
|
|
69
|
-
for (const fn of this.disposers) {
|
|
70
|
-
try {
|
|
71
|
-
fn();
|
|
72
|
-
}
|
|
73
|
-
catch (_) { /* swallow disposal errors */ }
|
|
74
|
-
}
|
|
75
|
-
this.disposers.length = 0;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// ── Prop signal management via Proxy ────────────────────────────────
|
|
79
|
-
/**
|
|
80
|
-
* Creates a Proxy-based props object that lazily creates signals
|
|
81
|
-
* for each property on first access. When a parent sets a property
|
|
82
|
-
* on the element, the Proxy intercepts it and updates (or creates)
|
|
83
|
-
* the backing signal.
|
|
84
|
-
*/
|
|
85
|
-
function createPropsProxy() {
|
|
86
|
-
const signals = new Map();
|
|
87
|
-
// Keys the component has READ through the proxy, accumulated over the
|
|
88
|
-
// COMPONENT LIFETIME (the proxy is constructor-owned and survives
|
|
89
|
-
// remounts/HMR swaps, so a re-setup never false-positives). This is the
|
|
90
|
-
// truth source for the unknown-prop echo (N202, ADR 0030.2): a post-mount
|
|
91
|
-
// write to a never-read key is attribution noise, not state. A component
|
|
92
|
-
// that stashes `props` and reads a key dynamically AFTER such a write gets
|
|
93
|
-
// one stale echo — accepted; the echo is attribution-only.
|
|
94
|
-
const readKeys = new Set();
|
|
95
|
-
const getOrCreate = (key, initialValue) => {
|
|
96
|
-
let s = signals.get(key);
|
|
97
|
-
if (!s) {
|
|
98
|
-
s = signal(initialValue);
|
|
99
|
-
signals.set(key, s);
|
|
100
|
-
}
|
|
101
|
-
return s;
|
|
102
|
-
};
|
|
103
|
-
const props = new Proxy({}, {
|
|
104
|
-
get(_target, key) {
|
|
105
|
-
// Symbol probes (well-known symbols, thenable checks) are not props.
|
|
106
|
-
if (typeof key !== 'string')
|
|
107
|
-
return undefined;
|
|
108
|
-
readKeys.add(key);
|
|
109
|
-
return getOrCreate(key);
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
const setProperty = (key, value) => {
|
|
113
|
-
const s = getOrCreate(key, value);
|
|
114
|
-
s.value = value;
|
|
115
|
-
};
|
|
116
|
-
return { props, setProperty, readKeys };
|
|
117
|
-
}
|
|
118
|
-
// ── Duplicate-define attribution (N201, dev only) ───────────────────
|
|
119
|
-
/** First definition site per tag, captured in dev for N201 attribution. */
|
|
120
|
-
const firstDefineSites = new Map();
|
|
121
|
-
/**
|
|
122
|
-
* Best-effort caller frame for N201: the first stack line that is neither the
|
|
123
|
-
* Error header nor a frame inside this module. Dev-only; a user file that is
|
|
124
|
-
* itself named `component.ts` gets skipped too (best-effort attribution, never
|
|
125
|
-
* behavior).
|
|
126
|
-
*/
|
|
127
|
-
function captureDefineSite() {
|
|
128
|
-
const stack = new Error().stack;
|
|
129
|
-
if (!stack)
|
|
130
|
-
return '(site unavailable)';
|
|
131
|
-
const lines = stack.split('\n');
|
|
132
|
-
for (let i = 1; i < lines.length; i++) {
|
|
133
|
-
const line = lines[i].trim();
|
|
134
|
-
if (!line)
|
|
135
|
-
continue;
|
|
136
|
-
if (line.includes('captureDefineSite') || /[/\\]component\.(?:ts|js)\b/.test(line))
|
|
137
|
-
continue;
|
|
138
|
-
return line;
|
|
139
|
-
}
|
|
140
|
-
return '(site unavailable)';
|
|
141
|
-
}
|
|
142
|
-
// ── component() — the main entry point ──────────────────────────────
|
|
143
|
-
/**
|
|
144
|
-
* Define a web component with typed props and a setup function.
|
|
145
|
-
*
|
|
146
|
-
* Returns a typed factory function for compile-time-safe composition.
|
|
147
|
-
*
|
|
148
|
-
* ```ts
|
|
149
|
-
* interface TaskItemProps {
|
|
150
|
-
* task: Task;
|
|
151
|
-
* selected: boolean;
|
|
152
|
-
* }
|
|
153
|
-
*
|
|
154
|
-
* const TaskItem = component<TaskItemProps>('task-item', (props, host) => {
|
|
155
|
-
* const title = computed(() => props.task.value.title);
|
|
156
|
-
* return html`<div>${title}</div>`;
|
|
157
|
-
* });
|
|
158
|
-
*
|
|
159
|
-
* // Factory usage:
|
|
160
|
-
* TaskItem({ task: taskSignal, selected: isSelected })
|
|
161
|
-
* ```
|
|
162
|
-
*/
|
|
163
|
-
export function component(tagName, setup,
|
|
164
|
-
// When `A` is explicitly given a non-empty attrs literal (the narrowing
|
|
165
|
-
// opt-in), the options argument — carrying `attrs: A` — is REQUIRED: a
|
|
166
|
-
// `component<P, typeof attrs>(tag, setup)` that types the props as narrowed but
|
|
167
|
-
// never actually wires the attrs at runtime would be a compile-time lie. When
|
|
168
|
-
// `A` is `{}` (the legacy default, no second type arg), options stays optional
|
|
169
|
-
// exactly as before. `attrs` in that legacy branch is still validated as
|
|
170
|
-
// `ComponentAttrs<P>` via `ComponentOptions<P>`.
|
|
171
|
-
...[options]) {
|
|
172
|
-
// Attribute-reactivity wiring (ADR 0025 item 3). Computed once
|
|
173
|
-
// per component definition; empty when no `attrs` declared (→ zero cost).
|
|
174
|
-
const attrEntries = new Map(); // by attrName
|
|
175
|
-
const attrEntriesByKey = new Map(); // by prop key
|
|
176
|
-
if (options?.attrs) {
|
|
177
|
-
for (const key of Object.keys(options.attrs)) {
|
|
178
|
-
const decl = options.attrs[key];
|
|
179
|
-
const attrName = declAttrName(key, decl);
|
|
180
|
-
const entry = { key, attrName, decl };
|
|
181
|
-
attrEntries.set(attrName, entry);
|
|
182
|
-
attrEntriesByKey.set(key, entry);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
const observedList = Array.from(attrEntries.keys());
|
|
186
|
-
// The custom element class
|
|
187
|
-
class FrameworkComponent extends HTMLElement {
|
|
188
|
-
_host = null;
|
|
189
|
-
_propsProxy = null;
|
|
190
|
-
_mounted = false;
|
|
191
|
-
_templateResult = null;
|
|
192
|
-
_errorTemplateResult = null;
|
|
193
|
-
_teardownScheduled = false;
|
|
194
|
-
// True once a setup cycle completed (template mounted, onMount ran).
|
|
195
|
-
// Gates the unknown-prop echo (N202): factory writes BEFORE connect are
|
|
196
|
-
// the normal seeding path, never noise.
|
|
197
|
-
_setupDone = false;
|
|
198
|
-
// N202 keys already echoed for this element — one echo per key per
|
|
199
|
-
// element lifetime keeps a reactive binding from spamming the console.
|
|
200
|
-
_echoed = null;
|
|
201
|
-
// Props explicitly set via _setProp (factory / direct assignment) are
|
|
202
|
-
// "pinned": an explicit prop wins, so attribute writes no longer overwrite
|
|
203
|
-
// it. (Precedence ruling: prop-pins.)
|
|
204
|
-
_pinned = new Set();
|
|
205
|
-
// Guards our own removeAttribute() during 'forward' relocation from
|
|
206
|
-
// re-entering attributeChangedCallback.
|
|
207
|
-
_relocating = false;
|
|
208
|
-
/** The browser reads this once at define time. Empty → no callbacks. */
|
|
209
|
-
static get observedAttributes() {
|
|
210
|
-
return observedList;
|
|
211
|
-
}
|
|
212
|
-
constructor() {
|
|
213
|
-
super();
|
|
214
|
-
this._propsProxy = createPropsProxy();
|
|
215
|
-
}
|
|
216
|
-
/** Write one declared attribute onto its prop signal, honoring pinning. */
|
|
217
|
-
_applyAttr(entry, raw) {
|
|
218
|
-
if (declType(entry.decl) === 'forward') {
|
|
219
|
-
// Relocate off the layout-transparent host (no duplicate id/name), but
|
|
220
|
-
// only adopt the attribute's value when no explicit prop pinned it. A
|
|
221
|
-
// null `raw` here (absent OR already-relocated) is a NO-OP: the seed
|
|
222
|
-
// and attributeChangedCallback must not clobber an adopted value. The
|
|
223
|
-
// explicit unpin path (in _setProp) handles clearing.
|
|
224
|
-
if (raw !== null) {
|
|
225
|
-
if (!this._pinned.has(entry.key)) {
|
|
226
|
-
this._propsProxy.setProperty(entry.key, raw);
|
|
227
|
-
}
|
|
228
|
-
this._relocating = true;
|
|
229
|
-
this.removeAttribute(entry.attrName);
|
|
230
|
-
this._relocating = false;
|
|
231
|
-
}
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
if (this._pinned.has(entry.key))
|
|
235
|
-
return; // explicit prop wins
|
|
236
|
-
this._propsProxy.setProperty(entry.key, resolveAttrValue(entry.decl, raw));
|
|
237
|
-
}
|
|
238
|
-
/** Seed initial prop values from current attributes (incl. defaults). */
|
|
239
|
-
_seedAttrs() {
|
|
240
|
-
for (const entry of attrEntries.values()) {
|
|
241
|
-
this._applyAttr(entry, this.getAttribute(entry.attrName));
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
attributeChangedCallback(name, _old, next) {
|
|
245
|
-
if (this._relocating)
|
|
246
|
-
return;
|
|
247
|
-
const entry = attrEntries.get(name);
|
|
248
|
-
if (entry)
|
|
249
|
-
this._applyAttr(entry, next);
|
|
250
|
-
}
|
|
251
|
-
connectedCallback() {
|
|
252
|
-
if (this._mounted)
|
|
253
|
-
return; // guard against re-connection
|
|
254
|
-
this._mounted = true;
|
|
255
|
-
// Isolate activeObserver: child component setup signal reads must NOT
|
|
256
|
-
// leak into a parent effect's dependency set. Without this, a parent
|
|
257
|
-
// effect running replaceChildren/appendChild triggers child
|
|
258
|
-
// connectedCallback synchronously, and child signal reads would be
|
|
259
|
-
// tracked as parent dependencies — causing infinite re-render loops.
|
|
260
|
-
// See ADR 0008 Gap 1 / ADR 0009.
|
|
261
|
-
untrack(() => {
|
|
262
|
-
const host = new ComponentHostImpl(this);
|
|
263
|
-
this._host = host;
|
|
264
|
-
// Canonical pre-setup order: SEED → CAPTURE → CONTEXT (then setup).
|
|
265
|
-
//
|
|
266
|
-
// SEED (ADR 0025 item 3): write prop signals from current
|
|
267
|
-
// attributes (incl. declared defaults and 'forward' relocation) so setup
|
|
268
|
-
// sees correct initial values. No-op when no attrs are declared.
|
|
269
|
-
if (attrEntries.size)
|
|
270
|
-
this._seedAttrs();
|
|
271
|
-
// CAPTURE (ADR 0025 item 1): snapshot the host's light-DOM
|
|
272
|
-
// children so children() can project them. Snapshot only — children()
|
|
273
|
-
// removes/projects on demand — so non-projecting components are
|
|
274
|
-
// untouched. Zero-cost when the host has no light DOM.
|
|
275
|
-
if (this.childNodes.length) {
|
|
276
|
-
this.__capturedChildren =
|
|
277
|
-
Array.from(this.childNodes);
|
|
278
|
-
}
|
|
279
|
-
// Phase attribution for the SHARED containment boundary (ADR 0030.2
|
|
280
|
-
// T6): 'setup' (N401) until the template is committed, 'mount' (N402)
|
|
281
|
-
// once onMount callbacks begin. Both phases route through the ONE
|
|
282
|
-
// catch below — runMountCallbacks no longer swallows (lifecycle.ts).
|
|
283
|
-
let phase = 'setup';
|
|
284
|
-
try {
|
|
285
|
-
// CONTEXT is established by runWithContext(host, …) below; setup then
|
|
286
|
-
// runs with seed + capture already in place.
|
|
287
|
-
runWithContext(host, () => {
|
|
288
|
-
// The Proxy is runtime-untyped; the declared narrowing (A) is a
|
|
289
|
-
// compile-time view the setup function requested (ADR 0025 (b)).
|
|
290
|
-
this._templateResult = setup(this._propsProxy.props, this);
|
|
291
|
-
});
|
|
292
|
-
// Mount the template result
|
|
293
|
-
if (this._templateResult) {
|
|
294
|
-
mountTemplate(this, this._templateResult, host);
|
|
295
|
-
}
|
|
296
|
-
// PROJECTION PHASE (ADR 0030.2 §3): if setup called children(), run
|
|
297
|
-
// its late-children sweep scheduling NOW — after the template
|
|
298
|
-
// committed, BEFORE any onMount callback. The rendered-roots
|
|
299
|
-
// snapshot therefore never depends on where children() sat relative
|
|
300
|
-
// to onMount() registrations (the 0025 batch-3B ordering trap), and
|
|
301
|
-
// the rule becomes universal: any host child appearing after this
|
|
302
|
-
// point — late parser/innerHTML content OR an onMount host-append —
|
|
303
|
-
// classifies as projected content.
|
|
304
|
-
const sweepHost = this;
|
|
305
|
-
if (sweepHost.__nisliProjectionSweep) {
|
|
306
|
-
const sweep = sweepHost.__nisliProjectionSweep;
|
|
307
|
-
sweepHost.__nisliProjectionSweep = undefined; // consumed once per cycle
|
|
308
|
-
sweep();
|
|
309
|
-
}
|
|
310
|
-
// Run onMount() callbacks — DOM is now committed
|
|
311
|
-
phase = 'mount';
|
|
312
|
-
runMountCallbacks(host);
|
|
313
|
-
this._setupDone = true;
|
|
314
|
-
// T6: a SUCCESSFUL (re-)setup — including _remount(), the documented
|
|
315
|
-
// boundary reset — removes the failure stamp.
|
|
316
|
-
this.removeAttribute('data-nisli-error');
|
|
317
|
-
}
|
|
318
|
-
catch (err) {
|
|
319
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
320
|
-
const code = phase === 'setup' ? 'N401' : 'N402';
|
|
321
|
-
diag(code, `<${tagName}> ${phase} failed: ${error.message}`, {
|
|
322
|
-
tag: tagName,
|
|
323
|
-
phase,
|
|
324
|
-
error,
|
|
325
|
-
});
|
|
326
|
-
// Setup may already have registered effects/lifecycle cleanup, or
|
|
327
|
-
// mountTemplate() may have partially installed bindings before
|
|
328
|
-
// throwing — and a mount-phase throw arrives with the whole scope
|
|
329
|
-
// live. Tear the partial scope down BEFORE mounting the error
|
|
330
|
-
// fallback so no hidden work survives behind it (issue 0010; the
|
|
331
|
-
// onMount phase now shares these exact semantics per T6). An
|
|
332
|
-
// unconsumed projection sweep hook is part of that partial scope.
|
|
333
|
-
this.__nisliProjectionSweep =
|
|
334
|
-
undefined;
|
|
335
|
-
if (this._templateResult?.dispose) {
|
|
336
|
-
this._templateResult.dispose();
|
|
337
|
-
}
|
|
338
|
-
this._templateResult = null;
|
|
339
|
-
host.dispose();
|
|
340
|
-
this._host = null;
|
|
341
|
-
this.replaceChildren();
|
|
342
|
-
// T6 — failure is a DOM fact. The attribute is the DURABLE channel:
|
|
343
|
-
// `querySelectorAll('[data-nisli-error]')` answers "which component
|
|
344
|
-
// failed" long after the fact, with no listener installed in
|
|
345
|
-
// advance. Client-runtime only — SSG failures stay build failures.
|
|
346
|
-
this.setAttribute('data-nisli-error', code);
|
|
347
|
-
if (options?.onError) {
|
|
348
|
-
try {
|
|
349
|
-
const fallback = options.onError(error, this);
|
|
350
|
-
if (typeof fallback === 'string') {
|
|
351
|
-
this.innerHTML = fallback;
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
this._errorTemplateResult = fallback;
|
|
355
|
-
mountTemplate(this, fallback);
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
catch (_) {
|
|
359
|
-
if (this._errorTemplateResult?.dispose) {
|
|
360
|
-
this._errorTemplateResult.dispose();
|
|
361
|
-
}
|
|
362
|
-
this._errorTemplateResult = null;
|
|
363
|
-
this.innerHTML = `<div style="color:red;padding:4px">Error in <${tagName}></div>`;
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
this.innerHTML = `<div style="color:red;padding:4px">Error in <${tagName}></div>`;
|
|
368
|
-
}
|
|
369
|
-
// T6 — the EVENT is the live channel: one document-level listener
|
|
370
|
-
// observes every contained failure as it happens. Dispatched LAST so
|
|
371
|
-
// listeners see the settled DOM (stamp + fallback). Bubbling is a
|
|
372
|
-
// DOM-tree walk, so CSS (display:contents transparent hosts) never
|
|
373
|
-
// affects delivery — but a component mounted into a DETACHED
|
|
374
|
-
// fragment has no path to document and the event is swallowed; the
|
|
375
|
-
// attribute above is the durable record for those (ADR 0030.2 §8).
|
|
376
|
-
this.dispatchEvent(new CustomEvent('nisli-error', {
|
|
377
|
-
bubbles: true,
|
|
378
|
-
composed: true,
|
|
379
|
-
detail: { code, tag: tagName, phase, message: error.message },
|
|
380
|
-
}));
|
|
381
|
-
}
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
disconnectedCallback() {
|
|
385
|
-
// A same-tick remove+reinsert is a MOVE, not a removal: per WHATWG,
|
|
386
|
-
// append-based moves fire disconnected+connected (only moveBefore()
|
|
387
|
-
// preserves state). Moves happen routinely inside the framework —
|
|
388
|
-
// each() keyed reorders, light-DOM projection of nested components —
|
|
389
|
-
// and re-running setup on them duplicates rendered output and loses
|
|
390
|
-
// state. Defer teardown one microtask and skip it if the element is
|
|
391
|
-
// connected again; connectedCallback's _mounted guard then makes the
|
|
392
|
-
// whole move a no-op. True removals still dispose, one microtask
|
|
393
|
-
// later. See ADR 0023.
|
|
394
|
-
if (this._teardownScheduled)
|
|
395
|
-
return;
|
|
396
|
-
this._teardownScheduled = true;
|
|
397
|
-
queueMicrotask(() => {
|
|
398
|
-
this._teardownScheduled = false;
|
|
399
|
-
if (this.isConnected)
|
|
400
|
-
return;
|
|
401
|
-
this._teardownNow();
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
/**
|
|
405
|
-
* Atomic DOM moves preserve this component's position-independent state,
|
|
406
|
-
* so the platform-level lifecycle is a no-op. ADR 0023's deferred
|
|
407
|
-
* disconnect teardown remains the fallback for append-based moves.
|
|
408
|
-
*/
|
|
409
|
-
connectedMoveCallback() { }
|
|
410
|
-
/**
|
|
411
|
-
* Synchronously dispose the current component scope and restore any
|
|
412
|
-
* projected light-DOM children as direct host children. Normal disconnect
|
|
413
|
-
* calls this after the move-detection microtask; HMR calls it directly so
|
|
414
|
-
* reconnect cannot be defeated by the `_mounted` guard (issues 0001/0002).
|
|
415
|
-
*/
|
|
416
|
-
_teardownNow() {
|
|
417
|
-
this._mounted = false;
|
|
418
|
-
this._setupDone = false;
|
|
419
|
-
if (this._templateResult?.dispose) {
|
|
420
|
-
this._templateResult.dispose();
|
|
421
|
-
}
|
|
422
|
-
this._templateResult = null;
|
|
423
|
-
if (this._errorTemplateResult?.dispose) {
|
|
424
|
-
this._errorTemplateResult.dispose();
|
|
425
|
-
}
|
|
426
|
-
this._errorTemplateResult = null;
|
|
427
|
-
if (this._host) {
|
|
428
|
-
this._host.dispose();
|
|
429
|
-
this._host = null;
|
|
430
|
-
}
|
|
431
|
-
// children() records the plain light-DOM nodes it owns during cleanup.
|
|
432
|
-
// Replacing the rendered tree with those nodes preserves author content
|
|
433
|
-
// for a later true reconnect/HMR setup; components without projection
|
|
434
|
-
// simply become empty before the fresh setup appends its new subtree.
|
|
435
|
-
const captured = this
|
|
436
|
-
.__capturedChildren ?? [];
|
|
437
|
-
this.replaceChildren(...captured);
|
|
438
|
-
}
|
|
439
|
-
/** @internal — transport-agnostic HMR in-place remount hook. */
|
|
440
|
-
_remount() {
|
|
441
|
-
this._teardownScheduled = false;
|
|
442
|
-
this._teardownNow();
|
|
443
|
-
this.connectedCallback();
|
|
444
|
-
}
|
|
445
|
-
/**
|
|
446
|
-
* Set a prop value. Called by the factory and by direct property assignment.
|
|
447
|
-
* The Proxy intercepts and creates/updates backing signals.
|
|
448
|
-
*
|
|
449
|
-
* Precedence = DEFINED-write-pins (ADR 0025 item 3): a defined
|
|
450
|
-
* value pins the key so a declared attribute no longer overwrites it. An
|
|
451
|
-
* explicit `undefined` (e.g. a factory spreading an unset optional prop —
|
|
452
|
-
* `{...opts}` fires _setProp(key, undefined) per the Object.entries walk)
|
|
453
|
-
* must NOT pin; it falls back to the declared attribute/default, matching
|
|
454
|
-
* attr()'s coalesce. For a declared attribute, that fallback re-resolves
|
|
455
|
-
* from the current attribute, keeping declared-default booleans
|
|
456
|
-
* non-undefined.
|
|
457
|
-
*/
|
|
458
|
-
_setProp(key, value) {
|
|
459
|
-
// Unknown-prop echo (N202, dev, ADR 0030.2): post-mount, a DEFINED write
|
|
460
|
-
// to a key setup() never read is attribution noise — a misspelled prop
|
|
461
|
-
// (`varian=`) arriving through the factory or the template
|
|
462
|
-
// auto-resolution path (both funnel through _setProp). `undefined`
|
|
463
|
-
// writes are exempt BY CONTRACT: a factory spreading unset optional
|
|
464
|
-
// props fires _setProp(key, undefined) per the Object.entries walk (see
|
|
465
|
-
// the pinning doc above). Attribution-only — the write still lands
|
|
466
|
-
// exactly as before; deduped per key per element.
|
|
467
|
-
if (this._setupDone
|
|
468
|
-
&& value !== undefined
|
|
469
|
-
&& isDev()
|
|
470
|
-
// A declared attrs key is contract, not a typo — 'forward' especially,
|
|
471
|
-
// where CORE owns the read and setup() never touches the prop. Gate
|
|
472
|
-
// ruling on ADR 0030.2 §8 T6 Q3: declared keys are exempt.
|
|
473
|
-
&& !attrEntriesByKey.has(key)
|
|
474
|
-
&& !this._propsProxy.readKeys.has(key)
|
|
475
|
-
&& !(this._echoed ??= new Set()).has(key)) {
|
|
476
|
-
this._echoed.add(key);
|
|
477
|
-
diag('N202', `<${tagName}> prop '${key}' was set but setup() never read it — misspelled or unsupported prop?`, { tag: tagName, key });
|
|
478
|
-
}
|
|
479
|
-
if (value === undefined) {
|
|
480
|
-
this._pinned.delete(key);
|
|
481
|
-
const entry = attrEntriesByKey.get(key);
|
|
482
|
-
if (entry) {
|
|
483
|
-
const raw = this.getAttribute(entry.attrName);
|
|
484
|
-
// A 'forward' attribute is removed from the host on adoption, so an
|
|
485
|
-
// unpin can't re-read it — resolve the absent value directly to CLEAR
|
|
486
|
-
// a previously pinned id/name (rev audit fix). _applyAttr's forward
|
|
487
|
-
// branch deliberately no-ops on absent (so the seed/attr callback
|
|
488
|
-
// never clobber an adopted value); the explicit unpin does not.
|
|
489
|
-
if (raw === null && declType(entry.decl) === 'forward') {
|
|
490
|
-
this._propsProxy?.setProperty(key, resolveAttrValue(entry.decl, null));
|
|
491
|
-
}
|
|
492
|
-
else {
|
|
493
|
-
this._applyAttr(entry, raw);
|
|
494
|
-
}
|
|
495
|
-
return;
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
else {
|
|
499
|
-
this._pinned.add(key);
|
|
500
|
-
}
|
|
501
|
-
this._propsProxy?.setProperty(key, value);
|
|
502
|
-
}
|
|
503
|
-
/**
|
|
504
|
-
* Read a prop's backing signal (framework-internal). Used by children()
|
|
505
|
-
* to fold the factory `children` prop into the projection slot (ADR 0025
|
|
506
|
-
* item 1) without a new public read API.
|
|
507
|
-
*/
|
|
508
|
-
_propSignal(key) {
|
|
509
|
-
return this._propsProxy.props[key];
|
|
510
|
-
}
|
|
511
|
-
/**
|
|
512
|
-
* Whether a prop is currently pinned by a defined factory/property write
|
|
513
|
-
* (framework-internal, like _propSignal). The attribute-as-truth open-state
|
|
514
|
-
* pattern needs this as its controlled-mode discriminator: a declared
|
|
515
|
-
* 'boolean' prop is never undefined (absent → false), so pin state is the
|
|
516
|
-
* ONLY way a component can tell "parent drives this" from "the attribute
|
|
517
|
-
* drives this" — e.g. setOpen() must not write the open attribute while a
|
|
518
|
-
* controlled parent has it pinned, or the DOM attribute diverges from the
|
|
519
|
-
* pinned state until the next prop write.
|
|
520
|
-
*/
|
|
521
|
-
_isPinned(key) {
|
|
522
|
-
return this._pinned.has(key);
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
// Register the custom element. A DUPLICATE definition is a coded dev error
|
|
526
|
-
// (N201, ADR 0030.2 §3/§8): first-wins-silently rendered the WRONG component
|
|
527
|
-
// while the second factory typechecked against the wrong props. The error
|
|
528
|
-
// names both definition sites and is thrown to the SECOND definer; the
|
|
529
|
-
// first definition stays live (first-wins preserved). Exemptions:
|
|
530
|
-
// - HMR re-evaluations arrive with the registry's marked indirection thunk
|
|
531
|
-
// (hmr/registry.ts __register) — the live thunk already swapped setup, so
|
|
532
|
-
// re-registration is the mechanism working, not a collision.
|
|
533
|
-
// - Production keeps the historical SILENT first-wins: a name clash must
|
|
534
|
-
// not take down a live page (redefine-as-swap stays HMR/dev-only because
|
|
535
|
-
// the copy-in registry model makes genuine duplicate tags structural).
|
|
536
|
-
if (!customElements.get(tagName)) {
|
|
537
|
-
customElements.define(tagName, FrameworkComponent);
|
|
538
|
-
if (isDev())
|
|
539
|
-
firstDefineSites.set(tagName, captureDefineSite());
|
|
540
|
-
}
|
|
541
|
-
else if (isDev() && !setup.__nisliHmr) {
|
|
542
|
-
const first = firstDefineSites.get(tagName)
|
|
543
|
-
?? '(unknown site — defined outside component(), or before dev mode was enabled)';
|
|
544
|
-
throw new Error(formatDiag('N201', `duplicate define for <${tagName}>. First defined ${first}; the second `
|
|
545
|
-
+ `definition site is this error's own stack. The first definition stays `
|
|
546
|
-
+ `live (first-wins) — rename one of the components.`));
|
|
547
|
-
}
|
|
548
|
-
// Return the typed factory function
|
|
549
|
-
const factory = (props, hostAttrs) => {
|
|
550
|
-
return {
|
|
551
|
-
__type: 'factory',
|
|
552
|
-
tagName,
|
|
553
|
-
props: props,
|
|
554
|
-
hostAttrs,
|
|
555
|
-
};
|
|
556
|
-
};
|
|
557
|
-
return factory;
|
|
558
|
-
}
|
|
559
|
-
/**
|
|
560
|
-
* Ensure a value is a signal. If it already is, return as-is.
|
|
561
|
-
* If it's a plain value, wrap it in signal().
|
|
562
|
-
* Used by factory mount to support PropInput<T> = T | Signal<T>.
|
|
563
|
-
*/
|
|
564
|
-
function ensureSignal(value) {
|
|
565
|
-
if (isSignal(value))
|
|
566
|
-
return value;
|
|
567
|
-
return signal(value);
|
|
568
|
-
}
|
|
569
|
-
/**
|
|
570
|
-
* Mount a TemplateResult into a host element.
|
|
571
|
-
* This is the bridge between component.ts and template.ts.
|
|
572
|
-
* Template.ts will provide the actual implementation via the
|
|
573
|
-
* TemplateResult.mount() method.
|
|
574
|
-
*
|
|
575
|
-
* @param hostImpl — optional ComponentHostImpl for registering disposers
|
|
576
|
-
*/
|
|
577
|
-
function mountTemplate(host, result, hostImpl) {
|
|
578
|
-
if (result && typeof result === 'object' && 'mount' in result && typeof result.mount === 'function') {
|
|
579
|
-
result.mount(host);
|
|
580
|
-
}
|
|
581
|
-
else if (result && typeof result === 'object' && '__type' in result) {
|
|
582
|
-
// Factory result — create the child element
|
|
583
|
-
const factoryResult = result;
|
|
584
|
-
const el = document.createElement(factoryResult.tagName);
|
|
585
|
-
// Forward props as signals (auto-wrap plain values)
|
|
586
|
-
for (const [key, raw] of Object.entries(factoryResult.props)) {
|
|
587
|
-
const sig = ensureSignal(raw);
|
|
588
|
-
el._setProp(key, sig.value);
|
|
589
|
-
// Subscribe to signal changes to update the child's props
|
|
590
|
-
const unsub = sig.subscribe((newVal) => {
|
|
591
|
-
el._setProp(key, newVal);
|
|
592
|
-
});
|
|
593
|
-
// Register unsub for cleanup on disconnect
|
|
594
|
-
if (hostImpl) {
|
|
595
|
-
hostImpl.addDisposer(unsub);
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
// Apply host-level attributes (class)
|
|
599
|
-
if (factoryResult.hostAttrs?.class != null) {
|
|
600
|
-
const classSig = ensureSignal(factoryResult.hostAttrs.class);
|
|
601
|
-
// Apply initial value
|
|
602
|
-
applyHostClass(el, '', classSig.value);
|
|
603
|
-
// Subscribe to reactive changes
|
|
604
|
-
let prevClass = classSig.value;
|
|
605
|
-
const unsub = classSig.subscribe((newClass) => {
|
|
606
|
-
applyHostClass(el, prevClass, newClass);
|
|
607
|
-
prevClass = newClass;
|
|
608
|
-
});
|
|
609
|
-
if (hostImpl) {
|
|
610
|
-
hostImpl.addDisposer(unsub);
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
host.appendChild(el);
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
/**
|
|
617
|
-
* Apply a class string to an element via classList, replacing the previous
|
|
618
|
-
* class string's classes. Uses add/remove to avoid interfering with classes
|
|
619
|
-
* set by the component's own template (class:name directives, etc.).
|
|
620
|
-
*/
|
|
621
|
-
function applyHostClass(el, prev, next) {
|
|
622
|
-
const prevClasses = prev ? prev.split(/\s+/).filter(Boolean) : [];
|
|
623
|
-
const nextClasses = next ? next.split(/\s+/).filter(Boolean) : [];
|
|
624
|
-
for (const cls of prevClasses) {
|
|
625
|
-
if (!nextClasses.includes(cls))
|
|
626
|
-
el.classList.remove(cls);
|
|
627
|
-
}
|
|
628
|
-
for (const cls of nextClasses) {
|
|
629
|
-
if (!prevClasses.includes(cls))
|
|
630
|
-
el.classList.add(cls);
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
//# sourceMappingURL=component.js.map
|
package/dist/component.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|