@nisli/core 0.51.0 → 0.53.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,108 @@
1
+ /**
2
+ * element-context.ts — subtree-scoped context (provide / inject).
3
+ *
4
+ * The DOM-native equivalent of React/Radix context: a provider publishes a
5
+ * typed value on its host element, and descendant components `inject()` it by
6
+ * walking up the element tree. It replaces the userland `host.__uiX = state` +
7
+ * `host.closest('ui-x')` convention (stringly-typed, invisible to TypeScript,
8
+ * re-implemented per family) with an identity-keyed, end-to-end-typed primitive.
9
+ *
10
+ * ```ts
11
+ * interface TabsState { value: ReadonlySignal<string>; setValue(v: string): void }
12
+ * const TabsContext = createContext<TabsState>('Tabs');
13
+ *
14
+ * // provider setup:
15
+ * TabsContext.provide(host, state);
16
+ *
17
+ * // descendant setup:
18
+ * const tabs = TabsContext.inject(); // throws (error boundary) if absent
19
+ * const maybe = TabsContext.inject.optional(); // TabsState | undefined
20
+ * ```
21
+ *
22
+ * Design (see ADR 0025 §2):
23
+ *
24
+ * - **Typed, no string keys.** Each `createContext` mints a private `Symbol`
25
+ * used as the storage key; consumers reference the context object, never a
26
+ * string. Two contexts never collide even with the same `name` (name is for
27
+ * diagnostics only).
28
+ *
29
+ * - **Capture at setup, not at lookup.** `inject()` resolves during component
30
+ * setup, while the injecting host is still a DOM descendant of its provider.
31
+ * It returns the value *once*; because provider values carry signals,
32
+ * reactivity flows through them with no further tree-walks. This is what makes
33
+ * it **portal-safe**: after a subtree is reparented to `<body>` (dialog, menu,
34
+ * …) the injected value is already held, so the component keeps resolving its
35
+ * ORIGINAL provider — a later walk from the portaled host would find nothing.
36
+ * `inject()` therefore requires an active setup context when no host is passed.
37
+ *
38
+ * - **Zero cost for non-users.** Providing sets one symbol property on the host;
39
+ * injecting is a `parentElement` walk. Components that use neither pay nothing,
40
+ * and there is no global registry to maintain.
41
+ */
42
+ import { getCurrentComponent, hasContext } from './context.js';
43
+ // ── Public API ──────────────────────────────────────────────────────
44
+ /**
45
+ * Create a subtree-scoped context. `name` is used only in diagnostics; the
46
+ * context's identity (a private symbol) is what keys storage and lookup.
47
+ *
48
+ * Pass `{ providerTag }` to name the provider element so a missing-provider
49
+ * `inject()` produces an ACTIONABLE, element-language error —
50
+ * `<injecting-tag> must be used inside <provider-tag>.` — instead of naming the
51
+ * private context object. Set it whenever consumers are DOM elements (the whole
52
+ * registry): it's the difference between a message a plain-HTML user can act on
53
+ * and one they can't.
54
+ */
55
+ export function createContext(name, options = {}) {
56
+ const { providerTag } = options;
57
+ // Private per-context storage key. Not derived from `name`, so same-named
58
+ // contexts stay distinct, and it never appears in userland.
59
+ const KEY = Symbol(`nisli.context:${name}`);
60
+ const store = (el) => el;
61
+ const provide = (host, value) => {
62
+ store(host)[KEY] = value;
63
+ };
64
+ const peek = (host) => KEY in host ? store(host)[KEY] : undefined;
65
+ // Walk up the element tree (inclusive of `start`) to the nearest provider.
66
+ // `parentElement` transparently crosses `display: contents` hosts.
67
+ const find = (start) => {
68
+ let el = start;
69
+ while (el) {
70
+ if (KEY in el)
71
+ return store(el)[KEY];
72
+ el = el.parentElement;
73
+ }
74
+ return undefined;
75
+ };
76
+ const startHost = (host, caller) => {
77
+ if (host)
78
+ return host;
79
+ if (!hasContext()) {
80
+ throw new Error(`${caller} for context "${name}" was called without a host and outside component ` +
81
+ `setup. Call it during setup (so the provider is resolved before any portal move), ` +
82
+ `or pass an explicit host.`);
83
+ }
84
+ return getCurrentComponent().element;
85
+ };
86
+ const inject = ((host) => {
87
+ const start = startHost(host, 'inject()');
88
+ const found = find(start);
89
+ if (found === undefined) {
90
+ const injectingTag = start.tagName.toLowerCase();
91
+ // With a declared provider tag, speak element-language the consumer can
92
+ // act on; otherwise fall back to the generic (provider named by API).
93
+ throw new Error(providerTag
94
+ ? `Context "${name}": <${injectingTag}> must be used inside <${providerTag}>.`
95
+ : `Context "${name}" not found: <${injectingTag}> must be rendered ` +
96
+ `inside a provider that calls ${name}Context.provide(host, …).`);
97
+ }
98
+ return found;
99
+ });
100
+ inject.optional = (host) => {
101
+ // Outside setup with no host: there is nothing to resolve from — undefined.
102
+ if (!host && !hasContext())
103
+ return undefined;
104
+ return find(startHost(host, 'inject.optional()'));
105
+ };
106
+ return { name, provide, inject, peek };
107
+ }
108
+ //# sourceMappingURL=element-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-context.js","sourceRoot":"","sources":["../src/element-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgC/D,uEAAuE;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,UAAoC,EAAE;IAEtC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,0EAA0E;IAC1E,4DAA4D;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,CAAC,EAAW,EAA2B,EAAE,CACrD,EAAwC,CAAC;IAE3C,MAAM,OAAO,GAAG,CAAC,IAAiB,EAAE,KAAQ,EAAQ,EAAE;QACpD,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,IAAiB,EAAiB,EAAE,CAChD,GAAG,IAAI,IAAI,CAAC,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpD,2EAA2E;IAC3E,mEAAmE;IACnE,MAAM,IAAI,GAAG,CAAC,KAAkB,EAAiB,EAAE;QACjD,IAAI,EAAE,GAAmB,KAAK,CAAC;QAC/B,OAAO,EAAE,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,EAAE;gBAAE,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAM,CAAC;YAC1C,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC;QACxB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,IAA6B,EAAE,MAAc,EAAsB,EAAE;QACtF,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,iBAAiB,IAAI,oDAAoD;gBAChF,oFAAoF;gBACpF,2BAA2B,CAC9B,CAAC;QACJ,CAAC;QACD,OAAO,mBAAmB,EAAE,CAAC,OAAO,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAC,IAAkB,EAAK,EAAE;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACjD,wEAAwE;YACxE,sEAAsE;YACtE,MAAM,IAAI,KAAK,CACb,WAAW;gBACT,CAAC,CAAC,YAAY,IAAI,OAAO,YAAY,0BAA0B,WAAW,IAAI;gBAC9E,CAAC,CAAC,YAAY,IAAI,iBAAiB,YAAY,qBAAqB;oBAChE,gCAAgC,IAAI,2BAA2B,CACtE,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAc,CAAC;IAEhB,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAkB,EAAiB,EAAE;QACtD,4EAA4E;QAC5E,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,SAAS,CAAC;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,mBAAmB,CAAE,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -13,12 +13,14 @@
13
13
  * } from './framework';
