@emkodev/emroute 1.10.0 → 1.12.0-beta.2
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 +1 -1
- package/core/component/widget.component.ts +3 -8
- package/core/pipeline/pipeline.ts +13 -5
- package/core/util/html.util.ts +1 -1
- package/core/util/js.util.ts +8 -0
- package/core/util/widget-resolve.util.ts +4 -2
- package/dist/core/component/widget.component.js +3 -7
- package/dist/core/component/widget.component.js.map +1 -1
- package/dist/core/pipeline/pipeline.d.ts +1 -0
- package/dist/core/pipeline/pipeline.js +12 -5
- package/dist/core/pipeline/pipeline.js.map +1 -1
- package/dist/core/util/html.util.js +1 -1
- package/dist/core/util/html.util.js.map +1 -1
- package/dist/core/util/js.util.d.ts +5 -0
- package/dist/core/util/js.util.js +8 -0
- package/dist/core/util/js.util.js.map +1 -0
- package/dist/core/util/widget-resolve.util.js +4 -2
- package/dist/core/util/widget-resolve.util.js.map +1 -1
- package/dist/emroute.js +120 -32
- package/dist/emroute.js.map +11 -10
- package/dist/runtime/abstract.runtime.d.ts +13 -1
- package/dist/runtime/abstract.runtime.js +34 -22
- package/dist/runtime/abstract.runtime.js.map +1 -1
- package/dist/runtime/bun/fs/bun-fs.runtime.d.ts +4 -0
- package/dist/runtime/bun/fs/bun-fs.runtime.js +20 -1
- package/dist/runtime/bun/fs/bun-fs.runtime.js.map +1 -1
- package/dist/server/build.util.d.ts +9 -15
- package/dist/server/build.util.js +9 -148
- package/dist/server/build.util.js.map +1 -1
- package/dist/server/dev.server.d.ts +25 -0
- package/dist/server/dev.server.js +81 -0
- package/dist/server/dev.server.js.map +1 -0
- package/dist/src/element/component.element.d.ts +12 -0
- package/dist/src/element/component.element.js +55 -3
- package/dist/src/element/component.element.js.map +1 -1
- package/dist/src/util/html.util.d.ts +5 -0
- package/dist/src/util/html.util.js +38 -1
- package/dist/src/util/html.util.js.map +1 -1
- package/package.json +2 -2
- package/runtime/abstract.runtime.ts +38 -23
- package/runtime/bun/fs/bun-fs.runtime.ts +23 -1
- package/server/build.util.ts +9 -169
- package/src/element/component.element.ts +63 -3
- package/src/util/html.util.ts +46 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev Server — subprocess restart on file changes.
|
|
3
|
+
*
|
|
4
|
+
* Watches source directories for changes, cleans stale manifests,
|
|
5
|
+
* and restarts the consumer's server process. This clears both
|
|
6
|
+
* Bun's module cache and in-memory manifest caches.
|
|
7
|
+
*
|
|
8
|
+
* Usage (consumer's dev.ts):
|
|
9
|
+
*
|
|
10
|
+
* import { createDevServer } from '@emkodev/emroute/server/dev';
|
|
11
|
+
* createDevServer({ entry: './server.ts' });
|
|
12
|
+
*
|
|
13
|
+
* Then: bun dev.ts
|
|
14
|
+
*/
|
|
15
|
+
import { watch } from 'node:fs';
|
|
16
|
+
import { unlink } from 'node:fs/promises';
|
|
17
|
+
import { resolve, join } from 'node:path';
|
|
18
|
+
const DEFAULT_WATCH_DIRS = ['routes', 'widgets', 'elements'];
|
|
19
|
+
const MANIFEST_FILES = [
|
|
20
|
+
'routes.manifest.json',
|
|
21
|
+
'widgets.manifest.json',
|
|
22
|
+
'elements.manifest.json',
|
|
23
|
+
];
|
|
24
|
+
/** Source extensions — build artifacts (.js, .json) are ignored. */
|
|
25
|
+
const SOURCE_EXTENSIONS = new Set(['.ts', '.html', '.md', '.css']);
|
|
26
|
+
function isSourceFile(filename) {
|
|
27
|
+
const dot = filename.lastIndexOf('.');
|
|
28
|
+
return dot !== -1 && SOURCE_EXTENSIONS.has(filename.slice(dot));
|
|
29
|
+
}
|
|
30
|
+
export function createDevServer(options) {
|
|
31
|
+
const root = resolve(options.root ?? process.cwd());
|
|
32
|
+
const entry = resolve(root, options.entry);
|
|
33
|
+
const watchDirs = (options.watchDirs ?? DEFAULT_WATCH_DIRS).map((d) => resolve(root, d));
|
|
34
|
+
const debounceMs = options.debounce ?? 150;
|
|
35
|
+
let server = null;
|
|
36
|
+
let debounceTimer = null;
|
|
37
|
+
async function cleanManifests() {
|
|
38
|
+
await Promise.all(MANIFEST_FILES.map((f) => unlink(join(root, f)).catch(() => { })));
|
|
39
|
+
}
|
|
40
|
+
async function start() {
|
|
41
|
+
if (server) {
|
|
42
|
+
server.kill();
|
|
43
|
+
await server.exited;
|
|
44
|
+
}
|
|
45
|
+
await cleanManifests();
|
|
46
|
+
server = Bun.spawn(['bun', entry], {
|
|
47
|
+
cwd: root,
|
|
48
|
+
stdio: ['inherit', 'inherit', 'inherit'],
|
|
49
|
+
env: { ...process.env, NODE_ENV: 'development' },
|
|
50
|
+
});
|
|
51
|
+
console.log(`[emroute:dev] started (pid ${server.pid})`);
|
|
52
|
+
}
|
|
53
|
+
function scheduleRestart(filename) {
|
|
54
|
+
if (debounceTimer)
|
|
55
|
+
clearTimeout(debounceTimer);
|
|
56
|
+
debounceTimer = setTimeout(async () => {
|
|
57
|
+
console.log(`[emroute:dev] ${filename} changed — restarting…`);
|
|
58
|
+
await start();
|
|
59
|
+
}, debounceMs);
|
|
60
|
+
}
|
|
61
|
+
for (const dir of watchDirs) {
|
|
62
|
+
try {
|
|
63
|
+
watch(dir, { recursive: true }, (_event, filename) => {
|
|
64
|
+
if (filename && isSourceFile(filename)) {
|
|
65
|
+
scheduleRestart(filename);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Directory doesn't exist yet — not an error in dev
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
start();
|
|
74
|
+
const cleanup = () => {
|
|
75
|
+
server?.kill();
|
|
76
|
+
process.exit();
|
|
77
|
+
};
|
|
78
|
+
process.on('SIGINT', cleanup);
|
|
79
|
+
process.on('SIGTERM', cleanup);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=dev.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.server.js","sourceRoot":"","sources":["../../server/dev.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,8 @@ type WidgetFiles = {
|
|
|
22
22
|
export declare class ComponentElement<TParams, TData> extends HTMLElementBase {
|
|
23
23
|
/** Lazy module loaders keyed by tag name — set by registerLazy(). */
|
|
24
24
|
private static lazyLoaders;
|
|
25
|
+
/** Shared CSSStyleSheet cache — keyed by widget name for cross-instance sharing. */
|
|
26
|
+
private static sheetCache;
|
|
25
27
|
/** App-level context provider set once during router initialization. */
|
|
26
28
|
private static extendContext;
|
|
27
29
|
/**
|
|
@@ -29,6 +31,8 @@ export declare class ComponentElement<TParams, TData> extends HTMLElementBase {
|
|
|
29
31
|
* @deprecated Use `bootEmrouteApp({ extendContext })` instead — it wires both pages and widgets.
|
|
30
32
|
*/
|
|
31
33
|
static setContextProvider(provider: ContextProvider | undefined): void;
|
|
34
|
+
/** Custom state names exposed via ElementInternals for CSS `:state()` matching. */
|
|
35
|
+
private static readonly CUSTOM_STATES;
|
|
32
36
|
private component;
|
|
33
37
|
private effectiveFiles?;
|
|
34
38
|
private params;
|
|
@@ -39,9 +43,12 @@ export declare class ComponentElement<TParams, TData> extends HTMLElementBase {
|
|
|
39
43
|
private deferred;
|
|
40
44
|
private abortController;
|
|
41
45
|
private intersectionObserver;
|
|
46
|
+
private readonly internals;
|
|
42
47
|
/** Promise that resolves with fetched data (available after loadData starts) */
|
|
43
48
|
dataPromise: Promise<TData | null> | null;
|
|
44
49
|
constructor(component: Component<TParams, TData>, files?: WidgetFiles);
|
|
50
|
+
/** Update the CSS-visible custom state via ElementInternals. */
|
|
51
|
+
private setCustomState;
|
|
45
52
|
/**
|
|
46
53
|
* Register a widget as a custom element: `widget-{name}`.
|
|
47
54
|
* Creates a fresh widget instance per DOM element (per-element state).
|
|
@@ -77,6 +84,11 @@ export declare class ComponentElement<TParams, TData> extends HTMLElementBase {
|
|
|
77
84
|
* Returns inlined content from __files (set during lazy module load) directly.
|
|
78
85
|
*/
|
|
79
86
|
private loadFiles;
|
|
87
|
+
/** Base sheet shared by all widgets — host-level defaults. */
|
|
88
|
+
private static baseSheet;
|
|
89
|
+
private static getBaseSheet;
|
|
90
|
+
/** Apply CSS via adoptedStyleSheets with cross-instance sheet sharing. */
|
|
91
|
+
private adoptCss;
|
|
80
92
|
private loadData;
|
|
81
93
|
private setError;
|
|
82
94
|
private signalReady;
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* - Companion file loading (html, md, css)
|
|
9
9
|
* - Loading/error states
|
|
10
10
|
*/
|
|
11
|
-
import { HTMLElementBase } from "../util/html.util.js";
|
|
12
|
-
import { LAZY_ATTR, RESERVED_ATTRS, SSR_ATTR } from "../../core/util/html.util.js";
|
|
11
|
+
import { CSSStyleSheetBase, HTMLElementBase } from "../util/html.util.js";
|
|
12
|
+
import { LAZY_ATTR, RESERVED_ATTRS, SSR_ATTR, scopeWidgetCss } from "../../core/util/html.util.js";
|
|
13
13
|
/** Strip keys with undefined values — returns the filtered object, or undefined if all values are undefined. */
|
|
14
14
|
function filterUndefined(obj) {
|
|
15
15
|
const result = {};
|
|
@@ -29,6 +29,8 @@ function filterUndefined(obj) {
|
|
|
29
29
|
export class ComponentElement extends HTMLElementBase {
|
|
30
30
|
/** Lazy module loaders keyed by tag name — set by registerLazy(). */
|
|
31
31
|
static lazyLoaders = new Map();
|
|
32
|
+
/** Shared CSSStyleSheet cache — keyed by widget name for cross-instance sharing. */
|
|
33
|
+
static sheetCache = new Map();
|
|
32
34
|
/** App-level context provider set once during router initialization. */
|
|
33
35
|
static extendContext;
|
|
34
36
|
/**
|
|
@@ -38,6 +40,8 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
38
40
|
static setContextProvider(provider) {
|
|
39
41
|
ComponentElement.extendContext = provider;
|
|
40
42
|
}
|
|
43
|
+
/** Custom state names exposed via ElementInternals for CSS `:state()` matching. */
|
|
44
|
+
static CUSTOM_STATES = ['lazy', 'loading', 'hydrating', 'ready', 'error'];
|
|
41
45
|
component;
|
|
42
46
|
effectiveFiles;
|
|
43
47
|
params = null;
|
|
@@ -48,18 +52,27 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
48
52
|
deferred = null;
|
|
49
53
|
abortController = null;
|
|
50
54
|
intersectionObserver = null;
|
|
55
|
+
internals;
|
|
51
56
|
/** Promise that resolves with fetched data (available after loadData starts) */
|
|
52
57
|
dataPromise = null;
|
|
53
58
|
constructor(component, files) {
|
|
54
59
|
super();
|
|
55
60
|
this.component = component;
|
|
56
61
|
this.effectiveFiles = files;
|
|
62
|
+
this.internals = this.attachInternals();
|
|
57
63
|
// Attach shadow root if not already present (Declarative Shadow DOM creates it from <template shadowrootmode="open">)
|
|
58
64
|
// This enables progressive enhancement: SSR with DSD works without JS, then hydrates when JS loads
|
|
59
65
|
if (!this.shadowRoot) {
|
|
60
66
|
this.attachShadow({ mode: 'open' });
|
|
61
67
|
}
|
|
62
68
|
}
|
|
69
|
+
/** Update the CSS-visible custom state via ElementInternals. */
|
|
70
|
+
setCustomState(next) {
|
|
71
|
+
for (const s of ComponentElement.CUSTOM_STATES) {
|
|
72
|
+
this.internals.states.delete(s);
|
|
73
|
+
}
|
|
74
|
+
this.internals.states.add(next);
|
|
75
|
+
}
|
|
63
76
|
/**
|
|
64
77
|
* Register a widget as a custom element: `widget-{name}`.
|
|
65
78
|
* Creates a fresh widget instance per DOM element (per-element state).
|
|
@@ -167,7 +180,6 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
167
180
|
}
|
|
168
181
|
}
|
|
169
182
|
this.component.element = this;
|
|
170
|
-
this.style.contentVisibility = 'auto';
|
|
171
183
|
this.abortController = new AbortController();
|
|
172
184
|
const signal = this.abortController.signal;
|
|
173
185
|
// Parse params from element attributes
|
|
@@ -206,9 +218,12 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
206
218
|
...(filteredFiles ? { files: filteredFiles } : {}),
|
|
207
219
|
};
|
|
208
220
|
this.context = ComponentElement.extendContext ? ComponentElement.extendContext(base) : base;
|
|
221
|
+
// Apply CSS via adoptedStyleSheets (shared across instances)
|
|
222
|
+
this.adoptCss();
|
|
209
223
|
// Hydrate from SSR: adopt content from Declarative Shadow DOM
|
|
210
224
|
if (this.hasAttribute(SSR_ATTR)) {
|
|
211
225
|
this.removeAttribute(SSR_ATTR);
|
|
226
|
+
this.setCustomState('hydrating');
|
|
212
227
|
// Read SSR data from light DOM (JSON text placed alongside shadow root)
|
|
213
228
|
const lightText = this.textContent?.trim();
|
|
214
229
|
if (lightText) {
|
|
@@ -227,13 +242,18 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
227
242
|
const args = { data: this.data, params: this.params, context: this.context };
|
|
228
243
|
queueMicrotask(() => {
|
|
229
244
|
this.component.hydrate(args);
|
|
245
|
+
this.setCustomState('ready');
|
|
230
246
|
});
|
|
231
247
|
}
|
|
248
|
+
else {
|
|
249
|
+
this.setCustomState('ready');
|
|
250
|
+
}
|
|
232
251
|
this.signalReady();
|
|
233
252
|
return;
|
|
234
253
|
}
|
|
235
254
|
// Lazy: defer loadData until element is visible
|
|
236
255
|
if (this.hasAttribute(LAZY_ATTR)) {
|
|
256
|
+
this.setCustomState('lazy');
|
|
237
257
|
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
238
258
|
const entry = entries[0];
|
|
239
259
|
if (entry.isIntersecting) {
|
|
@@ -255,6 +275,9 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
255
275
|
this.abortController?.abort();
|
|
256
276
|
this.abortController = null;
|
|
257
277
|
this.state = 'idle';
|
|
278
|
+
for (const s of ComponentElement.CUSTOM_STATES) {
|
|
279
|
+
this.internals.states.delete(s);
|
|
280
|
+
}
|
|
258
281
|
this.data = null;
|
|
259
282
|
this.context = undefined;
|
|
260
283
|
this.dataPromise = null;
|
|
@@ -280,11 +303,38 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
280
303
|
async loadFiles() {
|
|
281
304
|
return this.effectiveFiles ?? {};
|
|
282
305
|
}
|
|
306
|
+
/** Base sheet shared by all widgets — host-level defaults. */
|
|
307
|
+
static baseSheet = null;
|
|
308
|
+
static getBaseSheet() {
|
|
309
|
+
if (!ComponentElement.baseSheet) {
|
|
310
|
+
ComponentElement.baseSheet = new CSSStyleSheetBase();
|
|
311
|
+
ComponentElement.baseSheet.replaceSync(':host { container-type: inline-size; content-visibility: auto; }');
|
|
312
|
+
}
|
|
313
|
+
return ComponentElement.baseSheet;
|
|
314
|
+
}
|
|
315
|
+
/** Apply CSS via adoptedStyleSheets with cross-instance sheet sharing. */
|
|
316
|
+
adoptCss() {
|
|
317
|
+
const css = this.effectiveFiles?.css;
|
|
318
|
+
const base = ComponentElement.getBaseSheet();
|
|
319
|
+
if (!css) {
|
|
320
|
+
this.shadowRoot.adoptedStyleSheets = [base];
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const name = this.component.name;
|
|
324
|
+
let sheet = ComponentElement.sheetCache.get(name);
|
|
325
|
+
if (!sheet) {
|
|
326
|
+
sheet = new CSSStyleSheetBase();
|
|
327
|
+
sheet.replaceSync(scopeWidgetCss(css, name));
|
|
328
|
+
ComponentElement.sheetCache.set(name, sheet);
|
|
329
|
+
}
|
|
330
|
+
this.shadowRoot.adoptedStyleSheets = [base, sheet];
|
|
331
|
+
}
|
|
283
332
|
async loadData() {
|
|
284
333
|
if (this.params === null)
|
|
285
334
|
return;
|
|
286
335
|
const signal = this.abortController?.signal;
|
|
287
336
|
this.state = 'loading';
|
|
337
|
+
this.setCustomState('loading');
|
|
288
338
|
this.render();
|
|
289
339
|
try {
|
|
290
340
|
const promise = this.component.getData({
|
|
@@ -298,6 +348,7 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
298
348
|
if (signal?.aborted)
|
|
299
349
|
return;
|
|
300
350
|
this.state = 'ready';
|
|
351
|
+
this.setCustomState('ready');
|
|
301
352
|
}
|
|
302
353
|
catch (e) {
|
|
303
354
|
if (e instanceof DOMException && e.name === 'AbortError')
|
|
@@ -312,6 +363,7 @@ export class ComponentElement extends HTMLElementBase {
|
|
|
312
363
|
}
|
|
313
364
|
setError(message) {
|
|
314
365
|
this.state = 'error';
|
|
366
|
+
this.setCustomState('error');
|
|
315
367
|
this.errorMessage = message;
|
|
316
368
|
this.render();
|
|
317
369
|
this.signalReady(); // Ready even on error (completed loading)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.element.js","sourceRoot":"","sources":["../../../src/element/component.element.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.element.js","sourceRoot":"","sources":["../../../src/element/component.element.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInG,gHAAgH;AAChH,SAAS,eAAe,CAAoC,GAAM;IAChE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;QAAC,CAAC;IAC1D,CAAC;IACD,8DAA8D;IAC9D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAID;;GAEG;AACH,MAAM,OAAO,gBAAiC,SAAQ,eAAe;IACnE,qEAAqE;IAC7D,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAC;IAEvE,oFAAoF;IAC5E,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE7D,wEAAwE;IAChE,MAAM,CAAC,aAAa,CAA8B;IAE1D;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAqC;QAC7D,gBAAgB,CAAC,aAAa,GAAG,QAAQ,CAAC;IAC5C,CAAC;IAED,mFAAmF;IAC3E,MAAM,CAAU,aAAa,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;IAE5F,SAAS,CAA4B;IACrC,cAAc,CAA2B;IACzC,MAAM,GAAmB,IAAI,CAAC;IAC9B,IAAI,GAAiB,IAAI,CAAC;IAC1B,OAAO,CAAoB;IAC3B,KAAK,GAAmB,MAAM,CAAC;IAC/B,YAAY,GAAG,EAAE,CAAC;IAClB,QAAQ,GAAsC,IAAI,CAAC;IACnD,eAAe,GAA2B,IAAI,CAAC;IAC/C,oBAAoB,GAAgC,IAAI,CAAC;IAChD,SAAS,CAAmB;IAE7C,gFAAgF;IAChF,WAAW,GAAiC,IAAI,CAAC;IAEjD,YAAY,SAAoC,EAAE,KAAmB;QACnE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACxC,sHAAsH;QACtH,mGAAmG;QACnG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,gEAAgE;IACxD,cAAc,CAAC,IAAmD;QACxE,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CACb,SAA4B,EAC5B,KAAmB;QAEnB,MAAM,OAAO,GAAG,UAAU,SAAS,CAAC,IAAI,EAAE,CAAC;QAE3C,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,SAAS,CAAC,WAA0C,CAAC;QAEzE,MAAM,YAAY,GAAG,KAAM,SAAQ,gBAAwB;YACzD;gBACE,KAAK,CAAC,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;SACF,CAAC;QAEF,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa,CAClB,WAAwC,EACxC,IAAY,EACZ,KAAmB;QAEnB,MAAM,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,KAAM,SAAQ,gBAAwB;YACzD;gBACE,KAAK,CAAC,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;SACF,CAAC;QAEF,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CACjB,IAAY,EACZ,MAA8B;QAE9B,MAAM,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO;QAEtE,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAElD,0EAA0E;QAC1E,4EAA4E;QAC5E,MAAM,WAAW,GAAG;YAClB,IAAI;YACJ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACpC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE;YACpB,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;YACxB,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;YACrB,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE;SACY,CAAC;QAE5C,MAAM,YAAY,GAAG,KAAM,SAAQ,gBAAkC;YACnE;gBACE,KAAK,CAAC,WAAW,CAAC,CAAC;YACrB,CAAC;SACF,CAAC;QAEF,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,aAAa,EAAQ,CAAC;QAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,mEAAmE;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,UAAU,EAA6B,CAAC;gBAC1D,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACnD,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,OAAsB,CAAC;gBACnD,CAAC;gBACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;wBACvD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAkD,CAAC;wBAC3E,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC;wBACnC,MAAM;oBACR,CAAC;oBACD,IAAI,OAAO,GAAG,KAAK,UAAU,IAAK,GAA6C,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;wBACnG,IAAI,CAAC,SAAS,GAAG,IAAK,GAA2C,EAAE,CAAC;wBACpE,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;gBACrE,8DAA8D;gBAC9D,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAE3C,uCAAuC;QACvC,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAiB,CAAC;QAEhC,kBAAkB;QAClB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QAE3B,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC/F,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAqB;YAC7B,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5F,6DAA6D;QAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,8DAA8D;QAC9D,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAEjC,wEAAwE;YACxE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YAC3C,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;gBAC7C,CAAC;YACH,CAAC;YACD,sCAAsC;YACtC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YAEtB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YAErB,gDAAgD;YAChD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC9E,cAAc,CAAC,GAAG,EAAE;oBAClB,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;gBAC1B,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBACzB,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC;oBACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,SAAU,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO;QAEjC,6CAA6C;QAC7C,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE7C,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,8DAA8D;IACtD,MAAM,CAAC,SAAS,GAAyB,IAAI,CAAC;IAE9C,MAAM,CAAC,YAAY;QACzB,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAChC,gBAAgB,CAAC,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACrD,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,kEAAkE,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,gBAAgB,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,0EAA0E;IAClE,QAAQ;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC;QACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAE7C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,UAAW,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACjC,IAAI,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;YAChC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,UAAW,CAAC,kBAAkB,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;QAE5C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBACrC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC;YAE1B,4DAA4D;YAC5D,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO;YAE5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;gBAAE,OAAO;YACjE,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO;YAE5B,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,QAAQ,CAAC,OAAe;QAC9B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,0CAA0C;IAChE,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEO,MAAM;QACZ,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;gBACxD,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC,CAAC;YACJ,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACvD,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC,CAAC;QAEJ,2DAA2D;QAC3D,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9E,cAAc,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,OAAQ,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC"}
|
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
* SSR-compatible HTMLElement mock.
|
|
6
6
|
*/
|
|
7
7
|
export { SSR_ATTR, LAZY_ATTR, assertSafeRedirect, escapeHtml, unescapeHtml, scopeWidgetCss, STATUS_MESSAGES, } from '../../core/util/html.util.ts';
|
|
8
|
+
/** Server-safe CSSStyleSheet: real in browser, mock on server. */
|
|
9
|
+
export declare const CSSStyleSheetBase: {
|
|
10
|
+
new (options?: CSSStyleSheetInit): CSSStyleSheet;
|
|
11
|
+
prototype: CSSStyleSheet;
|
|
12
|
+
};
|
|
8
13
|
/** Server-safe base class: HTMLElement in browser, SSR mock on server. */
|
|
9
14
|
export declare const HTMLElementBase: {
|
|
10
15
|
new (): HTMLElement;
|
|
@@ -6,17 +6,45 @@
|
|
|
6
6
|
*/
|
|
7
7
|
// Re-export everything from core
|
|
8
8
|
export { SSR_ATTR, LAZY_ATTR, assertSafeRedirect, escapeHtml, unescapeHtml, scopeWidgetCss, STATUS_MESSAGES, } from "../../core/util/html.util.js";
|
|
9
|
+
/**
|
|
10
|
+
* SSR-compatible CSSStyleSheet mock.
|
|
11
|
+
* Stores cssText for serialization into <style> tags during SSR.
|
|
12
|
+
*/
|
|
13
|
+
class SsrCSSStyleSheet {
|
|
14
|
+
cssText = '';
|
|
15
|
+
replaceSync(css) {
|
|
16
|
+
this.cssText = css;
|
|
17
|
+
}
|
|
18
|
+
replace(css) {
|
|
19
|
+
this.cssText = css;
|
|
20
|
+
return Promise.resolve(this);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Server-safe CSSStyleSheet: real in browser, mock on server. */
|
|
24
|
+
export const CSSStyleSheetBase = globalThis.CSSStyleSheet ??
|
|
25
|
+
SsrCSSStyleSheet;
|
|
9
26
|
/**
|
|
10
27
|
* SSR-compatible ShadowRoot mock.
|
|
11
28
|
*/
|
|
12
29
|
class SsrShadowRoot {
|
|
13
30
|
host;
|
|
14
31
|
_innerHTML = '';
|
|
32
|
+
_adoptedStyleSheets = [];
|
|
15
33
|
constructor(host) {
|
|
16
34
|
this.host = host;
|
|
17
35
|
}
|
|
36
|
+
get adoptedStyleSheets() {
|
|
37
|
+
return this._adoptedStyleSheets;
|
|
38
|
+
}
|
|
39
|
+
set adoptedStyleSheets(sheets) {
|
|
40
|
+
this._adoptedStyleSheets = sheets;
|
|
41
|
+
}
|
|
18
42
|
get innerHTML() {
|
|
19
|
-
|
|
43
|
+
const adopted = this._adoptedStyleSheets
|
|
44
|
+
.filter(s => s.cssText)
|
|
45
|
+
.map(s => `<style>${s.cssText}</style>`)
|
|
46
|
+
.join('');
|
|
47
|
+
return adopted + this._innerHTML;
|
|
20
48
|
}
|
|
21
49
|
set innerHTML(value) {
|
|
22
50
|
this._innerHTML = value;
|
|
@@ -38,6 +66,12 @@ class SsrShadowRoot {
|
|
|
38
66
|
return null;
|
|
39
67
|
}
|
|
40
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* SSR-compatible ElementInternals mock.
|
|
71
|
+
*/
|
|
72
|
+
class SsrElementInternals {
|
|
73
|
+
states = new Set();
|
|
74
|
+
}
|
|
41
75
|
/**
|
|
42
76
|
* SSR-compatible HTMLElement mock.
|
|
43
77
|
*/
|
|
@@ -81,6 +115,9 @@ class SsrHTMLElement {
|
|
|
81
115
|
this._shadowRoot = new SsrShadowRoot(this);
|
|
82
116
|
return this._shadowRoot;
|
|
83
117
|
}
|
|
118
|
+
attachInternals() {
|
|
119
|
+
return new SsrElementInternals();
|
|
120
|
+
}
|
|
84
121
|
getAttribute(name) {
|
|
85
122
|
return this._attributes.get(name) ?? null;
|
|
86
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.util.js","sourceRoot":"","sources":["../../../src/util/html.util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iCAAiC;AACjC,OAAO,EACL,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,MAAM,aAAa;
|
|
1
|
+
{"version":3,"file":"html.util.js","sourceRoot":"","sources":["../../../src/util/html.util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emkodev/emroute",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0-beta.2",
|
|
4
4
|
"description": "File-based (but storage-agnostic) router with triple rendering (SPA, SSR HTML, SSR Markdown). Zero dependencies.",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"author": "emko.dev",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
}
|
|
115
115
|
},
|
|
116
116
|
"devDependencies": {
|
|
117
|
-
"@emkodev/emkoma": "^0.
|
|
117
|
+
"@emkodev/emkoma": "^0.3.3",
|
|
118
118
|
"@eslint/js": "^10.0.1",
|
|
119
119
|
"@types/bun": "^1.3.9",
|
|
120
120
|
"eslint": "^10.0.2",
|
|
@@ -2,6 +2,7 @@ import type { RouteNode, RouteFiles } from '../core/type/route-tree.type.ts';
|
|
|
2
2
|
import { resolveTargetNode } from '../core/util/route-tree.util.ts';
|
|
3
3
|
import type { WidgetManifestEntry } from '../core/type/widget.type.ts';
|
|
4
4
|
import type { ElementManifestEntry } from '../core/type/element.type.ts';
|
|
5
|
+
import { escapeTemplateLiteral } from '../core/util/js.util.ts';
|
|
5
6
|
|
|
6
7
|
export const CONTENT_TYPES: Map<string, string> = new Map<string, string>([
|
|
7
8
|
['.html', 'text/html; charset=utf-8'],
|
|
@@ -428,34 +429,14 @@ export abstract class Runtime {
|
|
|
428
429
|
return; // .ts doesn't exist (maybe .js was hand-written)
|
|
429
430
|
}
|
|
430
431
|
|
|
431
|
-
//
|
|
432
|
-
const companionExts = kind === 'element' ? [] : ['html', 'md', 'css'];
|
|
433
|
-
const files: Record<string, string> = {};
|
|
434
|
-
for (const ext of companionExts) {
|
|
435
|
-
const companionPath = tsPath.replace(/\.ts$/, `.${ext}`);
|
|
436
|
-
try {
|
|
437
|
-
files[ext] = await this.query(companionPath, { as: 'text' });
|
|
438
|
-
} catch {
|
|
439
|
-
// companion doesn't exist — skip
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
// Transpile
|
|
432
|
+
// Transpile and inline companions
|
|
444
433
|
let jsCode: string;
|
|
445
434
|
try {
|
|
446
|
-
jsCode = await this.
|
|
435
|
+
jsCode = await this.transpileModule(tsPath, tsSource);
|
|
447
436
|
} catch {
|
|
448
437
|
return; // transpile not implemented — skip silently
|
|
449
438
|
}
|
|
450
439
|
|
|
451
|
-
// Append __files export if there are companions
|
|
452
|
-
if (Object.keys(files).length > 0) {
|
|
453
|
-
const entries = Object.entries(files)
|
|
454
|
-
.map(([k, v]) => `${k}: \`${v.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$/g, '\\$')}\``)
|
|
455
|
-
.join(', ');
|
|
456
|
-
jsCode += `\nexport const __files = { ${entries} };\n`;
|
|
457
|
-
}
|
|
458
|
-
|
|
459
440
|
await this.handle(jsPath, { method: 'PUT', body: jsCode });
|
|
460
441
|
}
|
|
461
442
|
|
|
@@ -469,12 +450,46 @@ export abstract class Runtime {
|
|
|
469
450
|
|
|
470
451
|
/**
|
|
471
452
|
* Transpile TypeScript source to JavaScript.
|
|
472
|
-
* Used by the build step to produce browser-loadable .js modules.
|
|
473
453
|
*/
|
|
474
454
|
transpile(_source: string): Promise<string> {
|
|
475
455
|
throw new Error(`transpile not implemented for ${this.constructor.name}`);
|
|
476
456
|
}
|
|
477
457
|
|
|
458
|
+
/**
|
|
459
|
+
* Transpile a .ts module and inline companion files (.html, .md, .css)
|
|
460
|
+
* as `export const __files = { ... }`.
|
|
461
|
+
*
|
|
462
|
+
* This is the single implementation of the transpile+merge operation.
|
|
463
|
+
* Used by concrete runtimes in their serving path (e.g. BunFsRuntime
|
|
464
|
+
* intercepts .ts in read()) and by retranspileIfNeeded() to keep
|
|
465
|
+
* pre-built .js artifacts in sync after command() writes.
|
|
466
|
+
*
|
|
467
|
+
* @param path Virtual path (e.g. "/widgets/nav.widget.ts")
|
|
468
|
+
* @param source Raw TypeScript source
|
|
469
|
+
*/
|
|
470
|
+
protected async transpileModule(path: string, source: string): Promise<string> {
|
|
471
|
+
let js = await this.transpile(source);
|
|
472
|
+
|
|
473
|
+
const basePath = path.replace(/\.ts$/, '');
|
|
474
|
+
const companions = ['html', 'md', 'css'] as const;
|
|
475
|
+
const entries: string[] = [];
|
|
476
|
+
|
|
477
|
+
for (const ext of companions) {
|
|
478
|
+
try {
|
|
479
|
+
const content = await this.query(basePath + '.' + ext, { as: 'text' });
|
|
480
|
+
entries.push(` ${ext}: \`${escapeTemplateLiteral(content)}\``);
|
|
481
|
+
} catch {
|
|
482
|
+
// companion doesn't exist
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
if (entries.length > 0) {
|
|
487
|
+
js += `\nexport const __files = {\n${entries.join(',\n')}\n};\n`;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
return js;
|
|
491
|
+
}
|
|
492
|
+
|
|
478
493
|
/**
|
|
479
494
|
* Parse a widget file path and merge it into the stored manifest.
|
|
480
495
|
* Reads the current manifest, upserts the entry, writes it back.
|
|
@@ -85,6 +85,11 @@ export class BunFsRuntime extends Runtime {
|
|
|
85
85
|
return this.list(path);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
// Serve .ts as transpiled JavaScript with merged companion files.
|
|
89
|
+
if (path.endsWith('.ts')) {
|
|
90
|
+
return this.serveTranspiled(path);
|
|
91
|
+
}
|
|
92
|
+
|
|
88
93
|
const content = new Uint8Array(await Bun.file(path).arrayBuffer());
|
|
89
94
|
const ext = path.slice(path.lastIndexOf('.')).toLowerCase();
|
|
90
95
|
const headers: HeadersInit = {
|
|
@@ -109,6 +114,20 @@ export class BunFsRuntime extends Runtime {
|
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Serve a .ts file as transpiled JavaScript with companion files inlined.
|
|
119
|
+
*/
|
|
120
|
+
private async serveTranspiled(path: string): Promise<Response> {
|
|
121
|
+
const source = await Bun.file(path).text();
|
|
122
|
+
const virtualPath = path.slice(this.root.length);
|
|
123
|
+
const js = await this.transpileModule(virtualPath, source);
|
|
124
|
+
|
|
125
|
+
return new Response(js, {
|
|
126
|
+
status: 200,
|
|
127
|
+
headers: { 'Content-Type': 'application/javascript; charset=utf-8' },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
112
131
|
private async list(path: string): Promise<Response> {
|
|
113
132
|
const entries: string[] = [];
|
|
114
133
|
const dirents = await readdir(path, { withFileTypes: true });
|
|
@@ -145,7 +164,10 @@ export class BunFsRuntime extends Runtime {
|
|
|
145
164
|
}
|
|
146
165
|
|
|
147
166
|
override loadModule(path: string): Promise<unknown> {
|
|
148
|
-
|
|
167
|
+
// Cache-busting query string makes Bun treat each call as a unique
|
|
168
|
+
// module, bypassing the module cache. Unlike blob URLs, a real file
|
|
169
|
+
// path preserves filesystem context for bare specifier resolution.
|
|
170
|
+
return import(this.root + path + '?t=' + Date.now());
|
|
149
171
|
}
|
|
150
172
|
|
|
151
173
|
override async transpile(source: string): Promise<string> {
|