@nisli/core 0.48.1 → 0.49.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,115 @@
1
+ /**
2
+ * esbuild-hmr/plugin.ts — Dev-only esbuild plugin for Nisli component HMR.
3
+ *
4
+ * DEV-ONLY, build-time (Node). Reachable only via `@nisli/core/esbuild-hmr`,
5
+ * never from the runtime `.` entry (ADR 0021, Ruling 1). It is added to the
6
+ * esbuild plugin list ONLY on the `--watch` path; `pnpm build` (no watch) never
7
+ * sees it, so prod is byte-identical by construction (Ruling 5).
8
+ *
9
+ * `esbuild` is an OPTIONAL peerDependency. To keep `@nisli/core` dependency-free
10
+ * we do NOT `import` esbuild here — we type the plugin against a minimal local
11
+ * structural surface. The host build script supplies the real esbuild.
12
+ *
13
+ * What it does:
14
+ * 1. onLoad (Ruling 2): for author modules that import `component` from
15
+ * `@nisli/core`, rewrite the import so `component(tag, setup, opts)` routes
16
+ * `setup` through the runtime tag-keyed registry's STABLE indirection thunk.
17
+ * The real `FrameworkComponent` thus captures a thunk that always reads the
18
+ * current setup — no class swap, no tag re-definition.
19
+ * 2. onEnd (Ruling 4 transport): diff the metafile outputs against the previous
20
+ * build and broadcast a `change` payload ({added, removed, updated}) over
21
+ * SSE so the browser client can escalate (css/js/reload).
22
+ * 3. Inject the browser dev client (`@nisli/core/esbuild-hmr/runtime` +
23
+ * `connect()`) via an esbuild `banner`, so no author HTML/JS change is needed.
24
+ */
25
+ import type { ChangeBroadcaster } from './server.js';
26
+ /** A subset of esbuild's `OnLoadArgs` we rely on. */
27
+ interface OnLoadArgs {
28
+ path: string;
29
+ }
30
+ /** A subset of esbuild's `OnLoadResult`. */
31
+ interface OnLoadResult {
32
+ contents: string;
33
+ loader?: 'ts' | 'tsx' | 'js' | 'jsx';
34
+ }
35
+ /** A subset of esbuild's metafile. */
36
+ interface Metafile {
37
+ outputs: Record<string, {
38
+ bytes: number;
39
+ hash?: string;
40
+ }>;
41
+ }
42
+ /** A subset of esbuild's `BuildResult`. */
43
+ interface BuildResult {
44
+ metafile?: Metafile;
45
+ }
46
+ /** The hooks surface of esbuild's `PluginBuild` we use. */
47
+ interface PluginBuild {
48
+ initialOptions: {
49
+ banner?: {
50
+ js?: string;
51
+ } & Record<string, string | undefined>;
52
+ [key: string]: unknown;
53
+ };
54
+ onLoad(options: {
55
+ filter: RegExp;
56
+ namespace?: string;
57
+ }, callback: (args: OnLoadArgs) => OnLoadResult | undefined): void;
58
+ onEnd(callback: (result: BuildResult) => void): void;
59
+ }
60
+ /** esbuild's `Plugin` shape (structural). */
61
+ export interface EsbuildPlugin {
62
+ name: string;
63
+ setup(build: PluginBuild): void;
64
+ }
65
+ export interface NisliHmrPluginOptions {
66
+ /**
67
+ * Broadcaster used to push `change` events to connected clients. Supply the
68
+ * one returned by `createHmrServer()` (server.ts), or any object with a
69
+ * `broadcast(payload)` method (e.g. an esbuild `serve` adapter).
70
+ */
71
+ broadcaster: ChangeBroadcaster;
72
+ /**
73
+ * The module specifier author code imports `component` from.
74
+ * Defaults to `@nisli/core`.
75
+ */
76
+ coreSpecifier?: string;
77
+ /**
78
+ * The specifier of the browser dev runtime, injected into the bundle banner.
79
+ * Defaults to `@nisli/core/esbuild-hmr/runtime`.
80
+ */
81
+ runtimeSpecifier?: string;
82
+ /** Files to transform. Defaults to TS/JS sources (excludes node_modules). */
83
+ filter?: RegExp;
84
+ }
85
+ /**
86
+ * Rewrite a module's source so the `component` it imports from `@nisli/core` is
87
+ * wrapped by the registry indirection. Pure function — exported for testing.
88
+ *
89
+ * Strategy: alias the real import, then shadow `component` with a wrapper that
90
+ * registers the setup and passes a STABLE thunk to the real `component`. The
91
+ * wrapper is a no-op-shaped passthrough at runtime cost of one Map write +
92
+ * one thunk allocation per `component()` call.
93
+ *
94
+ * Returns the original source unchanged if it does not import `component` from
95
+ * the core specifier (nothing to wrap).
96
+ */
97
+ export declare function transformSource(code: string, coreSpecifier: string, runtimeSpecifier: string): string;
98
+ /** Banner that boots the browser dev client once per bundle. */
99
+ export declare function clientBanner(runtimeSpecifier: string): string;
100
+ /**
101
+ * Create the dev-only Nisli HMR esbuild plugin. Add it to `plugins` ONLY when
102
+ * building with `--watch`; never on the prod build path.
103
+ */
104
+ export declare function nisliHmrPlugin(options: NisliHmrPluginOptions): EsbuildPlugin;
105
+ /**
106
+ * Diff two output-hash maps into an esbuild-shaped change payload.
107
+ * Returns `null` for the very first build (no previous baseline).
108
+ * Exported for testing.
109
+ */
110
+ export declare function diffOutputs(prev: Map<string, string> | null, next: Map<string, string>): {
111
+ added: string[];
112
+ removed: string[];
113
+ updated: string[];
114
+ } | null;
115
+ export {};
@@ -0,0 +1,175 @@
1
+ /**
2
+ * esbuild-hmr/plugin.ts — Dev-only esbuild plugin for Nisli component HMR.
3
+ *
4
+ * DEV-ONLY, build-time (Node). Reachable only via `@nisli/core/esbuild-hmr`,
5
+ * never from the runtime `.` entry (ADR 0021, Ruling 1). It is added to the
6
+ * esbuild plugin list ONLY on the `--watch` path; `pnpm build` (no watch) never
7
+ * sees it, so prod is byte-identical by construction (Ruling 5).
8
+ *
9
+ * `esbuild` is an OPTIONAL peerDependency. To keep `@nisli/core` dependency-free
10
+ * we do NOT `import` esbuild here — we type the plugin against a minimal local
11
+ * structural surface. The host build script supplies the real esbuild.
12
+ *
13
+ * What it does:
14
+ * 1. onLoad (Ruling 2): for author modules that import `component` from
15
+ * `@nisli/core`, rewrite the import so `component(tag, setup, opts)` routes
16
+ * `setup` through the runtime tag-keyed registry's STABLE indirection thunk.
17
+ * The real `FrameworkComponent` thus captures a thunk that always reads the
18
+ * current setup — no class swap, no tag re-definition.
19
+ * 2. onEnd (Ruling 4 transport): diff the metafile outputs against the previous
20
+ * build and broadcast a `change` payload ({added, removed, updated}) over
21
+ * SSE so the browser client can escalate (css/js/reload).
22
+ * 3. Inject the browser dev client (`@nisli/core/esbuild-hmr/runtime` +
23
+ * `connect()`) via an esbuild `banner`, so no author HTML/JS change is needed.
24
+ */
25
+ /// <reference types="node" />
26
+ import { readFileSync } from 'node:fs';
27
+ // ── Source transform (Ruling 2) ─────────────────────────────────────
28
+ const DEFAULT_FILTER = /\.[mc]?[jt]sx?$/;
29
+ /**
30
+ * Rewrite a module's source so the `component` it imports from `@nisli/core` is
31
+ * wrapped by the registry indirection. Pure function — exported for testing.
32
+ *
33
+ * Strategy: alias the real import, then shadow `component` with a wrapper that
34
+ * registers the setup and passes a STABLE thunk to the real `component`. The
35
+ * wrapper is a no-op-shaped passthrough at runtime cost of one Map write +
36
+ * one thunk allocation per `component()` call.
37
+ *
38
+ * Returns the original source unchanged if it does not import `component` from
39
+ * the core specifier (nothing to wrap).
40
+ */
41
+ export function transformSource(code, coreSpecifier, runtimeSpecifier) {
42
+ const spec = escapeRegExp(coreSpecifier);
43
+ // Match a named import of `component` (alone or among others) from core.
44
+ const importRe = new RegExp(`import\\s*\\{([^}]*)\\}\\s*from\\s*['"]${spec}['"]`, 'g');
45
+ let importsComponent = false;
46
+ const rewritten = code.replace(importRe, (_full, names) => {
47
+ const parts = names.split(',').map((s) => s.trim()).filter(Boolean);
48
+ const next = parts.map((p) => {
49
+ // Handle `component` and `component as X` — we only wrap the bare name.
50
+ if (p === 'component') {
51
+ importsComponent = true;
52
+ return 'component as __nisliRealComponent';
53
+ }
54
+ return p;
55
+ });
56
+ return `import { ${next.join(', ')} } from '${coreSpecifier}'`;
57
+ });
58
+ if (!importsComponent)
59
+ return code;
60
+ // Prepend the registry-import + wrapper. `__register` returns the STABLE
61
+ // thunk the real component captures; the wrapper preserves the factory's
62
+ // return value and signature.
63
+ const preamble = `import { __register as __nisliRegister } from '${runtimeSpecifier}';\n` +
64
+ `function component(tag, setup, opts) {\n` +
65
+ ` return __nisliRealComponent(tag, __nisliRegister(tag, setup), opts);\n` +
66
+ `}\n`;
67
+ return preamble + rewritten;
68
+ }
69
+ /** Banner that boots the browser dev client once per bundle. */
70
+ export function clientBanner(runtimeSpecifier) {
71
+ return (`import { connect as __nisliConnect } from '${runtimeSpecifier}';\n` +
72
+ `__nisliConnect();\n`);
73
+ }
74
+ // ── The plugin ──────────────────────────────────────────────────────
75
+ /**
76
+ * Create the dev-only Nisli HMR esbuild plugin. Add it to `plugins` ONLY when
77
+ * building with `--watch`; never on the prod build path.
78
+ */
79
+ export function nisliHmrPlugin(options) {
80
+ const coreSpecifier = options.coreSpecifier ?? '@nisli/core';
81
+ const runtimeSpecifier = options.runtimeSpecifier ?? '@nisli/core/esbuild-hmr/runtime';
82
+ const filter = options.filter ?? DEFAULT_FILTER;
83
+ const { broadcaster } = options;
84
+ let prevHashes = null;
85
+ return {
86
+ name: 'nisli-hmr',
87
+ setup(build) {
88
+ // Inject the browser dev client into the bundle banner (no HTML change).
89
+ const banner = build.initialOptions.banner ?? {};
90
+ banner.js = `${clientBanner(runtimeSpecifier)}${banner.js ?? ''}`;
91
+ build.initialOptions.banner = banner;
92
+ // 1. Transform: wrap component() call sites (Ruling 2).
93
+ build.onLoad({ filter }, (args) => {
94
+ if (args.path.includes('node_modules'))
95
+ return undefined;
96
+ const code = readFileSafe(args.path);
97
+ if (code === null)
98
+ return undefined;
99
+ const contents = transformSource(code, coreSpecifier, runtimeSpecifier);
100
+ if (contents === code)
101
+ return undefined; // nothing to wrap; let esbuild load it
102
+ return { contents, loader: loaderFor(args.path) };
103
+ });
104
+ // 2. Diff outputs and broadcast a change payload (Ruling 4 transport).
105
+ build.onEnd((result) => {
106
+ const outputs = result.metafile?.outputs;
107
+ if (!outputs) {
108
+ // No metafile -> cannot diff -> signal a reload-worthy change.
109
+ broadcaster.broadcast({ added: [], removed: [], updated: [] });
110
+ return;
111
+ }
112
+ const nextHashes = new Map();
113
+ for (const [path, meta] of Object.entries(outputs)) {
114
+ nextHashes.set(path, meta.hash ?? String(meta.bytes));
115
+ }
116
+ const payload = diffOutputs(prevHashes, nextHashes);
117
+ prevHashes = nextHashes;
118
+ // First build establishes the baseline; don't broadcast on it.
119
+ if (payload)
120
+ broadcaster.broadcast(payload);
121
+ });
122
+ },
123
+ };
124
+ }
125
+ /**
126
+ * Diff two output-hash maps into an esbuild-shaped change payload.
127
+ * Returns `null` for the very first build (no previous baseline).
128
+ * Exported for testing.
129
+ */
130
+ export function diffOutputs(prev, next) {
131
+ if (prev === null)
132
+ return null;
133
+ const added = [];
134
+ const removed = [];
135
+ const updated = [];
136
+ for (const [path, hash] of next) {
137
+ const before = prev.get(path);
138
+ if (before === undefined)
139
+ added.push(path);
140
+ else if (before !== hash)
141
+ updated.push(path);
142
+ }
143
+ for (const path of prev.keys()) {
144
+ if (!next.has(path))
145
+ removed.push(path);
146
+ }
147
+ return { added, removed, updated };
148
+ }
149
+ // ── helpers ─────────────────────────────────────────────────────────
150
+ function escapeRegExp(s) {
151
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
152
+ }
153
+ function loaderFor(path) {
154
+ if (path.endsWith('.tsx'))
155
+ return 'tsx';
156
+ if (path.endsWith('.jsx'))
157
+ return 'jsx';
158
+ if (/\.[mc]?ts$/.test(path))
159
+ return 'ts';
160
+ return 'js';
161
+ }
162
+ /**
163
+ * Read a file synchronously. Build-time only (Node); returns null on failure so
164
+ * esbuild falls back to its own loader. `node:fs` is fine here — this module is
165
+ * never reachable from the `.` runtime graph (ADR 0021, Ruling 1).
166
+ */
167
+ function readFileSafe(path) {
168
+ try {
169
+ return readFileSync(path, 'utf8');
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ }
175
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/esbuild-hmr/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * esbuild-hmr/runtime.ts — Browser dev client for Nisli HMR.
3
+ *
4
+ * DEV-ONLY. Reachable only via the `@nisli/core/esbuild-hmr/runtime` subpath,
5
+ * which the esbuild plugin injects on the `--watch` path. It is NEVER imported
6
+ * by the `@nisli/core` runtime `.` entry, so it contributes zero production
7
+ * bytes (ADR 0021, Ruling 1 & 5).
8
+ *
9
+ * Responsibilities (ADR 0021):
10
+ * - A tag -> setup registry with a STABLE indirection thunk (Ruling 2).
11
+ * - remount() of live elements through the existing custom-element lifecycle:
12
+ * disconnectedCallback() -> replaceChildren() -> connectedCallback() (Ruling 3).
13
+ * - An EventSource client that classifies an esbuild `change` payload and
14
+ * escalates: CSS hot-swap -> component re-mount -> full reload (Ruling 4).
15
+ *
16
+ * The class is NEVER swapped and the tag is NEVER re-defined; we swap only the
17
+ * `setup` behind the registry, working *with* the `customElements.get` guard in
18
+ * component.ts rather than against it.
19
+ */
20
+ /** The author's setup function, kept opaque here (props proxy, host). */
21
+ export type HmrSetup = (props: unknown, host: HTMLElement) => unknown;
22
+ /** esbuild's `change` event payload shape (added/removed/updated paths). */
23
+ export interface EsbuildChangePayload {
24
+ added: string[];
25
+ removed: string[];
26
+ updated: string[];
27
+ }
28
+ /** What to do with a change, decided from the output diff (Ruling 4). */
29
+ export type HmrAction = 'css' | 'js' | 'reload';
30
+ /** Minimal structural EventSource (avoids depending on DOM lib EventSource). */
31
+ interface EventSourceLike {
32
+ addEventListener(type: string, listener: (ev: {
33
+ data?: string;
34
+ }) => void): void;
35
+ close?(): void;
36
+ }
37
+ /** Options for {@link connect}. Seams kept injectable for tests. */
38
+ export interface ConnectOptions {
39
+ /** SSE endpoint. Defaults to esbuild's `/esbuild`. */
40
+ path?: string;
41
+ /**
42
+ * Factory for the EventSource. Defaults to the global `EventSource`.
43
+ * Injectable so the client logic is testable without a live SSE server.
44
+ */
45
+ eventSourceFactory?: (url: string) => EventSourceLike;
46
+ /**
47
+ * Re-import the rebuilt JS so the wrapper re-runs `__register` for changed
48
+ * tags. Defaults to a cache-busted dynamic import of the page's module
49
+ * scripts. Returns a promise resolving when re-evaluation is done.
50
+ */
51
+ reimport?: () => Promise<void>;
52
+ /** Force a full reload. Defaults to `location.reload()`. */
53
+ reload?: () => void;
54
+ }
55
+ /**
56
+ * Register (or update) the setup for a tag and return a STABLE indirection
57
+ * thunk that always reads the *current* setup from the registry.
58
+ *
59
+ * On the first registration for a tag (initial page load) no re-mount is
60
+ * scheduled. On a subsequent registration with a *different* setup reference
61
+ * (a watch rebuild re-evaluating the module) the tag is queued for re-mount.
62
+ *
63
+ * The returned thunk is what `component()` hands to the real
64
+ * `FrameworkComponent`; because it reads `registry.get(tag)` lazily, the live
65
+ * element picks up new setup without any class swap or tag re-definition.
66
+ */
67
+ export declare function __register(tag: string, setup: HmrSetup): HmrSetup;
68
+ /** Number of tags awaiting a re-mount (for orchestration/tests). */
69
+ export declare function pendingRemountCount(): number;
70
+ /** Drain and re-mount every pending tag. Returns the tags that were remounted. */
71
+ export declare function drainRemounts(): string[];
72
+ /**
73
+ * Re-mount every live element of `tag` in place, on the SAME instance:
74
+ *
75
+ * disconnectedCallback() — resets `_mounted`, disposes effects + template
76
+ * (the ADR 0008.1 disposal contract)
77
+ * replaceChildren() — clears old DOM, firing nested custom elements'
78
+ * disconnectedCallback so their disposers run too
79
+ * connectedCallback() — re-runs the NEW setup (via the registry thunk)
80
+ * inside the same `untrack(...)` mount path
81
+ *
82
+ * Props survive because `_propsProxy` is constructor-owned (component.ts), and
83
+ * the element node identity is preserved — siblings, scroll, route, and global
84
+ * stores are untouched.
85
+ */
86
+ export declare function remount(tag: string): void;
87
+ /** Test-only: clear the registry and pending state between cases. */
88
+ export declare function __resetRegistry(): void;
89
+ /**
90
+ * Decide the action for an esbuild output diff:
91
+ * - every changed output is CSS -> 'css' (hot-swap, preserves everything)
92
+ * - any JS output changed -> 'js' (re-import; re-mount changed tags
93
+ * or escalate to reload if none)
94
+ * - nothing actionable -> 'reload'
95
+ */
96
+ export declare function classifyChange(payload: EsbuildChangePayload): HmrAction;
97
+ /**
98
+ * Hot-swap stylesheets in place by re-pointing matching `<link>` hrefs with a
99
+ * cache-busting query — no reload, no state loss (esbuild's documented CSS
100
+ * technique). Returns the number of links swapped.
101
+ */
102
+ export declare function hotSwapCss(updated: string[]): number;
103
+ /**
104
+ * Connect to the SSE change channel and apply updates with escalation.
105
+ * Safe to call once from the dev client; injected by the plugin in watch builds.
106
+ */
107
+ export declare function connect(options?: ConnectOptions): EventSourceLike;
108
+ /** Close the active SSE connection (test/teardown). */
109
+ export declare function disconnect(): void;
110
+ /**
111
+ * Apply a classified change. Exposed for tests so the escalation ladder is
112
+ * verifiable without a live EventSource.
113
+ *
114
+ * For a JS change we re-import (re-runs the wrapper's `__register` calls); if no
115
+ * tag's setup actually changed, the edit was a non-component module (util/
116
+ * service) and we escalate to a full reload — the correct, safe fallback.
117
+ */
118
+ export declare function applyChange(payload: EsbuildChangePayload, deps: {
119
+ reimport: () => Promise<void>;
120
+ reload: () => void;
121
+ }): Promise<HmrAction>;
122
+ export {};
@@ -0,0 +1,242 @@
1
+ /**
2
+ * esbuild-hmr/runtime.ts — Browser dev client for Nisli HMR.
3
+ *
4
+ * DEV-ONLY. Reachable only via the `@nisli/core/esbuild-hmr/runtime` subpath,
5
+ * which the esbuild plugin injects on the `--watch` path. It is NEVER imported
6
+ * by the `@nisli/core` runtime `.` entry, so it contributes zero production
7
+ * bytes (ADR 0021, Ruling 1 & 5).
8
+ *
9
+ * Responsibilities (ADR 0021):
10
+ * - A tag -> setup registry with a STABLE indirection thunk (Ruling 2).
11
+ * - remount() of live elements through the existing custom-element lifecycle:
12
+ * disconnectedCallback() -> replaceChildren() -> connectedCallback() (Ruling 3).
13
+ * - An EventSource client that classifies an esbuild `change` payload and
14
+ * escalates: CSS hot-swap -> component re-mount -> full reload (Ruling 4).
15
+ *
16
+ * The class is NEVER swapped and the tag is NEVER re-defined; we swap only the
17
+ * `setup` behind the registry, working *with* the `customElements.get` guard in
18
+ * component.ts rather than against it.
19
+ */
20
+ // ── Tag -> setup registry (Ruling 2) ────────────────────────────────
21
+ const registry = new Map();
22
+ /** Tags whose setup changed since the last drain — pending a re-mount. */
23
+ const pendingRemounts = new Set();
24
+ let remountScheduled = false;
25
+ /**
26
+ * When true, `__register` accumulates pending tags but does NOT auto-schedule a
27
+ * microtask drain — `applyChange` owns the drain so it can wait for a full
28
+ * module re-eval to register ALL changed tags first.
29
+ */
30
+ let suppressAutoDrain = false;
31
+ /**
32
+ * Register (or update) the setup for a tag and return a STABLE indirection
33
+ * thunk that always reads the *current* setup from the registry.
34
+ *
35
+ * On the first registration for a tag (initial page load) no re-mount is
36
+ * scheduled. On a subsequent registration with a *different* setup reference
37
+ * (a watch rebuild re-evaluating the module) the tag is queued for re-mount.
38
+ *
39
+ * The returned thunk is what `component()` hands to the real
40
+ * `FrameworkComponent`; because it reads `registry.get(tag)` lazily, the live
41
+ * element picks up new setup without any class swap or tag re-definition.
42
+ */
43
+ export function __register(tag, setup) {
44
+ const prev = registry.get(tag);
45
+ registry.set(tag, setup);
46
+ if (prev !== undefined && prev !== setup) {
47
+ pendingRemounts.add(tag);
48
+ if (!suppressAutoDrain)
49
+ scheduleRemount();
50
+ }
51
+ return (props, host) => {
52
+ const current = registry.get(tag);
53
+ if (!current)
54
+ throw new Error(`[nisli-hmr] no setup registered for <${tag}>`);
55
+ return current(props, host);
56
+ };
57
+ }
58
+ /** Number of tags awaiting a re-mount (for orchestration/tests). */
59
+ export function pendingRemountCount() {
60
+ return pendingRemounts.size;
61
+ }
62
+ /** Drain and re-mount every pending tag. Returns the tags that were remounted. */
63
+ export function drainRemounts() {
64
+ const tags = [...pendingRemounts];
65
+ pendingRemounts.clear();
66
+ remountScheduled = false;
67
+ for (const tag of tags)
68
+ remount(tag);
69
+ return tags;
70
+ }
71
+ function scheduleRemount() {
72
+ if (remountScheduled)
73
+ return;
74
+ remountScheduled = true;
75
+ // Defer so a full module re-eval can register *all* changed tags first.
76
+ queueMicrotask(() => {
77
+ if (remountScheduled)
78
+ drainRemounts();
79
+ });
80
+ }
81
+ /**
82
+ * Re-mount every live element of `tag` in place, on the SAME instance:
83
+ *
84
+ * disconnectedCallback() — resets `_mounted`, disposes effects + template
85
+ * (the ADR 0008.1 disposal contract)
86
+ * replaceChildren() — clears old DOM, firing nested custom elements'
87
+ * disconnectedCallback so their disposers run too
88
+ * connectedCallback() — re-runs the NEW setup (via the registry thunk)
89
+ * inside the same `untrack(...)` mount path
90
+ *
91
+ * Props survive because `_propsProxy` is constructor-owned (component.ts), and
92
+ * the element node identity is preserved — siblings, scroll, route, and global
93
+ * stores are untouched.
94
+ */
95
+ export function remount(tag) {
96
+ const elements = document.querySelectorAll(tag);
97
+ elements.forEach((node) => {
98
+ const el = node;
99
+ // Dispose first: must run BEFORE clearing DOM or effects/subscriptions
100
+ // leak across reloads (ADR 0008.1 hazard).
101
+ el.disconnectedCallback?.();
102
+ // Clear old DOM — removal fires nested children's disconnectedCallback.
103
+ el.replaceChildren();
104
+ // Re-run setup + re-mount on the same instance.
105
+ el.connectedCallback?.();
106
+ });
107
+ }
108
+ /** Test-only: clear the registry and pending state between cases. */
109
+ export function __resetRegistry() {
110
+ registry.clear();
111
+ pendingRemounts.clear();
112
+ remountScheduled = false;
113
+ suppressAutoDrain = false;
114
+ }
115
+ // ── Change classification + escalation (Ruling 4) ───────────────────
116
+ const CSS_RE = /\.css($|\?)/;
117
+ /**
118
+ * Decide the action for an esbuild output diff:
119
+ * - every changed output is CSS -> 'css' (hot-swap, preserves everything)
120
+ * - any JS output changed -> 'js' (re-import; re-mount changed tags
121
+ * or escalate to reload if none)
122
+ * - nothing actionable -> 'reload'
123
+ */
124
+ export function classifyChange(payload) {
125
+ const touched = [...payload.added, ...payload.removed, ...payload.updated];
126
+ if (touched.length === 0)
127
+ return 'reload';
128
+ if (touched.every((p) => CSS_RE.test(p)))
129
+ return 'css';
130
+ if (touched.some((p) => /\.[mc]?js($|\?)/.test(p)))
131
+ return 'js';
132
+ return 'reload';
133
+ }
134
+ /**
135
+ * Hot-swap stylesheets in place by re-pointing matching `<link>` hrefs with a
136
+ * cache-busting query — no reload, no state loss (esbuild's documented CSS
137
+ * technique). Returns the number of links swapped.
138
+ */
139
+ export function hotSwapCss(updated) {
140
+ let swapped = 0;
141
+ const links = document.querySelectorAll('link[rel="stylesheet"]');
142
+ links.forEach((node) => {
143
+ const link = node;
144
+ const href = link.getAttribute('href');
145
+ if (!href)
146
+ return;
147
+ const base = href.split('?')[0] ?? href;
148
+ const matches = updated.some((u) => {
149
+ const uBase = (u.split('?')[0] ?? u).replace(/^\.?\//, '');
150
+ return uBase.endsWith(base.replace(/^\.?\//, ''));
151
+ });
152
+ if (matches) {
153
+ link.setAttribute('href', `${base}?t=${Date.now()}`);
154
+ swapped++;
155
+ }
156
+ });
157
+ return swapped;
158
+ }
159
+ // ── EventSource client (transport) ──────────────────────────────────
160
+ let connected = null;
161
+ /**
162
+ * Connect to the SSE change channel and apply updates with escalation.
163
+ * Safe to call once from the dev client; injected by the plugin in watch builds.
164
+ */
165
+ export function connect(options = {}) {
166
+ const path = options.path ?? '/esbuild';
167
+ const reload = options.reload ?? (() => location.reload());
168
+ const reimport = options.reimport ?? defaultReimport;
169
+ const factory = options.eventSourceFactory ??
170
+ ((url) => new globalThis.EventSource(url));
171
+ const source = factory(path);
172
+ connected = source;
173
+ source.addEventListener('change', (ev) => {
174
+ let payload;
175
+ try {
176
+ payload = ev.data ? JSON.parse(ev.data) : { added: [], removed: [], updated: [] };
177
+ }
178
+ catch {
179
+ reload();
180
+ return;
181
+ }
182
+ void applyChange(payload, { reimport, reload });
183
+ });
184
+ return source;
185
+ }
186
+ /** Close the active SSE connection (test/teardown). */
187
+ export function disconnect() {
188
+ connected?.close?.();
189
+ connected = null;
190
+ }
191
+ /**
192
+ * Apply a classified change. Exposed for tests so the escalation ladder is
193
+ * verifiable without a live EventSource.
194
+ *
195
+ * For a JS change we re-import (re-runs the wrapper's `__register` calls); if no
196
+ * tag's setup actually changed, the edit was a non-component module (util/
197
+ * service) and we escalate to a full reload — the correct, safe fallback.
198
+ */
199
+ export async function applyChange(payload, deps) {
200
+ const action = classifyChange(payload);
201
+ if (action === 'css') {
202
+ hotSwapCss(payload.updated);
203
+ return 'css';
204
+ }
205
+ if (action === 'js') {
206
+ // Own the drain: suppress the auto microtask so ALL changed tags register
207
+ // during re-import before any re-mount runs.
208
+ suppressAutoDrain = true;
209
+ remountScheduled = false;
210
+ try {
211
+ await deps.reimport();
212
+ }
213
+ finally {
214
+ suppressAutoDrain = false;
215
+ }
216
+ if (pendingRemountCount() > 0) {
217
+ drainRemounts();
218
+ return 'js';
219
+ }
220
+ // JS changed but no component setup changed -> non-component edit -> reload.
221
+ deps.reload();
222
+ return 'reload';
223
+ }
224
+ deps.reload();
225
+ return 'reload';
226
+ }
227
+ /**
228
+ * Default re-import: re-fetch every module `<script type="module">` with a
229
+ * cache-busting query so the bundle re-evaluates and the wrapper re-runs
230
+ * `__register` for changed tags.
231
+ */
232
+ async function defaultReimport() {
233
+ const scripts = document.querySelectorAll('script[type="module"][src]');
234
+ const imports = [];
235
+ scripts.forEach((node) => {
236
+ const src = node.getAttribute('src');
237
+ if (src)
238
+ imports.push(import(/* @vite-ignore */ `${src.split('?')[0]}?t=${Date.now()}`));
239
+ });
240
+ await Promise.all(imports);
241
+ }
242
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/esbuild-hmr/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * esbuild-hmr/server.ts — Tiny SSE hub for the Nisli HMR change channel.
3
+ *
4
+ * DEV-ONLY, Node, build-time. Reachable only via `@nisli/core/esbuild-hmr`,
5
+ * never the runtime `.` entry (ADR 0021, Ruling 1). Uses only `node:http`
6
+ * (a Node built-in, not a package dependency), so the zero-dep posture of the
7
+ * `.` entry is preserved.
8
+ *
9
+ * Two ways to wire transport (ADR 0021 Engineering Plan §1):
10
+ * (a) Standalone: `createHmrServer()` starts a minimal `node:http` SSE hub at
11
+ * `/esbuild` (matching esbuild's own client convention) and returns a
12
+ * broadcaster the plugin pushes `change` payloads to.
13
+ * (b) BYO: any object implementing {@link ChangeBroadcaster} (e.g. an esbuild
14
+ * `serve` adapter that owns the `/esbuild` endpoint) can be handed to the
15
+ * plugin instead.
16
+ */
17
+ import { type Server } from 'node:http';
18
+ /** esbuild-shaped change payload broadcast to dev clients. */
19
+ export interface ChangePayload {
20
+ added: string[];
21
+ removed: string[];
22
+ updated: string[];
23
+ }
24
+ /** Anything that can push a `change` event to connected dev clients. */
25
+ export interface ChangeBroadcaster {
26
+ /** Broadcast a change to every connected client. */
27
+ broadcast(payload: ChangePayload): void;
28
+ /** Current number of connected clients (for diagnostics/tests). */
29
+ readonly clientCount: number;
30
+ }
31
+ /** Handle for the standalone SSE hub. */
32
+ export interface HmrServer extends ChangeBroadcaster {
33
+ /** The underlying `node:http` server (for `.address()`, lifecycle, tests). */
34
+ readonly server: Server;
35
+ /** Start listening. Resolves once bound. */
36
+ listen(port?: number, host?: string): Promise<{
37
+ port: number;
38
+ host: string;
39
+ }>;
40
+ /** Close all client connections and stop the server. */
41
+ close(): Promise<void>;
42
+ }
43
+ export interface CreateHmrServerOptions {
44
+ /** SSE route. Defaults to `/esbuild` (esbuild's client convention). */
45
+ path?: string;
46
+ }
47
+ /**
48
+ * Create a standalone SSE hub. Returns immediately; call `listen()` to bind.
49
+ * The plugin calls `broadcast()` from its `onEnd` after each watch rebuild.
50
+ */
51
+ export declare function createHmrServer(options?: CreateHmrServerOptions): HmrServer;
@@ -0,0 +1,87 @@
1
+ /**
2
+ * esbuild-hmr/server.ts — Tiny SSE hub for the Nisli HMR change channel.
3
+ *
4
+ * DEV-ONLY, Node, build-time. Reachable only via `@nisli/core/esbuild-hmr`,
5
+ * never the runtime `.` entry (ADR 0021, Ruling 1). Uses only `node:http`
6
+ * (a Node built-in, not a package dependency), so the zero-dep posture of the
7
+ * `.` entry is preserved.
8
+ *
9
+ * Two ways to wire transport (ADR 0021 Engineering Plan §1):
10
+ * (a) Standalone: `createHmrServer()` starts a minimal `node:http` SSE hub at
11
+ * `/esbuild` (matching esbuild's own client convention) and returns a
12
+ * broadcaster the plugin pushes `change` payloads to.
13
+ * (b) BYO: any object implementing {@link ChangeBroadcaster} (e.g. an esbuild
14
+ * `serve` adapter that owns the `/esbuild` endpoint) can be handed to the
15
+ * plugin instead.
16
+ */
17
+ /// <reference types="node" />
18
+ import { createServer } from 'node:http';
19
+ /**
20
+ * Create a standalone SSE hub. Returns immediately; call `listen()` to bind.
21
+ * The plugin calls `broadcast()` from its `onEnd` after each watch rebuild.
22
+ */
23
+ export function createHmrServer(options = {}) {
24
+ const path = options.path ?? '/esbuild';
25
+ const clients = new Set();
26
+ const server = createServer((req, res) => {
27
+ if (req.url !== path) {
28
+ res.statusCode = 404;
29
+ res.end();
30
+ return;
31
+ }
32
+ // SSE handshake.
33
+ res.writeHead(200, {
34
+ 'Content-Type': 'text/event-stream',
35
+ 'Cache-Control': 'no-cache',
36
+ Connection: 'keep-alive',
37
+ 'Access-Control-Allow-Origin': '*',
38
+ });
39
+ res.write('retry: 500\n\n');
40
+ clients.add(res);
41
+ req.on('close', () => {
42
+ clients.delete(res);
43
+ });
44
+ });
45
+ const broadcast = (payload) => {
46
+ const frame = `event: change\ndata: ${JSON.stringify(payload)}\n\n`;
47
+ for (const res of clients) {
48
+ try {
49
+ res.write(frame);
50
+ }
51
+ catch {
52
+ clients.delete(res);
53
+ }
54
+ }
55
+ };
56
+ return {
57
+ server,
58
+ broadcast,
59
+ get clientCount() {
60
+ return clients.size;
61
+ },
62
+ listen(port = 0, host = '127.0.0.1') {
63
+ return new Promise((resolve) => {
64
+ server.listen(port, host, () => {
65
+ const addr = server.address();
66
+ const boundPort = typeof addr === 'object' && addr ? addr.port : port;
67
+ resolve({ port: boundPort, host });
68
+ });
69
+ });
70
+ },
71
+ close() {
72
+ return new Promise((resolve) => {
73
+ for (const res of clients) {
74
+ try {
75
+ res.end();
76
+ }
77
+ catch {
78
+ /* ignore */
79
+ }
80
+ }
81
+ clients.clear();
82
+ server.close(() => resolve());
83
+ });
84
+ },
85
+ };
86
+ }
87
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/esbuild-hmr/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AAgCjG;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;QACxE,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YACrB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,iBAAiB;QACjB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,UAAU,EAAE,YAAY;YACxB,6BAA6B,EAAE,GAAG;SACnC,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,CAAC,OAAsB,EAAQ,EAAE;QACjD,MAAM,KAAK,GAAG,wBAAwB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QACpE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,MAAM;QACN,SAAS;QACT,IAAI,WAAW;YACb,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,WAAW;YACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;oBAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;oBACtE,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK;YACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,CAAC;oBAAC,MAAM,CAAC;wBACP,YAAY;oBACd,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/template.js CHANGED
@@ -9,7 +9,7 @@
9
9
  * 1. First render: parse template, clone, create bindings, mount
10
10
  * 2. Updates: signal changes trigger individual binding updates (O(1))
11
11
  */
12
- import { signal, isSignal, effect, computed, } from './signal.js';
12
+ import { signal, isSignal, effect, computed, untrack, } from './signal.js';
13
13
  import { isRef } from './ref.js';
14
14
  // ── Template cache ──────────────────────────────────────────────────
15
15
  /**
@@ -276,7 +276,18 @@ function replaceMarkerWithBinding(comment, value, bindings, disposers) {
276
276
  if (!parent)
277
277
  return;
278
278
  if (isSignal(value)) {
279
- const signalValue = value.value;
279
+ // Probe the current value WITHOUT tracking. This read runs during mount,
280
+ // which may execute inside an enclosing reactive scope (a parent reactive
281
+ // slot's effect, or an each() reconcile effect). The real subscription for
282
+ // THIS slot is established by the dedicated inner effect(s) below — the
283
+ // probe is only used to decide which kind of binding to create. If the
284
+ // probe were tracked, every nested `${signal}` slot would leak its signal
285
+ // (and its transitive deps) into the enclosing effect, so unrelated state
286
+ // changes would tear down and rebuild the whole subtree. Mount must never
287
+ // establish dependencies in the enclosing scope — same principle as the
288
+ // child-component connectedCallback isolation (ADR 0008 Gap 1).
289
+ let signalValue;
290
+ untrack(() => { signalValue = value.value; });
280
291
  // Check if the signal holds a TemplateResult, factory, null, undefined, or array
281
292
  // (e.g., from reactive when(), computed(() => items.map(renderFn)), or factory results)
282
293
  const isReactiveSlot = signalValue === null || signalValue === undefined
@@ -291,6 +302,10 @@ function replaceMarkerWithBinding(comment, value, bindings, disposers) {
291
302
  parent.insertBefore(startMarker, endMarker);
292
303
  let currentResults = [];
293
304
  let currentNodes = [];
305
+ // Sentinel distinct from any resolvable value (including null/undefined)
306
+ // so the FIRST effect run always mounts. See ADR 0008.1.
307
+ const NOT_RENDERED = Symbol('not-rendered');
308
+ let lastValue = NOT_RENDERED;
294
309
  const dispose = effect(() => {
295
310
  const newValue = value.value;
296
311
  // Use endMarker.parentNode — the captured `parent` may be a
@@ -299,6 +314,16 @@ function replaceMarkerWithBinding(comment, value, bindings, disposers) {
299
314
  const liveParent = endMarker.parentNode;
300
315
  if (!liveParent)
301
316
  return;
317
+ // Memoize by referential identity. A computed/signal only notifies
318
+ // when its value changes by Object.is, so an EQUAL value here means
319
+ // this effect was re-triggered by some OTHER dependency (a tracking
320
+ // leak), not by an actual change to this slot. Re-mounting identical
321
+ // content would destroy live DOM (and reset scroll/focus) for nothing.
322
+ // Defense-in-depth against the leak class fixed at the probe in this
323
+ // same file. See ADR 0008.1.
324
+ if (newValue === lastValue)
325
+ return;
326
+ lastValue = newValue;
302
327
  // Remove previous content
303
328
  for (const r of currentResults) {
304
329
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nisli/core",
3
- "version": "0.48.1",
3
+ "version": "0.49.0",
4
4
  "description": "A reactive web component framework. Signals, templates, dependency injection — no build step, no virtual DOM, no dependencies.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -21,8 +21,31 @@
21
21
  ".": {
22
22
  "types": "./dist/index.d.ts",
23
23
  "default": "./dist/index.js"
24
+ },
25
+ "./esbuild-hmr": {
26
+ "types": "./dist/esbuild-hmr/plugin.d.ts",
27
+ "default": "./dist/esbuild-hmr/plugin.js"
28
+ },
29
+ "./esbuild-hmr/runtime": {
30
+ "types": "./dist/esbuild-hmr/runtime.d.ts",
31
+ "default": "./dist/esbuild-hmr/runtime.js"
32
+ },
33
+ "./esbuild-hmr/server": {
34
+ "types": "./dist/esbuild-hmr/server.d.ts",
35
+ "default": "./dist/esbuild-hmr/server.js"
24
36
  }
25
37
  },
38
+ "peerDependencies": {
39
+ "esbuild": "*"
40
+ },
41
+ "peerDependenciesMeta": {
42
+ "esbuild": {
43
+ "optional": true
44
+ }
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^22.0.0"
48
+ },
26
49
  "files": [
27
50
  "dist",
28
51
  "README.md",