@emkodev/emroute 1.6.5 → 1.6.6-beta.1
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/runtime/bun/esbuild-runtime-loader.plugin.d.ts +5 -1
- package/dist/runtime/bun/esbuild-runtime-loader.plugin.js +13 -2
- package/dist/runtime/bun/esbuild-runtime-loader.plugin.js.map +1 -1
- package/dist/runtime/bun/sqlite/bun-sqlite.runtime.js +4 -4
- package/dist/runtime/bun/sqlite/bun-sqlite.runtime.js.map +1 -1
- package/package.json +1 -1
- package/runtime/bun/esbuild-runtime-loader.plugin.ts +19 -3
- package/runtime/bun/sqlite/bun-sqlite.runtime.ts +4 -4
|
@@ -10,13 +10,17 @@
|
|
|
10
10
|
* virtual root and loads their contents from the runtime.
|
|
11
11
|
*/
|
|
12
12
|
import type { Runtime } from '../../runtime/abstract.runtime.ts';
|
|
13
|
+
/** Synthetic prefix for runtimes without a filesystem root (e.g. SQLite). */
|
|
14
|
+
export declare const VIRTUAL_ROOT = "/@emroute-virtual";
|
|
13
15
|
interface RuntimeLoaderOptions {
|
|
14
16
|
runtime: Runtime;
|
|
15
17
|
/**
|
|
16
18
|
* The filesystem root that esbuild would normally resolve paths against.
|
|
17
19
|
* Paths starting with this prefix are stripped to produce runtime paths
|
|
18
20
|
* (e.g. `/app/root/routes/index.page.ts` → `/routes/index.page.ts`).
|
|
19
|
-
*
|
|
21
|
+
*
|
|
22
|
+
* For runtimes without a filesystem root, use {@link VIRTUAL_ROOT} and
|
|
23
|
+
* prefix entry points accordingly.
|
|
20
24
|
*/
|
|
21
25
|
root: string;
|
|
22
26
|
}
|
|
@@ -9,12 +9,23 @@
|
|
|
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
|
+
/** Synthetic prefix for runtimes without a filesystem root (e.g. SQLite). */
|
|
13
|
+
export const VIRTUAL_ROOT = '/@emroute-virtual';
|
|
12
14
|
export function createRuntimeLoaderPlugin(options) {
|
|
13
15
|
const { runtime, root } = options;
|
|
14
16
|
return {
|
|
15
17
|
name: 'emroute-runtime-loader',
|
|
16
18
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
19
|
setup(build) {
|
|
20
|
+
// Bare imports from the runtime namespace (e.g. '@emkodev/emkoma/render')
|
|
21
|
+
// need a real resolveDir so esbuild can find node_modules on disk.
|
|
22
|
+
build.onResolve({ filter: /.*/, namespace: 'runtime' },
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
async (args) => {
|
|
25
|
+
if (args.path.startsWith('.') || args.path.startsWith('/'))
|
|
26
|
+
return undefined;
|
|
27
|
+
return build.resolve(args.path, { resolveDir: process.cwd(), kind: args.kind });
|
|
28
|
+
});
|
|
18
29
|
// Intercept .ts and .js file resolution — redirect to 'runtime' namespace
|
|
19
30
|
// Only intercepts files that resolve under the runtime root.
|
|
20
31
|
build.onResolve({ filter: /\.[tj]s$/ },
|
|
@@ -48,7 +59,7 @@ export function createRuntimeLoaderPlugin(options) {
|
|
|
48
59
|
}
|
|
49
60
|
absPath = '/' + normalized.join('/');
|
|
50
61
|
// Only intercept files under the runtime root
|
|
51
|
-
if (
|
|
62
|
+
if (!absPath.startsWith(root + '/'))
|
|
52
63
|
return undefined;
|
|
53
64
|
return { path: absPath, namespace: 'runtime' };
|
|
54
65
|
});
|
|
@@ -63,7 +74,7 @@ export function createRuntimeLoaderPlugin(options) {
|
|
|
63
74
|
const contents = await runtime.query(runtimePath, { as: 'text' });
|
|
64
75
|
const ext = args.path.slice(args.path.lastIndexOf('.') + 1);
|
|
65
76
|
const loader = ext === 'ts' ? 'ts' : 'js';
|
|
66
|
-
const resolveDir = args.path.slice(0, args.path.lastIndexOf('/'));
|
|
77
|
+
const resolveDir = args.path.slice(0, args.path.lastIndexOf('/')) || root;
|
|
67
78
|
return { contents, loader, resolveDir };
|
|
68
79
|
});
|
|
69
80
|
},
|
|
@@ -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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"}
|
|
@@ -10,7 +10,7 @@ import { createRequire } from 'node:module';
|
|
|
10
10
|
import { Database } from 'bun:sqlite';
|
|
11
11
|
import { CONTENT_TYPES, DEFAULT_ROUTES_DIR, DEFAULT_WIDGETS_DIR, EMROUTE_EXTERNALS, ROUTES_MANIFEST_PATH, Runtime, WIDGETS_MANIFEST_PATH, } from "../../abstract.runtime.js";
|
|
12
12
|
import { createManifestPlugin } from "../../../server/esbuild-manifest.plugin.js";
|
|
13
|
-
import { createRuntimeLoaderPlugin } from "../esbuild-runtime-loader.plugin.js";
|
|
13
|
+
import { createRuntimeLoaderPlugin, VIRTUAL_ROOT } from "../esbuild-runtime-loader.plugin.js";
|
|
14
14
|
import { generateMainTs } from "../../../server/codegen.util.js";
|
|
15
15
|
export class BunSqliteRuntime extends Runtime {
|
|
16
16
|
db;
|
|
@@ -83,7 +83,7 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
83
83
|
const esbuild = await BunSqliteRuntime.esbuild();
|
|
84
84
|
const builds = [];
|
|
85
85
|
const shared = { bundle: true, write: false, format: 'esm', platform: 'browser' };
|
|
86
|
-
const runtimeLoader = createRuntimeLoaderPlugin({ runtime: this, root:
|
|
86
|
+
const runtimeLoader = createRuntimeLoaderPlugin({ runtime: this, root: VIRTUAL_ROOT });
|
|
87
87
|
// Emroute SPA bundle — resolve from consumer's node_modules (no runtime loader needed)
|
|
88
88
|
const consumerRequire = createRequire(process.cwd() + '/');
|
|
89
89
|
const spaEntry = consumerRequire.resolve('@emkodev/emroute/spa');
|
|
@@ -107,7 +107,7 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
107
107
|
});
|
|
108
108
|
builds.push(esbuild.build({
|
|
109
109
|
...shared,
|
|
110
|
-
entryPoints: [this.config.entryPoint],
|
|
110
|
+
entryPoints: [VIRTUAL_ROOT + this.config.entryPoint],
|
|
111
111
|
outfile: paths.app,
|
|
112
112
|
external: [...EMROUTE_EXTERNALS],
|
|
113
113
|
plugins: [manifestPlugin, runtimeLoader],
|
|
@@ -119,7 +119,7 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
119
119
|
if ((await this.query(widgetsTsPath)).status !== 404) {
|
|
120
120
|
builds.push(esbuild.build({
|
|
121
121
|
...shared,
|
|
122
|
-
entryPoints: [widgetsTsPath],
|
|
122
|
+
entryPoints: [VIRTUAL_ROOT + widgetsTsPath],
|
|
123
123
|
outfile: paths.widgets,
|
|
124
124
|
external: [...EMROUTE_EXTERNALS],
|
|
125
125
|
plugins: [runtimeLoader],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun-sqlite.runtime.js","sourceRoot":"","sources":["../../../../runtime/bun/sqlite/bun-sqlite.runtime.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EAGjB,oBAAoB,EACpB,OAAO,EAEP,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"bun-sqlite.runtime.js","sourceRoot":"","sources":["../../../../runtime/bun/sqlite/bun-sqlite.runtime.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.6.
|
|
3
|
+
"version": "1.6.6-beta.1",
|
|
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",
|
|
@@ -12,13 +12,18 @@
|
|
|
12
12
|
|
|
13
13
|
import type { Runtime } from '../../runtime/abstract.runtime.ts';
|
|
14
14
|
|
|
15
|
+
/** Synthetic prefix for runtimes without a filesystem root (e.g. SQLite). */
|
|
16
|
+
export const VIRTUAL_ROOT = '/@emroute-virtual';
|
|
17
|
+
|
|
15
18
|
interface RuntimeLoaderOptions {
|
|
16
19
|
runtime: Runtime;
|
|
17
20
|
/**
|
|
18
21
|
* The filesystem root that esbuild would normally resolve paths against.
|
|
19
22
|
* Paths starting with this prefix are stripped to produce runtime paths
|
|
20
23
|
* (e.g. `/app/root/routes/index.page.ts` → `/routes/index.page.ts`).
|
|
21
|
-
*
|
|
24
|
+
*
|
|
25
|
+
* For runtimes without a filesystem root, use {@link VIRTUAL_ROOT} and
|
|
26
|
+
* prefix entry points accordingly.
|
|
22
27
|
*/
|
|
23
28
|
root: string;
|
|
24
29
|
}
|
|
@@ -34,6 +39,17 @@ export function createRuntimeLoaderPlugin(options: RuntimeLoaderOptions): Esbuil
|
|
|
34
39
|
|
|
35
40
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
41
|
setup(build: any) {
|
|
42
|
+
// Bare imports from the runtime namespace (e.g. '@emkodev/emkoma/render')
|
|
43
|
+
// need a real resolveDir so esbuild can find node_modules on disk.
|
|
44
|
+
build.onResolve(
|
|
45
|
+
{ filter: /.*/, namespace: 'runtime' },
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
+
async (args: any) => {
|
|
48
|
+
if (args.path.startsWith('.') || args.path.startsWith('/')) return undefined;
|
|
49
|
+
return build.resolve(args.path, { resolveDir: process.cwd(), kind: args.kind });
|
|
50
|
+
},
|
|
51
|
+
);
|
|
52
|
+
|
|
37
53
|
// Intercept .ts and .js file resolution — redirect to 'runtime' namespace
|
|
38
54
|
// Only intercepts files that resolve under the runtime root.
|
|
39
55
|
build.onResolve(
|
|
@@ -65,7 +81,7 @@ export function createRuntimeLoaderPlugin(options: RuntimeLoaderOptions): Esbuil
|
|
|
65
81
|
absPath = '/' + normalized.join('/');
|
|
66
82
|
|
|
67
83
|
// Only intercept files under the runtime root
|
|
68
|
-
if (
|
|
84
|
+
if (!absPath.startsWith(root + '/')) return undefined;
|
|
69
85
|
|
|
70
86
|
return { path: absPath, namespace: 'runtime' };
|
|
71
87
|
},
|
|
@@ -84,7 +100,7 @@ export function createRuntimeLoaderPlugin(options: RuntimeLoaderOptions): Esbuil
|
|
|
84
100
|
const contents = await runtime.query(runtimePath, { as: 'text' });
|
|
85
101
|
const ext = args.path.slice(args.path.lastIndexOf('.') + 1);
|
|
86
102
|
const loader = ext === 'ts' ? 'ts' : 'js';
|
|
87
|
-
const resolveDir = args.path.slice(0, args.path.lastIndexOf('/'));
|
|
103
|
+
const resolveDir = args.path.slice(0, args.path.lastIndexOf('/')) || root;
|
|
88
104
|
|
|
89
105
|
return { contents, loader, resolveDir };
|
|
90
106
|
},
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
WIDGETS_MANIFEST_PATH,
|
|
14
14
|
} from '../../abstract.runtime.ts';
|
|
15
15
|
import { createManifestPlugin } from '../../../server/esbuild-manifest.plugin.ts';
|
|
16
|
-
import { createRuntimeLoaderPlugin } from '../esbuild-runtime-loader.plugin.ts';
|
|
16
|
+
import { createRuntimeLoaderPlugin, VIRTUAL_ROOT } from '../esbuild-runtime-loader.plugin.ts';
|
|
17
17
|
import { generateMainTs } from '../../../server/codegen.util.ts';
|
|
18
18
|
|
|
19
19
|
export class BunSqliteRuntime extends Runtime {
|
|
@@ -108,7 +108,7 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
108
108
|
const esbuild = await BunSqliteRuntime.esbuild();
|
|
109
109
|
const builds: Promise<{ outputFiles: { path: string; contents: Uint8Array }[] }>[] = [];
|
|
110
110
|
const shared = { bundle: true, write: false, format: 'esm' as const, platform: 'browser' as const };
|
|
111
|
-
const runtimeLoader = createRuntimeLoaderPlugin({ runtime: this, root:
|
|
111
|
+
const runtimeLoader = createRuntimeLoaderPlugin({ runtime: this, root: VIRTUAL_ROOT });
|
|
112
112
|
|
|
113
113
|
// Emroute SPA bundle — resolve from consumer's node_modules (no runtime loader needed)
|
|
114
114
|
const consumerRequire = createRequire(process.cwd() + '/');
|
|
@@ -134,7 +134,7 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
134
134
|
});
|
|
135
135
|
builds.push(esbuild.build({
|
|
136
136
|
...shared,
|
|
137
|
-
entryPoints: [this.config.entryPoint],
|
|
137
|
+
entryPoints: [VIRTUAL_ROOT + this.config.entryPoint],
|
|
138
138
|
outfile: paths.app,
|
|
139
139
|
external: [...EMROUTE_EXTERNALS],
|
|
140
140
|
plugins: [manifestPlugin, runtimeLoader],
|
|
@@ -147,7 +147,7 @@ export class BunSqliteRuntime extends Runtime {
|
|
|
147
147
|
if ((await this.query(widgetsTsPath)).status !== 404) {
|
|
148
148
|
builds.push(esbuild.build({
|
|
149
149
|
...shared,
|
|
150
|
-
entryPoints: [widgetsTsPath],
|
|
150
|
+
entryPoints: [VIRTUAL_ROOT + widgetsTsPath],
|
|
151
151
|
outfile: paths.widgets,
|
|
152
152
|
external: [...EMROUTE_EXTERNALS],
|
|
153
153
|
plugins: [runtimeLoader],
|