14
14
  * ```
15
15
  */
16
- export { signal, computed, effect, flush, isSignal, flushEffects, untrack, SIGNAL_BRAND, type Signal, type ReadonlySignal, } from './signal.js';
16
+ export { signal, computed, effect, flush, tick, isSignal, flushEffects, untrack, SIGNAL_BRAND, type Signal, type ReadonlySignal, } from './signal.js';
17
17
  export { runWithContext, getCurrentComponent, hasContext, type ComponentHost, } from './context.js';
18
18
  export { Emitter } from './emitter.js';
19
19
  export { inject, provide, createToken, resetInjector, type Constructor, type InjectionToken, } from './injector.js';
20
- export { component, type ReactiveProps, type SetupFunction, type ComponentFactory, type ComponentOptions, type PropInput, type HostAttrs, } from './component.js';
21
- export { html, when, each, type TemplateResult, } from './template.js';
20
+ export { createContext, type Context, type Inject, } from './element-context.js';
21
+ export { component, type ReactiveProps, type AttrValueType, type SetupFunction, type ComponentFactory, type ComponentOptions, type AttrDecl, type ComponentAttrs, type PropInput, type HostAttrs, } from './component.js';
22
+ export { html, el, when, each, type TemplateResult, type TypedEventHandler, type ElProps, type ElChild, } from './template.js';
22
23
  export { ref, isRef, type Ref, } from './ref.js';
23
24
  export { onMount, onCleanup, useHostEvent, } from './lifecycle.js';
25
+ export { children, } from './projection.js';
24
26
  export { query, QueryClient, type QueryResult, type QueryOptions, } from './query.js';
package/dist/index.js CHANGED
@@ -14,21 +14,25 @@
14
14
  * ```
