@seanhogg/builderforce-webcontainers-core 2026.10.3 → 2026.10.5
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/build.js +1 -1
- package/dist/build.js.map +1 -1
- package/dist/buildHost.js +3 -3
- package/dist/buildHost.js.map +1 -1
- package/dist/compileScript.js +2 -2
- package/dist/compileScript.js.map +1 -1
- package/dist/devServer.d.ts.map +1 -1
- package/dist/devServer.js +5 -5
- package/dist/devServer.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/packageCdn.d.ts +30 -2
- package/dist/packageCdn.d.ts.map +1 -1
- package/dist/packageCdn.js +53 -8
- package/dist/packageCdn.js.map +1 -1
- package/dist/projectConfig.d.ts +2 -0
- package/dist/projectConfig.d.ts.map +1 -1
- package/dist/projectConfig.js +20 -1
- package/dist/projectConfig.js.map +1 -1
- package/dist/resolve.d.ts +9 -0
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +9 -0
- package/dist/resolve.js.map +1 -1
- package/package.json +1 -1
- package/src/build.ts +1 -1
- package/src/buildHost.ts +3 -3
- package/src/compileScript.ts +2 -2
- package/src/devServer.ts +6 -6
- package/src/index.ts +3 -3
- package/src/packageCdn.ts +83 -9
- package/src/projectConfig.ts +22 -1
- package/src/resolve.ts +10 -0
package/dist/build.js
CHANGED
|
@@ -30,7 +30,7 @@ export async function buildProject(options) {
|
|
|
30
30
|
if (!profile.supported || !profile.htmlPath)
|
|
31
31
|
throw new Error(profile.reason ?? 'This project cannot be built here.');
|
|
32
32
|
const config = readProjectConfig(fs, 'production');
|
|
33
|
-
const cdn = (options.cdn ?? esmShCdnFactory)(config.dependencies, { dev: false });
|
|
33
|
+
const cdn = await (options.cdn ?? esmShCdnFactory)(config.dependencies, { dev: false });
|
|
34
34
|
const html = fs.readText(profile.htmlPath) ?? '';
|
|
35
35
|
const entries = findHtmlEntries(fs, html, profile.htmlPath);
|
|
36
36
|
// CRA pages carry no module script; the dev server injects the entry, so does the build.
|
package/dist/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuC,MAAM,UAAU,CAAC;AAGlF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAA2B,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAsCnE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,SAAS,YAAY,CAAC,KAA4B;IAChD,IAAI,KAAK,YAAY,iBAAiB;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACnC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,IAAwB;IACpD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;AAChD,CAAC;AAED,SAAS,OAAO,CAAC,QAA6B;IAC5C,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,oCAAoC,CAAC,CAAC;IAErH,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
package/dist/buildHost.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { componentExtension } from './components.js';
|
|
2
2
|
import { loaderFor } from './transformer.js';
|
|
3
3
|
import { basename, dirname, extname, join } from './paths.js';
|
|
4
|
-
import { isBareSpecifier, resolveAlias, resolveLocal,
|
|
4
|
+
import { isBareSpecifier, resolveAlias, resolveLocal, resolvePackage } from './resolve.js';
|
|
5
5
|
import { contentHash } from './hash.js';
|
|
6
6
|
/** The query a compiled component's own CSS is imported under. */
|
|
7
7
|
const COMPONENT_CSS = 'bfwc-component-css';
|
|
@@ -72,7 +72,7 @@ export function createBuildHost(options) {
|
|
|
72
72
|
if (isBareSpecifier(path)) {
|
|
73
73
|
file = (css ? resolveLocal(fs, fromDir, `./${path}`) : undefined) ?? resolveAlias(fs, config.aliases, path);
|
|
74
74
|
if (!file) {
|
|
75
|
-
const { name, subpath } =
|
|
75
|
+
const { name, subpath } = resolvePackage(config.packageAliases, path);
|
|
76
76
|
// A package stylesheet imported from JS (`import 'bootstrap/dist/css/bootstrap.css'`)
|
|
77
77
|
// can't stay a JS import of a CSS URL; it joins the CSS bundle as an @import.
|
|
78
78
|
if (!css && extname(subpath) === '.css')
|
|
@@ -95,7 +95,7 @@ export function createBuildHost(options) {
|
|
|
95
95
|
if (query === COMPONENT_CSS)
|
|
96
96
|
return { contents: componentCss.get(path) ?? '', loader: 'css' };
|
|
97
97
|
if (query === PACKAGE_CSS) {
|
|
98
|
-
const { name, subpath } =
|
|
98
|
+
const { name, subpath } = resolvePackage(config.packageAliases, path.slice(PACKAGE_CSS.length + 2));
|
|
99
99
|
return { contents: `@import ${JSON.stringify(cdn.urlFor(name, subpath))};`, loader: 'css' };
|
|
100
100
|
}
|
|
101
101
|
const ext = extname(path);
|
package/dist/buildHost.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildHost.js","sourceRoot":"","sources":["../src/buildHost.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"buildHost.js","sourceRoot":"","sources":["../src/buildHost.ts"],"names":[],"mappings":"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"}
|
package/dist/compileScript.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { componentExtension } from './components.js';
|
|
2
2
|
import { loaderFor } from './transformer.js';
|
|
3
3
|
import { dirname, extname } from './paths.js';
|
|
4
|
-
import { isBareSpecifier, resolveAlias, resolveLocal,
|
|
4
|
+
import { isBareSpecifier, resolveAlias, resolveLocal, resolvePackage } from './resolve.js';
|
|
5
5
|
import { rewriteImports } from './rewriteImports.js';
|
|
6
6
|
/** A file served as a script module: TS/JS, or a component compiled to one. */
|
|
7
7
|
export function isScriptPath(path) {
|
|
@@ -45,7 +45,7 @@ export function mapSpecifier(ctx, fromDir, specifier) {
|
|
|
45
45
|
const aliased = resolveAlias(ctx.fs, ctx.config.aliases, path);
|
|
46
46
|
if (aliased)
|
|
47
47
|
return moduleUrl(ctx.base, aliased, query);
|
|
48
|
-
const { name, subpath } =
|
|
48
|
+
const { name, subpath } = resolvePackage(ctx.config.packageAliases, path);
|
|
49
49
|
return ctx.cdn.urlFor(name, subpath);
|
|
50
50
|
}
|
|
51
51
|
const resolved = resolveLocal(ctx.fs, fromDir, path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileScript.js","sourceRoot":"","sources":["../src/compileScript.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"compileScript.js","sourceRoot":"","sources":["../src/compileScript.ts"],"names":[],"mappings":"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"}
|
package/dist/devServer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devServer.d.ts","sourceRoot":"","sources":["../src/devServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASxE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,iBAAiB,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,sFAAsF;IACtF,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAmCD;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAOR,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"devServer.d.ts","sourceRoot":"","sources":["../src/devServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASxE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,iBAAiB,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,sFAAsF;IACtF,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAmCD;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAOR,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,GAAG,CAAC,CAAsB;IAClC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4D;IAClF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAER,OAAO,EAAE,gBAAgB;IAKtD,OAAO,IAAI,IAAI;IAKf,OAAO,IAAI,cAAc;IAInB,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,OAAO,CAAC,UAAU,CAAC;YA0BrD,OAAO;IAuBrB,OAAO,CAAC,aAAa;YASP,OAAO;IAOrB,OAAO,CAAC,QAAQ;CAWjB"}
|
package/dist/devServer.js
CHANGED
|
@@ -109,9 +109,9 @@ export class DevServer {
|
|
|
109
109
|
if (ext === '.json' && query === 'import')
|
|
110
110
|
return reply(200, JS_MIME, jsonToModule(fs.readText(file) ?? ''));
|
|
111
111
|
if (loaderFor(ext))
|
|
112
|
-
return reply(200, JS_MIME, await compileScript(this.context(), file));
|
|
112
|
+
return reply(200, JS_MIME, await compileScript(await this.context(), file));
|
|
113
113
|
if (isScriptPath(file))
|
|
114
|
-
return reply(200, JS_MIME, await compileComponent(this.context(), file));
|
|
114
|
+
return reply(200, JS_MIME, await compileComponent(await this.context(), file));
|
|
115
115
|
if (ext === '.html' || ext === '.htm') {
|
|
116
116
|
return reply(200, mimeFor(ext), transformHtml(fs.readText(file) ?? '', { base, attribution: this.options.attribution }));
|
|
117
117
|
}
|
|
@@ -130,11 +130,11 @@ export class DevServer {
|
|
|
130
130
|
const { base, attribution } = this.options;
|
|
131
131
|
return reply(200, 'text/html; charset=utf-8', transformHtml(html, { base, entry: profile.entry, attribution }));
|
|
132
132
|
}
|
|
133
|
-
context() {
|
|
133
|
+
async context() {
|
|
134
134
|
const { fs, transformer, base } = this.options;
|
|
135
135
|
this.config ??= readProjectConfig(fs);
|
|
136
|
-
this.cdn ??= (this.options.cdn ?? esmShCdnFactory)(this.config.dependencies, { dev: true });
|
|
137
|
-
return { fs, config: this.config, cdn: this.cdn, transformer, base, components: this.options.components ?? noComponentCompilers };
|
|
136
|
+
this.cdn ??= Promise.resolve((this.options.cdn ?? esmShCdnFactory)(this.config.dependencies, { dev: true }));
|
|
137
|
+
return { fs, config: this.config, cdn: await this.cdn, transformer, base, components: this.options.components ?? noComponentCompilers };
|
|
138
138
|
}
|
|
139
139
|
onChange(change) {
|
|
140
140
|
const structural = change.type === 'remove' || change.created === true || isConfigFile(change.path) || extname(change.path) === '.html';
|
package/dist/devServer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devServer.js","sourceRoot":"","sources":["../src/devServer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAA2B,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAsB,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAyC,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqB7C,MAAM,QAAQ,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG;IACvB,8BAA8B,EAAE,gBAAgB;IAChD,8BAA8B,EAAE,cAAc;CAC/C,CAAC;AAEF,SAAS,KAAK,CAAC,MAAc,EAAE,WAAmB,EAAE,IAAyB;IAC3E,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC;AAC9F,CAAC;AAED,oFAAoF;AACpF,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtF,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,SAAS;IAOS;IANrB,MAAM,CAAiB;IACvB,GAAG,
|
|
1
|
+
{"version":3,"file":"devServer.js","sourceRoot":"","sources":["../src/devServer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ export { detectProject } from './detectProject.js';
|
|
|
7
7
|
export type { ProjectKind, ProjectFramework, ProjectProfile } from './detectProject.js';
|
|
8
8
|
export { readProjectConfig, parseLooseJson, parseDotenv, envFiles } from './projectConfig.js';
|
|
9
9
|
export type { ProjectConfig, PathAlias, BuildMode } from './projectConfig.js';
|
|
10
|
-
export { createEsmShCdn, esmShCdnFactory, isRegistryRange } from './packageCdn.js';
|
|
11
|
-
export type { PackageCdn, PackageCdnFactory, EsmShOptions } from './packageCdn.js';
|
|
10
|
+
export { createEsmShCdn, esmShCdnFactory, isRegistryRange, loadPackageManifests } from './packageCdn.js';
|
|
11
|
+
export type { PackageCdn, PackageCdnFactory, EsmShOptions, PackageDependencyFields, ManifestLoadOptions } from './packageCdn.js';
|
|
12
12
|
export { createEsbuildTransformer, loaderFor } from './transformer.js';
|
|
13
13
|
export type { Transformer, TransformRequest, Loader, EsbuildLike } from './transformer.js';
|
|
14
14
|
export { createEsbuildBundler } from './bundler.js';
|
|
@@ -27,7 +27,7 @@ export { createSvelteCompiler } from './svelteCompiler.js';
|
|
|
27
27
|
export type { SvelteCompilerLike } from './svelteCompiler.js';
|
|
28
28
|
export { contentHash } from './hash.js';
|
|
29
29
|
export { rewriteImports } from './rewriteImports.js';
|
|
30
|
-
export { resolveLocal, resolveAlias, isBareSpecifier, splitPackageSpecifier, RESOLVE_EXTENSIONS } from './resolve.js';
|
|
30
|
+
export { resolveLocal, resolveAlias, isBareSpecifier, splitPackageSpecifier, resolvePackage, RESOLVE_EXTENSIONS } from './resolve.js';
|
|
31
31
|
export { compileScript, compileModule, isScriptPath, mapSpecifier, moduleUrl, buildDefine } from './compileScript.js';
|
|
32
32
|
export { compileComponent } from './compileComponent.js';
|
|
33
33
|
export { transformHtml, errorBridgeScript, liveReloadScript, reloadChannelName, ERROR_MESSAGE_TYPE } from './html.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { normalizePath, dirname, basename, join, extname } from './paths.js';
|
|
|
3
3
|
export { DevServer } from './devServer.js';
|
|
4
4
|
export { detectProject } from './detectProject.js';
|
|
5
5
|
export { readProjectConfig, parseLooseJson, parseDotenv, envFiles } from './projectConfig.js';
|
|
6
|
-
export { createEsmShCdn, esmShCdnFactory, isRegistryRange } from './packageCdn.js';
|
|
6
|
+
export { createEsmShCdn, esmShCdnFactory, isRegistryRange, loadPackageManifests } from './packageCdn.js';
|
|
7
7
|
export { createEsbuildTransformer, loaderFor } from './transformer.js';
|
|
8
8
|
export { createEsbuildBundler } from './bundler.js';
|
|
9
9
|
export { buildProject, normalizeBase } from './build.js';
|
|
@@ -14,7 +14,7 @@ export { createVueCompiler } from './vueCompiler.js';
|
|
|
14
14
|
export { createSvelteCompiler } from './svelteCompiler.js';
|
|
15
15
|
export { contentHash } from './hash.js';
|
|
16
16
|
export { rewriteImports } from './rewriteImports.js';
|
|
17
|
-
export { resolveLocal, resolveAlias, isBareSpecifier, splitPackageSpecifier, RESOLVE_EXTENSIONS } from './resolve.js';
|
|
17
|
+
export { resolveLocal, resolveAlias, isBareSpecifier, splitPackageSpecifier, resolvePackage, RESOLVE_EXTENSIONS } from './resolve.js';
|
|
18
18
|
export { compileScript, compileModule, isScriptPath, mapSpecifier, moduleUrl, buildDefine } from './compileScript.js';
|
|
19
19
|
export { compileComponent } from './compileComponent.js';
|
|
20
20
|
export { transformHtml, errorBridgeScript, liveReloadScript, reloadChannelName, ERROR_MESSAGE_TYPE } from './html.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEzG,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAapD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE3H,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACtI,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE5G,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC"}
|
package/dist/packageCdn.d.ts
CHANGED
|
@@ -11,11 +11,18 @@ export interface PackageCdn {
|
|
|
11
11
|
* Makes the CDN for one project, from its dependency ranges. `dev` is true for the
|
|
12
12
|
* dev server and false for a production build, so a factory can pick development
|
|
13
13
|
* or production package builds (React's readable errors vs its small bundle).
|
|
14
|
+
* It may be async: the esm.sh one loads package metadata first.
|
|
14
15
|
*/
|
|
15
16
|
export type PackageCdnFactory = (dependencies: Record<string, string>, options: {
|
|
16
17
|
dev: boolean;
|
|
17
|
-
}) => PackageCdn
|
|
18
|
-
/**
|
|
18
|
+
}) => PackageCdn | Promise<PackageCdn>;
|
|
19
|
+
/** The package.json fields that say which other packages a package imports. */
|
|
20
|
+
export interface PackageDependencyFields {
|
|
21
|
+
dependencies?: Record<string, string>;
|
|
22
|
+
peerDependencies?: Record<string, string>;
|
|
23
|
+
optionalDependencies?: Record<string, string>;
|
|
24
|
+
}
|
|
25
|
+
/** esm.sh, pinned to the project's ranges, with each declared package's manifest loaded. */
|
|
19
26
|
export declare const esmShCdnFactory: PackageCdnFactory;
|
|
20
27
|
export interface EsmShOptions {
|
|
21
28
|
/** Defaults to https://esm.sh. Any esm.sh-compatible server works. */
|
|
@@ -24,8 +31,29 @@ export interface EsmShOptions {
|
|
|
24
31
|
dependencies?: Record<string, string>;
|
|
25
32
|
/** Serve development builds (readable React errors). Default true. */
|
|
26
33
|
dev?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Each declared package's own dependency fields, by name. They decide which pins
|
|
36
|
+
* go on that package's URL (see `urlFor`). A declared package missing here falls
|
|
37
|
+
* back to carrying every other pin.
|
|
38
|
+
*/
|
|
39
|
+
manifests?: Record<string, PackageDependencyFields>;
|
|
27
40
|
}
|
|
28
41
|
/** A range the CDN can't fetch (`workspace:*`, `file:../x`, `link:`, git URLs). */
|
|
29
42
|
export declare function isRegistryRange(range: string): boolean;
|
|
30
43
|
export declare function createEsmShCdn(options?: EsmShOptions): PackageCdn;
|
|
44
|
+
export interface ManifestLoadOptions {
|
|
45
|
+
/** Defaults to https://esm.sh, which serves `<name>@<range>/package.json`. */
|
|
46
|
+
origin?: string;
|
|
47
|
+
fetch?: (url: string) => Promise<{
|
|
48
|
+
ok: boolean;
|
|
49
|
+
json(): Promise<unknown>;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The dependency fields of every declared registry package, fetched in parallel and
|
|
54
|
+
* kept for the session (a range resolves the same way for its lifetime). A package
|
|
55
|
+
* whose manifest cannot be fetched is simply absent, and `createEsmShCdn` falls
|
|
56
|
+
* back to pinning everything onto it.
|
|
57
|
+
*/
|
|
58
|
+
export declare function loadPackageManifests(dependencies: Record<string, string>, options?: ManifestLoadOptions): Promise<Record<string, PackageDependencyFields>>;
|
|
31
59
|
//# sourceMappingURL=packageCdn.d.ts.map
|
package/dist/packageCdn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageCdn.d.ts","sourceRoot":"","sources":["../src/packageCdn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/C;AAED
|
|
1
|
+
{"version":3,"file":"packageCdn.d.ts","sourceRoot":"","sources":["../src/packageCdn.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/C;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,OAAO,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,KACtB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,+EAA+E;AAC/E,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,4FAA4F;AAC5F,eAAO,MAAM,eAAe,EAAE,iBAC8D,CAAC;AAE7F,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,sEAAsE;IACtE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACrD;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAMD,wBAAgB,cAAc,CAAC,OAAO,GAAE,YAAiB,GAAG,UAAU,CAkCrE;AAED,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;CAC7E;AAID;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAsBlD"}
|
package/dist/packageCdn.js
CHANGED
|
@@ -1,25 +1,39 @@
|
|
|
1
|
-
/** esm.sh, pinned to the project's ranges. */
|
|
2
|
-
export const esmShCdnFactory = (dependencies, { dev }) => createEsmShCdn({ dependencies, dev });
|
|
1
|
+
/** esm.sh, pinned to the project's ranges, with each declared package's manifest loaded. */
|
|
2
|
+
export const esmShCdnFactory = async (dependencies, { dev }) => createEsmShCdn({ dependencies, dev, manifests: await loadPackageManifests(dependencies) });
|
|
3
3
|
/** A range the CDN can't fetch (`workspace:*`, `file:../x`, `link:`, git URLs). */
|
|
4
4
|
export function isRegistryRange(range) {
|
|
5
5
|
return !/^(workspace|file|link|portal|git\+|git:|github:|https?:)/.test(range) && !range.includes('/');
|
|
6
6
|
}
|
|
7
|
+
function importsPackage(manifest, name) {
|
|
8
|
+
return [manifest.dependencies, manifest.peerDependencies, manifest.optionalDependencies].some((field) => !!field && name in field);
|
|
9
|
+
}
|
|
7
10
|
export function createEsmShCdn(options = {}) {
|
|
8
11
|
const origin = (options.origin ?? 'https://esm.sh').replace(/\/+$/, '');
|
|
9
12
|
const dependencies = options.dependencies ?? {};
|
|
13
|
+
const manifests = options.manifests ?? {};
|
|
10
14
|
const dev = options.dev ?? true;
|
|
11
|
-
// Pin every declared dependency into each package's own graph, so `react-dom`
|
|
12
|
-
// and the app share ONE `react` — two copies is the classic "invalid hook call".
|
|
13
15
|
const pinned = Object.entries(dependencies)
|
|
14
16
|
.filter(([, range]) => isRegistryRange(range))
|
|
15
|
-
.
|
|
16
|
-
.sort();
|
|
17
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
17
18
|
return {
|
|
18
19
|
urlFor(name, subpath) {
|
|
19
20
|
const range = dependencies[name];
|
|
20
|
-
const
|
|
21
|
+
const declared = !!range && isRegistryRange(range);
|
|
22
|
+
const versioned = declared ? `${name}@${range}` : name;
|
|
23
|
+
// ONE React means the app must import the very module esm.sh links a package's
|
|
24
|
+
// own imports to. When esm.sh builds `react-dom?deps=react@x`, its `import
|
|
25
|
+
// 'react'` becomes `react@x` pinned with only the deps REACT itself imports
|
|
26
|
+
// (none), i.e. the plain build. Pinning every other declared package onto
|
|
27
|
+
// `react` too made the app load a second `?deps=react-dom,…` copy, and its
|
|
28
|
+
// first `useState` read a null dispatcher. So a declared package carries only
|
|
29
|
+
// the pins it imports. An undeclared one (nothing links to it by name) and one
|
|
30
|
+
// whose manifest could not load carry every pin, which is what dedupes the
|
|
31
|
+
// packages THEY import.
|
|
32
|
+
const manifest = declared ? manifests[name] : undefined;
|
|
33
|
+
const deps = pinned
|
|
34
|
+
.filter(([other]) => other !== name && (!manifest || importsPackage(manifest, other)))
|
|
35
|
+
.map(([other, otherRange]) => `${other}@${otherRange}`);
|
|
21
36
|
const params = [];
|
|
22
|
-
const deps = pinned.filter((entry) => !entry.startsWith(name + '@'));
|
|
23
37
|
if (deps.length)
|
|
24
38
|
params.push('deps=' + deps.map(encodeURIComponent).join(','));
|
|
25
39
|
if (dev)
|
|
@@ -28,4 +42,35 @@ export function createEsmShCdn(options = {}) {
|
|
|
28
42
|
},
|
|
29
43
|
};
|
|
30
44
|
}
|
|
45
|
+
const manifestCache = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* The dependency fields of every declared registry package, fetched in parallel and
|
|
48
|
+
* kept for the session (a range resolves the same way for its lifetime). A package
|
|
49
|
+
* whose manifest cannot be fetched is simply absent, and `createEsmShCdn` falls
|
|
50
|
+
* back to pinning everything onto it.
|
|
51
|
+
*/
|
|
52
|
+
export async function loadPackageManifests(dependencies, options = {}) {
|
|
53
|
+
const origin = (options.origin ?? 'https://esm.sh').replace(/\/+$/, '');
|
|
54
|
+
const fetcher = options.fetch ?? (typeof fetch === 'function' ? (url) => fetch(url) : undefined);
|
|
55
|
+
if (!fetcher)
|
|
56
|
+
return {};
|
|
57
|
+
const entries = await Promise.all(Object.entries(dependencies)
|
|
58
|
+
.filter(([, range]) => isRegistryRange(range))
|
|
59
|
+
.map(async ([name, range]) => {
|
|
60
|
+
const url = `${origin}/${name}@${range}/package.json`;
|
|
61
|
+
let pending = manifestCache.get(url);
|
|
62
|
+
if (!pending) {
|
|
63
|
+
pending = fetcher(url)
|
|
64
|
+
.then(async (res) => (res.ok ? (await res.json()) : undefined))
|
|
65
|
+
.catch(() => undefined);
|
|
66
|
+
manifestCache.set(url, pending);
|
|
67
|
+
}
|
|
68
|
+
return [name, await pending];
|
|
69
|
+
}));
|
|
70
|
+
const loaded = {};
|
|
71
|
+
for (const [name, manifest] of entries)
|
|
72
|
+
if (manifest)
|
|
73
|
+
loaded[name] = manifest;
|
|
74
|
+
return loaded;
|
|
75
|
+
}
|
|
31
76
|
//# sourceMappingURL=packageCdn.js.map
|
package/dist/packageCdn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageCdn.js","sourceRoot":"","sources":["../src/packageCdn.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"packageCdn.js","sourceRoot":"","sources":["../src/packageCdn.ts"],"names":[],"mappings":"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"}
|
package/dist/projectConfig.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export interface ProjectConfig {
|
|
|
23
23
|
/** dependencies + devDependencies, name → version range. */
|
|
24
24
|
dependencies: Record<string, string>;
|
|
25
25
|
aliases: PathAlias[];
|
|
26
|
+
/** Bare package names served as another package (`react-native` → `react-native-web`). */
|
|
27
|
+
packageAliases: Record<string, string>;
|
|
26
28
|
jsx: {
|
|
27
29
|
runtime: 'automatic' | 'classic';
|
|
28
30
|
importSource: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../src/projectConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,sLAUf,CAAC;AAEX,6FAA6F;AAC7F,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;AAErD,2CAA2C;AAC3C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAElD;AAED,MAAM,WAAW,SAAS;IACxB,6FAA6F;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,GAAG,EAAE;QAAE,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkBpD;
|
|
1
|
+
{"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../src/projectConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGlD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,sLAUf,CAAC;AAEX,6FAA6F;AAC7F,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;AAErD,2CAA2C;AAC3C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAElD;AAED,MAAM,WAAW,SAAS;IACxB,6FAA6F;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,0FAA0F;IAC1F,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,GAAG,EAAE;QAAE,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkBpD;AA2FD,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAehE;AAWD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,GAAE,SAAyB,GAAG,aAAa,CAUvG;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIlD"}
|
package/dist/projectConfig.js
CHANGED
|
@@ -128,6 +128,23 @@ function readAliases(options) {
|
|
|
128
128
|
// Longest prefix first, so `@/components/*` wins over `@/*`.
|
|
129
129
|
return aliases.sort((a, b) => b.prefix.length - a.prefix.length);
|
|
130
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Packages a project serves as their browser twin. A React Native Web app aliases
|
|
133
|
+
* `react-native` to `react-native-web` in its Vite or webpack config, which this
|
|
134
|
+
* runtime does not execute; depending on the twin is the same signal, read from
|
|
135
|
+
* package.json. Without it the app imports the real `react-native`, which does not
|
|
136
|
+
* load in a browser. Data, not branches: another twin is another row.
|
|
137
|
+
*/
|
|
138
|
+
const BROWSER_TWINS = [
|
|
139
|
+
{ name: 'react-native', twin: 'react-native-web' },
|
|
140
|
+
];
|
|
141
|
+
function readPackageAliases(dependencies) {
|
|
142
|
+
const aliases = {};
|
|
143
|
+
for (const { name, twin } of BROWSER_TWINS)
|
|
144
|
+
if (twin in dependencies)
|
|
145
|
+
aliases[name] = twin;
|
|
146
|
+
return aliases;
|
|
147
|
+
}
|
|
131
148
|
function readJsx(options) {
|
|
132
149
|
const importSource = typeof options.jsxImportSource === 'string' ? options.jsxImportSource : 'react';
|
|
133
150
|
const runtime = options.jsx === 'react' ? 'classic' : 'automatic';
|
|
@@ -163,9 +180,11 @@ function readEnv(fs, mode) {
|
|
|
163
180
|
}
|
|
164
181
|
export function readProjectConfig(fs, mode = 'development') {
|
|
165
182
|
const options = readCompilerOptions(fs);
|
|
183
|
+
const dependencies = readDependencies(fs);
|
|
166
184
|
return {
|
|
167
|
-
dependencies
|
|
185
|
+
dependencies,
|
|
168
186
|
aliases: readAliases(options),
|
|
187
|
+
packageAliases: readPackageAliases(dependencies),
|
|
169
188
|
jsx: readJsx(options),
|
|
170
189
|
env: readEnv(fs, mode),
|
|
171
190
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../src/projectConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,OAAO;IACP,aAAa;IACb,mBAAmB;IACnB,yBAAyB;IACzB,kBAAkB;IAClB,wBAAwB;CAChB,CAAC;AAKX,2CAA2C;AAC3C,MAAM,UAAU,QAAQ,CAAC,IAAe;IACtC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,IAAI,EAAE,EAAE,SAAS,IAAI,QAAQ,CAAC,CAAC;AAC1E,CAAC;
|
|
1
|
+
{"version":3,"file":"projectConfig.js","sourceRoot":"","sources":["../src/projectConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/resolve.d.ts
CHANGED
|
@@ -9,6 +9,15 @@ export declare function splitPackageSpecifier(specifier: string): {
|
|
|
9
9
|
name: string;
|
|
10
10
|
subpath: string;
|
|
11
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* The package a bare specifier is served from: {@link splitPackageSpecifier}, with
|
|
14
|
+
* the project's package aliases applied to the name (`react-native/x` →
|
|
15
|
+
* `react-native-web` + `/x`), as a bundler alias would.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolvePackage(packageAliases: Readonly<Record<string, string>>, specifier: string): {
|
|
18
|
+
name: string;
|
|
19
|
+
subpath: string;
|
|
20
|
+
};
|
|
12
21
|
/** Resolve a relative or absolute specifier against the importing file's directory. */
|
|
13
22
|
export declare function resolveLocal(fs: VirtualFileSystem, fromDir: string, specifier: string): string | undefined;
|
|
14
23
|
/**
|
package/dist/resolve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,0EAA2E,CAAC;AAE3G,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAI1F;AAoBD,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1G;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWxH"}
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,0EAA2E,CAAC;AAE3G,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAI1F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAGrI;AAoBD,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1G;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWxH"}
|
package/dist/resolve.js
CHANGED
|
@@ -13,6 +13,15 @@ export function splitPackageSpecifier(specifier) {
|
|
|
13
13
|
const take = specifier.startsWith('@') ? 2 : 1;
|
|
14
14
|
return { name: parts.slice(0, take).join('/'), subpath: parts.length > take ? '/' + parts.slice(take).join('/') : '' };
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* The package a bare specifier is served from: {@link splitPackageSpecifier}, with
|
|
18
|
+
* the project's package aliases applied to the name (`react-native/x` →
|
|
19
|
+
* `react-native-web` + `/x`), as a bundler alias would.
|
|
20
|
+
*/
|
|
21
|
+
export function resolvePackage(packageAliases, specifier) {
|
|
22
|
+
const { name, subpath } = splitPackageSpecifier(specifier);
|
|
23
|
+
return { name: Object.hasOwn(packageAliases, name) ? packageAliases[name] : name, subpath };
|
|
24
|
+
}
|
|
16
25
|
function probe(fs, base) {
|
|
17
26
|
if (fs.isFile(base))
|
|
18
27
|
return base;
|
package/dist/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seanhogg/builderforce-webcontainers-core",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.5",
|
|
4
4
|
"description": "BuilderForce WebContainers — core. A runtime-agnostic in-browser dev server: virtual file system, module resolution, import rewriting to a package CDN, CSS/JSON/asset modules and project detection. No COOP/COEP required.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
package/src/build.ts
CHANGED
|
@@ -71,7 +71,7 @@ export async function buildProject(options: BuildOptions): Promise<BuildResult>
|
|
|
71
71
|
if (!profile.supported || !profile.htmlPath) throw new Error(profile.reason ?? 'This project cannot be built here.');
|
|
72
72
|
|
|
73
73
|
const config = readProjectConfig(fs, 'production');
|
|
74
|
-
const cdn = (options.cdn ?? esmShCdnFactory)(config.dependencies, { dev: false });
|
|
74
|
+
const cdn = await (options.cdn ?? esmShCdnFactory)(config.dependencies, { dev: false });
|
|
75
75
|
const html = fs.readText(profile.htmlPath) ?? '';
|
|
76
76
|
const entries = findHtmlEntries(fs, html, profile.htmlPath);
|
|
77
77
|
// CRA pages carry no module script; the dev server injects the entry, so does the build.
|
package/src/buildHost.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { ComponentCompilers } from './components.js';
|
|
|
6
6
|
import { componentExtension } from './components.js';
|
|
7
7
|
import { loaderFor } from './transformer.js';
|
|
8
8
|
import { basename, dirname, extname, join } from './paths.js';
|
|
9
|
-
import { isBareSpecifier, resolveAlias, resolveLocal,
|
|
9
|
+
import { isBareSpecifier, resolveAlias, resolveLocal, resolvePackage } from './resolve.js';
|
|
10
10
|
import { contentHash } from './hash.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -110,7 +110,7 @@ export function createBuildHost(options: BuildHostOptions): BuildHost {
|
|
|
110
110
|
if (isBareSpecifier(path)) {
|
|
111
111
|
file = (css ? resolveLocal(fs, fromDir, `./${path}`) : undefined) ?? resolveAlias(fs, config.aliases, path);
|
|
112
112
|
if (!file) {
|
|
113
|
-
const { name, subpath } =
|
|
113
|
+
const { name, subpath } = resolvePackage(config.packageAliases, path);
|
|
114
114
|
// A package stylesheet imported from JS (`import 'bootstrap/dist/css/bootstrap.css'`)
|
|
115
115
|
// can't stay a JS import of a CSS URL; it joins the CSS bundle as an @import.
|
|
116
116
|
if (!css && extname(subpath) === '.css') return { path: `/${PACKAGE_CSS}/${path}`, query: PACKAGE_CSS };
|
|
@@ -128,7 +128,7 @@ export function createBuildHost(options: BuildHostOptions): BuildHost {
|
|
|
128
128
|
if (query === 'raw') return { contents: fs.readText(path) ?? '', loader: 'text' };
|
|
129
129
|
if (query === COMPONENT_CSS) return { contents: componentCss.get(path) ?? '', loader: 'css' };
|
|
130
130
|
if (query === PACKAGE_CSS) {
|
|
131
|
-
const { name, subpath } =
|
|
131
|
+
const { name, subpath } = resolvePackage(config.packageAliases, path.slice(PACKAGE_CSS.length + 2));
|
|
132
132
|
return { contents: `@import ${JSON.stringify(cdn.urlFor(name, subpath))};`, loader: 'css' };
|
|
133
133
|
}
|
|
134
134
|
|
package/src/compileScript.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { ComponentCompilers } from './components.js';
|
|
|
6
6
|
import { componentExtension } from './components.js';
|
|
7
7
|
import { loaderFor } from './transformer.js';
|
|
8
8
|
import { dirname, extname } from './paths.js';
|
|
9
|
-
import { isBareSpecifier, resolveAlias, resolveLocal,
|
|
9
|
+
import { isBareSpecifier, resolveAlias, resolveLocal, resolvePackage } from './resolve.js';
|
|
10
10
|
import { rewriteImports } from './rewriteImports.js';
|
|
11
11
|
|
|
12
12
|
export interface CompileContext {
|
|
@@ -63,7 +63,7 @@ export function mapSpecifier(ctx: CompileContext, fromDir: string, specifier: st
|
|
|
63
63
|
if (isBareSpecifier(path)) {
|
|
64
64
|
const aliased = resolveAlias(ctx.fs, ctx.config.aliases, path);
|
|
65
65
|
if (aliased) return moduleUrl(ctx.base, aliased, query);
|
|
66
|
-
const { name, subpath } =
|
|
66
|
+
const { name, subpath } = resolvePackage(ctx.config.packageAliases, path);
|
|
67
67
|
return ctx.cdn.urlFor(name, subpath);
|
|
68
68
|
}
|
|
69
69
|
const resolved = resolveLocal(ctx.fs, fromDir, path);
|
package/src/devServer.ts
CHANGED
|
@@ -77,7 +77,7 @@ function parseQuery(search: string): ImportQuery | undefined {
|
|
|
77
77
|
*/
|
|
78
78
|
export class DevServer {
|
|
79
79
|
private config?: ProjectConfig;
|
|
80
|
-
private cdn?: PackageCdn
|
|
80
|
+
private cdn?: Promise<PackageCdn>;
|
|
81
81
|
private profileCache?: ProjectProfile;
|
|
82
82
|
private readonly cache = new Map<string, { version: number; file: ServedFile }>();
|
|
83
83
|
private readonly unwatch: () => void;
|
|
@@ -133,8 +133,8 @@ export class DevServer {
|
|
|
133
133
|
return query === 'import' ? reply(200, JS_MIME, cssToModule(file, css)) : reply(200, mimeFor(ext), css);
|
|
134
134
|
}
|
|
135
135
|
if (ext === '.json' && query === 'import') return reply(200, JS_MIME, jsonToModule(fs.readText(file) ?? ''));
|
|
136
|
-
if (loaderFor(ext)) return reply(200, JS_MIME, await compileScript(this.context(), file));
|
|
137
|
-
if (isScriptPath(file)) return reply(200, JS_MIME, await compileComponent(this.context(), file));
|
|
136
|
+
if (loaderFor(ext)) return reply(200, JS_MIME, await compileScript(await this.context(), file));
|
|
137
|
+
if (isScriptPath(file)) return reply(200, JS_MIME, await compileComponent(await this.context(), file));
|
|
138
138
|
if (ext === '.html' || ext === '.htm') {
|
|
139
139
|
return reply(200, mimeFor(ext), transformHtml(fs.readText(file) ?? '', { base, attribution: this.options.attribution }));
|
|
140
140
|
}
|
|
@@ -154,11 +154,11 @@ export class DevServer {
|
|
|
154
154
|
return reply(200, 'text/html; charset=utf-8', transformHtml(html, { base, entry: profile.entry, attribution }));
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
private context(): CompileContext {
|
|
157
|
+
private async context(): Promise<CompileContext> {
|
|
158
158
|
const { fs, transformer, base } = this.options;
|
|
159
159
|
this.config ??= readProjectConfig(fs);
|
|
160
|
-
this.cdn ??= (this.options.cdn ?? esmShCdnFactory)(this.config.dependencies, { dev: true });
|
|
161
|
-
return { fs, config: this.config, cdn: this.cdn, transformer, base, components: this.options.components ?? noComponentCompilers };
|
|
160
|
+
this.cdn ??= Promise.resolve((this.options.cdn ?? esmShCdnFactory)(this.config.dependencies, { dev: true }));
|
|
161
|
+
return { fs, config: this.config, cdn: await this.cdn, transformer, base, components: this.options.components ?? noComponentCompilers };
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
private onChange(change: FsChange): void {
|
package/src/index.ts
CHANGED
|
@@ -7,8 +7,8 @@ export { detectProject } from './detectProject.js';
|
|
|
7
7
|
export type { ProjectKind, ProjectFramework, ProjectProfile } from './detectProject.js';
|
|
8
8
|
export { readProjectConfig, parseLooseJson, parseDotenv, envFiles } from './projectConfig.js';
|
|
9
9
|
export type { ProjectConfig, PathAlias, BuildMode } from './projectConfig.js';
|
|
10
|
-
export { createEsmShCdn, esmShCdnFactory, isRegistryRange } from './packageCdn.js';
|
|
11
|
-
export type { PackageCdn, PackageCdnFactory, EsmShOptions } from './packageCdn.js';
|
|
10
|
+
export { createEsmShCdn, esmShCdnFactory, isRegistryRange, loadPackageManifests } from './packageCdn.js';
|
|
11
|
+
export type { PackageCdn, PackageCdnFactory, EsmShOptions, PackageDependencyFields, ManifestLoadOptions } from './packageCdn.js';
|
|
12
12
|
export { createEsbuildTransformer, loaderFor } from './transformer.js';
|
|
13
13
|
export type { Transformer, TransformRequest, Loader, EsbuildLike } from './transformer.js';
|
|
14
14
|
export { createEsbuildBundler } from './bundler.js';
|
|
@@ -38,7 +38,7 @@ export { createSvelteCompiler } from './svelteCompiler.js';
|
|
|
38
38
|
export type { SvelteCompilerLike } from './svelteCompiler.js';
|
|
39
39
|
export { contentHash } from './hash.js';
|
|
40
40
|
export { rewriteImports } from './rewriteImports.js';
|
|
41
|
-
export { resolveLocal, resolveAlias, isBareSpecifier, splitPackageSpecifier, RESOLVE_EXTENSIONS } from './resolve.js';
|
|
41
|
+
export { resolveLocal, resolveAlias, isBareSpecifier, splitPackageSpecifier, resolvePackage, RESOLVE_EXTENSIONS } from './resolve.js';
|
|
42
42
|
export { compileScript, compileModule, isScriptPath, mapSpecifier, moduleUrl, buildDefine } from './compileScript.js';
|
|
43
43
|
export { compileComponent } from './compileComponent.js';
|
|
44
44
|
export { transformHtml, errorBridgeScript, liveReloadScript, reloadChannelName, ERROR_MESSAGE_TYPE } from './html.js';
|
package/src/packageCdn.ts
CHANGED
|
@@ -12,11 +12,23 @@ export interface PackageCdn {
|
|
|
12
12
|
* Makes the CDN for one project, from its dependency ranges. `dev` is true for the
|
|
13
13
|
* dev server and false for a production build, so a factory can pick development
|
|
14
14
|
* or production package builds (React's readable errors vs its small bundle).
|
|
15
|
+
* It may be async: the esm.sh one loads package metadata first.
|
|
15
16
|
*/
|
|
16
|
-
export type PackageCdnFactory = (
|
|
17
|
+
export type PackageCdnFactory = (
|
|
18
|
+
dependencies: Record<string, string>,
|
|
19
|
+
options: { dev: boolean },
|
|
20
|
+
) => PackageCdn | Promise<PackageCdn>;
|
|
17
21
|
|
|
18
|
-
/**
|
|
19
|
-
export
|
|
22
|
+
/** The package.json fields that say which other packages a package imports. */
|
|
23
|
+
export interface PackageDependencyFields {
|
|
24
|
+
dependencies?: Record<string, string>;
|
|
25
|
+
peerDependencies?: Record<string, string>;
|
|
26
|
+
optionalDependencies?: Record<string, string>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** esm.sh, pinned to the project's ranges, with each declared package's manifest loaded. */
|
|
30
|
+
export const esmShCdnFactory: PackageCdnFactory = async (dependencies, { dev }) =>
|
|
31
|
+
createEsmShCdn({ dependencies, dev, manifests: await loadPackageManifests(dependencies) });
|
|
20
32
|
|
|
21
33
|
export interface EsmShOptions {
|
|
22
34
|
/** Defaults to https://esm.sh. Any esm.sh-compatible server works. */
|
|
@@ -25,6 +37,12 @@ export interface EsmShOptions {
|
|
|
25
37
|
dependencies?: Record<string, string>;
|
|
26
38
|
/** Serve development builds (readable React errors). Default true. */
|
|
27
39
|
dev?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Each declared package's own dependency fields, by name. They decide which pins
|
|
42
|
+
* go on that package's URL (see `urlFor`). A declared package missing here falls
|
|
43
|
+
* back to carrying every other pin.
|
|
44
|
+
*/
|
|
45
|
+
manifests?: Record<string, PackageDependencyFields>;
|
|
28
46
|
}
|
|
29
47
|
|
|
30
48
|
/** A range the CDN can't fetch (`workspace:*`, `file:../x`, `link:`, git URLs). */
|
|
@@ -32,27 +50,83 @@ export function isRegistryRange(range: string): boolean {
|
|
|
32
50
|
return !/^(workspace|file|link|portal|git\+|git:|github:|https?:)/.test(range) && !range.includes('/');
|
|
33
51
|
}
|
|
34
52
|
|
|
53
|
+
function importsPackage(manifest: PackageDependencyFields, name: string): boolean {
|
|
54
|
+
return [manifest.dependencies, manifest.peerDependencies, manifest.optionalDependencies].some((field) => !!field && name in field);
|
|
55
|
+
}
|
|
56
|
+
|
|
35
57
|
export function createEsmShCdn(options: EsmShOptions = {}): PackageCdn {
|
|
36
58
|
const origin = (options.origin ?? 'https://esm.sh').replace(/\/+$/, '');
|
|
37
59
|
const dependencies = options.dependencies ?? {};
|
|
60
|
+
const manifests = options.manifests ?? {};
|
|
38
61
|
const dev = options.dev ?? true;
|
|
39
62
|
|
|
40
|
-
// Pin every declared dependency into each package's own graph, so `react-dom`
|
|
41
|
-
// and the app share ONE `react` — two copies is the classic "invalid hook call".
|
|
42
63
|
const pinned = Object.entries(dependencies)
|
|
43
64
|
.filter(([, range]) => isRegistryRange(range))
|
|
44
|
-
.
|
|
45
|
-
.sort();
|
|
65
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
46
66
|
|
|
47
67
|
return {
|
|
48
68
|
urlFor(name, subpath) {
|
|
49
69
|
const range = dependencies[name];
|
|
50
|
-
const
|
|
70
|
+
const declared = !!range && isRegistryRange(range);
|
|
71
|
+
const versioned = declared ? `${name}@${range}` : name;
|
|
72
|
+
// ONE React means the app must import the very module esm.sh links a package's
|
|
73
|
+
// own imports to. When esm.sh builds `react-dom?deps=react@x`, its `import
|
|
74
|
+
// 'react'` becomes `react@x` pinned with only the deps REACT itself imports
|
|
75
|
+
// (none), i.e. the plain build. Pinning every other declared package onto
|
|
76
|
+
// `react` too made the app load a second `?deps=react-dom,…` copy, and its
|
|
77
|
+
// first `useState` read a null dispatcher. So a declared package carries only
|
|
78
|
+
// the pins it imports. An undeclared one (nothing links to it by name) and one
|
|
79
|
+
// whose manifest could not load carry every pin, which is what dedupes the
|
|
80
|
+
// packages THEY import.
|
|
81
|
+
const manifest = declared ? manifests[name] : undefined;
|
|
82
|
+
const deps = pinned
|
|
83
|
+
.filter(([other]) => other !== name && (!manifest || importsPackage(manifest, other)))
|
|
84
|
+
.map(([other, otherRange]) => `${other}@${otherRange}`);
|
|
51
85
|
const params: string[] = [];
|
|
52
|
-
const deps = pinned.filter((entry) => !entry.startsWith(name + '@'));
|
|
53
86
|
if (deps.length) params.push('deps=' + deps.map(encodeURIComponent).join(','));
|
|
54
87
|
if (dev) params.push('dev');
|
|
55
88
|
return `${origin}/${versioned}${subpath}${params.length ? '?' + params.join('&') : ''}`;
|
|
56
89
|
},
|
|
57
90
|
};
|
|
58
91
|
}
|
|
92
|
+
|
|
93
|
+
export interface ManifestLoadOptions {
|
|
94
|
+
/** Defaults to https://esm.sh, which serves `<name>@<range>/package.json`. */
|
|
95
|
+
origin?: string;
|
|
96
|
+
fetch?: (url: string) => Promise<{ ok: boolean; json(): Promise<unknown> }>;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const manifestCache = new Map<string, Promise<PackageDependencyFields | undefined>>();
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The dependency fields of every declared registry package, fetched in parallel and
|
|
103
|
+
* kept for the session (a range resolves the same way for its lifetime). A package
|
|
104
|
+
* whose manifest cannot be fetched is simply absent, and `createEsmShCdn` falls
|
|
105
|
+
* back to pinning everything onto it.
|
|
106
|
+
*/
|
|
107
|
+
export async function loadPackageManifests(
|
|
108
|
+
dependencies: Record<string, string>,
|
|
109
|
+
options: ManifestLoadOptions = {},
|
|
110
|
+
): Promise<Record<string, PackageDependencyFields>> {
|
|
111
|
+
const origin = (options.origin ?? 'https://esm.sh').replace(/\/+$/, '');
|
|
112
|
+
const fetcher = options.fetch ?? (typeof fetch === 'function' ? (url: string) => fetch(url) : undefined);
|
|
113
|
+
if (!fetcher) return {};
|
|
114
|
+
const entries = await Promise.all(
|
|
115
|
+
Object.entries(dependencies)
|
|
116
|
+
.filter(([, range]) => isRegistryRange(range))
|
|
117
|
+
.map(async ([name, range]) => {
|
|
118
|
+
const url = `${origin}/${name}@${range}/package.json`;
|
|
119
|
+
let pending = manifestCache.get(url);
|
|
120
|
+
if (!pending) {
|
|
121
|
+
pending = fetcher(url)
|
|
122
|
+
.then(async (res) => (res.ok ? ((await res.json()) as PackageDependencyFields) : undefined))
|
|
123
|
+
.catch(() => undefined);
|
|
124
|
+
manifestCache.set(url, pending);
|
|
125
|
+
}
|
|
126
|
+
return [name, await pending] as const;
|
|
127
|
+
}),
|
|
128
|
+
);
|
|
129
|
+
const loaded: Record<string, PackageDependencyFields> = {};
|
|
130
|
+
for (const [name, manifest] of entries) if (manifest) loaded[name] = manifest;
|
|
131
|
+
return loaded;
|
|
132
|
+
}
|
package/src/projectConfig.ts
CHANGED
|
@@ -41,6 +41,8 @@ export interface ProjectConfig {
|
|
|
41
41
|
/** dependencies + devDependencies, name → version range. */
|
|
42
42
|
dependencies: Record<string, string>;
|
|
43
43
|
aliases: PathAlias[];
|
|
44
|
+
/** Bare package names served as another package (`react-native` → `react-native-web`). */
|
|
45
|
+
packageAliases: Record<string, string>;
|
|
44
46
|
jsx: { runtime: 'automatic' | 'classic'; importSource: string };
|
|
45
47
|
/** `VITE_*` and `NODE_ENV` style variables from the `.env` files, in load order. */
|
|
46
48
|
env: Record<string, string>;
|
|
@@ -133,6 +135,23 @@ function readAliases(options: Record<string, unknown>): PathAlias[] {
|
|
|
133
135
|
return aliases.sort((a, b) => b.prefix.length - a.prefix.length);
|
|
134
136
|
}
|
|
135
137
|
|
|
138
|
+
/**
|
|
139
|
+
* Packages a project serves as their browser twin. A React Native Web app aliases
|
|
140
|
+
* `react-native` to `react-native-web` in its Vite or webpack config, which this
|
|
141
|
+
* runtime does not execute; depending on the twin is the same signal, read from
|
|
142
|
+
* package.json. Without it the app imports the real `react-native`, which does not
|
|
143
|
+
* load in a browser. Data, not branches: another twin is another row.
|
|
144
|
+
*/
|
|
145
|
+
const BROWSER_TWINS: ReadonlyArray<{ name: string; twin: string }> = [
|
|
146
|
+
{ name: 'react-native', twin: 'react-native-web' },
|
|
147
|
+
];
|
|
148
|
+
|
|
149
|
+
function readPackageAliases(dependencies: Record<string, string>): Record<string, string> {
|
|
150
|
+
const aliases: Record<string, string> = {};
|
|
151
|
+
for (const { name, twin } of BROWSER_TWINS) if (twin in dependencies) aliases[name] = twin;
|
|
152
|
+
return aliases;
|
|
153
|
+
}
|
|
154
|
+
|
|
136
155
|
function readJsx(options: Record<string, unknown>): ProjectConfig['jsx'] {
|
|
137
156
|
const importSource = typeof options.jsxImportSource === 'string' ? options.jsxImportSource : 'react';
|
|
138
157
|
const runtime = options.jsx === 'react' ? 'classic' : 'automatic';
|
|
@@ -168,9 +187,11 @@ function readEnv(fs: VirtualFileSystem, mode: BuildMode): Record<string, string>
|
|
|
168
187
|
|
|
169
188
|
export function readProjectConfig(fs: VirtualFileSystem, mode: BuildMode = 'development'): ProjectConfig {
|
|
170
189
|
const options = readCompilerOptions(fs);
|
|
190
|
+
const dependencies = readDependencies(fs);
|
|
171
191
|
return {
|
|
172
|
-
dependencies
|
|
192
|
+
dependencies,
|
|
173
193
|
aliases: readAliases(options),
|
|
194
|
+
packageAliases: readPackageAliases(dependencies),
|
|
174
195
|
jsx: readJsx(options),
|
|
175
196
|
env: readEnv(fs, mode),
|
|
176
197
|
};
|
package/src/resolve.ts
CHANGED
|
@@ -18,6 +18,16 @@ export function splitPackageSpecifier(specifier: string): { name: string; subpat
|
|
|
18
18
|
return { name: parts.slice(0, take).join('/'), subpath: parts.length > take ? '/' + parts.slice(take).join('/') : '' };
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* The package a bare specifier is served from: {@link splitPackageSpecifier}, with
|
|
23
|
+
* the project's package aliases applied to the name (`react-native/x` →
|
|
24
|
+
* `react-native-web` + `/x`), as a bundler alias would.
|
|
25
|
+
*/
|
|
26
|
+
export function resolvePackage(packageAliases: Readonly<Record<string, string>>, specifier: string): { name: string; subpath: string } {
|
|
27
|
+
const { name, subpath } = splitPackageSpecifier(specifier);
|
|
28
|
+
return { name: Object.hasOwn(packageAliases, name) ? packageAliases[name]! : name, subpath };
|
|
29
|
+
}
|
|
30
|
+
|
|
21
31
|
function probe(fs: VirtualFileSystem, base: string): string | undefined {
|
|
22
32
|
if (fs.isFile(base)) return base;
|
|
23
33
|
for (const ext of RESOLVE_EXTENSIONS) if (fs.isFile(base + ext)) return base + ext;
|