@emkodev/emroute 1.8.0 → 1.8.2-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/renderer/html.renderer.ts +1 -1
- package/core/renderer/md.renderer.ts +1 -1
- package/core/renderer/ssr.renderer.ts +21 -1
- package/core/server/emroute.server.ts +45 -52
- package/core/util/widget-resolve.util.ts +2 -2
- package/core/widget/widget.registry.ts +29 -2
- package/dist/core/renderer/html.renderer.js +1 -1
- package/dist/core/renderer/html.renderer.js.map +1 -1
- package/dist/core/renderer/md.renderer.js +1 -1
- package/dist/core/renderer/md.renderer.js.map +1 -1
- package/dist/core/renderer/ssr.renderer.d.ts +4 -1
- package/dist/core/renderer/ssr.renderer.js +20 -0
- package/dist/core/renderer/ssr.renderer.js.map +1 -1
- package/dist/core/server/emroute.server.d.ts +0 -2
- package/dist/core/server/emroute.server.js +36 -47
- package/dist/core/server/emroute.server.js.map +1 -1
- package/dist/core/util/widget-resolve.util.d.ts +1 -3
- package/dist/core/util/widget-resolve.util.js +2 -2
- package/dist/core/util/widget-resolve.util.js.map +1 -1
- package/dist/core/widget/widget.registry.d.ts +8 -0
- package/dist/core/widget/widget.registry.js +28 -2
- package/dist/core/widget/widget.registry.js.map +1 -1
- package/dist/emroute.js +227 -66
- package/dist/emroute.js.map +13 -13
- package/dist/runtime/abstract.runtime.js +7 -3
- package/dist/runtime/abstract.runtime.js.map +1 -1
- package/dist/runtime/fetch.runtime.js +7 -1
- package/dist/runtime/fetch.runtime.js.map +1 -1
- package/dist/server/build.util.d.ts +1 -1
- package/dist/server/build.util.js +10 -28
- package/dist/server/build.util.js.map +1 -1
- package/dist/src/element/component.element.d.ts +4 -1
- package/dist/src/element/component.element.js +4 -1
- package/dist/src/element/component.element.js.map +1 -1
- package/dist/src/overlay/mod.d.ts +1 -1
- package/dist/src/overlay/overlay.service.js +136 -6
- package/dist/src/overlay/overlay.service.js.map +1 -1
- package/dist/src/overlay/overlay.type.d.ts +28 -4
- package/dist/src/renderer/spa/emroute.app.d.ts +3 -0
- package/dist/src/renderer/spa/emroute.app.js +18 -3
- package/dist/src/renderer/spa/emroute.app.js.map +1 -1
- package/package.json +2 -2
- package/runtime/abstract.runtime.ts +11 -5
- package/runtime/fetch.runtime.ts +6 -1
- package/server/build.util.ts +10 -30
- package/src/element/component.element.ts +4 -1
- package/src/overlay/mod.ts +1 -1
- package/src/overlay/overlay.service.ts +158 -8
- package/src/overlay/overlay.type.ts +27 -2
- package/src/renderer/spa/emroute.app.ts +20 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emroute.server.js","sourceRoot":"","sources":["../../../core/server/emroute.server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"emroute.server.js","sourceRoot":"","sources":["../../../core/server/emroute.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,7 @@ export declare function resolveRecursively<T>(content: string, parse: (content:
|
|
|
17
17
|
/**
|
|
18
18
|
* Resolve <widget-*> tags in HTML by calling getData() + renderHTML().
|
|
19
19
|
*/
|
|
20
|
-
export declare function resolveWidgetTags(html: string,
|
|
21
|
-
get(name: string): Component | undefined;
|
|
22
|
-
}, routeInfo: RouteInfo, loadFiles?: (widgetName: string) => Promise<{
|
|
20
|
+
export declare function resolveWidgetTags(html: string, getWidget: (name: string) => Promise<Component | undefined>, routeInfo: RouteInfo, loadFiles?: (widgetName: string) => Promise<{
|
|
23
21
|
html?: string;
|
|
24
22
|
md?: string;
|
|
25
23
|
css?: string;
|
|
@@ -31,7 +31,7 @@ export async function resolveRecursively(content, parse, resolve, replace, depth
|
|
|
31
31
|
/**
|
|
32
32
|
* Resolve <widget-*> tags in HTML by calling getData() + renderHTML().
|
|
33
33
|
*/
|
|
34
|
-
export function resolveWidgetTags(html,
|
|
34
|
+
export function resolveWidgetTags(html, getWidget, routeInfo, loadFiles, contextProvider, logger = defaultLogger) {
|
|
35
35
|
const tagPattern = /<widget-(?<name>[a-z][a-z0-9-]*)(?<attrs>\s[^>]*)?>(?<content>.*?)<\/widget-\k<name>>/gis;
|
|
36
36
|
const wrappers = new Map();
|
|
37
37
|
const ssrAttrPattern = new RegExp(`\\s${SSR_ATTR}(?:\\s|=|$)`);
|
|
@@ -45,7 +45,7 @@ export function resolveWidgetTags(html, registry, routeInfo, loadFiles, contextP
|
|
|
45
45
|
const resolve = async (match) => {
|
|
46
46
|
const widgetName = match.groups.name;
|
|
47
47
|
const attrsString = match.groups.attrs?.trim() ?? '';
|
|
48
|
-
const widget =
|
|
48
|
+
const widget = await getWidget(widgetName);
|
|
49
49
|
if (!widget)
|
|
50
50
|
return match[0];
|
|
51
51
|
const params = parseAttrsToParams(attrsString);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-resolve.util.js","sourceRoot":"","sources":["../../../core/util/widget-resolve.util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAe,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAErD,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,KAA+B,EAC/B,OAAuC,EACvC,OAAkE,EAClE,KAAK,GAAG,CAAC,EACT,SAAiB,aAAa;IAE9B,IAAI,KAAK,IAAI,gBAAgB,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CACT,uCAAuC,gBAAgB,KAAK;YAC1D,oDAAoD,CACvD,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAEzC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAa,CAAC;IAC1C,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3B,IAAI,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1F,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"widget-resolve.util.js","sourceRoot":"","sources":["../../../core/util/widget-resolve.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,20 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Name → Component lookup. Used by all renderers.
|
|
5
5
|
* Pages are NOT in this registry — they live in the routes manifest.
|
|
6
|
+
*
|
|
7
|
+
* Supports eager entries (widget instance) and lazy entries (module path only).
|
|
8
|
+
* Lazy entries are resolved on demand by the renderer via Pipeline → Runtime.
|
|
6
9
|
*/
|
|
7
10
|
import type { WidgetComponent } from '../component/widget.component.ts';
|
|
8
11
|
export declare class WidgetRegistry {
|
|
9
12
|
private entries;
|
|
13
|
+
/** Register a widget instance (eager). */
|
|
10
14
|
add(widget: WidgetComponent, modulePath?: string): void;
|
|
15
|
+
/** Register a widget by name and module path (lazy — resolved on demand by renderer). */
|
|
16
|
+
addLazy(name: string, modulePath: string): void;
|
|
11
17
|
get(name: string): WidgetComponent | undefined;
|
|
12
18
|
getModulePath(name: string): string | undefined;
|
|
13
19
|
[Symbol.iterator](): IterableIterator<WidgetComponent>;
|
|
14
20
|
}
|
|
21
|
+
/** Extract a WidgetComponent from a loaded module's exports. */
|
|
22
|
+
export declare function extractWidgetExport(mod: Record<string, unknown>): WidgetComponent | null;
|
|
@@ -3,12 +3,22 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Name → Component lookup. Used by all renderers.
|
|
5
5
|
* Pages are NOT in this registry — they live in the routes manifest.
|
|
6
|
+
*
|
|
7
|
+
* Supports eager entries (widget instance) and lazy entries (module path only).
|
|
8
|
+
* Lazy entries are resolved on demand by the renderer via Pipeline → Runtime.
|
|
6
9
|
*/
|
|
7
10
|
export class WidgetRegistry {
|
|
8
11
|
entries = new Map();
|
|
12
|
+
/** Register a widget instance (eager). */
|
|
9
13
|
add(widget, modulePath) {
|
|
10
14
|
this.entries.set(widget.name, { widget, modulePath });
|
|
11
15
|
}
|
|
16
|
+
/** Register a widget by name and module path (lazy — resolved on demand by renderer). */
|
|
17
|
+
addLazy(name, modulePath) {
|
|
18
|
+
if (!this.entries.has(name)) {
|
|
19
|
+
this.entries.set(name, { modulePath });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
12
22
|
get(name) {
|
|
13
23
|
return this.entries.get(name)?.widget;
|
|
14
24
|
}
|
|
@@ -18,9 +28,25 @@ export class WidgetRegistry {
|
|
|
18
28
|
[Symbol.iterator]() {
|
|
19
29
|
const entries = this.entries.values();
|
|
20
30
|
return (function* () {
|
|
21
|
-
for (const entry of entries)
|
|
22
|
-
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
if (entry.widget)
|
|
33
|
+
yield entry.widget;
|
|
34
|
+
}
|
|
23
35
|
})();
|
|
24
36
|
}
|
|
25
37
|
}
|
|
38
|
+
/** Extract a WidgetComponent from a loaded module's exports. */
|
|
39
|
+
export function extractWidgetExport(mod) {
|
|
40
|
+
for (const value of Object.values(mod)) {
|
|
41
|
+
if (!value)
|
|
42
|
+
continue;
|
|
43
|
+
if (typeof value === 'object' && 'getData' in value) {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
if (typeof value === 'function' && value.prototype?.getData) {
|
|
47
|
+
return new value();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
26
52
|
//# sourceMappingURL=widget.registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.registry.js","sourceRoot":"","sources":["../../../core/widget/widget.registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"widget.registry.js","sourceRoot":"","sources":["../../../core/widget/widget.registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,OAAO,cAAc;IACjB,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEnD,0CAA0C;IAC1C,GAAG,CAAC,MAAuB,EAAE,UAAmB;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,yFAAyF;IACzF,OAAO,CAAC,IAAY,EAAE,UAAkB;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACxC,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC5C,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,CAAC,QAAQ,CAAC;YACf,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,MAAM;oBAAE,MAAM,KAAK,CAAC,MAAM,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,GAA4B;IAC9D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YACpD,OAAO,KAAwB,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;YAC5D,OAAO,IAAK,KAAmC,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/emroute.js
CHANGED
|
@@ -478,6 +478,11 @@ class WidgetRegistry {
|
|
|
478
478
|
add(widget, modulePath) {
|
|
479
479
|
this.entries.set(widget.name, { widget, modulePath });
|
|
480
480
|
}
|
|
481
|
+
addLazy(name, modulePath) {
|
|
482
|
+
if (!this.entries.has(name)) {
|
|
483
|
+
this.entries.set(name, { modulePath });
|
|
484
|
+
}
|
|
485
|
+
}
|
|
481
486
|
get(name) {
|
|
482
487
|
return this.entries.get(name)?.widget;
|
|
483
488
|
}
|
|
@@ -487,11 +492,26 @@ class WidgetRegistry {
|
|
|
487
492
|
[Symbol.iterator]() {
|
|
488
493
|
const entries = this.entries.values();
|
|
489
494
|
return function* () {
|
|
490
|
-
for (const entry of entries)
|
|
491
|
-
|
|
495
|
+
for (const entry of entries) {
|
|
496
|
+
if (entry.widget)
|
|
497
|
+
yield entry.widget;
|
|
498
|
+
}
|
|
492
499
|
}();
|
|
493
500
|
}
|
|
494
501
|
}
|
|
502
|
+
function extractWidgetExport(mod) {
|
|
503
|
+
for (const value of Object.values(mod)) {
|
|
504
|
+
if (!value)
|
|
505
|
+
continue;
|
|
506
|
+
if (typeof value === "object" && "getData" in value) {
|
|
507
|
+
return value;
|
|
508
|
+
}
|
|
509
|
+
if (typeof value === "function" && value.prototype?.getData) {
|
|
510
|
+
return new value;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
return null;
|
|
514
|
+
}
|
|
495
515
|
|
|
496
516
|
// dist/core/router/route.trie.js
|
|
497
517
|
class RouteTrie {
|
|
@@ -806,7 +826,7 @@ async function resolveRecursively(content, parse, resolve, replace, depth = 0, l
|
|
|
806
826
|
}));
|
|
807
827
|
return replace(content, replacements);
|
|
808
828
|
}
|
|
809
|
-
function resolveWidgetTags(html,
|
|
829
|
+
function resolveWidgetTags(html, getWidget, routeInfo, loadFiles, contextProvider, logger = defaultLogger) {
|
|
810
830
|
const tagPattern = /<widget-(?<name>[a-z][a-z0-9-]*)(?<attrs>\s[^>]*)?>(?<content>.*?)<\/widget-\k<name>>/gis;
|
|
811
831
|
const wrappers = new Map;
|
|
812
832
|
const ssrAttrPattern = new RegExp(`\\s${SSR_ATTR}(?:\\s|=|$)`);
|
|
@@ -820,7 +840,7 @@ function resolveWidgetTags(html, registry, routeInfo, loadFiles, contextProvider
|
|
|
820
840
|
const resolve = async (match) => {
|
|
821
841
|
const widgetName = match.groups.name;
|
|
822
842
|
const attrsString = match.groups.attrs?.trim() ?? "";
|
|
823
|
-
const widget =
|
|
843
|
+
const widget = await getWidget(widgetName);
|
|
824
844
|
if (!widget)
|
|
825
845
|
return match[0];
|
|
826
846
|
const params = parseAttrsToParams(attrsString);
|
|
@@ -1027,6 +1047,23 @@ class SsrRenderer {
|
|
|
1027
1047
|
this.logger = pipeline.logger;
|
|
1028
1048
|
this.widgets = options.widgets ?? null;
|
|
1029
1049
|
}
|
|
1050
|
+
async resolveWidget(name) {
|
|
1051
|
+
if (!this.widgets)
|
|
1052
|
+
return;
|
|
1053
|
+
const widget = this.widgets.get(name);
|
|
1054
|
+
if (widget)
|
|
1055
|
+
return widget;
|
|
1056
|
+
const path = this.widgets.getModulePath(name);
|
|
1057
|
+
if (!path)
|
|
1058
|
+
return;
|
|
1059
|
+
try {
|
|
1060
|
+
const mod = await this.pipeline.loadModule(path);
|
|
1061
|
+
return extractWidgetExport(mod) ?? undefined;
|
|
1062
|
+
} catch (e) {
|
|
1063
|
+
this.logger.error(`[${this.label}] Failed to load widget "${name}"`, e instanceof Error ? e : undefined);
|
|
1064
|
+
return;
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1030
1067
|
async render(url, signal) {
|
|
1031
1068
|
const matched = await this.pipeline.match(url);
|
|
1032
1069
|
if (!matched) {
|
|
@@ -1191,7 +1228,7 @@ class SsrHtmlRenderer extends SsrRenderer {
|
|
|
1191
1228
|
content = await this.expandMarkdown(content);
|
|
1192
1229
|
content = this.attributeSlots(content, route.pattern);
|
|
1193
1230
|
if (this.widgets) {
|
|
1194
|
-
content = await resolveWidgetTags(content, this.
|
|
1231
|
+
content = await resolveWidgetTags(content, (name) => this.resolveWidget(name), routeInfo, async (name) => {
|
|
1195
1232
|
const modulePath = this.widgets.getModulePath(name);
|
|
1196
1233
|
if (modulePath) {
|
|
1197
1234
|
const mod = await this.pipeline.loadModule(modulePath);
|
|
@@ -1339,7 +1376,7 @@ Path: \`${url.pathname}\``;
|
|
|
1339
1376
|
if (block.parseError || !block.params) {
|
|
1340
1377
|
return `> **Error** (\`${block.widgetName}\`): ${block.parseError}`;
|
|
1341
1378
|
}
|
|
1342
|
-
const widget = this.
|
|
1379
|
+
const widget = await this.resolveWidget(block.widgetName);
|
|
1343
1380
|
if (!widget) {
|
|
1344
1381
|
return `> **Error**: Unknown widget \`${block.widgetName}\``;
|
|
1345
1382
|
}
|
|
@@ -1430,14 +1467,21 @@ class Emroute {
|
|
|
1430
1467
|
...config.extendContext ? { contextProvider: config.extendContext } : {},
|
|
1431
1468
|
...config.moduleLoaders ? { moduleLoaders: config.moduleLoaders } : {}
|
|
1432
1469
|
});
|
|
1433
|
-
let widgets
|
|
1470
|
+
let widgets;
|
|
1434
1471
|
const widgetsResponse = await runtime.query(WIDGETS_MANIFEST_PATH);
|
|
1435
1472
|
if (widgetsResponse.status !== 404) {
|
|
1436
1473
|
const entries = await widgetsResponse.json();
|
|
1437
|
-
|
|
1438
|
-
|
|
1474
|
+
widgets = new WidgetRegistry;
|
|
1475
|
+
for (const entry of entries) {
|
|
1476
|
+
widgets.addLazy(entry.name, entry.modulePath);
|
|
1439
1477
|
}
|
|
1440
1478
|
}
|
|
1479
|
+
if (config.widgets) {
|
|
1480
|
+
if (!widgets)
|
|
1481
|
+
widgets = new WidgetRegistry;
|
|
1482
|
+
for (const w of config.widgets)
|
|
1483
|
+
widgets.add(w);
|
|
1484
|
+
}
|
|
1441
1485
|
let ssrHtmlRenderer = null;
|
|
1442
1486
|
let ssrMdRenderer = null;
|
|
1443
1487
|
if (spa !== "only") {
|
|
@@ -1451,11 +1495,7 @@ class Emroute {
|
|
|
1451
1495
|
}
|
|
1452
1496
|
const title = config.title ?? "emroute";
|
|
1453
1497
|
const shellBase = spa === "root" || spa === "only" ? appBase : htmlBase;
|
|
1454
|
-
|
|
1455
|
-
if ((await runtime.query("/main.css")).status !== 404) {
|
|
1456
|
-
shell = shell.replace("</head>", ` <link rel="stylesheet" href="/main.css">
|
|
1457
|
-
</head>`);
|
|
1458
|
-
}
|
|
1498
|
+
const shell = await Emroute.resolveShell(runtime, title, shellBase, spa);
|
|
1459
1499
|
return new Emroute(ssrHtmlRenderer, ssrMdRenderer, shell, runtime, htmlBase, mdBase, appBase, spa, title);
|
|
1460
1500
|
}
|
|
1461
1501
|
async handleRequest(req) {
|
|
@@ -1517,10 +1557,8 @@ class Emroute {
|
|
|
1517
1557
|
});
|
|
1518
1558
|
}
|
|
1519
1559
|
if (pathname.startsWith(htmlPrefix) || pathname === this.htmlBase || pathname.startsWith(mdPrefix) || pathname === this.mdBase) {
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
headers: { "Content-Type": "text/html; charset=utf-8" }
|
|
1523
|
-
});
|
|
1560
|
+
const routePath = pathname.startsWith(htmlPrefix) ? pathname.slice(this.htmlBase.length) : pathname.startsWith(mdPrefix) ? pathname.slice(this.mdBase.length) : "/";
|
|
1561
|
+
return Response.redirect(new URL(this.appBase + routePath + (url.search || ""), url.origin), 302);
|
|
1524
1562
|
}
|
|
1525
1563
|
const lastSegment = pathname.split("/").pop() ?? "";
|
|
1526
1564
|
if (lastSegment.includes(".")) {
|
|
@@ -1533,48 +1571,41 @@ class Emroute {
|
|
|
1533
1571
|
const bare = pathname === "/" ? "" : pathname.slice(1).replace(/\/$/, "");
|
|
1534
1572
|
return Response.redirect(new URL(`${base}/${bare}`, url.origin), 302);
|
|
1535
1573
|
}
|
|
1536
|
-
static
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
console.error(`[emroute] Failed to load widget ${entry.modulePath}:`, e);
|
|
1561
|
-
}
|
|
1574
|
+
static async buildHtmlShell(runtime, title, basePath, spa) {
|
|
1575
|
+
const baseTag = basePath ? `
|
|
1576
|
+
<base href="${escapeHtml(basePath)}/">` : "";
|
|
1577
|
+
let cssTag = "";
|
|
1578
|
+
if ((await runtime.query("/main.css")).status !== 404) {
|
|
1579
|
+
cssTag = `
|
|
1580
|
+
<link rel="stylesheet" href="/main.css">`;
|
|
1581
|
+
}
|
|
1582
|
+
const needsJs = spa !== "none";
|
|
1583
|
+
let importMapHtml = "";
|
|
1584
|
+
if (needsJs) {
|
|
1585
|
+
const mapResponse = await runtime.query("/importmap.json");
|
|
1586
|
+
if (mapResponse.status !== 404) {
|
|
1587
|
+
const importMap = await mapResponse.text();
|
|
1588
|
+
importMapHtml = `
|
|
1589
|
+
<script type="importmap">
|
|
1590
|
+
${importMap}
|
|
1591
|
+
</script>`;
|
|
1592
|
+
}
|
|
1593
|
+
}
|
|
1594
|
+
let scriptHtml = "";
|
|
1595
|
+
if (needsJs && (await runtime.query("/app.js")).status !== 404) {
|
|
1596
|
+
scriptHtml = `
|
|
1597
|
+
<script type="module" src="/app.js"></script>`;
|
|
1562
1598
|
}
|
|
1563
|
-
return registry;
|
|
1564
|
-
}
|
|
1565
|
-
static buildHtmlShell(title, htmlBase) {
|
|
1566
|
-
const baseTag = htmlBase ? `
|
|
1567
|
-
<base href="${escapeHtml(htmlBase)}/">` : "";
|
|
1568
1599
|
return `<!DOCTYPE html>
|
|
1569
1600
|
<html>
|
|
1570
1601
|
<head>${baseTag}
|
|
1571
1602
|
<meta charset="utf-8">
|
|
1572
1603
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
1573
1604
|
<title>${escapeHtml(title)}</title>
|
|
1574
|
-
<style>@view-transition { navigation: auto; } router-slot { display: contents; }</style
|
|
1605
|
+
<style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>${cssTag}
|
|
1575
1606
|
</head>
|
|
1576
1607
|
<body>
|
|
1577
|
-
<router-slot></router-slot
|
|
1608
|
+
<router-slot></router-slot>${importMapHtml}${scriptHtml}
|
|
1578
1609
|
</body>
|
|
1579
1610
|
</html>`;
|
|
1580
1611
|
}
|
|
@@ -1589,11 +1620,11 @@ class Emroute {
|
|
|
1589
1620
|
}
|
|
1590
1621
|
return html;
|
|
1591
1622
|
}
|
|
1592
|
-
static async resolveShell(runtime, title,
|
|
1623
|
+
static async resolveShell(runtime, title, basePath, spa) {
|
|
1593
1624
|
const response = await runtime.query("/index.html");
|
|
1594
1625
|
if (response.status !== 404)
|
|
1595
1626
|
return await response.text();
|
|
1596
|
-
return Emroute.buildHtmlShell(title,
|
|
1627
|
+
return Emroute.buildHtmlShell(runtime, title, basePath, spa);
|
|
1597
1628
|
}
|
|
1598
1629
|
}
|
|
1599
1630
|
|
|
@@ -2153,11 +2184,15 @@ export const __files = { ${entries} };
|
|
|
2153
2184
|
};
|
|
2154
2185
|
const files = {};
|
|
2155
2186
|
let hasFiles = false;
|
|
2156
|
-
|
|
2187
|
+
const companionResults = await Promise.all(COMPANION_EXTENSIONS.map(async (ext) => {
|
|
2157
2188
|
const companionFile = `${name}.widget.${ext}`;
|
|
2158
2189
|
const companionPath = `${trailingDir}${name}/${companionFile}`;
|
|
2159
|
-
|
|
2160
|
-
|
|
2190
|
+
const exists = (await this.query(companionPath)).status !== 404;
|
|
2191
|
+
return { ext, exists, path: `${prefix}${name}/${companionFile}` };
|
|
2192
|
+
}));
|
|
2193
|
+
for (const { ext, exists, path } of companionResults) {
|
|
2194
|
+
if (exists) {
|
|
2195
|
+
files[ext] = path;
|
|
2161
2196
|
hasFiles = true;
|
|
2162
2197
|
}
|
|
2163
2198
|
}
|
|
@@ -2232,7 +2267,12 @@ class FetchRuntime extends Runtime {
|
|
|
2232
2267
|
const response = await fetch(url);
|
|
2233
2268
|
const js = await response.text();
|
|
2234
2269
|
const blob = new Blob([js], { type: "application/javascript" });
|
|
2235
|
-
|
|
2270
|
+
const objectUrl = URL.createObjectURL(blob);
|
|
2271
|
+
try {
|
|
2272
|
+
return await import(__rewriteRelativeImportExtension(objectUrl));
|
|
2273
|
+
} finally {
|
|
2274
|
+
URL.revokeObjectURL(objectUrl);
|
|
2275
|
+
}
|
|
2236
2276
|
}
|
|
2237
2277
|
toUrl(resource) {
|
|
2238
2278
|
if (typeof resource === "string")
|
|
@@ -2250,9 +2290,15 @@ class EmrouteApp {
|
|
|
2250
2290
|
slot = null;
|
|
2251
2291
|
abortController = null;
|
|
2252
2292
|
constructor(server, options) {
|
|
2253
|
-
const bp = options?.basePath ?? DEFAULT_BASE_PATH;
|
|
2254
2293
|
this.server = server;
|
|
2255
|
-
|
|
2294
|
+
if (options?.basePath) {
|
|
2295
|
+
this.appBase = options.basePath.app;
|
|
2296
|
+
} else if (typeof document !== "undefined") {
|
|
2297
|
+
const base = document.querySelector("base")?.getAttribute("href");
|
|
2298
|
+
this.appBase = base ? base.replace(/\/$/, "") : DEFAULT_BASE_PATH.app;
|
|
2299
|
+
} else {
|
|
2300
|
+
this.appBase = DEFAULT_BASE_PATH.app;
|
|
2301
|
+
}
|
|
2256
2302
|
}
|
|
2257
2303
|
async initialize(slotSelector = "router-slot") {
|
|
2258
2304
|
this.slot = document.querySelector(slotSelector);
|
|
@@ -2382,6 +2428,7 @@ async function bootEmrouteApp(options) {
|
|
|
2382
2428
|
const moduleLoaders = buildLazyLoaders(routeTree, widgetEntries, elementEntries, runtime);
|
|
2383
2429
|
const widgets = new WidgetRegistry;
|
|
2384
2430
|
for (const entry of widgetEntries) {
|
|
2431
|
+
widgets.addLazy(entry.name, entry.modulePath);
|
|
2385
2432
|
ComponentElement.registerLazy(entry.name, moduleLoaders[entry.modulePath]);
|
|
2386
2433
|
}
|
|
2387
2434
|
for (const entry of elementEntries) {
|
|
@@ -2397,12 +2444,16 @@ async function bootEmrouteApp(options) {
|
|
|
2397
2444
|
});
|
|
2398
2445
|
}
|
|
2399
2446
|
}
|
|
2447
|
+
if (options?.extendContext) {
|
|
2448
|
+
ComponentElement.setContextProvider(options.extendContext);
|
|
2449
|
+
}
|
|
2400
2450
|
const mdRenderer = MarkdownElement.getConfiguredRenderer();
|
|
2401
2451
|
const server = await Emroute.create({
|
|
2402
2452
|
routeTree,
|
|
2403
2453
|
widgets,
|
|
2404
2454
|
moduleLoaders,
|
|
2405
|
-
...mdRenderer ? { markdownRenderer: mdRenderer } : {}
|
|
2455
|
+
...mdRenderer ? { markdownRenderer: mdRenderer } : {},
|
|
2456
|
+
...options?.extendContext ? { extendContext: options.extendContext } : {}
|
|
2406
2457
|
}, runtime);
|
|
2407
2458
|
return createEmrouteApp(server, options);
|
|
2408
2459
|
}
|
|
@@ -2640,6 +2691,62 @@ function animateDismiss(el, onDone) {
|
|
|
2640
2691
|
el.addEventListener("transitionend", finish, { once: true });
|
|
2641
2692
|
setTimeout(finish, ANIMATION_SAFETY_TIMEOUT);
|
|
2642
2693
|
}
|
|
2694
|
+
function fillTemplate(el, options, onConfirm, onReject) {
|
|
2695
|
+
const msgEl = el.querySelector("[data-toast-message]");
|
|
2696
|
+
if (msgEl && options.message) {
|
|
2697
|
+
msgEl.textContent = options.message;
|
|
2698
|
+
}
|
|
2699
|
+
if (options.type) {
|
|
2700
|
+
el.setAttribute("data-toast-type", options.type);
|
|
2701
|
+
}
|
|
2702
|
+
const confirmBtn = el.querySelector("[data-toast-confirm]");
|
|
2703
|
+
if (confirmBtn) {
|
|
2704
|
+
if (options.confirm) {
|
|
2705
|
+
confirmBtn.textContent = options.confirm;
|
|
2706
|
+
confirmBtn.hidden = false;
|
|
2707
|
+
if (onConfirm)
|
|
2708
|
+
confirmBtn.addEventListener("click", onConfirm, { once: true });
|
|
2709
|
+
} else {
|
|
2710
|
+
confirmBtn.hidden = true;
|
|
2711
|
+
}
|
|
2712
|
+
}
|
|
2713
|
+
const rejectBtn = el.querySelector("[data-toast-reject]");
|
|
2714
|
+
if (rejectBtn) {
|
|
2715
|
+
if (options.reject) {
|
|
2716
|
+
rejectBtn.textContent = options.reject;
|
|
2717
|
+
rejectBtn.hidden = false;
|
|
2718
|
+
if (onReject)
|
|
2719
|
+
rejectBtn.addEventListener("click", onReject, { once: true });
|
|
2720
|
+
} else {
|
|
2721
|
+
rejectBtn.hidden = true;
|
|
2722
|
+
}
|
|
2723
|
+
}
|
|
2724
|
+
}
|
|
2725
|
+
function buildFallback(el, options, onConfirm, onReject) {
|
|
2726
|
+
if (options.type) {
|
|
2727
|
+
el.setAttribute("data-toast-type", options.type);
|
|
2728
|
+
}
|
|
2729
|
+
const span = document.createElement("span");
|
|
2730
|
+
span.setAttribute("data-toast-message", "");
|
|
2731
|
+
span.textContent = options.message ?? "";
|
|
2732
|
+
el.appendChild(span);
|
|
2733
|
+
if (options.confirm) {
|
|
2734
|
+
const btn = document.createElement("button");
|
|
2735
|
+
btn.setAttribute("data-toast-confirm", "");
|
|
2736
|
+
btn.textContent = options.confirm;
|
|
2737
|
+
if (onConfirm)
|
|
2738
|
+
btn.addEventListener("click", onConfirm, { once: true });
|
|
2739
|
+
el.appendChild(btn);
|
|
2740
|
+
}
|
|
2741
|
+
if (options.reject) {
|
|
2742
|
+
const btn = document.createElement("button");
|
|
2743
|
+
btn.setAttribute("data-toast-reject", "");
|
|
2744
|
+
btn.textContent = options.reject;
|
|
2745
|
+
if (onReject)
|
|
2746
|
+
btn.addEventListener("click", onReject, { once: true });
|
|
2747
|
+
el.appendChild(btn);
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2643
2750
|
function createOverlayService() {
|
|
2644
2751
|
let styleInjected = false;
|
|
2645
2752
|
let dialog = null;
|
|
@@ -2744,23 +2851,77 @@ function createOverlayService() {
|
|
|
2744
2851
|
clearDeadToasts(container);
|
|
2745
2852
|
const el = document.createElement("div");
|
|
2746
2853
|
el.setAttribute("data-overlay-toast", "");
|
|
2747
|
-
const
|
|
2854
|
+
const isConfirmation = !!(options.confirm || options.reject);
|
|
2855
|
+
const timeout = isConfirmation ? 0 : options.timeout ?? 0;
|
|
2748
2856
|
if (timeout === 0) {
|
|
2749
2857
|
el.setAttribute("data-toast-manual", "");
|
|
2750
2858
|
} else {
|
|
2751
2859
|
el.style.setProperty("--overlay-toast-duration", `${timeout}ms`);
|
|
2752
2860
|
}
|
|
2753
|
-
|
|
2861
|
+
let confirmResolve;
|
|
2862
|
+
let confirmPromise;
|
|
2863
|
+
if (isConfirmation) {
|
|
2864
|
+
const resolvers = Promise.withResolvers();
|
|
2865
|
+
confirmResolve = resolvers.resolve;
|
|
2866
|
+
confirmPromise = resolvers.promise;
|
|
2867
|
+
}
|
|
2868
|
+
const onConfirm = confirmResolve ? () => {
|
|
2869
|
+
confirmResolve(true);
|
|
2870
|
+
dismiss();
|
|
2871
|
+
} : undefined;
|
|
2872
|
+
const onReject = confirmResolve ? () => {
|
|
2873
|
+
confirmResolve(false);
|
|
2874
|
+
dismiss();
|
|
2875
|
+
} : undefined;
|
|
2876
|
+
if (options.render) {
|
|
2877
|
+
options.render(el);
|
|
2878
|
+
} else {
|
|
2879
|
+
const template = document.querySelector("#overlay-toast");
|
|
2880
|
+
if (template) {
|
|
2881
|
+
const clone = template.content.cloneNode(true);
|
|
2882
|
+
el.appendChild(clone);
|
|
2883
|
+
fillTemplate(el, options, onConfirm, onReject);
|
|
2884
|
+
} else {
|
|
2885
|
+
buildFallback(el, options, onConfirm, onReject);
|
|
2886
|
+
}
|
|
2887
|
+
}
|
|
2754
2888
|
container.appendChild(el);
|
|
2889
|
+
const id = performance.now();
|
|
2755
2890
|
let dismissed = false;
|
|
2756
|
-
|
|
2891
|
+
function dismiss() {
|
|
2757
2892
|
if (dismissed)
|
|
2758
2893
|
return;
|
|
2759
2894
|
dismissed = true;
|
|
2760
2895
|
el.setAttribute("data-dismissing", "");
|
|
2761
|
-
}
|
|
2762
|
-
|
|
2896
|
+
}
|
|
2897
|
+
function update(opts) {
|
|
2898
|
+
if (opts.message !== undefined) {
|
|
2899
|
+
const msgEl = el.querySelector("[data-toast-message]");
|
|
2900
|
+
if (msgEl)
|
|
2901
|
+
msgEl.textContent = opts.message;
|
|
2902
|
+
}
|
|
2903
|
+
if (opts.type !== undefined) {
|
|
2904
|
+
el.setAttribute("data-toast-type", opts.type);
|
|
2905
|
+
}
|
|
2906
|
+
if (opts.timeout !== undefined) {
|
|
2907
|
+
el.style.setProperty("--overlay-toast-duration", `${opts.timeout}ms`);
|
|
2908
|
+
if (opts.timeout === 0) {
|
|
2909
|
+
el.setAttribute("data-toast-manual", "");
|
|
2910
|
+
} else {
|
|
2911
|
+
el.removeAttribute("data-toast-manual");
|
|
2912
|
+
}
|
|
2913
|
+
}
|
|
2914
|
+
}
|
|
2915
|
+
const handle = { id, dismiss, update };
|
|
2916
|
+
if (confirmPromise) {
|
|
2917
|
+
handle.then = confirmPromise.then.bind(confirmPromise);
|
|
2918
|
+
}
|
|
2919
|
+
return handle;
|
|
2763
2920
|
}
|
|
2921
|
+
toast.success = (message, timeout) => toast({ message, type: "success", timeout: timeout ?? 5000 });
|
|
2922
|
+
toast.error = (message, timeout) => toast({ message, type: "error", timeout: timeout ?? 5000 });
|
|
2923
|
+
toast.warning = (message, timeout) => toast({ message, type: "warning", timeout: timeout ?? 5000 });
|
|
2924
|
+
toast.info = (message, timeout) => toast({ message, type: "info", timeout: timeout ?? 5000 });
|
|
2764
2925
|
function popover(options) {
|
|
2765
2926
|
const el = ensurePopover();
|
|
2766
2927
|
cleanupPopoverAnchorObserver();
|
|
@@ -2966,5 +3127,5 @@ export {
|
|
|
2966
3127
|
BreadcrumbWidget
|
|
2967
3128
|
};
|
|
2968
3129
|
|
|
2969
|
-
//# debugId=
|
|
3130
|
+
//# debugId=BD93EBE5532178BB64756E2164756E21
|
|
2970
3131
|
//# sourceMappingURL=emroute.js.map
|