15
15
  */
16
16
  // ── Reactivity ──────────────────────────────────────────────────────
17
- export { signal, computed, effect, flush, isSignal, flushEffects, untrack, SIGNAL_BRAND, } from './signal.js';
17
+ export { signal, computed, effect, flush, tick, isSignal, flushEffects, untrack, SIGNAL_BRAND, } from './signal.js';
18
18
  // ── Setup context ───────────────────────────────────────────────────
19
19
  export { runWithContext, getCurrentComponent, hasContext, } from './context.js';
20
20
  // ── Typed event emitters ────────────────────────────────────────────
21
21
  export { Emitter } from './emitter.js';
22
- // ── Dependency injection ────────────────────────────────────────────
22
+ // ── Dependency injection (app-global) ───────────────────────────────
23
23
  export { inject, provide, createToken, resetInjector, } from './injector.js';
24
+ // ── Subtree-scoped context (DOM provide/inject) ─────────────────────
25
+ export { createContext, } from './element-context.js';
24
26
  // ── Component model ─────────────────────────────────────────────────
25
27
  export { component, } from './component.js';
26
28
  // ── Template engine ─────────────────────────────────────────────────
27
- export { html, when, each, } from './template.js';
29
+ export { html, el, when, each, } from './template.js';
28
30
  // ── Element refs ────────────────────────────────────────────────────
29
31
  export { ref, isRef, } from './ref.js';
30
32
  // ── Lifecycle hooks ─────────────────────────────────────────────────
31
33
  export { onMount, onCleanup, useHostEvent, } from './lifecycle.js';
34
+ // ── Content projection (ADR 0025 item 1) ────────────────
35
+ export { children, } from './projection.js';
32
36
  // ── Declarative data loading ────────────────────────────────────────
33
37
  export { query, QueryClient, } from './query.js';
