@seanhogg/builderforce-webcontainers 2026.10.5 → 2026.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/assets.js +2 -2
- package/dist/check/index.js +1 -1
- package/dist/check/index.js.map +1 -1
- package/dist/check/worker.js +8 -8
- package/dist/host.d.ts +32 -22
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +19 -23
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/processHost.d.ts +20 -8
- package/dist/node/processHost.d.ts.map +1 -1
- package/dist/node/processHost.js +14 -21
- package/dist/node/processHost.js.map +1 -1
- package/dist/node/protocol.d.ts +1 -1
- package/dist/node/protocol.d.ts.map +1 -1
- package/dist/node/worker.js +73 -73
- package/dist/node/workerProcess.js +2 -2
- package/dist/node/workerProcess.js.map +1 -1
- package/dist/previewMessages.d.ts +19 -0
- package/dist/previewMessages.d.ts.map +1 -0
- package/dist/previewMessages.js +52 -0
- package/dist/previewMessages.js.map +1 -0
- package/dist/process-worker.js +73 -73
- package/dist/relay.html +1 -1
- package/package.json +2 -2
- package/src/check/index.ts +1 -1
- package/src/host.ts +55 -45
- package/src/index.ts +6 -5
- package/src/node/index.ts +1 -1
- package/src/node/processHost.ts +36 -22
- package/src/node/protocol.ts +1 -1
- package/src/node/workerProcess.ts +2 -2
- package/src/previewMessages.ts +71 -0
package/dist/check/index.js
CHANGED
package/dist/check/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/check/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,iBAAiB,EAAkB,MAAM,2CAA2C,CAAC;AAE9F,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAmB,MAAM,eAAe,CAAC;AAGjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAEnF,yFAAyF;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,2CAA2C,kBAAkB,oBAAoB,CAAC;AA2BxH,0FAA0F;AAC1F,MAAM,UAAU,WAAW,CAAC,KAAoC;IAC9D,IAAI,EAAqB,CAAC;IAC1B,IAAI,KAAK,YAAY,iBAAiB;QAAE,EAAE,GAAG,KAAK,CAAC;SAC9C,CAAC;QACJ,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC7B,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/check/index.ts"],"names":[],"mappings":"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"}
|
package/dist/check/worker.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";(()=>{var
|
|
2
|
-
`;)
|
|
3
|
-
`;continue}if(r==="/"&&
|
|
1
|
+
"use strict";(()=>{var ke=Object.defineProperty;var je=(s,e,t)=>e in s?ke(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var S=(s,e,t)=>je(s,typeof e!="symbol"?e+"":e,t);function E(s){let e=[];for(let t of s.replace(/\\/g,"/").split("/"))!t||t==="."||(t===".."?e.pop():e.push(t));return"/"+e.join("/")}function j(s){let e=E(s),t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}function Re(s){let e=E(s);return e.slice(e.lastIndexOf("/")+1)}function w(...s){return E(s.join("/"))}function F(s){let e=Re(s),t=e.lastIndexOf(".");return t<=0?"":e.slice(t).toLowerCase()}var $e=new TextDecoder,P=class{constructor(){S(this,"files",new Map);S(this,"versions",new Map);S(this,"mtimes",new Map);S(this,"children",new Map([["/",new Set]]));S(this,"explicit",new Set);S(this,"listeners",new Set);S(this,"clock",0)}writeFile(e,t){let n=E(e);if(n==="/"||this.children.has(n))throw new Error(`EISDIR: illegal operation on a directory, open '${n}'`);let r=!this.files.has(n);r&&this.link(n),this.files.set(n,t),this.versions.set(n,++this.clock),this.mtimes.set(n,Date.now()),this.emit({type:"write",path:n,created:r})}readFile(e){return this.files.get(E(e))}readText(e){let t=this.readFile(e);if(t!==void 0)return typeof t=="string"?t:$e.decode(t)}isFile(e){return this.files.has(E(e))}isDirectory(e){return this.children.has(E(e))}exists(e){return this.isFile(e)||this.isDirectory(e)}mkdir(e){let t=E(e);if(this.files.has(t))throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(t==="/")return;let n=this.children.has(t);this.explicit.add(t),!n&&(this.ensureDir(t),this.emit({type:"mkdir",path:t}))}readdir(e){return[...this.children.get(E(e))??[]].sort()}entries(e){let t=E(e);return this.readdir(t).map(n=>({name:n,kind:this.children.has(w(t,n))?"directory":"file"}))}rename(e,t){let n=E(e),r=E(t);if(n===r)return;if(!this.exists(n))throw new Error(`ENOENT: no such file or directory, rename '${n}' -> '${r}'`);if(this.exists(r))throw new Error(`EEXIST: file already exists, rename '${n}' -> '${r}'`);if(r.startsWith(n+"/"))throw new Error(`EINVAL: cannot move '${n}' into itself`);if(this.files.has(n)){let c=this.files.get(n);this.removeFile(n),this.writeFile(r,c);return}let o=n+"/",a=[...this.files].filter(([c])=>c.startsWith(o)),l=[...this.explicit].filter(c=>c===n||c.startsWith(o));this.rm(n),this.mkdir(r);for(let c of l)this.mkdir(r+c.slice(n.length));for(let[c,f]of a)this.writeFile(r+c.slice(n.length),f)}list(){return[...this.files.keys()].sort()}explicitDirectories(){return[...this.explicit].sort()}rm(e){let t=E(e);if(this.files.has(t)){this.removeFile(t);return}if(!this.children.has(t))return;for(let r of[...this.children.get(t)??[]])this.rm(t==="/"?"/"+r:`${t}/${r}`);if(t==="/")return;let n=this.explicit.delete(t);this.children.has(t)&&this.unlinkDir(t),n&&this.emit({type:"remove",path:t})}version(e){return this.versions.get(E(e))}mtime(e){return this.mtimes.get(E(e))}writeTree(e,t="/"){for(let[n,r]of Object.entries(e)){let o=w(t,n);typeof r=="string"||r instanceof Uint8Array?this.writeFile(o,r):(this.mkdir(o),this.writeTree(r,o))}}toFlat(){let e={};for(let[t,n]of this.files)e[t.slice(1)]=n;return e}watch(e,t={}){let n=t.under===void 0?void 0:E(t.under),r=n===void 0||n==="/"?e:o=>(o.path===n||o.path.startsWith(n+"/"))&&e(o);return this.listeners.add(r),()=>this.listeners.delete(r)}removeFile(e){this.files.delete(e),this.versions.delete(e),this.mtimes.delete(e),this.unlink(e),this.emit({type:"remove",path:e})}link(e){let t=j(e);this.ensureDir(t),this.children.get(t).add(e.slice(e.lastIndexOf("/")+1))}ensureDir(e){if(!this.children.has(e)){if(this.files.has(e))throw new Error(`ENOTDIR: not a directory, '${e}'`);this.children.set(e,new Set),this.link(e)}}unlink(e){let t=j(e),n=this.children.get(t);n&&(n.delete(e.slice(e.lastIndexOf("/")+1)),n.size===0&&t!=="/"&&!this.explicit.has(t)&&this.unlinkDir(t))}unlinkDir(e){this.children.delete(e),this.unlink(e)}emit(e){for(let t of this.listeners)t(e)}};function Te(s){return["/.env","/.env.local",`/.env.${s}`,`/.env.${s}.local`]}function z(s){let e="",t=!1;for(let n=0;n<s.length;n++){let r=s[n],o=s[n+1];if(t){e+=r,r==="\\"?(e+=o??"",n++):r==='"'&&(t=!1);continue}if(r==='"'){t=!0,e+=r;continue}if(r==="/"&&o==="/"){for(;n<s.length&&s[n]!==`
|
|
2
|
+
`;)n++;e+=`
|
|
3
|
+
`;continue}if(r==="/"&&o==="*"){for(n+=2;n<s.length&&!(s[n]==="*"&&s[n+1]==="/");)n++;n++;continue}e+=r}return JSON.parse(e.replace(/,(\s*[}\]])/g,"$1"))}function U(s,e){let t=s.readText(e);if(t!==void 0)try{let n=z(t);return n&&typeof n=="object"?n:void 0}catch{return}}function N(s){return s&&typeof s=="object"?s:{}}function Fe(s){let e=U(s,"/package.json")??{},t={};for(let n of["devDependencies","dependencies"])for(let[r,o]of Object.entries(N(e[n])))typeof o=="string"&&(t[r]=o);return t}function Ce(s){let e=U(s,"/tsconfig.json")??U(s,"/jsconfig.json")??{},t={...N(e.compilerOptions)},n=Array.isArray(e.references)?e.references:[];for(let r of n){let o=N(r).path;if(typeof o!="string")continue;let a=o.endsWith(".json")?w("/",o):w("/",o,"tsconfig.json");for(let[l,c]of Object.entries(N(U(s,a)?.compilerOptions)))l in t||(t[l]=c)}return t}function be(s){let e=typeof s.baseUrl=="string"?s.baseUrl:".",t=[];for(let[n,r]of Object.entries(N(s.paths))){if(!Array.isArray(r))continue;let o=n.endsWith("*"),a=r.filter(l=>typeof l=="string").map(l=>{let c=o?l.replace(/\*$/,""):l,f=w("/",e,c);return c.endsWith("/")&&f!=="/"?f+"/":f});t.push({prefix:o?n.slice(0,-1):n,wildcard:o,targets:a})}return t.sort((n,r)=>r.prefix.length-n.prefix.length)}var _e=[{name:"react-native",twin:"react-native-web"}];function De(s){let e={};for(let{name:t,twin:n}of _e)n in s&&(e[t]=n);return e}function Ie(s){let e=typeof s.jsxImportSource=="string"?s.jsxImportSource:"react";return{runtime:s.jsx==="react"?"classic":"automatic",importSource:e}}function Pe(s){let e={};for(let t of s.split(/\r?\n/)){let n=t.trim();if(!n||n.startsWith("#"))continue;let r=n.indexOf("=");if(r<=0)continue;let o=n.slice(0,r).replace(/^export\s+/,"").trim(),a=n.slice(r+1).trim();(a.startsWith('"')&&a.endsWith('"')||a.startsWith("'")&&a.endsWith("'"))&&(a=a.slice(1,-1)),e[o]=a}return e}function Ne(s,e){let t={};for(let n of Te(e)){let r=s.readText(n);r!==void 0&&Object.assign(t,Pe(r))}return t}function ee(s,e="development"){let t=Ce(s),n=Fe(s);return{dependencies:n,aliases:be(t),packageAliases:De(n),jsx:Ie(t),env:Ne(s,e)}}var te=[".tsx",".ts",".jsx",".js",".mjs",".cjs",".json",".css"];function R(s){return s.startsWith(".")||s.startsWith("/")?!1:!/^[a-z][a-z0-9+.-]*:/i.test(s)}function $(s){let e=s.split("/"),t=s.startsWith("@")?2:1;return{name:e.slice(0,t).join("/"),subpath:e.length>t?"/"+e.slice(t).join("/"):""}}function Oe(s,e){if(s.isFile(e))return e;for(let n of te)if(s.isFile(e+n))return e+n;let t=F(e);if(t===".js"||t===".jsx"||t===".mjs"){let n=e.slice(0,-t.length);for(let r of[".ts",".tsx"])if(s.isFile(n+r))return n+r}if(s.isDirectory(e))for(let n of te){let r=w(e,"index"+n);if(s.isFile(r))return r}}function ne(s,e,t){for(let n of e){if(!(n.wildcard?t.startsWith(n.prefix):t===n.prefix))continue;let o=n.wildcard?t.slice(n.prefix.length):"";for(let a of n.targets){let l=Oe(s,E(a+o));if(l)return l}}}var W="/__bfwc_shims__",O=`${W}/ambient.d.ts`,q=`${W}/empty.d.ts`,H=new Set(["vite/client","react-scripts"]),A="{ const src: string; export default src; }",se="{ const value: any; export default value; }",Me=[["*.module.css","{ const classes: { readonly [key: string]: string }; export default classes; }"],["*.module.scss","{ const classes: { readonly [key: string]: string }; export default classes; }"],["*.css","{}"],["*.scss","{}"],["*.sass","{}"],["*.less","{}"],...["svg","png","jpg","jpeg","gif","webp","avif","ico","bmp","woff","woff2","ttf","otf","eot","mp4","webm","mp3","wav","ogg","pdf","txt","md","wasm"].map(s=>[`*.${s}`,A]),["*?raw",A],["*?url",A],["*?inline",A],["*.vue",se],["*.svelte",se]],Le=`interface ImportMetaEnv {
|
|
4
4
|
readonly [key: string]: any;
|
|
5
5
|
readonly MODE: string;
|
|
6
6
|
readonly BASE_URL: string;
|
|
@@ -12,9 +12,9 @@ interface ImportMeta {
|
|
|
12
12
|
readonly env: ImportMetaEnv;
|
|
13
13
|
readonly hot?: any;
|
|
14
14
|
readonly glob: any;
|
|
15
|
-
}`;function Ue(
|
|
15
|
+
}`;function Ue(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ae(s,e){let t=new RegExp(`declare\\s+module\\s+['"]${Ue(e)}['"]`);for(let n of s)if(t.test(n))return!0;return!1}function re(s){let e=[Le];s.existing.some(t=>/declare\s+var\s+process\b/.test(t))||e.push("declare var process: { env: { readonly [key: string]: string | undefined; readonly NODE_ENV: string } };");for(let[t,n]of Me)Ae(s.existing,t)||e.push(`declare module ${JSON.stringify(t)} ${n}`);for(let t of s.untyped)e.push(`declare module ${JSON.stringify(t)};`),e.push(`declare module ${JSON.stringify(`${t}/*`)};`);return e.join(`
|
|
16
16
|
`)+`
|
|
17
|
-
`}function ie(
|
|
18
|
-
`:t.readText(i)??
|
|
19
|
-
`,fileExists:i=>r(i)!==void 0,readFile:r,directoryExists:i=>t.isDirectory(i)||i.startsWith(C)||i===b||i===W,getDirectories:()=>[],resolveModuleNameLiterals:(i,
|
|
20
|
-
`),
|
|
17
|
+
`}function ie(s){return!/^(workspace|file|link|portal|git\+|git:|github:|https?:)/.test(s)&&!s.includes("/")}var C="/__bfwc_types__",b="/__bfwc_lib__",M="/node_modules",G="https://esm.sh",B="https://cdn.jsdelivr.net/npm";function K(s){return`${B}/typescript@${s}/lib`}function X(s){return`@types/${s.startsWith("@")?s.slice(1).replace("/","__"):s}`}function J(s,e){let t=e[s];return t&&ie(t)?`${s}@${t}`:s}function T(s,e,t){let{name:n,subpath:r}=$(e);return`${s}/${J(n,t)}${r}`}function I(s,e){let t=new URL(s,e).href.replace(/[?#].*$/,"");return/\.d\.[mc]?ts$/.test(t)?[t]:/\.[mc]?js$/.test(t)?[t.replace(/\.([mc]?)js$/,".d.$1ts")]:/\.[mc]?ts$/.test(t)?[t]:[`${t}.d.ts`,`${t}/index.d.ts`]}var _=class{constructor(){S(this,"files",new Map);S(this,"redirects",new Map);S(this,"packages",new Map);S(this,"libs",new Map);S(this,"configs",new Map);S(this,"sourceFiles",new Map)}finalUrl(e){return(this.redirects.get(e)??(this.files.has(e)?e:void 0))||void 0}virtualPath(e){return`${C}/${e.replace(/^[a-z]+:\/\//i,"")}`}urlOf(e){if(!e.startsWith(`${C}/`))return;let t=e.slice(C.length+1);for(let n of["https://","http://"])if(this.files.has(n+t))return n+t}read(e){if(e.startsWith(`${b}/`))return this.libs.get(e.slice(b.length+1))??void 0;if(e.startsWith(`${M}/`))return this.configs.get(e)??void 0;let t=this.urlOf(e);return t?this.files.get(t):void 0}};var We="X-TypeScript-Types";async function oe(s,e,t,n){let{sources:r}=n,o=new Map,a=[],l=u=>a.push(u().catch(()=>{})),c=(u,x)=>(o.has(u)||o.set(u,x()),o.get(u)),f=u=>n.fetch(u).then(x=>x.ok?x:void 0,()=>{});function i(u,x){let m=s.preProcessFile(x,!0,!0);for(let p of m.referencedFiles)l(()=>d(I(p.fileName,u)));for(let p of m.typeReferenceDirectives)l(()=>k(p.fileName));for(let p of m.libReferenceDirectives)l(()=>y(`lib.${p.fileName.toLowerCase()}.d.ts`));for(let p of m.importedFiles){let v=p.fileName;l(()=>R(v)?g(v):d(I(v,u)))}}function h(u){let x=e.redirects.get(u);return x!==void 0?Promise.resolve(x||void 0):e.files.has(u)?Promise.resolve(u):c(`dts:${u}`,async()=>{if(e.files.size>=n.maxFiles)return;let m=await f(u);if(!m){e.redirects.set(u,"");return}let p=m.url||u;if(e.redirects.set(u,p),!e.files.has(p)){let v=await m.text();e.files.set(p,v),i(p,v)}return p})}async function d(u){for(let x of u){let m=await h(x);if(m)return m}}function g(u,x={}){let m=T(r.typesOrigin,u,x);return e.packages.has(m)?Promise.resolve(e.packages.get(m)??void 0):c(`pkg:${m}`,async()=>{let p=await f(m),v=p?.headers.get(We),L=v?await h(new URL(v,p.url||m).href):void 0;return e.packages.set(m,L??null),L})}function k(u,x={}){if(H.has(u))return Promise.resolve();let m=`types:${u}`;return e.packages.has(m)?Promise.resolve():c(m,async()=>{let p=u==="node"?void 0:await g(u,x),{name:v,subpath:L}=$(u),Se=X(v),ve=p?void 0:await h(`${r.typesOrigin}/${J(Se,x)}${L||"/index"}.d.ts`);e.packages.set(m,p??ve??null)})}function y(u){return e.libs.has(u)?Promise.resolve():c(`lib:${u}`,async()=>{let x=await f(`${r.libBaseUrl}/${u}`),m=x?await x.text():null;if(e.libs.set(u,m),m)for(let p of s.preProcessFile(m,!0,!1).libReferenceDirectives)l(()=>y(`lib.${p.fileName.toLowerCase()}.d.ts`))})}for(let u of t.specifiers)l(()=>g(u,t.dependencies));for(let u of t.typeReferences)l(()=>k(u,t.dependencies));for(let u of t.libFiles)l(()=>y(u));for(;a.length;)await Promise.all(a.splice(0))}async function ce(s,e,t,n){let r=[];function o(c){try{let f=z(c).extends;return(Array.isArray(f)?f:[f]).filter(i=>typeof i=="string")}catch{return[]}}function a(c,f){for(let i of o(f)){let h;if(R(i)){let{name:d,subpath:g}=$(i);h=`${M}/${d}${g?g.endsWith(".json")?g:`${g}.json`:"/tsconfig.json"}`}else if(c.startsWith(`${M}/`))h=w(j(c),i.endsWith(".json")?i:`${i}.json`);else continue;e.configs.has(h)||(e.configs.set(h,null),r.push(l(h)))}}async function l(c){let f=c.slice(M.length+1),{name:i,subpath:h}=$(f),d=await n.fetch(`${n.sources.npmBaseUrl}/${J(i,t)}${h}`).catch(()=>{});if(!d?.ok)return;let g=await d.text();e.configs.set(c,g),a(c,g)}for(let c of s.list())/^\/tsconfig[^/]*\.json$/.test(c)&&a(c,s.readText(c)??"");for(;r.length;)await Promise.all(r.splice(0))}var V=[".ts",".tsx",".d.ts",".mts",".cts",".js",".jsx",".mjs",".cjs",".json"];function He(s,e){return e.endsWith(".d.ts")?s.Extension.Dts:e.endsWith(".d.mts")?s.Extension.Dmts:e.endsWith(".d.cts")?s.Extension.Dcts:{".ts":s.Extension.Ts,".tsx":s.Extension.Tsx,".mts":s.Extension.Mts,".cts":s.Extension.Cts,".js":s.Extension.Js,".jsx":s.Extension.Jsx,".mjs":s.Extension.Mjs,".cjs":s.Extension.Cjs,".json":s.Extension.Json}[F(e)]??s.Extension.Ts}function ae(s,e){let t=F(e);if(s.isFile(e)&&V.includes(t))return e;for(let n of V)if(s.isFile(e+n))return e+n;if(t===".js"||t===".jsx"||t===".mjs"||t===".cjs"){let n=e.slice(0,-t.length);for(let r of[".ts",".tsx",".d.ts",".mts",".cts"])if(s.isFile(n+r))return n+r}for(let n of V)if(s.isFile(w(e,`index${n}`)))return w(e,`index${n}`)}function fe(s,e){let{fs:t,store:n}=e,r=i=>i===O?e.shim:i===q?`export {};
|
|
18
|
+
`:t.readText(i)??n.read(i);function o(i){return i?n.virtualPath(i):void 0}function a(i,h){if(R(i))return o(n.packages.get(T(e.typesOrigin,i,{})));for(let d of I(i,h)){let g=n.finalUrl(d);if(g)return o(g)}}function l(i,h){if(!i.includes("?")){if(!R(i)){let d=i.startsWith("/")?E(i):w(j(h),i);return ae(t,d)}for(let d of e.aliases){if(!(d.wildcard?i.startsWith(d.prefix):i===d.prefix))continue;let k=d.wildcard?i.slice(d.prefix.length):"";for(let y of d.targets){let u=ae(t,E(y+k));if(u)return u}}return o(n.packages.get(T(e.typesOrigin,i,e.dependencies)))}}function c(i,h){let d=n.urlOf(h),g=d?a(i,d):l(i,h);if(g)return{resolvedFileName:g,extension:He(s,g),isExternalLibraryImport:g.startsWith(`${C}/`)}}function f(i){return H.has(i)?q:o(n.packages.get(`types:${i}`))}return{getSourceFile(i,h){let d=!t.isFile(i),g=d?n.sourceFiles.get(i):void 0;if(g)return g;let k=r(i);if(k===void 0)return;let y=s.createSourceFile(i,k,h,!0);return d&&i!==O&&n.sourceFiles.set(i,y),y},getDefaultLibFileName:i=>`${b}/${s.getDefaultLibFileName(i)}`,getDefaultLibLocation:()=>b,writeFile:()=>{},getCurrentDirectory:()=>"/",getCanonicalFileName:i=>i,useCaseSensitiveFileNames:()=>!0,getNewLine:()=>`
|
|
19
|
+
`,fileExists:i=>r(i)!==void 0,readFile:r,directoryExists:i=>t.isDirectory(i)||i.startsWith(C)||i===b||i===W,getDirectories:()=>[],resolveModuleNameLiterals:(i,h)=>i.map(d=>({resolvedModule:c(d.text,h)})),resolveTypeReferenceDirectiveReferences:i=>i.map(h=>{let d=f(typeof h=="string"?h:h.fileName);return{resolvedTypeReferenceDirective:d?{primary:!0,resolvedFileName:d,isExternalLibraryImport:!0}:void 0}})}}var Be={0:"warning",1:"error",2:"suggestion",3:"message"};function Q(s,e){let t=s.flattenDiagnosticMessageText(e.messageText,`
|
|
20
|
+
`),n=Be[e.category]??"error";if(!e.file||e.start===void 0)return{line:1,column:1,message:t,code:e.code,category:n};let{line:r,character:o}=e.file.getLineAndCharacterOfPosition(e.start);return{file:e.file.fileName.replace(/^\//,""),line:r+1,column:o+1,message:t,code:e.code,category:n}}function le(s){let e=new Set;return s.filter(t=>{let n=`${t.file??""}:${t.line}:${t.column}:${t.code}:${t.message}`;return e.has(n)?!1:(e.add(n),!0)}).sort((t,n)=>(t.file??"").localeCompare(n.file??"")||t.line-n.line||t.column-n.column)}var ue=/(^|\/)(vite|vitest|svelte|tailwind|postcss|eslint|prettier|playwright)\.config\.[cm]?[jt]s$/,Je=[".ts",".tsx",".mts",".cts"],Ye=18003;function ze(s,e){return{target:s.ScriptTarget.ES2020,lib:["lib.es2020.d.ts","lib.dom.d.ts","lib.dom.iterable.d.ts"],module:s.ModuleKind.ESNext,moduleResolution:s.ModuleResolutionKind.Bundler,jsx:s.JsxEmit.ReactJSX,...e?{jsxImportSource:e}:{},strict:!0,noFallthroughCasesInSwitch:!0,isolatedModules:!0,resolveJsonModule:!0,allowImportingTsExtensions:!0,esModuleInterop:!0,skipLibCheck:!0,noEmit:!0}}function qe(s){return{...s,noEmit:!0,skipLibCheck:!0,composite:!1,incremental:!1,declaration:!1,declarationMap:!1,emitDeclarationOnly:!1,tsBuildInfoFile:void 0}}function Ge(s){let e="";for(let t=0;t<s.length;t++){let n=s[t];n==="*"&&s[t+1]==="*"&&s[t+2]==="/"?(e+="(?:[^/]+/)*",t+=2):n==="*"?e+="[^/]*":n==="?"?e+="[^/]":e+=n.replace(/[.+^${}()|[\]\\]/g,"\\$&")}return new RegExp(`^${e}$`)}function de(s,e){let t=w(s,e),n=t.slice(t.lastIndexOf("/")+1);return!/[*?]/.test(n)&&!F(n)&&(t=`${t==="/"?"":t}/**/*`),Ge(t)}function Ke(s,e){return{useCaseSensitiveFileNames:!0,fileExists:t=>s.isFile(t)||e.read(t)!==void 0,readFile:t=>s.readText(t)??e.read(t),readDirectory(t,n,r,o){let a=(o??["**/*"]).map(c=>de(t,c)),l=(r??[]).map(c=>de(t,c));return s.list().filter(c=>n.some(f=>c.endsWith(f))&&!c.includes("/node_modules/")&&a.some(f=>f.test(c))&&!l.some(f=>f.test(c)))}}}function Xe(s,e,t){let n=e.readFile(t)??"",r=s.parseConfigFileTextToJson(t,n);return r.error?{errors:[r.error]}:s.parseJsonConfigFileContent(r.config,e,j(t),void 0,t)}function Ve(s,e,t){let n=s.parseConfigFileTextToJson(t,e.readFile(t)??"").config,r=n?.references??[],o=(n?.files?.length??0)>0||n?.include!==void 0;return!r.length||o?[]:r.map(a=>typeof a.path=="string"?w(j(t),a.path):void 0).filter(a=>!!a).map(a=>a.endsWith(".json")?a:w(a,"tsconfig.json")).filter(a=>e.fileExists(a))}function pe(s,e,t,n){let r=Ke(e,t),o=["/tsconfig.json","/jsconfig.json"].find(c=>e.isFile(c));if(!o){let c=e.list().filter(f=>Je.some(i=>f.endsWith(i))&&!f.includes("/node_modules/")&&!ue.test(f));return c.length?[{options:ze(s,n),rootNames:c,errors:[]}]:[]}let a=Ve(s,r,o),l=[];for(let c of a.length?a:[o]){let f=Xe(s,r,c),i=f.errors.filter(d=>d.code!==Ye);if(!("options"in f)){l.push({configPath:c,options:{},rootNames:[],errors:i});continue}let h=f.fileNames.filter(d=>!ue.test(d));!h.length&&!i.length||l.push({configPath:c,options:qe(f.options),rootNames:h,errors:i})}return l}function Qe(s){if(s instanceof P)return s;let e=new P;return e.writeTree(s),e}function Ze(s,e,t,n){let r={specifiers:new Set,typeReferences:new Set,libFiles:new Set};for(let o of t){let{options:a}=o;for(let l of o.rootNames){let c=s.preProcessFile(e.readText(l)??"",!0,!0);for(let f of c.importedFiles)R(f.fileName)&&!f.fileName.includes("?")&&!n(f.fileName)&&r.specifiers.add(f.fileName);for(let f of c.typeReferenceDirectives)r.typeReferences.add(f.fileName);for(let f of c.libReferenceDirectives)r.libFiles.add(`lib.${f.fileName.toLowerCase()}.d.ts`)}for(let l of a.types??[])r.typeReferences.add(l);if(a.jsx===s.JsxEmit.ReactJSX||a.jsx===s.JsxEmit.ReactJSXDev){let l=a.jsx===s.JsxEmit.ReactJSXDev?"jsx-dev-runtime":"jsx-runtime";r.specifiers.add(`${a.jsxImportSource??"react"}/${l}`)}if(!a.noLib)for(let l of a.lib??[s.getDefaultLibFileName(a)])r.libFiles.add(l)}return r}async function Z(s,e,t){let n=Qe(e),r=t.store??new _,o={typesOrigin:G,npmBaseUrl:B,libBaseUrl:K(s.version),...t.sources},a=ee(n),{dependencies:l}=a;await ce(n,r,l,{fetch:t.fetch,sources:o});let c=pe(s,n,r,a.jsx.importSource==="react"?void 0:a.jsx.importSource),f=Ze(s,n,c,y=>ne(n,a.aliases,y)!==void 0);await oe(s,r,{specifiers:[...f.specifiers],typeReferences:[...f.typeReferences],libFiles:[...f.libFiles],dependencies:l},{fetch:t.fetch,sources:o,maxFiles:t.maxTypeFiles??2e3});let i=[...new Set([...f.specifiers].filter(y=>!r.packages.get(T(o.typesOrigin,y,l))).map(y=>$(y).name))].sort(),h=n.list().filter(y=>y.endsWith(".d.ts")).map(y=>n.readText(y)??""),d=re({existing:[...h,...r.files.values()],untyped:i}),g=[],k=new Set;for(let y of c){for(let p of y.errors)g.push(Q(s,p));if(!y.rootNames.length)continue;let u=fe(s,{fs:n,store:r,typesOrigin:o.typesOrigin,dependencies:l,aliases:a.aliases,shim:d}),x=s.createProgram({rootNames:[...y.rootNames,O],options:y.options,host:u}),m=[...x.getOptionsDiagnostics(),...x.getGlobalDiagnostics()];for(let p of x.getSourceFiles())n.isFile(p.fileName)&&(k.add(p.fileName.slice(1)),m.push(...x.getSyntacticDiagnostics(p),...x.getSemanticDiagnostics(p)));for(let p of m)p.file&&!n.isFile(p.file.fileName)||g.push(Q(s,p))}return{diagnostics:le(g),untypedPackages:i,files:[...k].sort()}}var et="bfwc-types-v1",tt=/@\d+\.\d+\.\d+(?:[-+][\w.]+)?\//,he="x-bfwc-final-url",Y="x-typescript-types";function me(s,e,t){return{ok:!0,url:s,headers:{get:n=>n.toLowerCase()===Y?t:null},text:async()=>e}}function ge(s=fetch){let e,t=()=>e??(e=typeof caches>"u"?Promise.resolve(void 0):caches.open(et).catch(()=>{}));return async n=>{let o=tt.test(n)?await t():void 0,a=await o?.match(n).catch(()=>{});if(a)return me(a.headers.get(he)??n,await a.text(),a.headers.get(Y));let l=await s(n);if(!l.ok||!o)return l;let c=await l.text(),f=l.headers.get(Y),i={[he]:l.url||n};return f&&(i[Y]=f),await o.put(n,new Response(c,{headers:i})).catch(()=>{}),me(l.url||n,c,f)}}var xe="bfwc:check",ye="bfwc:check-result",Ee="bfwc:check-error";var D=globalThis,nt=new _,st=ge(),we;function rt(s){if((!D.ts||we!==s)&&(D.importScripts(s),we=s),!D.ts)throw new Error(`${s} did not define the TypeScript compiler.`);return D.ts}D.addEventListener("message",s=>{let e=s.data;if(e?.type!==xe)return;let t=Date.now();(async()=>{try{let n=rt(e.typescriptUrl),r=await Z(n,e.files,{fetch:st,store:nt,sources:e.sources});D.postMessage({type:ye,id:e.id,result:r,durationMs:Date.now()-t})}catch(n){D.postMessage({type:Ee,id:e.id,message:n instanceof Error?n.message:String(n)})}})()});})();
|
package/dist/host.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { DevServer, VirtualFileSystem, type BuildResult, type Bundler, type ComponentCompilers, type
|
|
1
|
+
import { DevServer, VirtualFileSystem, type BuildResult, type Bundler, type ComponentCompilers, type FileTree, type PackageCdnFactory, type PortChange, type ProcessOptions, type ProjectProfile, type RuntimeProcess, type ServerAddress, type Transformer, type ZipExportOptions } from '@seanhogg/builderforce-webcontainers-core';
|
|
2
2
|
import { type WireResponse } from './protocol.js';
|
|
3
|
-
import { type NodeRuntimeOptions } from './node/index.js';
|
|
3
|
+
import { type NodeRuntimeOptions, type ProcessInfo } from './node/index.js';
|
|
4
|
+
import { type PreviewConsoleMessage, type PreviewError } from './previewMessages.js';
|
|
4
5
|
/** Serve previews on THIS page's origin. Only for code the page's own user trusts. */
|
|
5
6
|
export interface SameOriginOptions {
|
|
6
7
|
/** Where the host serves this package's `dist/sw.js` (e.g. `/__bfwc/sw.js`). */
|
|
@@ -20,8 +21,8 @@ export interface RelayOptions {
|
|
|
20
21
|
serviceWorkerUrl?: never;
|
|
21
22
|
scope?: never;
|
|
22
23
|
}
|
|
23
|
-
export type
|
|
24
|
-
export interface
|
|
24
|
+
export type PreviewRuntimeOptions = (SameOriginOptions | RelayOptions) & CommonRuntimeOptions;
|
|
25
|
+
export interface CommonRuntimeOptions {
|
|
25
26
|
/** Compiler. Defaults to esbuild-wasm. */
|
|
26
27
|
transformer?: Transformer;
|
|
27
28
|
/** Package CDN factory, for previews (`dev: true`) and builds (`dev: false`). Defaults to esm.sh. */
|
|
@@ -36,14 +37,11 @@ export interface CommonBootOptions {
|
|
|
36
37
|
attribution?: boolean;
|
|
37
38
|
/** Reload open previews when files change. Default true. */
|
|
38
39
|
liveReload?: boolean;
|
|
39
|
-
/**
|
|
40
|
+
/** Your scripts (JavaScript source), run in every preview page before the app — analytics, test hooks, a mock `fetch`. */
|
|
41
|
+
previewScripts?: string[];
|
|
42
|
+
/** The Node runtime behind `run` (process workers, npm registry). */
|
|
40
43
|
node?: NodeRuntimeOptions;
|
|
41
44
|
}
|
|
42
|
-
export interface PreviewError {
|
|
43
|
-
message: string;
|
|
44
|
-
stack?: string;
|
|
45
|
-
href: string;
|
|
46
|
-
}
|
|
47
45
|
export interface RuntimeBuildOptions {
|
|
48
46
|
/** Where the site will be served from. Default `./` (works from any directory). */
|
|
49
47
|
base?: string;
|
|
@@ -56,7 +54,14 @@ export interface PreviewRuntime {
|
|
|
56
54
|
readonly url: string;
|
|
57
55
|
readonly fs: VirtualFileSystem;
|
|
58
56
|
readonly server: DevServer;
|
|
59
|
-
|
|
57
|
+
/** Write files into the runtime (nested or flat; see `FileTree`), under `at` (default `/`). Open previews reload. */
|
|
58
|
+
writeTree(files: FileTree, at?: string): void;
|
|
59
|
+
/** The project as a zip — "Download project" with `exclude: ['node_modules']`, or a full snapshot to restore later. */
|
|
60
|
+
exportZip(options?: ZipExportOptions): Uint8Array;
|
|
61
|
+
/** Write a zip's contents (an `exportZip` snapshot, a downloaded template) into the runtime, under `at`. */
|
|
62
|
+
importZip(zip: Uint8Array, at?: string): void;
|
|
63
|
+
/** Reload every frame showing this preview now (live reload does this on edits by itself). */
|
|
64
|
+
reload(): void;
|
|
60
65
|
/** Whether this runtime can serve the mounted project, and why not. */
|
|
61
66
|
profile(): ProjectProfile;
|
|
62
67
|
/**
|
|
@@ -67,18 +72,23 @@ export interface PreviewRuntime {
|
|
|
67
72
|
build(options?: RuntimeBuildOptions): Promise<BuildResult>;
|
|
68
73
|
/** Uncaught errors and rejections raised inside the preview. */
|
|
69
74
|
onError(listener: (error: PreviewError) => void): () => void;
|
|
75
|
+
/** The preview's `console.log/info/warn/error/debug` output (first 1,000 messages per page load). */
|
|
76
|
+
onPreviewConsole(listener: (message: PreviewConsoleMessage) => void): () => void;
|
|
77
|
+
/** Replace the scripts run in preview pages; open previews reload to pick them up. */
|
|
78
|
+
setPreviewScripts(scripts: string[]): void;
|
|
70
79
|
/**
|
|
71
|
-
* Run a command — `node server.js`, `npm install`, `npm run dev`, `
|
|
72
|
-
* terminal — in its own Web Worker.
|
|
73
|
-
*
|
|
74
|
-
* `{ terminal: { cols, rows } }` when wiring it to xterm.js.
|
|
80
|
+
* Run a command — `node server.js`, `npm install`, `npm run dev`, `bfsh` for a
|
|
81
|
+
* terminal — in its own Web Worker. Pass `{ terminal: { cols, rows } }` when
|
|
82
|
+
* wiring it to xterm.js.
|
|
75
83
|
*/
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
|
|
84
|
+
run(command: string, args?: string[], options?: ProcessOptions): RuntimeProcess;
|
|
85
|
+
run(command: string, options?: ProcessOptions): RuntimeProcess;
|
|
86
|
+
/** A process started listening (or a dev script handed off to the preview); `url` loads it in an iframe. */
|
|
87
|
+
onServerListening(listener: (server: ServerAddress) => void): () => void;
|
|
88
|
+
/** A virtual server opened or closed its port. */
|
|
89
|
+
onPortChange(listener: (change: PortChange) => void): () => void;
|
|
90
|
+
/** Processes still running, with the ports their servers listen on. */
|
|
91
|
+
listProcesses(): ProcessInfo[];
|
|
82
92
|
dispose(): void;
|
|
83
93
|
}
|
|
84
94
|
export declare function toWire(reqId: number, served: Awaited<ReturnType<DevServer['handle']>>): {
|
|
@@ -93,5 +103,5 @@ export declare function toWire(reqId: number, served: Awaited<ReturnType<DevServ
|
|
|
93
103
|
* nothing else: no cross-origin isolation headers, no SharedArrayBuffer. Pass
|
|
94
104
|
* `relayUrl` to serve the preview from its own origin (see `RelayOptions`).
|
|
95
105
|
*/
|
|
96
|
-
export declare function
|
|
106
|
+
export declare function startPreviewRuntime(options: PreviewRuntimeOptions): Promise<PreviewRuntime>;
|
|
97
107
|
//# sourceMappingURL=host.d.ts.map
|
package/dist/host.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,iBAAiB,EAIjB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAwE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAuC,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAmB,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKtG,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,iBAAiB,GAAG,YAAY,CAAC,GAAG,oBAAoB,CAAC;AAE9F,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qGAAqG;IACrG,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,iGAAiG;IACjG,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,wFAAwF;IACxF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sGAAsG;IACtG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4FAA4F;IAC5F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0HAA0H;IAC1H,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,qEAAqE;IACrE,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B;AAKD,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,qHAAqH;IACrH,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,uHAAuH;IACvH,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAAC;IAClD,4GAA4G;IAC5G,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,8FAA8F;IAC9F,MAAM,IAAI,IAAI,CAAC;IACf,uEAAuE;IACvE,OAAO,IAAI,cAAc,CAAC;IAC1B;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,gEAAgE;IAChE,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC7D,qGAAqG;IACrG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACjF,sFAAsF;IACtF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3C;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IAChF,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IAC/D,4GAA4G;IAC5G,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACzE,kDAAkD;IAClD,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACjE,uEAAuE;IACvE,aAAa,IAAI,WAAW,EAAE,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAM3I;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuFjG"}
|
package/dist/host.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { DevServer,
|
|
1
|
+
import { DevServer, VirtualFileSystem, buildProject, exportZip, importZip, } from '@seanhogg/builderforce-webcontainers-core';
|
|
2
2
|
import { PREVIEW_ID, isPortPath, isWireRequest, previewBase } from './protocol.js';
|
|
3
3
|
import { createProcessHost, servePortRequest } from './node/index.js';
|
|
4
|
+
import { listenToPreview } from './previewMessages.js';
|
|
4
5
|
import { relayTransport, sameOriginTransport } from './transport.js';
|
|
5
6
|
import { createEsbuildWasmBundler, createEsbuildWasmTransformer } from './esbuildWasm.js';
|
|
6
7
|
import { createCdnComponentCompilers } from './componentCompilers.js';
|
|
@@ -24,7 +25,7 @@ export function toWire(reqId, served) {
|
|
|
24
25
|
* nothing else: no cross-origin isolation headers, no SharedArrayBuffer. Pass
|
|
25
26
|
* `relayUrl` to serve the preview from its own origin (see `RelayOptions`).
|
|
26
27
|
*/
|
|
27
|
-
export async function
|
|
28
|
+
export async function startPreviewRuntime(options) {
|
|
28
29
|
const id = options.id ?? randomId();
|
|
29
30
|
if (!PREVIEW_ID.test(id))
|
|
30
31
|
throw new Error(`Preview id "${id}" may only contain letters, digits, "_" and "-".`);
|
|
@@ -37,7 +38,7 @@ export async function bootPreviewRuntime(options) {
|
|
|
37
38
|
let server;
|
|
38
39
|
try {
|
|
39
40
|
const transformer = options.transformer ?? (await createEsbuildWasmTransformer());
|
|
40
|
-
server = new DevServer({ fs, transformer, base, cdn: options.cdn, components, attribution: options.attribution });
|
|
41
|
+
server = new DevServer({ fs, transformer, base, cdn: options.cdn, components, attribution: options.attribution, previewScripts: options.previewScripts });
|
|
41
42
|
}
|
|
42
43
|
catch (error) {
|
|
43
44
|
transport.dispose();
|
|
@@ -71,39 +72,34 @@ export async function bootPreviewRuntime(options) {
|
|
|
71
72
|
clearTimeout(reloadTimer);
|
|
72
73
|
reloadTimer = setTimeout(() => transport.reload(base), RELOAD_DEBOUNCE_MS);
|
|
73
74
|
});
|
|
74
|
-
const
|
|
75
|
-
const onWindowMessage = (event) => {
|
|
76
|
-
const data = event.data;
|
|
77
|
-
if (data?.type !== ERROR_MESSAGE_TYPE || typeof data.href !== 'string')
|
|
78
|
-
return;
|
|
79
|
-
if (event.origin !== transport.origin || !new URL(data.href).pathname.startsWith(base))
|
|
80
|
-
return; // another runtime's preview
|
|
81
|
-
const error = { message: String(data.message ?? ''), stack: data.stack, href: data.href };
|
|
82
|
-
for (const listener of errorListeners)
|
|
83
|
-
listener(error);
|
|
84
|
-
};
|
|
85
|
-
window.addEventListener('message', onWindowMessage);
|
|
75
|
+
const previewMessages = listenToPreview(window, transport.origin, base);
|
|
86
76
|
return {
|
|
87
77
|
id,
|
|
88
78
|
url: previewUrl,
|
|
89
79
|
fs,
|
|
90
80
|
server,
|
|
91
|
-
|
|
81
|
+
writeTree: (files, at) => fs.writeTree(files, at),
|
|
82
|
+
exportZip: (zipOptions) => exportZip(fs, zipOptions),
|
|
83
|
+
importZip: (zip, at) => importZip(fs, zip, at),
|
|
84
|
+
reload: () => transport.reload(base),
|
|
92
85
|
profile: () => server.profile(),
|
|
93
86
|
async build(buildOptions = {}) {
|
|
94
87
|
const bundler = options.bundler ?? (await createEsbuildWasmBundler());
|
|
95
88
|
return buildProject({ files: fs, bundler, cdn: options.cdn, components, base: buildOptions.base, minify: buildOptions.minify });
|
|
96
89
|
},
|
|
97
|
-
onError(listener)
|
|
98
|
-
|
|
99
|
-
|
|
90
|
+
onError: (listener) => previewMessages.onError(listener),
|
|
91
|
+
onPreviewConsole: (listener) => previewMessages.onConsole(listener),
|
|
92
|
+
setPreviewScripts(scripts) {
|
|
93
|
+
server.setPreviewScripts(scripts);
|
|
94
|
+
transport.reload(base);
|
|
100
95
|
},
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
run: (command, args, runOptions) => processes.run(command, args, runOptions),
|
|
97
|
+
onServerListening: (listener) => processes.servers.onListening(listener),
|
|
98
|
+
onPortChange: (listener) => processes.servers.onPortChange(listener),
|
|
99
|
+
listProcesses: () => processes.list(),
|
|
103
100
|
dispose() {
|
|
104
101
|
processes.dispose();
|
|
105
|
-
|
|
106
|
-
errorListeners.clear();
|
|
102
|
+
previewMessages.dispose();
|
|
107
103
|
clearTimeout(reloadTimer);
|
|
108
104
|
stopWatching?.();
|
|
109
105
|
stopReattach();
|
package/dist/host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export type {
|
|
1
|
+
export { startPreviewRuntime } from './host.js';
|
|
2
|
+
export type { PreviewRuntimeOptions, SameOriginOptions, RelayOptions, CommonRuntimeOptions, PreviewRuntime, RuntimeBuildOptions, } from './host.js';
|
|
3
|
+
export { listenToPreview } from './previewMessages.js';
|
|
4
|
+
export type { PreviewError, PreviewConsoleMessage, ConsoleLevel, PreviewMessages } from './previewMessages.js';
|
|
3
5
|
export type { PreviewTransport } from './transport.js';
|
|
4
6
|
export { createEsbuildWasmTransformer, createEsbuildWasmBundler, loadEsbuildWasm } from './esbuildWasm.js';
|
|
5
7
|
export type { EsbuildWasmOptions } from './esbuildWasm.js';
|
|
@@ -7,7 +9,7 @@ export { createCdnComponentCompilers, defaultVueCompilerUrl, defaultSvelteCompil
|
|
|
7
9
|
export type { CdnComponentCompilerOptions } from './componentCompilers.js';
|
|
8
10
|
export { createCacheStoragePackageCache } from './packageCache.js';
|
|
9
11
|
export { ProcessHost, createWorkerProcess } from './node/index.js';
|
|
10
|
-
export type { NodeRuntimeOptions, ProcessHostOptions, WorkerLike } from './node/index.js';
|
|
12
|
+
export type { NodeRuntimeOptions, ProcessHostOptions, ProcessInfo, WorkerLike } from './node/index.js';
|
|
11
13
|
export { createSwRouter } from './swRouter.js';
|
|
12
14
|
export type { SwRouter, SwRouterOptions, PortLike, PreviewTarget, RoutedResponse, RequestDetails } from './swRouter.js';
|
|
13
15
|
export { previewBase, previewPrefix, PREVIEW_SEGMENT, PREVIEW_ID, PORT_SEGMENT, isPortPath } from './protocol.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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/G,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3G,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACvH,YAAY,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClH,cAAc,2CAA2C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { startPreviewRuntime } from './host.js';
|
|
2
|
+
export { listenToPreview } from './previewMessages.js';
|
|
2
3
|
export { createEsbuildWasmTransformer, createEsbuildWasmBundler, loadEsbuildWasm } from './esbuildWasm.js';
|
|
3
4
|
export { createCdnComponentCompilers, defaultVueCompilerUrl, defaultSvelteCompilerUrl } from './componentCompilers.js';
|
|
4
5
|
export { createCacheStoragePackageCache } from './packageCache.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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAShD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEvH,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClH,cAAc,2CAA2C,CAAC"}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { type VirtualFileSystem } from '@seanhogg/builderforce-webcontainers-cor
|
|
|
7
7
|
import type { WireRequest, WireResponse } from '../protocol.js';
|
|
8
8
|
import { ProcessHost, type WorkerLike } from './processHost.js';
|
|
9
9
|
export { ProcessHost } from './processHost.js';
|
|
10
|
-
export type { ProcessHostOptions, WorkerLike } from './processHost.js';
|
|
10
|
+
export type { ProcessHostOptions, ProcessInfo, WorkerLike } from './processHost.js';
|
|
11
11
|
export { createWorkerProcess } from './workerProcess.js';
|
|
12
12
|
export interface NodeRuntimeOptions {
|
|
13
13
|
/**
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACzB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,UAAU,CAAC;IAChC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,WAAW,CAgB9J;AAID,8DAA8D;AAC9D,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAe5I"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* (the shell running `node`, `child_process`) are started here too, so every
|
|
7
7
|
* process — however deep — can be killed by terminating its worker.
|
|
8
8
|
*/
|
|
9
|
-
import { PortRegistry, type ChildHandle, type HttpRequestData, type HttpResponseData, type
|
|
9
|
+
import { PortRegistry, ServerEvents, type ChildHandle, type HttpRequestData, type HttpResponseData, type ProcessOptions, type RuntimeProcess, type VirtualFileSystem } from '@seanhogg/builderforce-webcontainers-core';
|
|
10
10
|
/** The part of `Worker` the host uses — a real Worker, or an in-thread fake in tests. */
|
|
11
11
|
export interface WorkerLike {
|
|
12
12
|
postMessage(message: unknown): void;
|
|
@@ -33,12 +33,23 @@ export interface ProcessHostOptions {
|
|
|
33
33
|
/** How long a killed process may take to exit before its worker is terminated. Default 2000ms. */
|
|
34
34
|
killGraceMs?: number;
|
|
35
35
|
}
|
|
36
|
+
/** A running process, as `listProcesses()` reports it. */
|
|
37
|
+
export interface ProcessInfo {
|
|
38
|
+
pid: number;
|
|
39
|
+
command: string;
|
|
40
|
+
args: string[];
|
|
41
|
+
cwd: string;
|
|
42
|
+
/** Epoch ms. */
|
|
43
|
+
startedAt: number;
|
|
44
|
+
/** Ports its servers listen on. */
|
|
45
|
+
ports: number[];
|
|
46
|
+
}
|
|
36
47
|
export declare class ProcessHost {
|
|
37
48
|
private readonly options;
|
|
38
49
|
readonly ports: PortRegistry;
|
|
50
|
+
/** Servers listening, ports opening and closing. */
|
|
51
|
+
readonly servers: ServerEvents;
|
|
39
52
|
private readonly procs;
|
|
40
|
-
private readonly serverReady;
|
|
41
|
-
private readonly portListeners;
|
|
42
53
|
private applyingFrom?;
|
|
43
54
|
private flushScheduled;
|
|
44
55
|
private nextReq;
|
|
@@ -46,13 +57,14 @@ export declare class ProcessHost {
|
|
|
46
57
|
private readonly stopPorts;
|
|
47
58
|
constructor(options: ProcessHostOptions);
|
|
48
59
|
serverUrl(port: number): string;
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
|
|
60
|
+
/** Start a command in its own Web Worker, as a stream-based {@link RuntimeProcess}. */
|
|
61
|
+
run(command: string, args?: string[], options?: ProcessOptions): RuntimeProcess;
|
|
62
|
+
run(command: string, options?: ProcessOptions): RuntimeProcess;
|
|
63
|
+
spawnChild(command: string, args?: string[], options?: ProcessOptions): ChildHandle;
|
|
64
|
+
/** Every process still running, oldest first — children started by a shell included. */
|
|
65
|
+
list(): ProcessInfo[];
|
|
52
66
|
/** Dispatch an HTTP request to the server on `port` (the preview service worker's `/__port/<port>/` path). */
|
|
53
67
|
request(port: number, request: HttpRequestData): Promise<HttpResponseData | undefined>;
|
|
54
|
-
on(event: 'server-ready', listener: (port: number, url: string) => void): () => void;
|
|
55
|
-
on(event: 'port', listener: (port: number, type: 'open' | 'close', url: string) => void): () => void;
|
|
56
68
|
dispose(): void;
|
|
57
69
|
private kill;
|
|
58
70
|
private cleanup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processHost.d.ts","sourceRoot":"","sources":["../../src/node/processHost.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAEL,YAAY,
|
|
1
|
+
{"version":3,"file":"processHost.d.ts","sourceRoot":"","sources":["../../src/node/processHost.ts"],"names":[],"mappings":"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"}
|