@emkodev/emroute 1.6.6-beta.3 → 1.6.6-beta.4
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/dist/emroute.js +2757 -0
- package/dist/emroute.js.map +7 -0
- package/dist/runtime/abstract.runtime.d.ts +0 -28
- package/dist/runtime/abstract.runtime.js +10 -58
- package/dist/runtime/abstract.runtime.js.map +1 -1
- package/dist/runtime/bun/esbuild-runtime-loader.plugin.js +3 -2
- package/dist/runtime/bun/esbuild-runtime-loader.plugin.js.map +1 -1
- package/dist/runtime/bun/fs/bun-fs.runtime.d.ts +0 -5
- package/dist/runtime/bun/fs/bun-fs.runtime.js +1 -95
- package/dist/runtime/bun/fs/bun-fs.runtime.js.map +1 -1
- package/dist/runtime/bun/sqlite/bun-sqlite.runtime.d.ts +0 -5
- package/dist/runtime/bun/sqlite/bun-sqlite.runtime.js +2 -96
- package/dist/runtime/bun/sqlite/bun-sqlite.runtime.js.map +1 -1
- package/dist/runtime/fetch.runtime.d.ts +26 -0
- package/dist/runtime/fetch.runtime.js +55 -0
- package/dist/runtime/fetch.runtime.js.map +1 -0
- package/dist/runtime/sitemap.generator.d.ts +4 -4
- package/dist/runtime/sitemap.generator.js +32 -11
- package/dist/runtime/sitemap.generator.js.map +1 -1
- package/dist/runtime/universal/fs/universal-fs.runtime.d.ts +0 -5
- package/dist/runtime/universal/fs/universal-fs.runtime.js +1 -95
- package/dist/runtime/universal/fs/universal-fs.runtime.js.map +1 -1
- package/dist/server/build.util.d.ts +38 -0
- package/dist/server/build.util.js +133 -0
- package/dist/server/build.util.js.map +1 -0
- package/dist/server/codegen.util.d.ts +3 -0
- package/dist/server/codegen.util.js +28 -10
- package/dist/server/codegen.util.js.map +1 -1
- package/dist/server/emroute.server.js +53 -29
- package/dist/server/emroute.server.js.map +1 -1
- package/dist/server/esbuild-manifest.plugin.js +6 -4
- package/dist/server/esbuild-manifest.plugin.js.map +1 -1
- package/dist/server/server-api.type.d.ts +6 -0
- package/dist/src/component/abstract.component.d.ts +5 -3
- package/dist/src/component/abstract.component.js.map +1 -1
- package/dist/src/element/component.element.js +5 -4
- package/dist/src/element/component.element.js.map +1 -1
- package/dist/src/renderer/spa/mod.d.ts +2 -3
- package/dist/src/renderer/spa/mod.js +2 -3
- package/dist/src/renderer/spa/mod.js.map +1 -1
- package/dist/src/renderer/spa/thin-client.d.ts +34 -0
- package/dist/src/renderer/spa/thin-client.js +138 -0
- package/dist/src/renderer/spa/thin-client.js.map +1 -0
- package/dist/src/renderer/ssr/html.renderer.d.ts +3 -3
- package/dist/src/renderer/ssr/html.renderer.js +6 -6
- package/dist/src/renderer/ssr/html.renderer.js.map +1 -1
- package/dist/src/renderer/ssr/md.renderer.d.ts +3 -3
- package/dist/src/renderer/ssr/md.renderer.js +12 -7
- package/dist/src/renderer/ssr/md.renderer.js.map +1 -1
- package/dist/src/renderer/ssr/ssr.renderer.d.ts +7 -6
- package/dist/src/renderer/ssr/ssr.renderer.js +42 -44
- package/dist/src/renderer/ssr/ssr.renderer.js.map +1 -1
- package/dist/src/route/route.core.d.ts +16 -6
- package/dist/src/route/route.core.js +44 -23
- package/dist/src/route/route.core.js.map +1 -1
- package/dist/src/type/route-tree.type.d.ts +2 -0
- package/dist/src/type/route.type.d.ts +6 -24
- package/dist/src/util/md.util.d.ts +8 -0
- package/dist/src/util/md.util.js +28 -0
- package/dist/src/util/md.util.js.map +1 -0
- package/dist/src/util/widget-resolve.util.js +6 -1
- package/dist/src/util/widget-resolve.util.js.map +1 -1
- package/dist/src/widget/breadcrumb.widget.d.ts +0 -1
- package/dist/src/widget/breadcrumb.widget.js +4 -15
- package/dist/src/widget/breadcrumb.widget.js.map +1 -1
- package/package.json +13 -2
- package/runtime/abstract.runtime.ts +9 -82
- package/runtime/bun/esbuild-runtime-loader.plugin.ts +2 -1
- package/runtime/bun/fs/bun-fs.runtime.ts +0 -109
- package/runtime/bun/sqlite/bun-sqlite.runtime.ts +1 -112
- package/runtime/fetch.runtime.ts +70 -0
- package/runtime/sitemap.generator.ts +37 -12
- package/runtime/universal/fs/universal-fs.runtime.ts +0 -109
- package/server/build.util.ts +168 -0
- package/server/codegen.util.ts +29 -11
- package/server/emroute.server.ts +50 -30
- package/server/esbuild-manifest.plugin.ts +5 -3
- package/server/server-api.type.ts +7 -0
- package/src/component/abstract.component.ts +5 -3
- package/src/element/component.element.ts +5 -4
- package/src/renderer/spa/mod.ts +2 -8
- package/src/renderer/spa/thin-client.ts +165 -0
- package/src/renderer/ssr/html.renderer.ts +6 -5
- package/src/renderer/ssr/md.renderer.ts +12 -6
- package/src/renderer/ssr/ssr.renderer.ts +54 -48
- package/src/route/route.core.ts +49 -28
- package/src/type/route-tree.type.ts +2 -0
- package/src/type/route.type.ts +7 -32
- package/src/util/md.util.ts +31 -0
- package/src/util/widget-resolve.util.ts +6 -1
- package/src/widget/breadcrumb.widget.ts +4 -16
- package/server/scanner.util.ts +0 -243
- package/src/renderer/spa/base.renderer.ts +0 -186
- package/src/renderer/spa/hash.renderer.ts +0 -238
- package/src/renderer/spa/html.renderer.ts +0 -399
- package/src/route/route.matcher.ts +0 -260
- package/src/web-doc/index.md +0 -15
|
@@ -26,11 +26,6 @@ export const DEFAULT_ROUTES_DIR = '/routes';
|
|
|
26
26
|
export const DEFAULT_WIDGETS_DIR = '/widgets';
|
|
27
27
|
export const ROUTES_MANIFEST_PATH = '/routes.manifest.json';
|
|
28
28
|
export const WIDGETS_MANIFEST_PATH = '/widgets.manifest.json';
|
|
29
|
-
export const EMROUTE_EXTERNALS = [
|
|
30
|
-
'@emkodev/emroute/spa',
|
|
31
|
-
'@emkodev/emroute/overlay',
|
|
32
|
-
'@emkodev/emroute',
|
|
33
|
-
];
|
|
34
29
|
/**
|
|
35
30
|
* Abstract resource provider. Speaks Request/Response (ADR-1).
|
|
36
31
|
*
|
|
@@ -60,53 +55,6 @@ export class Runtime {
|
|
|
60
55
|
loadModule(_path) {
|
|
61
56
|
throw new Error(`loadModule not implemented for ${this.constructor.name}`);
|
|
62
57
|
}
|
|
63
|
-
static transpile(_ts) {
|
|
64
|
-
throw new Error('Not implemented');
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Build client bundles. Called by the server after manifests are written.
|
|
68
|
-
* No-op by default — override in runtimes that support bundling.
|
|
69
|
-
*/
|
|
70
|
-
bundle() {
|
|
71
|
-
return Promise.resolve();
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Generate an HTML shell (`index.html`) if one doesn't already exist.
|
|
75
|
-
* Writes through `this.command()` so it works for any runtime.
|
|
76
|
-
*/
|
|
77
|
-
async writeShell(paths) {
|
|
78
|
-
if ((await this.query('/index.html')).status !== 404)
|
|
79
|
-
return;
|
|
80
|
-
const imports = Object.fromEntries(EMROUTE_EXTERNALS.map((pkg) => [pkg, paths.emroute]));
|
|
81
|
-
const importMap = JSON.stringify({ imports }, null, 2);
|
|
82
|
-
const scripts = [
|
|
83
|
-
`<script type="importmap">\n${importMap}\n </script>`,
|
|
84
|
-
];
|
|
85
|
-
if (this.config.entryPoint) {
|
|
86
|
-
scripts.push(`<script type="module" src="${paths.app}"></script>`);
|
|
87
|
-
}
|
|
88
|
-
const html = `<!DOCTYPE html>
|
|
89
|
-
<html>
|
|
90
|
-
<head>
|
|
91
|
-
<meta charset="utf-8">
|
|
92
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
93
|
-
<title>emroute</title>
|
|
94
|
-
<style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>
|
|
95
|
-
</head>
|
|
96
|
-
<body>
|
|
97
|
-
<router-slot></router-slot>
|
|
98
|
-
${scripts.join('\n ')}
|
|
99
|
-
</body>
|
|
100
|
-
</html>`;
|
|
101
|
-
await this.command('/index.html', { body: html });
|
|
102
|
-
}
|
|
103
|
-
static compress(_data, _encoding) {
|
|
104
|
-
throw new Error('Not implemented');
|
|
105
|
-
}
|
|
106
|
-
/** Stop the bundler subprocess if running. No-op by default. */
|
|
107
|
-
static stopBundler() {
|
|
108
|
-
return Promise.resolve();
|
|
109
|
-
}
|
|
110
58
|
// ── Manifest resolution ─────────────────────────────────────────────
|
|
111
59
|
routesManifestCache = null;
|
|
112
60
|
widgetsManifestCache = null;
|
|
@@ -179,7 +127,7 @@ export class Runtime {
|
|
|
179
127
|
const filename = parts[parts.length - 1];
|
|
180
128
|
const dirSegments = parts.slice(0, -1);
|
|
181
129
|
// Parse filename: name.kind.ext (e.g. "about.page.ts", "[id].page.html", "index.error.ts")
|
|
182
|
-
const match = filename.match(/^(.+?)\.(page|error|redirect)\.(ts|html|md|css)$/);
|
|
130
|
+
const match = filename.match(/^(.+?)\.(page|error|redirect)\.(ts|js|html|md|css)$/);
|
|
183
131
|
if (!match)
|
|
184
132
|
continue;
|
|
185
133
|
const [, name, kind, ext] = match;
|
|
@@ -220,7 +168,6 @@ export class Runtime {
|
|
|
220
168
|
}
|
|
221
169
|
async scanWidgets(widgetsDir, pathPrefix) {
|
|
222
170
|
const COMPANION_EXTENSIONS = ['html', 'md', 'css'];
|
|
223
|
-
const WIDGET_FILE_SUFFIX = '.widget.ts';
|
|
224
171
|
const entries = [];
|
|
225
172
|
const trailingDir = widgetsDir.endsWith('/') ? widgetsDir : widgetsDir + '/';
|
|
226
173
|
const response = await this.query(trailingDir);
|
|
@@ -229,10 +176,15 @@ export class Runtime {
|
|
|
229
176
|
if (!item.endsWith('/'))
|
|
230
177
|
continue;
|
|
231
178
|
const name = item.slice(0, -1);
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
179
|
+
// Try .widget.ts first, then .widget.js
|
|
180
|
+
let moduleFile = `${name}.widget.ts`;
|
|
181
|
+
let modulePath = `${trailingDir}${name}/${moduleFile}`;
|
|
182
|
+
if ((await this.query(modulePath)).status === 404) {
|
|
183
|
+
moduleFile = `${name}.widget.js`;
|
|
184
|
+
modulePath = `${trailingDir}${name}/${moduleFile}`;
|
|
185
|
+
if ((await this.query(modulePath)).status === 404)
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
236
188
|
const prefix = pathPrefix ? `${pathPrefix}/` : '';
|
|
237
189
|
const entry = {
|
|
238
190
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.runtime.js","sourceRoot":"","sources":["../../runtime/abstract.runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,MAAM,CAAC,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAiB;IACxE,CAAC,OAAO,EAAE,0BAA0B,CAAC;IACrC,CAAC,MAAM,EAAE,yBAAyB,CAAC;IACnC,CAAC,KAAK,EAAE,uCAAuC,CAAC;IAChD,CAAC,MAAM,EAAE,uCAAuC,CAAC;IACjD,CAAC,KAAK,EAAE,gCAAgC,CAAC;IACzC,CAAC,OAAO,EAAE,iCAAiC,CAAC;IAC5C,CAAC,KAAK,EAAE,2BAA2B,CAAC;IACpC,CAAC,MAAM,EAAE,2BAA2B,CAAC;IACrC,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAC7B,CAAC,MAAM,EAAE,iCAAiC,CAAC;IAC3C,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,MAAM,EAAE,YAAY,CAAC;IACtB,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,MAAM,EAAE,eAAe,CAAC;IACzB,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,OAAO,EAAE,YAAY,CAAC;IACvB,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,QAAQ,EAAE,YAAY,CAAC;IACxB,CAAC,MAAM,EAAE,UAAU,CAAC;CACrB,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"abstract.runtime.js","sourceRoot":"","sources":["../../runtime/abstract.runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* The plugin intercepts `.ts` and `.js` imports that resolve under the
|
|
10
10
|
* virtual root and loads their contents from the runtime.
|
|
11
11
|
*/
|
|
12
|
+
import { EMROUTE_VIRTUAL_NS } from "../../server/build.util.js";
|
|
12
13
|
/** Synthetic prefix for runtimes without a filesystem root (e.g. SQLite). */
|
|
13
14
|
export const VIRTUAL_ROOT = '/@emroute-virtual';
|
|
14
15
|
export function createRuntimeLoaderPlugin(options) {
|
|
@@ -24,8 +25,8 @@ export function createRuntimeLoaderPlugin(options) {
|
|
|
24
25
|
async (args) => {
|
|
25
26
|
if (args.path.startsWith('.') || args.path.startsWith('/'))
|
|
26
27
|
return undefined;
|
|
27
|
-
if (args.path.startsWith('
|
|
28
|
-
return
|
|
28
|
+
if (args.path.startsWith(EMROUTE_VIRTUAL_NS + ':'))
|
|
29
|
+
return { path: args.path, namespace: EMROUTE_VIRTUAL_NS };
|
|
29
30
|
return build.resolve(args.path, { resolveDir: process.cwd(), kind: args.kind });
|
|
30
31
|
});
|
|
31
32
|
// Intercept .ts and .js file resolution — redirect to 'runtime' namespace
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esbuild-runtime-loader.plugin.js","sourceRoot":"","sources":["../../../runtime/bun/esbuild-runtime-loader.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"esbuild-runtime-loader.plugin.js","sourceRoot":"","sources":["../../../runtime/bun/esbuild-runtime-loader.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,4 @@ export declare class BunFsRuntime extends Runtime {
|
|
|
13
13
|
private list;
|
|
14
14
|
private write;
|
|
15
15
|
loadModule(path: string): Promise<unknown>;
|
|
16
|
-
bundle(): Promise<void>;
|
|
17
|
-
private static _esbuild;
|
|
18
|
-
private static esbuild;
|
|
19
|
-
static transpile(source: string): Promise<string>;
|
|
20
|
-
static stopBundler(): Promise<void>;
|
|
21
16
|
}
|
|
@@ -7,18 +7,11 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
7
7
|
return path;
|
|
8
8
|
};
|
|
9
9
|
import { stat, readdir, mkdir } from 'node:fs/promises';
|
|
10
|
-
import { createRequire } from 'node:module';
|
|
11
10
|
import { resolve } from 'node:path';
|
|
12
|
-
import { CONTENT_TYPES,
|
|
13
|
-
import { createManifestPlugin } from "../../../server/esbuild-manifest.plugin.js";
|
|
14
|
-
import { createRuntimeLoaderPlugin } from "../esbuild-runtime-loader.plugin.js";
|
|
15
|
-
import { generateMainTs } from "../../../server/codegen.util.js";
|
|
11
|
+
import { CONTENT_TYPES, ROUTES_MANIFEST_PATH, Runtime, WIDGETS_MANIFEST_PATH, } from "../../abstract.runtime.js";
|
|
16
12
|
export class BunFsRuntime extends Runtime {
|
|
17
13
|
root;
|
|
18
14
|
constructor(root, config = {}) {
|
|
19
|
-
if (config.entryPoint && !config.bundlePaths) {
|
|
20
|
-
config.bundlePaths = { emroute: '/emroute.js', app: '/app.js' };
|
|
21
|
-
}
|
|
22
15
|
super(config);
|
|
23
16
|
const abs = resolve(root);
|
|
24
17
|
this.root = abs.endsWith('/') ? abs.slice(0, -1) : abs;
|
|
@@ -113,92 +106,5 @@ export class BunFsRuntime extends Runtime {
|
|
|
113
106
|
loadModule(path) {
|
|
114
107
|
return import(__rewriteRelativeImportExtension(this.root + path));
|
|
115
108
|
}
|
|
116
|
-
// ── Bundling ─────────────────────────────────────────────────────────
|
|
117
|
-
async bundle() {
|
|
118
|
-
if (this.config.spa === 'none')
|
|
119
|
-
return;
|
|
120
|
-
const paths = this.config.bundlePaths;
|
|
121
|
-
if (!paths)
|
|
122
|
-
return;
|
|
123
|
-
const esbuild = await BunFsRuntime.esbuild();
|
|
124
|
-
const builds = [];
|
|
125
|
-
const shared = { bundle: true, write: false, format: 'esm', platform: 'browser' };
|
|
126
|
-
const runtimeLoader = createRuntimeLoaderPlugin({ runtime: this, root: this.root });
|
|
127
|
-
// Emroute SPA bundle — resolve from consumer's node_modules (no runtime loader needed)
|
|
128
|
-
const consumerRequire = createRequire(this.root + '/');
|
|
129
|
-
const spaEntry = consumerRequire.resolve('@emkodev/emroute/spa');
|
|
130
|
-
builds.push(esbuild.build({
|
|
131
|
-
...shared,
|
|
132
|
-
entryPoints: [spaEntry],
|
|
133
|
-
outfile: `${this.root}${paths.emroute}`,
|
|
134
|
-
}));
|
|
135
|
-
// App bundle — generate main.ts if absent, virtual plugin resolves manifests
|
|
136
|
-
if (this.config.entryPoint) {
|
|
137
|
-
if ((await this.query(this.config.entryPoint)).status === 404) {
|
|
138
|
-
const hasRoutes = (await this.query((this.config.routesDir ?? DEFAULT_ROUTES_DIR) + '/')).status !== 404;
|
|
139
|
-
const hasWidgets = (await this.query((this.config.widgetsDir ?? DEFAULT_WIDGETS_DIR) + '/')).status !== 404;
|
|
140
|
-
const code = generateMainTs('root', hasRoutes, hasWidgets, '@emkodev/emroute');
|
|
141
|
-
await this.command(this.config.entryPoint, { body: code });
|
|
142
|
-
}
|
|
143
|
-
const manifestPlugin = createManifestPlugin({
|
|
144
|
-
runtime: this,
|
|
145
|
-
resolveDir: this.root,
|
|
146
|
-
});
|
|
147
|
-
builds.push(esbuild.build({
|
|
148
|
-
...shared,
|
|
149
|
-
entryPoints: [`${this.root}${this.config.entryPoint}`],
|
|
150
|
-
outfile: `${this.root}${paths.app}`,
|
|
151
|
-
external: [...EMROUTE_EXTERNALS],
|
|
152
|
-
plugins: [manifestPlugin, runtimeLoader],
|
|
153
|
-
}));
|
|
154
|
-
}
|
|
155
|
-
// Widgets bundle
|
|
156
|
-
if (paths.widgets) {
|
|
157
|
-
const widgetsTsPath = paths.widgets.replace('.js', '.ts');
|
|
158
|
-
if ((await this.query(widgetsTsPath)).status !== 404) {
|
|
159
|
-
builds.push(esbuild.build({
|
|
160
|
-
...shared,
|
|
161
|
-
entryPoints: [`${this.root}${widgetsTsPath}`],
|
|
162
|
-
outfile: `${this.root}${paths.widgets}`,
|
|
163
|
-
external: [...EMROUTE_EXTERNALS],
|
|
164
|
-
plugins: [runtimeLoader],
|
|
165
|
-
}));
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
const results = await Promise.all(builds);
|
|
169
|
-
// Write all output files through the runtime
|
|
170
|
-
for (const result of results) {
|
|
171
|
-
for (const file of result.outputFiles) {
|
|
172
|
-
const runtimePath = file.path.startsWith(this.root)
|
|
173
|
-
? file.path.slice(this.root.length)
|
|
174
|
-
: '/' + file.path;
|
|
175
|
-
await this.command(runtimePath, { body: file.contents });
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
await this.writeShell(paths);
|
|
179
|
-
await esbuild.stop();
|
|
180
|
-
BunFsRuntime._esbuild = null;
|
|
181
|
-
}
|
|
182
|
-
// ── Transpile / esbuild ───────────────────────────────────────────────
|
|
183
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
184
|
-
static _esbuild = null;
|
|
185
|
-
static async esbuild() {
|
|
186
|
-
if (!BunFsRuntime._esbuild) {
|
|
187
|
-
// Resolve esbuild from the consumer's node_modules, not the package's
|
|
188
|
-
const consumerRequire = createRequire(process.cwd() + '/');
|
|
189
|
-
BunFsRuntime._esbuild = consumerRequire('esbuild');
|
|
190
|
-
}
|
|
191
|
-
return BunFsRuntime._esbuild;
|
|
192
|
-
}
|
|
193
|
-
static transpile(source) {
|
|
194
|
-
const transpiler = new Bun.Transpiler({ loader: 'ts' });
|
|
195
|
-
return Promise.resolve(transpiler.transformSync(source));
|
|
196
|
-
}
|
|
197
|
-
static async stopBundler() {
|
|
198
|
-
if (BunFsRuntime._esbuild) {
|
|
199
|
-
await BunFsRuntime._esbuild.stop();
|
|
200
|
-
BunFsRuntime._esbuild = null;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
109
|
}
|
|
204
110
|
//# sourceMappingURL=bun-fs.runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun-fs.runtime.js","sourceRoot":"","sources":["../../../../runtime/bun/fs/bun-fs.runtime.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bun-fs.runtime.js","sourceRoot":"","sources":["../../../../runtime/bun/fs/bun-fs.runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,15 +13,10 @@ export declare class BunSqliteRuntime extends Runtime {
|
|
|
13
13
|
query(resource: FetchParams[0], options?: FetchParams[1]): FetchReturn;
|
|
14
14
|
loadModule(path: string): Promise<unknown>;
|
|
15
15
|
close(): void;
|
|
16
|
-
bundle(): Promise<void>;
|
|
17
16
|
private read;
|
|
18
17
|
private write;
|
|
19
18
|
private listChildren;
|
|
20
19
|
private hasChildren;
|
|
21
|
-
private static _esbuild;
|
|
22
|
-
private static esbuild;
|
|
23
|
-
static transpile(source: string): Promise<string>;
|
|
24
|
-
static stopBundler(): Promise<void>;
|
|
25
20
|
private parsePath;
|
|
26
21
|
private parse;
|
|
27
22
|
}
|
|
@@ -6,12 +6,8 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
6
6
|
}
|
|
7
7
|
return path;
|
|
8
8
|
};
|
|
9
|
-
import { createRequire } from 'node:module';
|
|
10
9
|
import { Database } from 'bun:sqlite';
|
|
11
|
-
import { CONTENT_TYPES,
|
|
12
|
-
import { createManifestPlugin } from "../../../server/esbuild-manifest.plugin.js";
|
|
13
|
-
import { createRuntimeLoaderPlugin, VIRTUAL_ROOT } from "../esbuild-runtime-loader.plugin.js";
|
|
14
|
-
import { generateMainTs } from "../../../server/codegen.util.js";
|
|
10
|
+
import { CONTENT_TYPES, ROUTES_MANIFEST_PATH, Runtime, WIDGETS_MANIFEST_PATH, } from "../../abstract.runtime.js";
|
|
15
11
|
export class BunSqliteRuntime extends Runtime {
|
|
16
12
|
db;
|
|
17
13
|
stmtGet;
|
|
@@ -19,9 +15,6 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
19
15
|
stmtList;
|
|
20
16
|
stmtHas;
|
|
21
17
|
constructor(path = ':memory:', config = {}) {
|
|
22
|
-
if (config.entryPoint && !config.bundlePaths) {
|
|
23
|
-
config.bundlePaths = { emroute: '/emroute.js', app: '/app.js' };
|
|
24
|
-
}
|
|
25
18
|
super(config);
|
|
26
19
|
this.db = new Database(path);
|
|
27
20
|
this.db.run(`
|
|
@@ -58,10 +51,7 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
58
51
|
}
|
|
59
52
|
async loadModule(path) {
|
|
60
53
|
const source = await this.query(path, { as: 'text' });
|
|
61
|
-
const
|
|
62
|
-
? await BunSqliteRuntime.transpile(source)
|
|
63
|
-
: source;
|
|
64
|
-
const blob = new Blob([code], { type: 'text/javascript' });
|
|
54
|
+
const blob = new Blob([source], { type: 'text/javascript' });
|
|
65
55
|
const url = URL.createObjectURL(blob);
|
|
66
56
|
try {
|
|
67
57
|
return await import(__rewriteRelativeImportExtension(url));
|
|
@@ -73,71 +63,6 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
73
63
|
close() {
|
|
74
64
|
this.db.close();
|
|
75
65
|
}
|
|
76
|
-
// ── Bundling ─────────────────────────────────────────────────────────
|
|
77
|
-
async bundle() {
|
|
78
|
-
if (this.config.spa === 'none')
|
|
79
|
-
return;
|
|
80
|
-
const paths = this.config.bundlePaths;
|
|
81
|
-
if (!paths)
|
|
82
|
-
return;
|
|
83
|
-
const esbuild = await BunSqliteRuntime.esbuild();
|
|
84
|
-
const builds = [];
|
|
85
|
-
const shared = { bundle: true, write: false, format: 'esm', platform: 'browser' };
|
|
86
|
-
const runtimeLoader = createRuntimeLoaderPlugin({ runtime: this, root: VIRTUAL_ROOT });
|
|
87
|
-
// Emroute SPA bundle — resolve from consumer's node_modules (no runtime loader needed)
|
|
88
|
-
const consumerRequire = createRequire(process.cwd() + '/');
|
|
89
|
-
const spaEntry = consumerRequire.resolve('@emkodev/emroute/spa');
|
|
90
|
-
builds.push(esbuild.build({
|
|
91
|
-
...shared,
|
|
92
|
-
entryPoints: [spaEntry],
|
|
93
|
-
outfile: paths.emroute,
|
|
94
|
-
}));
|
|
95
|
-
// App bundle — generate main.ts if absent, virtual plugin resolves manifests
|
|
96
|
-
if (this.config.entryPoint) {
|
|
97
|
-
if ((await this.query(this.config.entryPoint)).status === 404) {
|
|
98
|
-
const hasRoutes = (await this.query((this.config.routesDir ?? DEFAULT_ROUTES_DIR) + '/')).status !== 404;
|
|
99
|
-
const hasWidgets = (await this.query((this.config.widgetsDir ?? DEFAULT_WIDGETS_DIR) + '/')).status !== 404;
|
|
100
|
-
const code = generateMainTs('root', hasRoutes, hasWidgets, '@emkodev/emroute');
|
|
101
|
-
await this.command(this.config.entryPoint, { body: code });
|
|
102
|
-
}
|
|
103
|
-
const manifestPlugin = createManifestPlugin({
|
|
104
|
-
runtime: this,
|
|
105
|
-
resolveDir: process.cwd(),
|
|
106
|
-
});
|
|
107
|
-
builds.push(esbuild.build({
|
|
108
|
-
...shared,
|
|
109
|
-
entryPoints: [VIRTUAL_ROOT + this.config.entryPoint],
|
|
110
|
-
outfile: paths.app,
|
|
111
|
-
external: [...EMROUTE_EXTERNALS],
|
|
112
|
-
plugins: [manifestPlugin, runtimeLoader],
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
// Widgets bundle
|
|
116
|
-
if (paths.widgets) {
|
|
117
|
-
const widgetsTsPath = paths.widgets.replace('.js', '.ts');
|
|
118
|
-
if ((await this.query(widgetsTsPath)).status !== 404) {
|
|
119
|
-
builds.push(esbuild.build({
|
|
120
|
-
...shared,
|
|
121
|
-
entryPoints: [VIRTUAL_ROOT + widgetsTsPath],
|
|
122
|
-
outfile: paths.widgets,
|
|
123
|
-
external: [...EMROUTE_EXTERNALS],
|
|
124
|
-
plugins: [runtimeLoader],
|
|
125
|
-
}));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
const results = await Promise.all(builds);
|
|
129
|
-
// Write all output files through the runtime
|
|
130
|
-
for (const result of results) {
|
|
131
|
-
for (const file of result.outputFiles) {
|
|
132
|
-
// outfile paths are relative — ensure leading /
|
|
133
|
-
const runtimePath = file.path.startsWith('/') ? file.path : '/' + file.path;
|
|
134
|
-
await this.command(runtimePath, { body: file.contents });
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
await this.writeShell(paths);
|
|
138
|
-
await esbuild.stop();
|
|
139
|
-
BunSqliteRuntime._esbuild = null;
|
|
140
|
-
}
|
|
141
66
|
// ── Private ─────────────────────────────────────────────────────────
|
|
142
67
|
async read(path) {
|
|
143
68
|
if (path.endsWith('/')) {
|
|
@@ -192,25 +117,6 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
192
117
|
hasChildren(prefix) {
|
|
193
118
|
return this.stmtHas.get(prefix) !== null;
|
|
194
119
|
}
|
|
195
|
-
// ── Transpile / esbuild ───────────────────────────────────────────────
|
|
196
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
197
|
-
static _esbuild = null;
|
|
198
|
-
static async esbuild() {
|
|
199
|
-
if (!BunSqliteRuntime._esbuild) {
|
|
200
|
-
BunSqliteRuntime._esbuild = await import('esbuild');
|
|
201
|
-
}
|
|
202
|
-
return BunSqliteRuntime._esbuild;
|
|
203
|
-
}
|
|
204
|
-
static transpile(source) {
|
|
205
|
-
const transpiler = new Bun.Transpiler({ loader: 'ts' });
|
|
206
|
-
return Promise.resolve(transpiler.transformSync(source));
|
|
207
|
-
}
|
|
208
|
-
static async stopBundler() {
|
|
209
|
-
if (BunSqliteRuntime._esbuild) {
|
|
210
|
-
await BunSqliteRuntime._esbuild.stop();
|
|
211
|
-
BunSqliteRuntime._esbuild = null;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
120
|
parsePath(resource) {
|
|
215
121
|
if (typeof resource === 'string')
|
|
216
122
|
return decodeURIComponent(resource);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun-sqlite.runtime.js","sourceRoot":"","sources":["../../../../runtime/bun/sqlite/bun-sqlite.runtime.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bun-sqlite.runtime.js","sourceRoot":"","sources":["../../../../runtime/bun/sqlite/bun-sqlite.runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch Runtime
|
|
3
|
+
*
|
|
4
|
+
* Browser-compatible Runtime that delegates all reads to a remote server
|
|
5
|
+
* via `fetch()`. Used by the thin client in `root` mode — same
|
|
6
|
+
* `createEmrouteServer` runs in the browser, but the Runtime fetches
|
|
7
|
+
* files from the real server instead of reading from disk.
|
|
8
|
+
*
|
|
9
|
+
* No bundling, no transpiling, no filesystem access.
|
|
10
|
+
* No directory scanning — the remote server already has manifests.
|
|
11
|
+
*/
|
|
12
|
+
import { type FetchParams, type FetchReturn, Runtime, type RuntimeConfig } from './abstract.runtime.ts';
|
|
13
|
+
export declare class FetchRuntime extends Runtime {
|
|
14
|
+
private readonly origin;
|
|
15
|
+
/**
|
|
16
|
+
* @param origin — Server origin, e.g. `'http://localhost:4100'` or `location.origin`.
|
|
17
|
+
*/
|
|
18
|
+
constructor(origin: string, config?: RuntimeConfig);
|
|
19
|
+
handle(resource: FetchParams[0], init?: FetchParams[1]): FetchReturn;
|
|
20
|
+
query(resource: FetchParams[0], options: FetchParams[1] & {
|
|
21
|
+
as: 'text';
|
|
22
|
+
}): Promise<string>;
|
|
23
|
+
query(resource: FetchParams[0], options?: FetchParams[1]): FetchReturn;
|
|
24
|
+
loadModule(path: string): Promise<unknown>;
|
|
25
|
+
private toUrl;
|
|
26
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch Runtime
|
|
3
|
+
*
|
|
4
|
+
* Browser-compatible Runtime that delegates all reads to a remote server
|
|
5
|
+
* via `fetch()`. Used by the thin client in `root` mode — same
|
|
6
|
+
* `createEmrouteServer` runs in the browser, but the Runtime fetches
|
|
7
|
+
* files from the real server instead of reading from disk.
|
|
8
|
+
*
|
|
9
|
+
* No bundling, no transpiling, no filesystem access.
|
|
10
|
+
* No directory scanning — the remote server already has manifests.
|
|
11
|
+
*/
|
|
12
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
13
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
14
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
15
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return path;
|
|
19
|
+
};
|
|
20
|
+
import { Runtime, } from "./abstract.runtime.js";
|
|
21
|
+
export class FetchRuntime extends Runtime {
|
|
22
|
+
origin;
|
|
23
|
+
/**
|
|
24
|
+
* @param origin — Server origin, e.g. `'http://localhost:4100'` or `location.origin`.
|
|
25
|
+
*/
|
|
26
|
+
constructor(origin, config = {}) {
|
|
27
|
+
super(config);
|
|
28
|
+
this.origin = origin.endsWith('/') ? origin.slice(0, -1) : origin;
|
|
29
|
+
}
|
|
30
|
+
handle(resource, init) {
|
|
31
|
+
const url = this.toUrl(resource);
|
|
32
|
+
return fetch(url, init);
|
|
33
|
+
}
|
|
34
|
+
query(resource, options) {
|
|
35
|
+
if (options?.as === 'text') {
|
|
36
|
+
return fetch(this.toUrl(resource)).then((r) => r.text());
|
|
37
|
+
}
|
|
38
|
+
return this.handle(resource, options);
|
|
39
|
+
}
|
|
40
|
+
async loadModule(path) {
|
|
41
|
+
const url = `${this.origin}${path}`;
|
|
42
|
+
const response = await fetch(url);
|
|
43
|
+
const js = await response.text();
|
|
44
|
+
const blob = new Blob([js], { type: 'application/javascript' });
|
|
45
|
+
return import(__rewriteRelativeImportExtension(URL.createObjectURL(blob)));
|
|
46
|
+
}
|
|
47
|
+
toUrl(resource) {
|
|
48
|
+
if (typeof resource === 'string')
|
|
49
|
+
return `${this.origin}${resource}`;
|
|
50
|
+
if (resource instanceof URL)
|
|
51
|
+
return `${this.origin}${resource.pathname}${resource.search}`;
|
|
52
|
+
return `${this.origin}${new URL(resource.url).pathname}`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=fetch.runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.runtime.js","sourceRoot":"","sources":["../../runtime/fetch.runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;;;;;;;;;AAEH,OAAO,EAGL,OAAO,GAER,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAO,YAAa,SAAQ,OAAO;IACtB,MAAM,CAAS;IAEhC;;OAEG;IACH,YAAY,MAAc,EAAE,SAAwB,EAAE;QACpD,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpE,CAAC;IAED,MAAM,CACJ,QAAwB,EACxB,IAAqB;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAUD,KAAK,CACH,QAAwB,EACxB,OAA0C;QAE1C,IAAI,OAAO,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,IAAY;QACpC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAChE,OAAO,MAAM,kCAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,QAAwB;QACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QACrE,IAAI,QAAQ,YAAY,GAAG;YAAE,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3F,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3D,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sitemap Generator — Opt-in Submodule
|
|
3
3
|
*
|
|
4
|
-
* Generates sitemap.xml from a
|
|
4
|
+
* Generates sitemap.xml from a RouteNode tree. Pure function over tree data,
|
|
5
5
|
* no filesystem access needed.
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* @see https://www.sitemaps.org/protocol.html
|
|
18
18
|
*/
|
|
19
|
-
import type {
|
|
19
|
+
import type { RouteNode } from '../src/type/route-tree.type.ts';
|
|
20
20
|
/** Valid changefreq values per sitemaps.org protocol. */
|
|
21
21
|
export type Changefreq = 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
|
|
22
22
|
/** Per-route sitemap overrides. */
|
|
@@ -49,10 +49,10 @@ export interface SitemapOptions {
|
|
|
49
49
|
basePath?: string;
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Generate sitemap.xml content from a
|
|
52
|
+
* Generate sitemap.xml content from a route tree.
|
|
53
53
|
*
|
|
54
54
|
* Static routes (no :param) are included directly.
|
|
55
55
|
* Dynamic routes are included only if an enumerator is provided.
|
|
56
56
|
* All URLs point to /html/ prefixed paths for SSR HTML rendering.
|
|
57
57
|
*/
|
|
58
|
-
export declare function generateSitemap(
|
|
58
|
+
export declare function generateSitemap(routeTree: RouteNode, options: SitemapOptions): Promise<string>;
|