34
38
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,uEAAuE;AACvE,OAAO,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,YAAY,GAGb,MAAM,aAAa,CAAC;AAErB,uEAAuE;AACvE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,UAAU,GAEX,MAAM,cAAc,CAAC;AAEtB,uEAAuE;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,uEAAuE;AACvE,OAAO,EACL,MAAM,EACN,OAAO,EACP,WAAW,EACX,aAAa,GAGd,MAAM,eAAe,CAAC;AAEvB,uEAAuE;AACvE,OAAO,EACL,SAAS,GAOV,MAAM,gBAAgB,CAAC;AAExB,uEAAuE;AACvE,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,GAEL,MAAM,eAAe,CAAC;AAEvB,uEAAuE;AACvE,OAAO,EACL,GAAG,EACH,KAAK,GAEN,MAAM,UAAU,CAAC;AAElB,uEAAuE;AACvE,OAAO,EACL,OAAO,EACP,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,uEAAuE;AACvE,OAAO,EACL,KAAK,EACL,WAAW,GAGZ,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,uEAAuE;AACvE,OAAO,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,YAAY,GAGb,MAAM,aAAa,CAAC;AAErB,uEAAuE;AACvE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,UAAU,GAEX,MAAM,cAAc,CAAC;AAEtB,uEAAuE;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,uEAAuE;AACvE,OAAO,EACL,MAAM,EACN,OAAO,EACP,WAAW,EACX,aAAa,GAGd,MAAM,eAAe,CAAC;AAEvB,uEAAuE;AACvE,OAAO,EACL,aAAa,GAGd,MAAM,sBAAsB,CAAC;AAE9B,uEAAuE;AACvE,OAAO,EACL,SAAS,GAUV,MAAM,gBAAgB,CAAC;AAExB,uEAAuE;AACvE,OAAO,EACL,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,IAAI,GAKL,MAAM,eAAe,CAAC;AAEvB,uEAAuE;AACvE,OAAO,EACL,GAAG,EACH,KAAK,GAEN,MAAM,UAAU,CAAC;AAElB,uEAAuE;AACvE,OAAO,EACL,OAAO,EACP,SAAS,EACT,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,2DAA2D;AAC3D,OAAO,EACL,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,uEAAuE;AACvE,OAAO,EACL,KAAK,EACL,WAAW,GAGZ,MAAM,YAAY,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * projection.ts — First-class content projection (ADR 0025 item 1)
3
+ *
4
+ * `children(fallback?)` is a setup-context primitive that owns the light-DOM
5
+ * projection machinery the registry currently hand-rolls
6
+ * (captureChildren/projectChildren + per-component conditional-default swaps).
7
+ *
8
+ * ```ts
9
+ * component('ui-button', (props, host) => {
10
+ * transparentHost(host);
11
+ * return html`<button class="${classes}">${children()}</button>`;
12
+ * });
13
+ * ```
14
+ *
15
+ * Semantics:
16
+ * - Returns a reactive slot value (a signal) that a template interpolates. The
17
+ * slot resolves, in priority order: the factory `children` prop → the host's
18
+ * captured light-DOM children → the fallback.
19
+ * - Factory `children` route through the SAME slot: `children()` READS the
20
+ * host's `children` prop signal (sugar over one path). Crucially it renders
21
+ * them AT the slot position (not by relocating them to light DOM), so a
22
+ * factory-composed child element is a DOM descendant of its parent when its
23
+ * connectedCallback runs — `closest()`-based parent lookup keeps working.
24
+ * - Plain-HTML light-DOM children are captured pre-setup by component.ts
25
+ * (SEED → CAPTURE → CONTEXT) and projected here; late parser children are
26
+ * swept in a microtask (the ADR 0023 streaming machinery, now in core).
27
+ * - `children(fallback)` renders `fallback` when no MEANINGFUL children exist
28
+ * (whitespace-only light DOM does not count) and REPLACES it reactively when
29
+ * children arrive — including late parser children. This natively solves the
30
+ * conditional-default class (message-scroller-button's default glyph).
31
+ * - Single default slot only; named/multiple slots are a later design (v1 OUT).
32
+ *
33
+ * Zero-cost when unused: component.ts only snapshots childNodes when the host
34
+ * has any, and only children() consumes them.
35
+ */
36
+ import { type ReadonlySignal } from './signal.js';
37
+ import type { TemplateResult } from './template.js';
38
+ /**
39
+ * Project the host's children (factory `children` prop or light DOM) into this
40
+ * slot, with an optional `fallback` rendered when empty. Must be called in
41
+ * setup context. Interpolate the result in a template:
42
+ * `html`<button>${children()}</button>``.
43
+ */
44
+ export declare function children(fallback?: TemplateResult | string): ReadonlySignal<unknown>;
@@ -0,0 +1,155 @@
1
+ /**
2
+ * projection.ts — First-class content projection (ADR 0025 item 1)
3
+ *
4
+ * `children(fallback?)` is a setup-context primitive that owns the light-DOM
5
+ * projection machinery the registry currently hand-rolls
6
+ * (captureChildren/projectChildren + per-component conditional-default swaps).
7
+ *
8
+ * ```ts
9
+ * component('ui-button', (props, host) => {
10
+ * transparentHost(host);
11
+ * return html`<button class="${classes}">${children()}</button>`;
12
+ * });
13
+ * ```
14
+ *
15
+ * Semantics:
16
+ * - Returns a reactive slot value (a signal) that a template interpolates. The
17
+ * slot resolves, in priority order: the factory `children` prop → the host's
18
+ * captured light-DOM children → the fallback.
19
+ * - Factory `children` route through the SAME slot: `children()` READS the
20
+ * host's `children` prop signal (sugar over one path). Crucially it renders
21
+ * them AT the slot position (not by relocating them to light DOM), so a
22
+ * factory-composed child element is a DOM descendant of its parent when its
23
+ * connectedCallback runs — `closest()`-based parent lookup keeps working.
24
+ * - Plain-HTML light-DOM children are captured pre-setup by component.ts
25
+ * (SEED → CAPTURE → CONTEXT) and projected here; late parser children are
26
+ * swept in a microtask (the ADR 0023 streaming machinery, now in core).
27
+ * - `children(fallback)` renders `fallback` when no MEANINGFUL children exist
28
+ * (whitespace-only light DOM does not count) and REPLACES it reactively when
29
+ * children arrive — including late parser children. This natively solves the
30
+ * conditional-default class (message-scroller-button's default glyph).
31
+ * - Single default slot only; named/multiple slots are a later design (v1 OUT).
32
+ *
33
+ * Zero-cost when unused: component.ts only snapshots childNodes when the host
34
+ * has any, and only children() consumes them.
35
+ */
36
+ import { getCurrentComponent } from './context.js';
37
+ import { onMount, onCleanup } from './lifecycle.js';
38
+ import { signal, computed, flush } from './signal.js';
39
+ /** True if the nodes carry meaningful content (element or non-blank text). */
40
+ function isMeaningful(nodes) {
41
+ return nodes.some((n) => n.nodeType === 1 || (n.nodeType === 3 && (n.textContent ?? '').trim() !== ''));
42
+ }
43
+ /** A minimal TemplateResult that mounts pre-existing DOM nodes into the slot. */
44
+ function nodesTemplate(nodes) {
45
+ return {
46
+ __templateResult: true,
47
+ mount(w) {
48
+ for (const node of nodes)
49
+ w.appendChild(node);
50
+ },
51
+ dispose() { },
52
+ };
53
+ }
54
+ /** A re-mountable TemplateResult that renders a primitive as a fresh text node. */
55
+ function textTemplate(text) {
56
+ return {
57
+ __templateResult: true,
58
+ mount(w) {
59
+ w.appendChild(document.createTextNode(text));
60
+ },
61
+ dispose() { },
62
+ };
63
+ }
64
+ /**
65
+ * Normalize a slot value so the template ALWAYS sees a TemplateResult / factory
66
+ * / array / null — never a bare primitive. The engine picks the slot binding
67
+ * kind by probing the FIRST value: a bare string would bind a plain text node,
68
+ * which then can't host a later template child (it stringifies to
69
+ * "[object Object]"). Wrapping primitives keeps the slot a reactive-template
70
+ * slot for its whole life.
71
+ */
72
+ function asSlot(value) {
73
+ if (value == null || value === '')
74
+ return null;
75
+ if (typeof value === 'object'
76
+ && ('__templateResult' in value || '__type' in value)) {
77
+ return value;
78
+ }
79
+ if (Array.isArray(value))
80
+ return value;
81
+ return textTemplate(String(value));
82
+ }
83
+ /**
84
+ * Project the host's children (factory `children` prop or light DOM) into this
85
+ * slot, with an optional `fallback` rendered when empty. Must be called in
86
+ * setup context. Interpolate the result in a template:
87
+ * `html`<button>${children()}</button>``.
88
+ */
89
+ export function children(fallback) {
90
+ const host = getCurrentComponent().element;
91
+ // Consume the pre-setup light-DOM capture; remove those nodes from the host
92
+ // so the rendered template doesn't duplicate them.
93
+ const captured = host.__capturedChildren ?? [];
94
+ host.__capturedChildren = undefined;
95
+ for (const node of captured) {
96
+ if (node.parentNode === host)
97
+ host.removeChild(node);
98
+ }
99
+ // The factory `children` prop, folded into the same slot (sugar over one path).
100
+ const childrenProp = host._propSignal ? host._propSignal('children') : undefined;
101
+ // Projected light-DOM nodes; grows when the late-parser sweep finds more.
102
+ const projectedNodes = signal(captured);
103
+ onMount(() => {
104
+ // The host's direct children right after mount are the rendered template
105
+ // roots. Anything that appears later is a late parser/innerHTML child.
106
+ const renderedRoots = new Set(Array.from(host.childNodes));
107
+ queueMicrotask(() => {
108
+ const late = Array.from(host.childNodes).filter((n) => !renderedRoots.has(n));
109
+ if (late.length && isMeaningful(late)) {
110
+ for (const node of late)
111
+ host.removeChild(node);
112
+ projectedNodes.value = [...projectedNodes.value, ...late];
113
+ // Flush the slot effect NOW so the late children land in this same
114
+ // microtask — the projectChildren() this replaces mutated the DOM
115
+ // imperatively, so callers only await one microtask for the sweep.
116
+ flush();
117
+ }
118
+ });
119
+ });
120
+ // Stable, RE-MOUNTABLE fallback slot: the same slot object is returned on
121
+ // every empty render, and it can be mounted → unmounted → mounted again
122
+ // (empty → filled → empty) without crashing. A string wraps to a fresh text
123
+ // node each mount. A TemplateResult is mounted ONCE here into a detached
124
+ // holder (its reactive bindings run in this component's context and dispose
125
+ // with it); its rendered nodes are then exposed as a re-mountable node slot,
126
+ // so the engine can detach and re-append them freely.
127
+ let fallbackSlot = null;
128
+ if (fallback != null) {
129
+ if (typeof fallback === 'string') {
130
+ fallbackSlot = textTemplate(fallback);
131
+ }
132
+ else {
133
+ const holder = document.createDocumentFragment();
134
+ fallback.mount(holder);
135
+ const fallbackNodes = Array.from(holder.childNodes);
136
+ onCleanup(() => { try {
137
+ fallback.dispose();
138
+ }
139
+ catch (_) { /* ignore */ } });
140
+ fallbackSlot = nodesTemplate(fallbackNodes);
141
+ }
142
+ }
143
+ // Priority: factory children → captured/late light DOM → fallback. Reactive,
144
+ // so late children (or a changing `children` prop) replace the fallback.
145
+ return computed(() => {
146
+ const kids = childrenProp?.value;
147
+ if (kids != null && kids !== '')
148
+ return asSlot(kids);
149
+ const nodes = projectedNodes.value;
150
+ if (isMeaningful(nodes))
151
+ return nodesTemplate(nodes);
152
+ return fallbackSlot;
153
+ });
154
+ }
155
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
package/dist/query.d.ts CHANGED
@@ -25,7 +25,11 @@ export interface QueryResult<T> {
25
25
  loading: ReadonlySignal<boolean>;
26
26
  /** The error if the fetch failed, null otherwise */
27
27
  error: Signal<Error | null>;
28
- /** Manually trigger a refetch */
28
+ /** Manually trigger a refetch. Bypasses staleTime's fresh-cache
29
+ * suppression — a manual refetch inside the freshness window is never a
30
+ * silent no-op (react-query semantics). It does not bypass in-flight
31
+ * deduplication: if a request for the same key is already running, this
32
+ * joins it rather than starting a second fetch. */
29
33
  refetch(): void;
30
34
  }
31
35
  export interface QueryOptions<T> {
package/dist/query.js CHANGED
@@ -124,7 +124,14 @@ export function query(keyFn, fetcher, options = {}) {
124
124
  // Track the current fetch generation to handle race conditions
125
125
  let fetchGeneration = 0;
126
126
  let disposed = false;
127
- const doFetch = async () => {
127
+ // `force` is set by the manual refetch() path. An explicit refetch is a
128
+ // force (react-query semantics): it skips the fresh-cache short-circuit, so a
129
+ // manual refetch inside the freshness window is never a silent no-op. It does
130
+ // NOT skip in-flight deduplication — a same-key request already running is
131
+ // joined, not duplicated — and the generation guards are unchanged. The
132
+ // automatic (effect-driven) path leaves `force` false and stays cache-first.
133
+ // (ADR 0025 item 12.)
134
+ const doFetch = async (force = false) => {
128
135
  if (disposed)
129
136
  return;
130
137
  // Check enabled
@@ -133,8 +140,8 @@ export function query(keyFn, fetcher, options = {}) {
133
140
  const key = keyFn();
134
141
  const serialized = serializeKey(key);
135
142
  const generation = ++fetchGeneration;
136
- // Check cache freshness
137
- if (staleTime > 0 && client.isFresh(serialized, staleTime)) {
143
+ // Check cache freshness (automatic path only — an explicit refetch forces).
144
+ if (!force && staleTime > 0 && client.isFresh(serialized, staleTime)) {
138
145
  const cached = client.getCached(serialized);
139
146
  if (cached !== undefined) {
140
147
  data.value = cached;
@@ -219,7 +226,7 @@ export function query(keyFn, fetcher, options = {}) {
219
226
  }
220
227
  const refetch = () => {
221
228
  fetchGeneration++; // invalidate any in-flight
222
- doFetch().catch(() => { });
229
+ doFetch(true).catch(() => { }); // force: bypass staleTime (ADR 0025 item 12)
223
230
  };
224
231
  return {
225
232
  data,
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
package/dist/signal.d.ts CHANGED
@@ -91,3 +91,23 @@ export declare function untrack(fn: () => void): void;
91
91
  export declare function flush(): void;
92
92
  /** Backward compat alias for tests. */
93
93
  export { flush as flushEffects };
94
+ /**
95
+ * Settle the synchronous effect cascade AND all MICROTASK-scheduled work
96
+ * pending at await time (content-projection sweeps, query/command initial
97
+ * passes — at any queueMicrotask depth), plus the effects that work
98
+ * schedules. Replaces the hand-rolled `flush(); await Promise.resolve();
99
+ * flush()` and double-`flushEffects()` idioms.
100
+ *
101
+ * Bounded contract — deliberately NOT awaited: timers and other future
102
+ * TASKS scheduled by that microtask work (e.g. a microtask calling
103
+ * setTimeout) may fire after tick() resolves; awaiting arbitrary future
104
+ * tasks is unbounded. Self-perpetuating schedulers are cut off at the
105
+ * iteration cap.
106
+ *
107
+ * ```ts
108
+ * host.setProp('x', 1);
109
+ * await tick();
110
+ * expect(el.textContent).toBe('1');
111
+ * ```
112
+ */
113
+ export declare function tick(): Promise<void>;
package/dist/signal.js CHANGED
@@ -150,8 +150,12 @@ class ComputedImpl {
150
150
  if (!Object.is(this._node.value, newValue)) {
151
151
  this._node.value = newValue;
152
152
  this._node.lastChanged = ++globalEpoch;
153
- // Notify downstream observers that our value changed
154
- notifyObservers(this._node.observers);
153
+ // NOTE: no notifyObservers() here. This update() is a *lazy* recompute
154
+ // triggered by a read; every downstream observer was already marked
155
+ // dirty / scheduled eagerly when the source signal changed (notify()
156
+ // propagates through the computed chain). Re-notifying here would
157
+ // re-schedule the very effect performing this read — a spurious
158
+ // double-run that only surfaced once flush() began draining cascades.
155
159
  }
156
160
  }
157
161
  finally {
@@ -396,8 +400,54 @@ export function untrack(fn) {
396
400
  * flush() is idempotent: calling it with no pending effects is a no-op.
397
401
  */
398
402
  export function flush() {
399
- flushPendingEffects();
403
+ // Drain cascades: an effect may write a signal that schedules more effects
404
+ // (e.g. A computes → B renders). Loop until the queue is empty so a single
405
+ // flush() settles the whole synchronous cascade — no double-flush idiom.
406
+ // Bounded to mirror the effect-loop guard; a runaway is a bug, not silence.
407
+ let guard = 0;
408
+ while (pendingEffects.size > 0) {
409
+ flushPendingEffects();
410
+ if (++guard > 100000)
411
+ break;
412
+ }
400
413
  }
401
414
  /** Backward compat alias for tests. */
402
415
  export { flush as flushEffects };
416
+ /**
417
+ * Settle the synchronous effect cascade AND all MICROTASK-scheduled work
418
+ * pending at await time (content-projection sweeps, query/command initial
419
+ * passes — at any queueMicrotask depth), plus the effects that work
420
+ * schedules. Replaces the hand-rolled `flush(); await Promise.resolve();
421
+ * flush()` and double-`flushEffects()` idioms.
422
+ *
423
+ * Bounded contract — deliberately NOT awaited: timers and other future
424
+ * TASKS scheduled by that microtask work (e.g. a microtask calling
425
+ * setTimeout) may fire after tick() resolves; awaiting arbitrary future
426
+ * tasks is unbounded. Self-perpetuating schedulers are cut off at the
427
+ * iteration cap.
428
+ *
429
+ * ```ts
430
+ * host.setProp('x', 1);
431
+ * await tick();
432
+ * expect(el.textContent).toBe('1');
433
+ * ```
434
+ */
435
+ export async function tick() {
436
+ flush(); // drain the synchronous effect cascade first
437
+ // Each iteration crosses a MACROTASK boundary (setTimeout 0). Doing so runs
438
+ // the ENTIRE microtask queue to completion first — including microtasks a
439
+ // microtask schedules, at any depth — so a 3-deep `queueMicrotask` chain is
440
+ // fully drained before the timer fires. After the drain we flush the effects
441
+ // that work scheduled. When a full iteration schedules no effects, the queue
442
+ // is quiescent and we return. Contract: microtask-scheduled work + effect
443
+ // cascades pending at await time settle; TIMER-scheduled work does not
444
+ // (see the doc above — bounded by design). The iteration cap is a
445
+ // documented backstop for self-perpetuating schedulers, not a silent hang.
446
+ for (let i = 0; i < 50; i++) {
447
+ await new Promise((resolve) => setTimeout(resolve, 0));
448
+ if (pendingEffects.size === 0)
449
+ return; // the microtask drain scheduled nothing
450
+ flush();
451
+ }
452
+ }
403
453
  //# sourceMappingURL=signal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal.js","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../src/signal.ts"],"names":[],"mappings":"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"}