@lomray/vite-ssr-boost 8.4.2 → 8.4.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lomray/vite-ssr-boost",
3
- "version": "8.4.2",
3
+ "version": "8.4.3",
4
4
  "description": "SSR and streaming for existing Vite + React Router apps in Data mode, without Framework mode",
5
5
  "type": "module",
6
6
  "exports": {
@@ -202,7 +202,8 @@
202
202
  },
203
203
  "overrides": {
204
204
  "miniflare": {
205
- "undici": "^7.29.0"
205
+ "undici": "^7.29.0",
206
+ "sharp": "^0.35.4"
206
207
  },
207
208
  "vitepress": {
208
209
  "vite": "^6.4.3",
package/services/build.js CHANGED
@@ -1,2 +1,2 @@
1
- import i from"node:child_process";import s from"node:fs";import e from"node:path";import t from"chalk";import{resolveConfig as o}from"vite";import r from"../cli/diagnostic-codes.js";import n from"../cli/helpers/vite-reset-cache.js";import l from"../helpers/create-focus-only.js";import{createDevMarker as c}from"../helpers/dev-marker.js";import d from"../helpers/plugin-config.js";import a from"../helpers/process-stop.js";import u from"./server-config.js";import h from"./ssr-manifest.js";class p{isProd;nodeEnv;buildDir;viteConfig;pluginConfig;params={mode:"",clientOptions:"",serverOptions:"",focusOnly:"app",isWatch:!1,isUnlockRobots:!1,isEject:!1,isServerless:!1,isNoWarnings:!1};abortController=null;runningBuild=[];hasPreviewModeExitListener=!1;diagnosticCodes=new Set;constructor(i){this.params={...this.params,...i}}async makeConfig(){const{mode:i}=this.params;this.viteConfig=await o({},"build",i,"production"),this.pluginConfig=d(this.viteConfig),this.buildDir=e.resolve(this.viteConfig.root,this.viteConfig.build.outDir),this.nodeEnv=process.env.NODE_ENV||"production",this.isProd="production"===this.nodeEnv}clearBuildFolder(){s.existsSync(this.buildDir)&&s.rmSync(this.buildDir,{recursive:!0})}getIsProd(){return this.isProd}getNodeEnv(){return this.nodeEnv}getRunningBuildNames(){return this.runningBuild.map(({name:i})=>i)}promisifyProcess(i,s=!1){const e=new Promise((e,t)=>{i.on("exit",i=>{e(i)}),i.on("close",i=>{e(i)}),i.on("error",i=>{t(i)}),s&&i.stderr?.on("data",i=>{const s=Buffer.from(i).toString();(s.includes("warning")||s.includes("WARNING"))&&e(1)})});i.stdout?.pipe(process.stdout),i.stderr?.pipe(process.stderr);for(const s of[i.stdout,i.stderr]){let i="";s?.on("data",s=>{const e=i+Buffer.from(s).toString();r.filter(i=>e.includes(i)).forEach(i=>this.diagnosticCodes.add(i)),i=e.slice(-80)})}return{promise:e,command:i}}buildManifest(){console.info(t.blue("Building routes manifest file"));const i=u.init({isProd:this.isProd,mode:this.params.mode},{root:this.viteConfig.root,clientFile:this.pluginConfig.clientFile});h.get(i,{buildDir:this.viteConfig.build.outDir,viteAliases:this.viteConfig.resolve.alias,basename:this.viteConfig.base,renderBuiltUrl:this.viteConfig?.experimental?.renderBuiltUrl}).buildRoutesManifest()}writeProductionConfig(){const{base:i,mode:t}=this.viteConfig,{indexFile:o="index.html",serverFile:r="server.ts"}=this.pluginConfig,n={version:1,root:"..",base:i??"/",mode:t??this.params.mode,publicDir:"client",indexFile:e.posix.join("client",o),serverFile:`server/${e.parse(r).name}.js`},l=e.join(this.buildDir,"server");s.mkdirSync(l,{recursive:!0}),s.writeFileSync(e.join(l,"ssr-boost.json"),`${JSON.stringify(n,null,2)}\n`)}unlockRobots(){const i=`${this.buildDir}/client/robots.txt`;if(!s.existsSync(i))return void console.warn(`Failed to unlock robots.txt, file not exist: ${i}`);const e=s.readFileSync(i,{encoding:"utf-8"}).replace(/Disallow: \/$/m,"Allow: /");s.writeFileSync(i,e,{encoding:"utf-8"}),console.info(t.blue("\nrobots.txt unlocked."))}eject(){const i=`${this.buildDir}/server/start.js`;s.writeFileSync(i,"import runProd from '../cli/run-prod.js';\n\nconst VERSION = process.env.VERSION || \"1.0.0\";\nconst PORT = process.env.PORT || 3000;\nconst IS_HOST = process.env.IS_HOST || \"0\";\nconst ONLY_CLIENT = process.env.ONLY_CLIENT || \"0\";\n\nawait runProd({\n version: VERSION,\n isHost: IS_HOST === '1',\n isPrintInfo: true,\n port: PORT,\n onlyClient: ONLY_CLIENT === '1',\n });\n",{encoding:"utf-8"})}createServerless(){const i=`${this.buildDir}/server/serverless.js`;s.writeFileSync(i,"import runServerless from '../cli/run-serverless.js';\n\nexport default await runServerless({ version: process.env.VERSION || \"1.0.0\" });\n",{encoding:"utf-8"})}async spawnBuild(s,e,t={}){const{mode:o,isNoWarnings:r}=this.params,{focusOnly:n=this.params.focusOnly,shouldWait:c=!1,env:d={}}=t,a=o&&!e.includes("--mode")?`--mode ${o}`:"",u=this.promisifyProcess(i.spawn(`vite build ${e} ${a} --emptyOutDir`,{signal:this.abortController.signal,stdio:[process.stdin,"pipe","pipe"],shell:!0,env:{...process.env,...d,FORCE_COLOR:"2",SSR_BOOST_IS_SSR:l(n).isOnlyClient()?"0":"1",SSR_BOOST_ACTION:global.viteBoostAction}}),r);this.runningBuild.push({name:s,buildProcess:u}),c&&await this.waitLastBuild()}async waitLastBuild(){const i=this.runningBuild.at(-1);if(!i)return;const s=await i.buildProcess.promise;a(s,!0)}runPreviewMode(){this.hasPreviewModeExitListener||(process.on("exit",()=>{this.abortController.abort()}),this.hasPreviewModeExitListener=!0);const{onFinish:i}=this.params;let s=this.runningBuild.length;const e=t=>{Buffer.from(t).toString().includes("built in")&&(s-=1,s||(this.runningBuild.forEach(({buildProcess:i})=>{i.command.stdout?.removeListener("data",e)}),c(this.isProd,this.viteConfig),this.writeProductionConfig(),i?.()))};this.runningBuild.forEach(({buildProcess:i})=>{i.command.stdout?.on("data",e)})}async build(){await this.makeConfig(),await n(),this.clearBuildFolder(),this.diagnosticCodes.clear();const{clientOptions:i,serverOptions:t,onFinish:o,isWatch:r,focusOnly:d,isEject:a,isServerless:u,isUnlockRobots:h}=this.params,{outDir:p}=this.viteConfig.build,f=l(d);this.abortController=new AbortController,this.runningBuild=[],f.isClient()&&await this.spawnBuild("client",`${i} --outDir ${p}/client`,{shouldWait:!r}),f.isServer()&&(await this.spawnBuild("server",`${t} --outDir ${p}/server --ssr ${this.pluginConfig.serverFile}`,{shouldWait:!r}),r||(this.buildManifest(),a&&this.eject(),u&&this.createServerless()));const{entrypoint:m}=this.pluginConfig;if(m?.length&&f.isEntrypoint())for(const{name:i,type:s,serverFile:e,buildOptions:t=""}of m){const o=e&&"ssr"===s?`--ssr ${e}`:"";await this.spawnBuild(i,`${t} ${o} --outDir ${p}/${i}`,{shouldWait:!r,focusOnly:"ssr"===s?"server":"client",env:{SSR_BOOST_CUSTOM_ENTRYPOINT_BUILD_NAME:i}})}r?this.runPreviewMode():(h&&this.unlockRobots(),c(this.isProd,this.viteConfig),this.writeProductionConfig(),s.mkdirSync(this.buildDir,{recursive:!0}),s.writeFileSync(e.join(this.buildDir,"ssr-boost-diagnostics.json"),JSON.stringify({codes:[...this.diagnosticCodes].sort((i,s)=>i.localeCompare(s))},null,2)),o?.())}}export{p as default};
1
+ import i from"node:child_process";import s from"node:fs";import e from"node:path";import t from"chalk";import{resolveConfig as o}from"vite";import r from"../cli/diagnostic-codes.js";import n from"../cli/helpers/vite-reset-cache.js";import l from"../helpers/create-focus-only.js";import{createDevMarker as c}from"../helpers/dev-marker.js";import d from"../helpers/plugin-config.js";import a from"../helpers/process-stop.js";import u from"./server-config.js";import h from"./ssr-manifest.js";class p{isProd;nodeEnv;buildDir;viteConfig;pluginConfig;params={mode:"",clientOptions:"",serverOptions:"",focusOnly:"app",isWatch:!1,isUnlockRobots:!1,isEject:!1,isServerless:!1,isNoWarnings:!1};abortController=null;runningBuild=[];hasPreviewModeExitListener=!1;diagnosticCodes=new Set;constructor(i){this.params={...this.params,...i}}async makeConfig(){const{mode:i}=this.params;this.viteConfig=await o({},"build",i,"production"),this.pluginConfig=d(this.viteConfig),this.buildDir=e.resolve(this.viteConfig.root,this.viteConfig.build.outDir),this.nodeEnv=process.env.NODE_ENV||"production",this.isProd="production"===this.nodeEnv}clearBuildFolder(){s.existsSync(this.buildDir)&&s.rmSync(this.buildDir,{recursive:!0})}getIsProd(){return this.isProd}getNodeEnv(){return this.nodeEnv}getRunningBuildNames(){return this.runningBuild.map(({name:i})=>i)}promisifyProcess(i,s=!1){const e=new Promise((e,t)=>{i.on("exit",i=>{e(i)}),i.on("close",i=>{e(i)}),i.on("error",i=>{t(i)}),s&&i.stderr?.on("data",i=>{const s=Buffer.from(i).toString();(s.includes("warning")||s.includes("WARNING"))&&e(1)})});i.stdout?.pipe(process.stdout),i.stderr?.pipe(process.stderr);for(const s of[i.stdout,i.stderr]){let i="";s?.on("data",s=>{const e=i+Buffer.from(s).toString();r.filter(i=>e.includes(i)).forEach(i=>this.diagnosticCodes.add(i)),i=e.slice(-80)})}return{promise:e,command:i}}buildManifest(){console.info(t.blue("Building routes manifest file"));const i=u.init({isProd:this.isProd,mode:this.params.mode},{root:this.viteConfig.root,clientFile:this.pluginConfig.clientFile});h.get(i,{buildDir:this.viteConfig.build.outDir,viteAliases:this.viteConfig.resolve.alias,basename:this.viteConfig.base,renderBuiltUrl:this.viteConfig?.experimental?.renderBuiltUrl}).buildRoutesManifest()}writeProductionConfig(){const{base:i,mode:t}=this.viteConfig,{indexFile:o="index.html",serverFile:r="server.ts"}=this.pluginConfig,n={version:1,root:"..",base:i??"/",mode:t??this.params.mode,publicDir:"client",indexFile:e.posix.join("client",o),serverFile:`server/${e.parse(r).name}.js`},l=e.join(this.buildDir,"server");s.mkdirSync(l,{recursive:!0}),s.writeFileSync(e.join(l,"ssr-boost.json"),`${JSON.stringify(n,null,2)}\n`)}unlockRobots(){const i=`${this.buildDir}/client/robots.txt`;if(!s.existsSync(i))return void console.warn(`Failed to unlock robots.txt, file not exist: ${i}`);const e=s.readFileSync(i,{encoding:"utf-8"}).replace(/Disallow: \/$/m,"Allow: /");s.writeFileSync(i,e,{encoding:"utf-8"}),console.info(t.blue("\nrobots.txt unlocked."))}eject(){const i=`${this.buildDir}/server/start.js`;s.writeFileSync(i,"import runProd from '../cli/run-prod.js';\n\nconst VERSION = process.env.VERSION || \"1.0.0\";\nconst PORT = process.env.PORT || 3000;\nconst IS_HOST = process.env.IS_HOST || \"0\";\nconst ONLY_CLIENT = process.env.ONLY_CLIENT || \"0\";\n\nawait runProd({\n version: VERSION,\n isHost: IS_HOST === '1',\n isPrintInfo: true,\n port: PORT,\n focusOnly: ONLY_CLIENT === '1' ? 'client' : 'app',\n });\n",{encoding:"utf-8"})}createServerless(){const i=`${this.buildDir}/server/serverless.js`;s.writeFileSync(i,"import runServerless from '../cli/run-serverless.js';\n\nexport default await runServerless({ version: process.env.VERSION || \"1.0.0\" });\n",{encoding:"utf-8"})}async spawnBuild(s,e,t={}){const{mode:o,isNoWarnings:r}=this.params,{focusOnly:n=this.params.focusOnly,shouldWait:c=!1,env:d={}}=t,a=o&&!e.includes("--mode")?`--mode ${o}`:"",u=this.promisifyProcess(i.spawn(`vite build ${e} ${a} --emptyOutDir`,{signal:this.abortController.signal,stdio:[process.stdin,"pipe","pipe"],shell:!0,env:{...process.env,...d,FORCE_COLOR:"2",SSR_BOOST_IS_SSR:l(n).isOnlyClient()?"0":"1",SSR_BOOST_ACTION:global.viteBoostAction}}),r);this.runningBuild.push({name:s,buildProcess:u}),c&&await this.waitLastBuild()}async waitLastBuild(){const i=this.runningBuild.at(-1);if(!i)return;const s=await i.buildProcess.promise;a(s,!0)}runPreviewMode(){this.hasPreviewModeExitListener||(process.on("exit",()=>{this.abortController.abort()}),this.hasPreviewModeExitListener=!0);const{onFinish:i}=this.params;let s=this.runningBuild.length;const e=t=>{Buffer.from(t).toString().includes("built in")&&(s-=1,s||(this.runningBuild.forEach(({buildProcess:i})=>{i.command.stdout?.removeListener("data",e)}),c(this.isProd,this.viteConfig),this.writeProductionConfig(),i?.()))};this.runningBuild.forEach(({buildProcess:i})=>{i.command.stdout?.on("data",e)})}async build(){await this.makeConfig(),await n(),this.clearBuildFolder(),this.diagnosticCodes.clear();const{clientOptions:i,serverOptions:t,onFinish:o,isWatch:r,focusOnly:d,isEject:a,isServerless:u,isUnlockRobots:h}=this.params,{outDir:p}=this.viteConfig.build,f=l(d);this.abortController=new AbortController,this.runningBuild=[],f.isClient()&&await this.spawnBuild("client",`${i} --outDir ${p}/client`,{shouldWait:!r}),f.isServer()&&(await this.spawnBuild("server",`${t} --outDir ${p}/server --ssr ${this.pluginConfig.serverFile}`,{shouldWait:!r}),r||(this.buildManifest(),a&&this.eject(),u&&this.createServerless()));const{entrypoint:m}=this.pluginConfig;if(m?.length&&f.isEntrypoint())for(const{name:i,type:s,serverFile:e,buildOptions:t=""}of m){const o=e&&"ssr"===s?`--ssr ${e}`:"";await this.spawnBuild(i,`${t} ${o} --outDir ${p}/${i}`,{shouldWait:!r,focusOnly:"ssr"===s?"server":"client",env:{SSR_BOOST_CUSTOM_ENTRYPOINT_BUILD_NAME:i}})}r?this.runPreviewMode():(h&&this.unlockRobots(),c(this.isProd,this.viteConfig),this.writeProductionConfig(),s.mkdirSync(this.buildDir,{recursive:!0}),s.writeFileSync(e.join(this.buildDir,"ssr-boost-diagnostics.json"),JSON.stringify({codes:[...this.diagnosticCodes].sort((i,s)=>i.localeCompare(s))},null,2)),o?.())}}export{p as default};
2
2
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sources":["../../src/services/build.ts"],"sourcesContent":[null],"names":["Build","isProd","nodeEnv","buildDir","viteConfig","pluginConfig","params","mode","clientOptions","serverOptions","focusOnly","isWatch","isUnlockRobots","isEject","isServerless","isNoWarnings","abortController","runningBuild","hasPreviewModeExitListener","diagnosticCodes","Set","constructor","this","makeConfig","resolveConfig","getPluginConfig","path","resolve","root","build","outDir","process","env","NODE_ENV","clearBuildFolder","fs","existsSync","rmSync","recursive","getIsProd","getNodeEnv","getRunningBuildNames","map","name","promisifyProcess","command","isRejectWarnings","promise","Promise","reject","on","code","message","stderr","buff","msg","Buffer","from","toString","includes","stdout","pipe","stream","tail","chunk","text","DIAGNOSTIC_CODES","filter","forEach","add","slice","buildManifest","console","info","chalk","blue","serverConfig","ServerConfig","init","clientFile","SsrManifest","get","viteAliases","alias","basename","base","renderBuiltUrl","experimental","buildRoutesManifest","writeProductionConfig","indexFile","serverFile","config","version","publicDir","posix","join","parse","directory","mkdirSync","writeFileSync","JSON","stringify","unlockRobots","robotsFile","warn","data","readFileSync","encoding","replace","eject","entrypoint","createServerless","spawnBuild","buildOptions","shouldWait","modeOpt","buildProcess","childProcess","spawn","signal","stdio","stdin","shell","FORCE_COLOR","SSR_BOOST_IS_SSR","createFocusOnly","isOnlyClient","SSR_BOOST_ACTION","global","viteBoostAction","push","waitLastBuild","latestProcess","at","exitCode","processStop","runPreviewMode","abort","onFinish","buildCount","length","listener","removeListener","createDevMarker","viteResetCache","clear","focus","AbortController","isClient","isServer","isEntrypoint","type","cliOptions","SSR_BOOST_CUSTOM_ENTRYPOINT_BUILD_NAME","codes","sort","a","b","localeCompare"],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sources":["../../src/services/build.ts"],"sourcesContent":[null],"names":["Build","isProd","nodeEnv","buildDir","viteConfig","pluginConfig","params","mode","clientOptions","serverOptions","focusOnly","isWatch","isUnlockRobots","isEject","isServerless","isNoWarnings","abortController","runningBuild","hasPreviewModeExitListener","diagnosticCodes","Set","constructor","this","makeConfig","resolveConfig","getPluginConfig","path","resolve","root","build","outDir","process","env","NODE_ENV","clearBuildFolder","fs","existsSync","rmSync","recursive","getIsProd","getNodeEnv","getRunningBuildNames","map","name","promisifyProcess","command","isRejectWarnings","promise","Promise","reject","on","code","message","stderr","buff","msg","Buffer","from","toString","includes","stdout","pipe","stream","tail","chunk","text","DIAGNOSTIC_CODES","filter","forEach","add","slice","buildManifest","console","info","chalk","blue","serverConfig","ServerConfig","init","clientFile","SsrManifest","get","viteAliases","alias","basename","base","renderBuiltUrl","experimental","buildRoutesManifest","writeProductionConfig","indexFile","serverFile","config","version","publicDir","posix","join","parse","directory","mkdirSync","writeFileSync","JSON","stringify","unlockRobots","robotsFile","warn","data","readFileSync","encoding","replace","eject","entrypoint","createServerless","spawnBuild","buildOptions","shouldWait","modeOpt","buildProcess","childProcess","spawn","signal","stdio","stdin","shell","FORCE_COLOR","SSR_BOOST_IS_SSR","createFocusOnly","isOnlyClient","SSR_BOOST_ACTION","global","viteBoostAction","push","waitLastBuild","latestProcess","at","exitCode","processStop","runPreviewMode","abort","onFinish","buildCount","length","listener","removeListener","createDevMarker","viteResetCache","clear","focus","AbortController","isClient","isServer","isEntrypoint","type","cliOptions","SSR_BOOST_CUSTOM_ENTRYPOINT_BUILD_NAME","codes","sort","a","b","localeCompare"],"mappings":"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"}
@@ -22,6 +22,10 @@ declare class ParseRoutes {
22
22
  parse(includeEmpty?: boolean): TRoutesTree[];
23
23
  /** Also used to validate a proposed migration before any files are written. */
24
24
  parseValue(sources: SourceFiles, value: ISourceValue, includeEmpty?: boolean, ancestors?: Set<BabelNode>): TRoutesTree[];
25
+ /**
26
+ * Inline static array spreads so positions match the runtime route ids.
27
+ */
28
+ private arrayEntries;
25
29
  private assetPath;
26
30
  private static parseImportsMap;
27
31
  /**
@@ -1,2 +1,2 @@
1
- import e from"node:path";import t from"@babel/generator";import*as r from"@babel/parser";import o from"@babel/traverse";import{isObjectProperty as n,isFunction as i,isBooleanLiteral as s,isJSXElement as a,isIdentifier as l,isArrayExpression as p,objectProperty as u,identifier as c,stringLiteral as m,isJSXIdentifier as f,isObjectExpression as d}from"@babel/types";import y from"../constants/plugin-name.js";import h,{unwrap as g,walk as v,sourceError as w,propertyName as b}from"./source-files.js";const x=t.default??t,E=o.default??o,I=({node:e,file:t})=>{const r=g(e);if("ArrowFunctionExpression"!==r.type&&"FunctionExpression"!==r.type)throw w(t,r,"lazy route; use a function importing one literal module");let o=g(r.body);if("BlockStatement"===o?.type){if(1!==o.body.length||"ReturnStatement"!==o.body[0].type)throw w(t,r,"lazy function body; return one literal import (optionally with .then)");o=g(o.body[0].argument)}if("AwaitExpression"===o?.type&&(o=g(o.argument)),"CallExpression"===o?.type&&"MemberExpression"===o.callee.type&&"Identifier"===o.callee.property.type&&"then"===o.callee.property.name&&(o=g(o.callee.object)),"ImportExpression"!==o?.type)throw w(t,o,"lazy route result; return one literal import (optionally with .then)");const n=[];if(v(r,e=>{if("ImportExpression"===e.type){if("StringLiteral"!==e.source.type)throw w(t,e,"dynamic lazy import; use a string literal");n.push(e.source.value)}}),1!==n.length)throw w(t,r,`lazy route with ${n.length} imports; use exactly one literal module`);return n[0]};class S{config;viteAliases;static unwrapExpression=g;constructor(e,t){this.config=e,this.viteAliases=t}parse(t=!1){const{clientFile:r,root:o}=this.config.getParams(),n=e.resolve(o,r),i=new h(this.viteAliases??this.config.getVite()?.config.resolve.alias),s=[];if(v(i.read(n).ast,e=>{if("CallExpression"!==e.type||"Identifier"!==e.callee.type)return;const t=i.import(n,e.callee.name);if(t?.source.replace(/\.js$/,"")===`${y}/browser/entry`&&["default","entry"].includes(t.exported)){if(!e.arguments[1])throw w(n,e,"browser entry routes argument");s.push({node:e.arguments[1],file:n})}}),1!==s.length)throw w(n,s[1]?.node,`browser entry calls (${s.length}); expected one library browser/entry call`);return this.parseValue(i,s[0],t)}parseValue(e,t,r=!1,o=new Set){const{node:n,file:i}=e.resolve(t);if("ArrayExpression"!==n.type||o.has(n))throw w(i,n,"routes array; use a static, non-circular array");const s=new Set([...o,n]),a=[];return n.elements.forEach((t,o)=>{if(!t)throw w(i,n,"empty route array entry; use route objects");if("SpreadElement"===t.type)throw w(i,t,"route array spread; declare array entries explicitly");const l=e.properties({node:t,file:i}),p={index:o,import:"",children:[]},u=l.get("id"),c=l.get("path"),m=l.get("children"),f=l.get("lazy");if(u){const t=e.resolve(u);if("StringLiteral"!==t.node.type)throw w(t.file,t.node,"route id; use a static string");p.id=t.node.value}if(c){const e=g(c.node);p.path="StringLiteral"===e?.type?e.value:null}if(m&&(p.children=this.parseValue(e,m,r,s)),f){const t=e.resolve(f);p.import=this.assetPath(I(t),t.file)}else{const t=l.get("Component")??l.get("element"),r=g(t?.node),o="Identifier"===r?.type?r.name:"JSXElement"===r?.type&&"JSXIdentifier"===r.openingElement.name.type?r.openingElement.name.name:void 0,n=t&&o?e.import(t.file,o):void 0;n?p.import=this.assetPath(n.source,t.file):t&&(p.import=t.file)}(r||p.import||p.children.length)&&a.push(p)}),a}assetPath(t,r){return t.startsWith(".")?e.resolve(e.dirname(r),t):t}static parseImportsMap(e){const t={};for(const r of e.program.body)if("ImportDeclaration"===r.type)for(const e of r.specifiers)t[e.local.name]={path:r.source.value,isDefault:"ImportDefaultSpecifier"===e.type};return t}static processRouteFileCode(t,r,o,y,h,v){t.node.properties.forEach(w=>{if(n(w)){const x=b(w);if("lazy"===x&&i(g(w.value))){const r=g(w.value),f=I({node:r,file:h}),d=t.node.properties.find(e=>n(e)&&"onlyClient"===b(e));if(w.value={type:"CallExpression",callee:{type:"Identifier",name:v},arguments:n(d)&&(s(d.value)||a(d.value)||i(d.value)||l(d.value))?[w.value,d.value]:[w.value]},d&&(t.node.properties=t.node.properties.filter(e=>e!==d)),y(),f){const r=t.findParent?.(e=>p(S.unwrapExpression(e.node)));if(r&&f&&o){const r=u(c("pathId"),m(f.startsWith(".")&&e.isAbsolute(h)?e.resolve(e.dirname(h),f):f));t.node.properties.splice(t.node.properties.indexOf(w)+1,0,r)}}}if("element"===x||"Component"===x){let n="";a(w.value)&&f(w.value.openingElement.name)?n=w.value.openingElement.name.name:l(w.value)&&(n=w.value.name);const i=t.findParent?.(e=>p(S.unwrapExpression(e.node))),s=r[n]?.path;if(i&&s&&o){const r=u(c("pathId"),m(s.startsWith(".")&&e.isAbsolute(h)?e.resolve(e.dirname(h),s):s));t.node.properties.splice(t.node.properties.indexOf(w)+1,0,r)}}const E=S.unwrapExpression(w.value);"children"===x&&p(E)&&E.elements.forEach(e=>{d(e)&&S.processRouteFileCode({node:e},r,o,y,h,v)})}})}static handleRoutes(e,t,o="routes"){if(!e)return e;const n=r.parse(e,{sourceType:"module",createImportExpressions:!0,plugins:["typescript","jsx"]});if(!n)return e;const i=S.parseImportsMap(n);let s=!1,a="n";return E(n,{Program(e){e.scope.hasBinding(a)&&(a=e.scope.generateUidIdentifier("importRoute").name)}}),E(n,{ObjectExpression(e){S.processRouteFileCode(e,i,t,()=>{s=!0},o,a)}}),s&&n.program.body.unshift({type:"ImportDeclaration",specifiers:[{type:"ImportDefaultSpecifier",local:{type:"Identifier",name:a}}],source:{type:"StringLiteral",value:`${y}/helpers/import-route`}}),x(n,{retainLines:!0}).code}}export{S as default,I as lazyImport};
1
+ import e from"node:path";import t from"@babel/generator";import*as r from"@babel/parser";import o from"@babel/traverse";import{isObjectProperty as n,isFunction as i,isBooleanLiteral as s,isJSXElement as a,isIdentifier as l,isArrayExpression as p,objectProperty as u,identifier as c,stringLiteral as f,isJSXIdentifier as m,isObjectExpression as d}from"@babel/types";import y from"../constants/plugin-name.js";import h,{unwrap as g,walk as v,sourceError as E,propertyName as w}from"./source-files.js";const b=t.default??t,x=o.default??o,I=({node:e,file:t})=>{const r=g(e);if("ArrowFunctionExpression"!==r.type&&"FunctionExpression"!==r.type)throw E(t,r,"lazy route; use a function importing one literal module");let o=g(r.body);if("BlockStatement"===o?.type){if(1!==o.body.length||"ReturnStatement"!==o.body[0].type)throw E(t,r,"lazy function body; return one literal import (optionally with .then)");o=g(o.body[0].argument)}if("AwaitExpression"===o?.type&&(o=g(o.argument)),"CallExpression"===o?.type&&"MemberExpression"===o.callee.type&&"Identifier"===o.callee.property.type&&"then"===o.callee.property.name&&(o=g(o.callee.object)),"ImportExpression"!==o?.type)throw E(t,o,"lazy route result; return one literal import (optionally with .then)");const n=[];if(v(r,e=>{if("ImportExpression"===e.type){if("StringLiteral"!==e.source.type)throw E(t,e,"dynamic lazy import; use a string literal");n.push(e.source.value)}}),1!==n.length)throw E(t,r,`lazy route with ${n.length} imports; use exactly one literal module`);return n[0]};class S{config;viteAliases;static unwrapExpression=g;constructor(e,t){this.config=e,this.viteAliases=t}parse(t=!1){const{clientFile:r,root:o}=this.config.getParams(),n=e.resolve(o,r),i=new h(this.viteAliases??this.config.getVite()?.config.resolve.alias),s=[];if(v(i.read(n).ast,e=>{if("CallExpression"!==e.type||"Identifier"!==e.callee.type)return;const t=i.import(n,e.callee.name);if(t?.source.replace(/\.js$/,"")===`${y}/browser/entry`&&["default","entry"].includes(t.exported)){if(!e.arguments[1])throw E(n,e,"browser entry routes argument");s.push({node:e.arguments[1],file:n})}}),1!==s.length)throw E(n,s[1]?.node,`browser entry calls (${s.length}); expected one library browser/entry call`);return this.parseValue(i,s[0],t)}parseValue(e,t,r=!1,o=new Set){const{node:n,file:i}=e.resolve(t);if("ArrayExpression"!==n.type||o.has(n))throw E(i,n,"routes array; use a static, non-circular array");const s=new Set([...o,n]),a=[];return this.arrayEntries(e,n,i,s).forEach((t,o)=>{const n=e.properties(t),i={index:o,import:"",children:[]},l=n.get("id"),p=n.get("path"),u=n.get("children"),c=n.get("lazy");if(l){const t=e.resolve(l);if("StringLiteral"!==t.node.type)throw E(t.file,t.node,"route id; use a static string");i.id=t.node.value}if(p){const e=g(p.node);i.path="StringLiteral"===e?.type?e.value:null}if(u&&(i.children=this.parseValue(e,u,r,s)),c){const t=e.resolve(c);i.import=this.assetPath(I(t),t.file)}else{const t=n.get("Component")??n.get("element"),r=g(t?.node),o="Identifier"===r?.type?r.name:"JSXElement"===r?.type&&"JSXIdentifier"===r.openingElement.name.type?r.openingElement.name.name:void 0,s=t&&o?e.import(t.file,o):void 0;s?i.import=this.assetPath(s.source,t.file):t&&(i.import=t.file)}(r||i.import||i.children.length)&&a.push(i)}),a}arrayEntries(e,t,r,o){return t.elements.flatMap(n=>{if(!n)throw E(r,t,"empty route array entry; use route objects");if("SpreadElement"!==n.type)return[{node:n,file:r}];const i=e.resolve({node:n.argument,file:r});if("ArrayExpression"!==i.node.type||o.has(i.node))throw E(r,n.argument,"route array spread; spread a static, non-circular array or use a pathless group route");return this.arrayEntries(e,i.node,i.file,new Set([...o,i.node]))})}assetPath(t,r){return t.startsWith(".")?e.resolve(e.dirname(r),t):t}static parseImportsMap(e){const t={};for(const r of e.program.body)if("ImportDeclaration"===r.type)for(const e of r.specifiers)t[e.local.name]={path:r.source.value,isDefault:"ImportDefaultSpecifier"===e.type};return t}static processRouteFileCode(t,r,o,y,h,v){t.node.properties.forEach(E=>{if(n(E)){const b=w(E);if("lazy"===b&&i(g(E.value))){const r=g(E.value),m=I({node:r,file:h}),d=t.node.properties.find(e=>n(e)&&"onlyClient"===w(e));if(E.value={type:"CallExpression",callee:{type:"Identifier",name:v},arguments:n(d)&&(s(d.value)||a(d.value)||i(d.value)||l(d.value))?[E.value,d.value]:[E.value]},d&&(t.node.properties=t.node.properties.filter(e=>e!==d)),y(),m){const r=t.findParent?.(e=>p(S.unwrapExpression(e.node)));if(r&&m&&o){const r=u(c("pathId"),f(m.startsWith(".")&&e.isAbsolute(h)?e.resolve(e.dirname(h),m):m));t.node.properties.splice(t.node.properties.indexOf(E)+1,0,r)}}}if("element"===b||"Component"===b){let n="";a(E.value)&&m(E.value.openingElement.name)?n=E.value.openingElement.name.name:l(E.value)&&(n=E.value.name);const i=t.findParent?.(e=>p(S.unwrapExpression(e.node))),s=r[n]?.path;if(i&&s&&o){const r=u(c("pathId"),f(s.startsWith(".")&&e.isAbsolute(h)?e.resolve(e.dirname(h),s):s));t.node.properties.splice(t.node.properties.indexOf(E)+1,0,r)}}const x=S.unwrapExpression(E.value);"children"===b&&p(x)&&x.elements.forEach(e=>{d(e)&&S.processRouteFileCode({node:e},r,o,y,h,v)})}})}static handleRoutes(e,t,o="routes"){if(!e)return e;const n=r.parse(e,{sourceType:"module",createImportExpressions:!0,plugins:["typescript","jsx"]});if(!n)return e;const i=S.parseImportsMap(n);let s=!1,a="n";return x(n,{Program(e){e.scope.hasBinding(a)&&(a=e.scope.generateUidIdentifier("importRoute").name)}}),x(n,{ObjectExpression(e){S.processRouteFileCode(e,i,t,()=>{s=!0},o,a)}}),s&&n.program.body.unshift({type:"ImportDeclaration",specifiers:[{type:"ImportDefaultSpecifier",local:{type:"Identifier",name:a}}],source:{type:"StringLiteral",value:`${y}/helpers/import-route`}}),b(n,{retainLines:!0}).code}}export{S as default,I as lazyImport};
2
2
  //# sourceMappingURL=parse-routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-routes.js","sources":["../../src/services/parse-routes.ts"],"sourcesContent":[null],"names":["generate","babelGenerate","default","traverse","babelTraverse","lazyImport","node","file","value","unwrap","type","sourceError","result","body","length","argument","callee","property","name","object","imports","walk","child","source","push","ParseRoutes","config","viteAliases","static","constructor","this","parse","includeEmpty","clientFile","root","getParams","path","resolve","sources","SourceFiles","getVite","alias","calls","read","ast","imported","import","replace","PLUGIN_NAME","includes","exported","arguments","parseValue","ancestors","Set","has","next","results","elements","forEach","element","index","properties","route","children","id","get","routePath","lazy","resolved","literal","assetPath","component","componentNode","openingElement","undefined","specifier","startsWith","dirname","parseImportsMap","program","specifiers","local","isDefault","processRouteFileCode","nodePath","importsMap","shouldAddPathId","addImportRouteWrapper","filename","wrapperName","isObjectProperty","key","propertyName","isFunction","lazyValue","importPath","onlyClientProp","find","p","isBooleanLiteral","isJSXElement","isIdentifier","filter","parent","findParent","isArrayExpression","unwrapExpression","pathIdProperty","objectProperty","identifier","stringLiteral","isAbsolute","splice","indexOf","componentName","isJSXIdentifier","importName","isObjectExpression","handleRoutes","code","parser","sourceType","createImportExpressions","plugins","shouldAddRoutesImport","Program","scope","hasBinding","generateUidIdentifier","ObjectExpression","unshift","retainLines"],"mappings":"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"}
1
+ {"version":3,"file":"parse-routes.js","sources":["../../src/services/parse-routes.ts"],"sourcesContent":[null],"names":["generate","babelGenerate","default","traverse","babelTraverse","lazyImport","node","file","value","unwrap","type","sourceError","result","body","length","argument","callee","property","name","object","imports","walk","child","source","push","ParseRoutes","config","viteAliases","static","constructor","this","parse","includeEmpty","clientFile","root","getParams","path","resolve","sources","SourceFiles","getVite","alias","calls","read","ast","imported","import","replace","PLUGIN_NAME","includes","exported","arguments","parseValue","ancestors","Set","has","next","results","arrayEntries","forEach","entry","index","properties","route","children","id","get","routePath","lazy","resolved","literal","assetPath","component","componentNode","openingElement","undefined","elements","flatMap","element","spread","specifier","startsWith","dirname","parseImportsMap","program","specifiers","local","isDefault","processRouteFileCode","nodePath","importsMap","shouldAddPathId","addImportRouteWrapper","filename","wrapperName","isObjectProperty","key","propertyName","isFunction","lazyValue","importPath","onlyClientProp","find","p","isBooleanLiteral","isJSXElement","isIdentifier","filter","parent","findParent","isArrayExpression","unwrapExpression","pathIdProperty","objectProperty","identifier","stringLiteral","isAbsolute","splice","indexOf","componentName","isJSXIdentifier","importName","isObjectExpression","handleRoutes","code","parser","sourceType","createImportExpressions","plugins","shouldAddRoutesImport","Program","scope","hasBinding","generateUidIdentifier","ObjectExpression","unshift","retainLines"],"mappings":"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"}