@oiyo/core 0.0.4 → 0.1.0
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/LICENSE +2 -2
- package/README.md +1 -1
- package/dist/index.cjs +19 -9
- package/dist/index.d.cts +391 -43
- package/dist/index.d.mts +391 -43
- package/dist/index.mjs +19 -9
- package/package.json +3 -11
- package/dist/types-CO6ioKnp.d.cts +0 -53
- package/dist/types-DLyArdXP.d.mts +0 -53
- package/dist/types.cjs +0 -7
- package/dist/types.d.cts +0 -52
- package/dist/types.d.mts +0 -52
- package/dist/types.mjs +0 -7
package/LICENSE
CHANGED
|
@@ -4,8 +4,8 @@ oiyo 商业软件许可协议 / oiyo Commercial Software License Agreement
|
|
|
4
4
|
Last Updated: 2026-04-08
|
|
5
5
|
作者:skiyee
|
|
6
6
|
Author: skiyee
|
|
7
|
-
官网:https://oiyo.
|
|
8
|
-
Website: https://oiyo.
|
|
7
|
+
官网:https://oiyo.js.org
|
|
8
|
+
Website: https://oiyo.js.org
|
|
9
9
|
|
|
10
10
|
请在安装、复制、分发或使用 OIYO 前,请先阅读本协议。
|
|
11
11
|
PLEASE READ THIS AGREEMENT BEFORE INSTALLING, COPYING, DISTRIBUTING, OR USING OIYO.
|
package/README.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @oiyo/core v0.0
|
|
2
|
+
* @oiyo/core v0.1.0
|
|
3
3
|
* Copyright (c) 2026 skiyee. All rights reserved.
|
|
4
4
|
* Commercial software. See LICENSE for terms.
|
|
5
|
-
* Official site: https://oiyo.
|
|
5
|
+
* Official site: https://oiyo.js.org
|
|
6
6
|
*/
|
|
7
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(
|
|
8
|
-
`.repeat(e):``;
|
|
7
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`node:process`);c=s(c);let l=require(`node:readline`);l=s(l);let u=require(`ansis`),d=require(`node:fs`),f=require(`node:fs/promises`),p=require(`pathe`),ee=require(`node:crypto`),m=require(`node:module`),h=require(`@babel/parser`),g=require(`@babel/traverse`);g=s(g);let te=require(`tinyglobby`),_=require(`@vue/compiler-sfc`),v=require(`@oiyo/config`),ne=require(`vue`),y=require(`magic-string`);y=s(y);let b=require(`c12`),re=require(`defu`),x=require(`fs`),S=require(`fs/promises`),ie=require(`events`),C=require(`path`);C=s(C);let ae=require(`node:stream`),w=require(`node:path`);w=s(w);let oe=require(`os`);const T={silent:0,error:1,warn:2,info:3,debug:4,verbose:5};let se,ce,le=0,ue;function de(){let e=c.default.stdout.rows-2,t=e>0?`
|
|
8
|
+
`.repeat(e):``;c.default.stdout.write(t),l.default.cursorTo(c.default.stdout,0,0),l.default.clearScreenDown(c.default.stdout)}function fe(){return ue??=new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`numeric`,second:`numeric`}),ue}function pe(e=`info`,t={}){if(t.customLogger)return t.customLogger;let n=new WeakSet,r=new Set,{prefix:i=`[OIYO]`,scope:a,allowClearScreen:o=!0,console:s=globalThis.console}=t,l=T[e],d=o&&c.default.stdout.isTTY&&!c.default.env.CI,f=d?de:()=>{};function p(e,t,n={}){let r=ee(e,n.scope??a);return n.timestamp?`${(0,u.dim)(fe().format(new Date))} ${(0,u.blue)(i)} ${r} ${t}`:`${(0,u.blue)((0,u.bold)(i))} ${r} ${t}`}function ee(e,t){if(!t)return` `;let n=`[${t.toUpperCase()}]`;return{info:(0,u.cyan)(n),warn:(0,u.yellow)(n),error:(0,u.red)(n),debug:(0,u.dim)((0,u.cyan)(n))}[e]}function m(e,t,r={}){if(l<T[e])return;let i=e;if(r.error&&n.add(r.error),d){if(e===se&&t===ce){le++,f(),s[e](p(e,t,r),(0,u.yellow)(`(x${le+1})`));return}le=0,se=e,ce=t,r.clear&&f()}s[i](p(e,t,r))}let h={hasWarned:!1,withScope(n){return pe(e,{...t,scope:n})},debug(e,t){m(`debug`,e,t)},info(e,t){m(`info`,e,t)},warn(e,t){h.hasWarned=!0,m(`warn`,e,t)},warnOnce(e,t){r.has(e)||(r.add(e),h.hasWarned=!0,m(`warn`,e,t))},error(e,t){h.hasWarned=!0,m(`error`,e,t)},clearScreen(e){l>=T[e]&&f()},hasErrorLogged(e){return n.has(e)}};return h}const E=typeof g.default==`function`?g.default:g.default.default,me=(0,m.createRequire)(require(`url`).pathToFileURL(__filename).href),he=`**/*`;function D(e){return e?Array.isArray(e)?e:[e]:[]}function ge(e){if(!(0,d.existsSync)(e))return[he];try{return(0,d.statSync)(e).isFile()?[(0,p.basename)(e)]:[he]}catch{return[he]}}async function O(e){let{dir:t,pattern:n,ignore:r}=e;if(!(0,d.existsSync)(t))return[];let i=(0,d.statSync)(t).isFile()?(0,p.dirname)(t):t,a=D(n),o=a.length>0?a:ge(t);try{return(await(0,te.glob)(o,{cwd:i,absolute:!0,ignore:D(r)})).map(e=>(0,p.normalize)((0,p.resolve)(e)))}catch(e){return console.error(`[oiyo] Error scanning file:`,e),[]}}function _e(e,t,n){let r=(0,p.normalize)(e),i=(0,p.normalize)(t);if((0,d.existsSync)(i))try{if((0,d.statSync)(i).isFile())return r===i}catch{return!1}if(r!==i&&!r.startsWith(`${i}/`))return!1;let a=(0,p.normalize)((0,p.relative)(i,r)),o=D(n?.pattern);return D(n?.ignore).some(e=>(0,p.matchesGlob)(a,e))?!1:o.length===0?!0:o.some(e=>(0,p.matchesGlob)(a,e))}function k(e,t=8){return(0,ee.createHash)(`sha256`).update(e).digest(`hex`).slice(0,t)}function A(e,t){let n=`${e}.${c.pid}.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`;return(0,d.writeFileSync)(n,t,`utf-8`),(0,d.existsSync)(e)&&(0,d.unlinkSync)(e),(0,d.renameSync)(n,e),!0}function ve(e,t,n){let r=(0,p.normalize)((0,p.relative)(e,t));return n?.stripExtension&&(r=r.replace(/\.[cm]?[jt]sx?$/,``)),r.startsWith(`.`)?r:`./${r}`}function j(e){return!e.startsWith(`.`)&&!e.startsWith(`/`)&&!/^[a-z]:[\\/]/i.test(e)}function ye(e){let t=e.split(`/`).filter(Boolean);return e.startsWith(`@`)?t.slice(0,2).join(`/`):t[0]||e}function be(e,t){if(!j(t))return{path:(0,p.normalize)((0,p.resolve)(e,t))};try{let n=ye(t),r=(0,p.dirname)((0,p.normalize)(me.resolve(`${n}/package.json`,{paths:[e]}))),i=t.slice(n.length).replace(/^\/+/,``);return{importBase:t.replace(/\\/g,`/`),path:i?(0,p.normalize)((0,p.resolve)(r,i)):(0,p.normalize)(r)}}catch{return{path:(0,p.normalize)((0,p.resolve)(e,t))}}}function xe(e,t,n){if(!n)return e;let r=(0,p.normalize)((0,p.relative)(t,e));return!r||r===`.`?n:`${n}/${r}`}function M(e,t,n){return j(t)?n?.stripExtension?t.replace(/\.[cm]?[jt]sx?$/,``):t:ve(e,t,n)}function Se(e){if(!e)return``;let t=e.replace(/\p{Lu}/gu,e=>`-${e.toLowerCase()}`);return t.startsWith(`-`)?t.slice(1):t}function N(e){return e?e.replace(/[-_](.)/g,(e,t)=>t.toUpperCase()).replace(/^(.)/,e=>e.toUpperCase()):``}function Ce(e,t){let n=(0,h.parse)(e,{sourceType:`module`,plugins:[`typescript`]}),r={start:0,end:0};return E(n,{CallExpression(e){let{callee:n,arguments:i}=e.node;n.type===`Identifier`&&n.name===t&&i.length>0&&e.node.start!=null&&e.node.end!=null&&(r.start=e.node.start,r.end=e.node.end,e.stop())}}),r}function we(e){return e.replace(/\s+/g,``)}const Te=(0,m.createRequire)(require(`url`).pathToFileURL(__filename).href),Ee=[`.ts`,`.mts`,`.cts`,`.tsx`,`.js`,`.mjs`,`.cjs`,`.jsx`,`.vue`,`.d.ts`,`.d.mts`,`.d.cts`];function De(e){let t=e.split(`/`).filter(Boolean);return e.startsWith(`@`)?t.slice(0,2).join(`/`):t[0]||e}function Oe(e,t){let n=(0,p.normalize)(e);for(;;){let e=(0,p.resolve)(n,`node_modules`,t,`package.json`);if((0,d.existsSync)(e))return(0,p.normalize)(e);let r=(0,p.dirname)(n);if(r===n)return;n=r}}function ke(e,t,n){let r=(0,p.normalize)((0,p.resolve)((0,p.parse)(e).dir,t)),i=n?.preferTypes?[`.d.ts`,`.d.mts`,`.d.cts`,...Ee]:Ee;if((0,d.existsSync)(r))return r;for(let e of i){let t=`${r}${e}`;if((0,d.existsSync)(t))return(0,p.normalize)(t)}for(let e of i){let t=(0,p.resolve)(r,`index${e}`);if((0,d.existsSync)(t))return(0,p.normalize)(t)}return r}function Ae(e,t){if(!e||typeof e!=`object`)return t===`import`&&typeof e==`string`?e:void 0;if(t===`types`){let t=e.types;if(typeof t==`string`)return t;if(t&&typeof t==`object`){let e=t;return typeof e.import==`string`?e.import:typeof e.require==`string`?e.require:typeof e.default==`string`?e.default:void 0}}let n=e;return typeof n.import==`string`?n.import:typeof n.default==`string`?n.default:typeof n.require==`string`?n.require:void 0}async function P(e,t,n){try{let r=De(t),i=Oe(e,r)||(0,p.normalize)(Te.resolve(`${r}/package.json`,{paths:[e]})),a=(0,p.dirname)(i),o=JSON.parse(await(0,f.readFile)(i,`utf-8`)),s=t.slice(r.length).replace(/^\/+/,``),c=s?`./${s}`:`.`,l=typeof o.exports==`object`&&o.exports?o.exports[c]??(c===`.`?o.exports:void 0):void 0,u=n?.preferTypes?Ae(l,`types`)||(c===`.`?o.types:void 0):Ae(l,`import`)||(c===`.`?o.module||o.main:void 0);return u?(0,p.normalize)((0,p.resolve)(a,u)):(0,p.normalize)(Te.resolve(t,{paths:[e]}))}catch{return}}async function je(e,t,n){return j(t)?await P((0,p.dirname)(e),t,n)||t:ke(e,t,n)}function Me(e,t){return t.startsWith(`.`)||t.startsWith(`/`)?ke(e,t,{preferTypes:!0}):t}function Ne(e,t,n){return j(t)?n||(Oe(e,De(t))?t.replace(/\\/g,`/`):void 0):n}async function Pe(e,t){if(!e.importBase||!j(e.importBase))return{typePath:e.path,valuePath:e.path};let n=await P(t,e.importBase),r=await P(t,e.importBase,{preferTypes:!0});return{typePath:r||n||e.path,valuePath:n||r||e.path}}function Fe(e,t){return!t||!e.importPath||!j(t)?e:e.importPath.startsWith(`${t}/..`)||e.importPath.startsWith(`${t}/.`)?{...e,importPath:t}:e}function Ie(e){let t=N(e);return t?t[0].toLowerCase()+t.slice(1):``}function F(e){try{return(0,h.parse)(e,{sourceType:`module`,plugins:[`typescript`,`jsx`]})}catch{return(0,h.parse)(`(${e})`,{sourceType:`module`,plugins:[`typescript`,`jsx`]})}}function I(e){return e.type===`Identifier`?[e.name]:e.type===`ObjectPattern`?e.properties.flatMap(e=>e.type===`ObjectProperty`?I(e.value):e.type===`RestElement`?I(e.argument):[]):e.type===`ArrayPattern`?e.elements.flatMap(e=>e?I(e):[]):e.type===`AssignmentPattern`?I(e.left):e.type===`RestElement`?I(e.argument):[]}function Le(e){let t=(0,p.parse)(e);return Ie(t.name===`index`?(0,p.parse)(t.dir).name:t.name)}function Re(e,t){if(!e.endsWith(`.vue`))return t;try{let{descriptor:n}=(0,_.parse)(t,{filename:e});return[n.script?.content,n.scriptSetup?.content].filter(e=>!!e).join(`
|
|
9
|
+
`)}catch{return t}}async function ze(e,t,n=e,r){let i=F(Re(e,t)),a=[],o=[],s=[],c=!1;if(r?.visitedFiles?.add(e),E(i,{ExportDefaultDeclaration(){c=!0},ExportAllDeclaration(e){let t=e.node.source?.value;t&&s.push({exportKind:e.node.exportKind,source:t})},ExportNamedDeclaration(t){let{node:i}=t,s=i.exportKind;if(i.declaration)switch(i.declaration.type){case`FunctionDeclaration`:case`TSDeclareFunction`:case`ClassDeclaration`:case`TSEnumDeclaration`:s!==`type`&&i.declaration.id?.name&&a.push({exportName:i.declaration.id.name,filePath:e,importPath:n,name:i.declaration.id.name});break;case`VariableDeclaration`:if(s===`type`)break;for(let t of i.declaration.declarations)for(let r of I(t.id))a.push({exportName:r,filePath:e,importPath:n,name:r});break;case`TSInterfaceDeclaration`:case`TSTypeAliasDeclaration`:r?.includeTypes&&i.declaration.id?.name&&o.push({exportName:i.declaration.id.name,filePath:e,importPath:n,name:i.declaration.id.name});break}for(let t of i.specifiers){if(t.type!==`ExportSpecifier`){if(s===`type`&&!r?.includeTypes||t.exported.type!==`Identifier`)continue;a.push({exportName:t.exported.name,filePath:e,importPath:n,name:t.exported.name});continue}if(s===`type`||t.exportKind===`type`){if(!r?.includeTypes||t.exported.type!==`Identifier`)continue;let a=t.exported.name,s=e,c=n;i.source?.value&&t.local.type===`Identifier`&&(a=t.local.name,c=Me(e,i.source.value),s=j(c)?e:c),o.push({exportName:a,filePath:s,importPath:c,name:t.exported.name});continue}t.exported.type===`Identifier`&&a.push({exportName:t.exported.name,filePath:e,importPath:n,name:t.exported.name})}}}),c){let t=Le(e);t&&a.push({exportName:`default`,filePath:e,importPath:n,name:t})}for(let t of s){let i=await je(e,t.source,{preferTypes:r?.includeTypes});if(!(!i||j(i)||r?.visitedFiles?.has(i)))try{let e=await ze(i,await(0,f.readFile)(i,`utf-8`),n,{includeTypes:r?.includeTypes,visitedFiles:r?.visitedFiles});t.exportKind!==`type`&&a.push(...e.valueItems.map(e=>({...e,importPath:n}))),r?.includeTypes&&o.push(...e.typeItems.map(e=>({...e,importPath:n})))}catch{continue}}return{typeItems:o,valueItems:a}}function Be(e){let t=F(e),n=new Set;return E(t,{Program(e){Object.keys(e.scope.bindings).forEach(e=>n.add(e)),e.stop()}}),n}function Ve(e,t,n){let r=F(e),i=new Set(t),a=new Set(n?.boundNames||[]),o=new Set;return E(r,{ReferencedIdentifier(e){let t=e.node.name;a.has(t)||e.scope.hasBinding(t)||i.has(t)&&o.add(t)}}),o}function He(e){let t=e.importPath||e.filePath;return e.exportName===`default`?`import ${e.name} from '${t}'`:e.exportName===e.name?`import { ${e.name} } from '${t}'`:`import { ${e.exportName} as ${e.name} } from '${t}'`}function Ue(e,t){let n=M(t,e.importPath||e.filePath,{stripExtension:!0});return` const ${e.name}: typeof import('${n}')['${e.exportName}'];`}const We=[`**/*.ts`,`**/*.mts`,`**/*.cts`,`**/*.js`,`**/*.mjs`,`**/*.cjs`,`**/*.tsx`,`**/*.jsx`];function Ge(e){return typeof e==`string`?{isType:void 0,localName:e,sourceName:e}:{isType:e.isType,localName:e.as||e.name,sourceName:e.name}}function Ke(e){return typeof e!=`string`&&e.only!==void 0}function qe(e,t){let n=(0,p.resolve)(e.rootDir,e.srcDir),r=typeof t==`string`?t:t.from,i=be(n,r);return{exclude:typeof t==`string`?void 0:t.exclude,ignore:typeof t==`string`?void 0:t.ignore,importBase:Ne(n,r,i.importBase),path:i.path,pattern:typeof t==`string`?void 0:t.pattern,types:typeof t==`string`?!1:t.types}}function Je(e){return(Array.isArray(e)?e:[e]).map(e=>typeof e==`string`?{exclude:[],ignore:[],importBase:void 0,pattern:We,path:(0,p.normalize)((0,p.resolve)(e)),types:!1}:{exclude:e.exclude||[],ignore:e.ignore,importBase:e.importBase,pattern:e.pattern||We,path:(0,p.normalize)((0,p.resolve)(e.path)),types:e.types||!1})}function Ye(e){return JSON.stringify({exclude:[...e.exclude||[]].sort(),ignore:D(e.ignore),importBase:e.importBase,path:e.path,pattern:D(e.pattern),types:e.types||!1})}function Xe(e){return{exportName:e.export||e.name,filePath:e.from,importPath:e.from,name:e.name}}function Ze(e,t){return{importPath:M(t,e.importPath||e.filePath,{stripExtension:!0}),specifier:e.exportName===e.name?e.name:`${e.exportName} as ${e.name}`}}function Qe(e){return`${e.filePath}#${e.exportName}`}var $e=class{constructor(e,t){this._config=e,this.autoApis=[],this.autoApiTypes=[],this.autoApiMap=new Map,this.autoApiTypeMap=new Map,this.includedApis=[],this.includedApiTypes=[],this.apiSources=[],this.oiyoState=t.oiyoState,this.logger=t.logger.withScope(`AUTO_API`),this.registerConfigScanners()}get stateDir(){return this.oiyoState.stateDir}get typesDir(){return this.oiyoState.typesDir}get declarationPath(){return(0,p.resolve)(this.typesDir,`apis.d.ts`)}isAutoApiPath(e){let t=(0,p.normalize)(e);return this.apiSources.some(e=>_e(t,e.path,{ignore:e.ignore,pattern:e.pattern}))}includeApi(e){let t=Array.isArray(e)?e:[e];this.includedApis.push(...t.map(Xe))}includeApiType(e){let t=Array.isArray(e)?e:[e];this.includedApiTypes.push(...t.map(Xe))}includeApis(e){for(let t of Je(e)){let e=Ye(t);this.apiSources.some(t=>Ye(t)===e)||this.apiSources.push(t)}}registerConfigScanners(){for(let e of this._config.scan?.apis||[]){if(!Ke(e)){this.includeApis(qe(this._config,e));continue}for(let t of e.only){let{isType:n,localName:r,sourceName:i}=Ge(t),a={export:i===r?void 0:i,from:e.from,name:r};n??e.types?this.includeApiType(a):this.includeApi(a)}}}resetCollectedState(){this.autoApis=[],this.autoApiTypes=[],this.autoApiMap.clear(),this.autoApiTypeMap.clear()}registerValue(e,t){let n=this.autoApiMap.get(e.name);return n?(n.filePath===e.filePath&&n.exportName===e.exportName||n.filePath===e.filePath&&n.exportName!==`default`&&e.exportName===`default`||this.logger.warn(`自动 API 名称冲突: ${e.name} 已存在,已跳过 ${Qe(e)}`),!1):(this.autoApiMap.set(e.name,e),t?.trackScanned&&this.autoApis.push(e),!0)}registerType(e,t){let n=this.autoApiTypeMap.get(e.name);return n?(n.filePath===e.filePath&&n.exportName===e.exportName||this.logger.warn(`自动 API 类型名称冲突: ${e.name} 已存在,已跳过 ${Qe(e)}`),!1):(this.autoApiTypeMap.set(e.name,e),t?.trackScanned&&this.autoApiTypes.push(e),!0)}seedIncludedRegistrations(){this.includedApis.forEach(e=>this.registerValue(e)),this.includedApiTypes.forEach(e=>this.registerType(e))}registerScannedValueItems(e,t){for(let n of t){let t=Fe(n,e.importBase);(e.exclude||[]).includes(t.name)||this.registerValue(t,{trackScanned:!0})}}registerScannedTypeItems(e,t){for(let n of t){let t=Fe(n,e.importBase);(e.exclude||[]).includes(t.name)||this.registerType(t,{trackScanned:!0})}}async scanSourceFiles(e,t,n,r){for(let i of t)try{let t=await ze(i,await(0,f.readFile)(i,`utf-8`),xe(i,n,e.importBase),{includeTypes:r.includeTypes,visitedFiles:new Set});r.registerValues&&this.registerScannedValueItems(e,t.valueItems),r.registerTypes&&this.registerScannedTypeItems(e,t.typeItems)}catch{this.logger.warn(`解析自动 API 文件失败,已跳过: ${i}`)}}async collectApis(){let e=(0,p.resolve)(this._config.rootDir,this._config.srcDir);this.resetCollectedState(),this.seedIncludedRegistrations();for(let t of this.apiSources){let{typePath:n,valuePath:r}=await Pe(t,e),i=await O({dir:r,ignore:t.ignore,pattern:t.pattern});if(t.types&&r===n){await this.scanSourceFiles(t,i,r,{includeTypes:!0,registerTypes:!0,registerValues:!0});continue}if(await this.scanSourceFiles(t,i,r,{includeTypes:!1,registerValues:!0}),!t.types)continue;let a=r===n?i:await O({dir:n,ignore:t.ignore,pattern:t.pattern});await this.scanSourceFiles(t,a,n,{includeTypes:!0,registerTypes:!0})}return this.autoApis}collectBoundNames(e){return Be(e)}resolveImports(e,t){return!e||this.autoApiMap.size===0?[]:Array.from(Ve(e,this.autoApiMap.keys(),t)).sort().map(e=>He(this.autoApiMap.get(e)))}resolveImport(e){let t=this.autoApiMap.get(e);if(t)return He(t)}generateDeclaration(){let e=Array.from(this.autoApiTypeMap.values()).sort((e,t)=>e.name.localeCompare(t.name)).reduce((e,t)=>{let n=Ze(t,this.typesDir),r=e.get(n.importPath)||[];return r.push(n.specifier),e.set(n.importPath,r),e},new Map);return[`// Generated by oiyo`,`declare global {`,...Array.from(this.autoApiMap.values()).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>Ue(e,this.typesDir)),`}`,``,`declare global {`,...Array.from(e.entries()).flatMap(([e,t])=>[` // @ts-ignore`,` export type { ${t.join(`, `)} } from '${e}';`]),`}`,``,`export {}`,``].join(`
|
|
10
|
+
`)}writeDeclaration(){return(0,d.mkdirSync)(this.typesDir,{recursive:!0}),A(this.declarationPath,this.generateDeclaration()),this.oiyoState.ensureDeclarationEntry(),this.declarationPath}};const L=/<\/?\s*([a-z][\w-]*)\b/gi,et=[`**/*.vue`,`**/*.nvue`];function tt(e){return typeof e==`string`?{localName:e,sourceName:e}:{localName:e.as||e.name,sourceName:e.name}}function nt(e){return typeof e!=`string`&&e.only!==void 0}function rt(e,t){let n=be((0,p.resolve)(e.rootDir,e.srcDir),typeof t==`string`?t:t.from);return{chain:typeof t==`string`?!0:t.chain,ignore:typeof t==`string`?void 0:t.ignore,importBase:n.importBase,path:n.path,pattern:typeof t==`string`?void 0:t.pattern,prefix:typeof t==`string`?void 0:t.prefix}}function it(e){return(e.scan?.components||[]).filter(e=>!nt(e)).map(t=>rt(e,t))}function R(e,t){let n=(0,p.normalize)(t);return it(e).some(e=>_e(n,e.path,{ignore:e.ignore,pattern:e.pattern}))}function at(e){return e?N(e):``}function ot(e){if(e.length<2)return e;let t=e.slice();return t[t.length-1]===t[t.length-2]&&t.pop(),t}function st(e,t,n){let{dir:r,name:i}=(0,p.parse)((0,p.relative)(t,e)),a=r&&r!==`.`?r.split(p.sep).filter(Boolean):[];(i!==`index`||a.length===0)&&a.push(i);let o=ot(a),s=n?.chain===!1?o.slice(-1):o;return`${at(n?.prefix)}${s.map(e=>N(e)).join(``)}`}function ct(e){let t=new Set;L.lastIndex=0;let n=L.exec(e);for(;n;)t.add(n[1]),n=L.exec(e);return t}function lt(e){return e.includes(`-`)?N(e):e}function ut(e){return{componentName:e.name,exportName:e.export||`default`,filePath:e.from,importPath:e.from}}function dt(e){return(Array.isArray(e)?e:[e]).map(e=>typeof e==`string`?{chain:!0,ignore:[],importBase:void 0,pattern:et,path:(0,p.normalize)((0,p.resolve)(e)),prefix:void 0}:{chain:e.chain??!0,ignore:e.ignore,importBase:e.importBase,pattern:e.pattern||et,path:(0,p.normalize)((0,p.resolve)(e.path)),prefix:e.prefix})}function ft(e){return JSON.stringify({chain:e.chain,ignore:D(e.ignore),importBase:e.importBase,path:e.path,pattern:D(e.pattern),prefix:e.prefix})}function pt(e){let t=e.importPath||e.filePath;return e.exportName===`default`?`import ${e.componentName} from '${t}'`:e.exportName===e.componentName?`import { ${e.componentName} } from '${t}'`:`import { ${e.exportName} as ${e.componentName} } from '${t}'`}function mt(e,t){let n=M(t,e.importPath||e.filePath);return` ${e.componentName}: typeof import('${n}')['${e.exportName}'];`}var ht=class{constructor(e,t){this._config=e,this.autoComponents=[],this.registeredComponents=[],this.componentSources=[],this.autoComponentMap=new Map,this.oiyoState=t.oiyoState,this.logger=t.logger.withScope(`AUTO_COMPONENT`),this.registerConfigScanners()}get stateDir(){return this.oiyoState.stateDir}get typesDir(){return this.oiyoState.typesDir}get declarationPath(){return(0,p.resolve)(this.typesDir,`components.d.ts`)}isAutoComponentPath(e){let t=(0,p.normalize)(e);return this.componentSources.some(e=>_e(t,e.path,{ignore:e.ignore,pattern:e.pattern}))}registerComponent(e){this.registeredComponents.push(ut(e))}registerComponents(e){for(let t of dt(e)){let e=ft(t);this.componentSources.some(t=>ft(t)===e)||this.componentSources.push(t)}}registerConfigScanners(){for(let e of this._config.scan?.components||[]){if(!nt(e)){this.registerComponents(rt(this._config,e));continue}for(let t of e.only){let{localName:n,sourceName:r}=tt(t);this.registerComponent({export:r,from:e.from,name:e.prefix?`${N(e.prefix)}${n}`:n})}}}setResolvedComponent(e,t){let n=this.autoComponentMap.get(e.componentName);return n?(n.filePath===e.filePath&&n.exportName===e.exportName||this.logger.warn(`组件名称冲突: ${e.componentName} 已存在,已跳过 ${e.filePath}`),!1):(this.autoComponentMap.set(e.componentName,e),t?.trackScanned&&this.autoComponents.push(e),!0)}async collectComponents(){this.autoComponents=[],this.autoComponentMap.clear(),this.registeredComponents.forEach(e=>this.setResolvedComponent(e));for(let e of this.componentSources)(await O({dir:e.path,ignore:e.ignore,pattern:e.pattern})).forEach(t=>{let n=e.path===t?(0,p.dirname)(t):e.path;this.setResolvedComponent({componentName:st(t,n,{chain:e.chain,prefix:e.prefix}),exportName:`default`,filePath:t,importPath:xe(t,e.path,e.importBase)},{trackScanned:!0})});return this.autoComponents}resolveComponentImports(e,t){if(!e||this.autoComponentMap.size===0)return[];let n=[],r=new Set,i=t?(0,p.normalize)(t):void 0;for(let t of ct(e)){let e=lt(t),a=this.autoComponentMap.get(e);a&&(i&&a.filePath===i||r.has(e)||(r.add(e),n.push(pt(a))))}return n}resolveComponentImport(e,t){let n=this.autoComponentMap.get(e);if(!n)return;let r=t?(0,p.normalize)(t):void 0;if(!(r&&n.filePath===r))return pt(n)}generateDeclaration(){return[`// Generated by oiyo`,`declare module 'vue' {`,` export interface GlobalComponents {`,...Array.from(this.autoComponentMap.values()).sort((e,t)=>e.componentName.localeCompare(t.componentName)).map(e=>mt(e,this.typesDir)),` }`,`}`,``,`export {}`,``].join(`
|
|
11
|
+
`)}writeDeclaration(){return(0,d.mkdirSync)(this.typesDir,{recursive:!0}),A(this.declarationPath,this.generateDeclaration()),this.oiyoState.ensureDeclarationEntry(),this.declarationPath}};function gt(e){return e.includes(`<OiyoLayout`)||e.includes(`<oiyo-layout`)}function _t(e){let t=e;return t=t.replace(/<OiyoLayout[^>]*?\/>/g,``),t=t.replace(/<OiyoLayout[^>]*>/g,``),t=t.replace(/<\/OiyoLayout>/g,``),t=t.replace(/<oiyo-layout[^>]*?\/>/g,``),t=t.replace(/<oiyo-layout[^>]*>/g,``),t=t.replace(/<\/oiyo-layout>/g,``),t}function vt(e,t){let n=e;return n=n.replace(/<OiyoLayout[^>]*?\/>/g,``),n=n.replace(/<OiyoLayout[^>]*>/g,`<${t}>`),n=n.replace(/<\/OiyoLayout>/g,`</${t}>`),n=n.replace(/<oiyo-layout[^>]*?\/>/g,``),n=n.replace(/<oiyo-layout[^>]*>/g,`<${t}>`),n=n.replace(/<\/oiyo-layout>/g,`</${t}>`),n}function yt(e,t){let{dir:n,name:r}=(0,p.parse)((0,p.relative)(t,e));return(n&&n!==`.`?[...n.split(p.sep),r]:[r]).map(e=>Se(e)).join(`-`)}function bt(e){return`OiyoLayout${e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}`}const xt=(0,ne.defineComponent)({name:`OiyoLayout`,setup(e,t){return()=>t.slots.default?.()}});var St=class{constructor(e,t){this.config=e,this.layoutFiles=[],this.logger=t.logger.withScope(`LAYOUT`),this.oiyoState=t.oiyoState}get srcDir(){return(0,p.resolve)(this.config.rootDir,this.config.srcDir)}get layoutDir(){return(0,p.resolve)(this.srcDir,this.config.dir?.layouts||`layouts`)}get stateDir(){return this.oiyoState.stateDir}get typesDir(){return this.oiyoState.typesDir}get declarationPath(){return(0,p.resolve)(this.typesDir,`layouts.d.ts`)}isLayoutPath(e){let t=(0,p.normalize)(e);return!t.endsWith(`.vue`)&&!t.endsWith(`.nvue`)||[...v.DEFAULT_EXCLUDE,...this.config.exclude||[]].some(e=>(0,p.matchesGlob)(t,e))||R(this.config,t)?!1:t.startsWith(`${this.layoutDir}/`)}setLayout(e){if(this.layoutFiles.findIndex(({filePath:t})=>t===e)!==-1)return!1;let t=yt(e,this.layoutDir),n=bt(t);return this.layoutFiles.push({useName:t,componentName:n,filePath:e}),!0}async registerLayouts(){let e=await O({dir:this.layoutDir,pattern:[`**/*.vue`,`**/*.nvue`]});return this.layoutFiles=[],e.filter(e=>this.isLayoutPath(e)).map(e=>this.setLayout(e)),this.layoutFiles}generateDeclaration(){return[`// Generated by oiyo`,``,`declare module '@skiyee/oiyo/api' {`,` interface OiyoLayouts {`,...this.layoutFiles.slice().sort((e,t)=>e.useName.localeCompare(t.useName)).map(({useName:e,filePath:t})=>` '${e}': typeof import('${ve(this.typesDir,t)}')['default'];`),` }`,``,` type LayoutKey = keyof OiyoLayouts extends never ? string : keyof OiyoLayouts;`,``,` interface PageMeta {`,` layout?: LayoutKey | false;`,` }`,`}`,``,`export {}`,``].join(`
|
|
12
|
+
`)}writeDeclaration(){return(0,d.mkdirSync)(this.typesDir,{recursive:!0}),A(this.declarationPath,this.generateDeclaration()),this.oiyoState.ensureDeclarationEntry(),this.declarationPath}applyLayout(e,t){if(!gt(t))return{template:t,script:``,imports:[]};if(e===!1)return{template:_t(t),script:``,imports:[]};e===void 0&&(e=`default`);let n=this.layoutFiles.find(t=>t.useName===e);return n?{template:vt(t,n.componentName),script:``,imports:[`import ${n.componentName} from '${n.filePath}'`]}:(this.logger.error(`未找到布局 "${e}",请检查布局名称或文件位置是否正确`),{template:t,script:``,imports:[]})}};function Ct(e){if(!e||!e.includes(`import`))return[];let t=(0,h.parse)(e,{sourceType:`module`,plugins:[`typescript`]}),n=[];return E(t,{ImportDeclaration(t){let r=e.substring(t.node.start,t.node.end);n.push(r)}}),n}function wt(e){if(!e||!e.includes(`import`))return new Set;let t=(0,h.parse)(e,{sourceType:`module`,plugins:[`typescript`]}),n=new Set;return E(t,{ImportDeclaration(e){for(let t of e.node.specifiers)n.add(t.local.name)}}),n}function Tt(e){if(!e||!e.includes(`import`))return e;let t=(0,h.parse)(e,{sourceType:`module`,plugins:[`typescript`]}),n=[];E(t,{ImportDeclaration(e){n.push({start:e.node.start,end:e.node.end})}}),n.sort((e,t)=>t.start-e.start);let r=e;for(let e of n)r=r.substring(0,e.start)+r.substring(e.end);return r.trim()}function z(e,t){let n=Et(t),r=Et(e);for(let[e,t]of r){let r=n.get(e);r?Dt(r,t):n.set(e,t)}return Ot(n)}function Et(e){let t=new Map;for(let n of e)E((0,h.parse)(n,{sourceType:`module`,plugins:[`typescript`]}),{ImportDeclaration(e){let{node:r}=e,i=r.source.value,a=t.get(i);a||(a={source:i,named:new Set,original:n},t.set(i,a));for(let e of r.specifiers)if(e.type===`ImportSpecifier`){let t=e.imported.type===`Identifier`?e.imported.name:e.imported.value;a.named.add(t)}else e.type===`ImportDefaultSpecifier`?a.defaultImport=e.local.name:e.type===`ImportNamespaceSpecifier`&&(a.namespaceImport=e.local.name)}});return t}function Dt(e,t){for(let n of t.named)e.named.add(n);!e.defaultImport&&t.defaultImport&&(e.defaultImport=t.defaultImport),!e.namespaceImport&&t.namespaceImport&&(e.namespaceImport=t.namespaceImport)}function Ot(e){let t=[];for(let[n,r]of e){if(n.includes(`_fallback_`)){t.push(r.original);continue}let e=[];if(r.defaultImport&&e.push(r.defaultImport),r.namespaceImport&&e.push(`* as ${r.namespaceImport}`),r.named.size>0){let t=Array.from(r.named).sort();e.push(`{ ${t.join(`, `)} }`)}e.length>0?t.push(`import ${e.join(`, `)} from '${n}'`):t.push(`import '${n}'`)}return t}function kt(e){if(!e.includes(`defineRootContext`))return``;let{descriptor:t}=(0,_.parse)(e);if(!t.scriptSetup)return``;let n=e=t.scriptSetup.content,r=At(n);return n.substring(r.start,r.end+1).trim()}function At(e){return Ce(e,`defineRootContext`)}function jt(e){if(!e.includes(`<template`))return``;let{descriptor:t}=(0,_.parse)(e);return(t.template?.content||``).trim()}function Mt(e,t){let n=e.replace(/\{\{([\s\S]*?)\}\}/g,(e,n)=>e.replace(n,Nt(n,t)));return n=n.replace(/((?:v-(?!for\b)[\w-]+(?::[\w-]+)?|[:@][\w-]+)\s*=\s*)(["'])([\s\S]*?)\2/g,(e,n,r,i)=>`${n}${r}${Nt(i,t)}${r}`),n}function Nt(e,t){let n=new Map;t.varName&&n.set(t.varName,`$oiyoRootContext`);for(let{local:e,original:r}of t.varProperties||[])n.set(e,`$oiyoRootContext.${r}`);if(n.size===0)return e;try{let t=(0,h.parse)(`(${e})`,{sourceType:`module`,plugins:[`typescript`]}),r=new y.default(e);return E(t,{Identifier(e){if(!e.isReferencedIdentifier())return;let t=n.get(e.node.name);if(!t)return;let i=e.node.start,a=e.node.end;if(!(i==null||a==null)){if(e.parentPath.isObjectProperty()&&e.parent.shorthand&&e.parent.value===e.node){r.overwrite(i-1,a-1,`${e.node.name}: ${t}`);return}r.overwrite(i-1,a-1,t)}}}),r.toString()}catch{return e}}function Pt(e,t){if(!e)throw Error(`[oiyo] App.vue 必须包含 <template> 节点`);let n=e.content;if(!(n.includes(`<OiyoPage`)||n.includes(`<oiyo-page`)))throw Error(`[oiyo] App.vue 的 template 必须包含 <OiyoPage /> 或 <oiyo-page /> 占位节点`);return n=Mt(n,t),n.trim()}function Ft(e){if(!e)return;let t=e?.content;if(t){let e=It(t);return e.script?e:void 0}}function It(e){let t=(0,h.parse)(e,{sourceType:`module`,plugins:[`typescript`]}),n={};return E(t,{ImportDeclaration(t){let r=e.substring(t.node.start,t.node.end);n.imports??=[],n.imports.push(r)},CallExpression(t){let{callee:r,arguments:i}=t.node;if(r.type===`Identifier`&&r.name===`defineRootContext`&&i.length>0){let r=i[0];r.start!=null&&r.end!=null&&(n.script=e.substring(r.start,r.end));let a=t.findParent(e=>e.isVariableDeclarator());if(a&&a.isVariableDeclarator()){let e=a.node.id;e.type===`Identifier`?n.variable=e.name:e.type===`ObjectPattern`&&(n.properties=e.properties.filter(e=>e.type===`ObjectProperty`).map(e=>({original:e.key.type===`Identifier`?e.key.name:String(e.key.value),local:e.value.type===`Identifier`?e.value.name:e.key.name})))}}}}),n}function Lt(e,t){let n=e;return n=n.replace(/<OiyoPage[^>]*?\/>/g,t),n=n.replace(/<OiyoPage[^>]*>\s*<\/OiyoPage>/g,t),n=n.replace(/<oiyo-page[^>]*?\/>/g,t),n=n.replace(/<oiyo-page[^>]*>\s*<\/oiyo-page>/g,t),n}const Rt=`virtual:oiyo-root-context`,B=`\0${Rt}`;function zt(e){let{script:t,imports:n}=e,r=[];return n?.length&&(r.push(...n),r.push(``)),t?(r.push(`let rootContextInstance = null`),r.push(``),r.push(`export function useRootContext() {`),r.push(`if (!rootContextInstance) {`),r.push(`const factory = ${t}`),r.push(`rootContextInstance = factory()`),r.push(`}`),r.push(`return rootContextInstance`),r.push(`}`)):(r.push(`export function useRootContext() {`),r.push(`return {}`),r.push(`}`)),r.join(`
|
|
13
|
+
`)}const Bt=e=>e();var Vt=class{constructor(e,t){this.config=e,this.rootView={imports:[],template:`<OiyoPage />`,script:``},this.shouldRefreshVM=e=>{let t=``;this.rootMarco&&(t=k(we(`defineRootContext(${this.rootMarco.script})`)));let n=k(we(kt(e)));return t!==n},this.logger=t.logger.withScope(`ROOT`),this.oiyoAutoApi=t.oiyoAutoApi}get srcDir(){return(0,p.resolve)(this.config.rootDir,this.config.srcDir)}get rootPath(){return(0,p.resolve)(this.srcDir,`App.vue`)}isRootPath(e){return e===this.rootPath}parseRoot(e){let{descriptor:t}=(0,_.parse)(e),n=Ft(t.scriptSetup);if(n?.script&&t.scriptSetup?.content&&this.oiyoAutoApi){let e=this.oiyoAutoApi.collectBoundNames(t.scriptSetup.content),r=this.oiyoAutoApi.resolveImports(n.script,{boundNames:e});r.length>0&&(n.imports=z(r,n.imports||[]))}return this.rootView={template:Pt(t.template,{varName:n?.variable,varProperties:n?.properties}),imports:[],script:``},n&&(this.rootMarco=n,this.rootVM=zt(n),n.script&&(this.rootView.imports.push(`import { useRootContext } from 'virtual:oiyo-root-context'`),this.rootView.script=`const $oiyoRootContext = useRootContext()`)),{view:this.rootView,marco:n}}transformRoot(e){let{descriptor:t}=(0,_.parse)(e),n=new y.default(e);if(t.template){let e=t.template.loc.start.offset-10,r=t.template.loc.end.offset+11;n.remove(e,r)}if(t.scriptSetup){let e=t.scriptSetup.content,r=At(e);if(r.start!==r.end){e.includes(`virtual:oiyo-root-context`)||n.appendLeft(t.scriptSetup.loc.start.offset,`
|
|
14
|
+
import { useRootContext } from 'virtual:oiyo-root-context'
|
|
15
|
+
`);let i=t.scriptSetup.loc.start.offset+r.start,a=t.scriptSetup.loc.start.offset+r.end;i!==a&&n.overwrite(i,a,`useRootContext()`)}}return{code:n.toString(),sourceMap:n.generateMap()}}shouldRefreshView(e){return k(this.rootView.template)!==k(jt(e))}applyRoot(e){let t=[],n=``,r=``;return e.template&&(n=Lt(this.rootView.template,e.template.content)),e.scriptSetup&&(t.push(...this.rootView.imports),r=`${this.rootView.script}\n${e.scriptSetup.content}`),{imports:t,script:r,template:n}}};function Ht(e,t){if(!e.includes(`definePageMeta`))return``;if(!t){let{descriptor:t}=(0,_.parse)(e);if(!t.scriptSetup)return``;e=t.scriptSetup.content}let n=Ut(e);return e.substring(n.start,n.end+1).trim()}function Ut(e){return Ce(e,`definePageMeta`)}function Wt(e){return e.replace(/definePageMeta\s*\(\s*\{[\s\S]*?\}\s*\)/g,``).trim()}function Gt(e){let t=(0,h.parse)(e,{sourceType:`module`,plugins:[`typescript`]}),n={};return E(t,{CallExpression(e){let{callee:t,arguments:r}=e.node;if(t.type===`Identifier`&&t.name===`definePageMeta`&&r.length>0){let t=r[0];t.type===`ObjectExpression`&&(n=Kt(t),e.stop())}}}),n}function Kt(e){let t={};for(let n of e.properties)if(n.type===`ObjectProperty`){let e=qt(n.key),r=Jt(n.value);e&&(t[e]=r)}return t}function qt(e){return e.type===`Identifier`?e.name:e.type===`StringLiteral`?e.value:null}function Jt(e){switch(e.type){case`StringLiteral`:return e.value;case`NumericLiteral`:return e.value;case`BooleanLiteral`:return e.value;case`NullLiteral`:return null;case`ArrayExpression`:return e.elements.map(e=>Jt(e)).filter(e=>e!==void 0);case`ObjectExpression`:return Kt(e);default:return}}function Yt(e){return`'${e.startsWith(`/`)?e:`/${e}`}'`}function Xt(e){let t=new Set;for(let n of e.pages||[])t.add(Yt(n.path));for(let n of e.subPackages||[])for(let e of n.pages||[])t.add(Yt((0,p.join)(n.root,e.path)));return Array.from(t).sort()}function Zt(e){let t=new Set;for(let n of e.tabBar?.list||[])t.add(Yt(n.pagePath));return Array.from(t).sort()}function Qt(e){return e.length>0?e.join(` |
|
|
16
|
+
`):`string`}function $t(e){let t=e.map(e=>({path:e.pagePath,belong:e.pageBelong,...e.pageMeta})),n=[],r=new Map;t.forEach(e=>{if(e.belong===`pages`)n.push(e);else{let t=r.get(e.belong)||[];t.push(e),r.set(e.belong,t)}}),n.sort((e,t)=>{let r=n.find(t=>t.path===e.path)?.type===`home`,i=n.find(e=>e.path===t.path)?.type===`home`;return r&&!i?-1:!r&&i?1:e.path.localeCompare(t.path)});let i={pages:n.map(e=>{let{belong:t,...n}=e;return n})};return r.size>0&&(i.subPackages=Array.from(r.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({root:e,pages:t.sort((e,t)=>e.path.localeCompare(t.path)).map(e=>{let{belong:t,...n}=e;return n})}))),i}function en(e){let t=Xt(e),n=Zt(e);return[`/* eslint-disable */`,`// Generated by oiyo`,``,`interface NavigateToOptions {`,` url: ${Qt(t)};`,`}`,`interface RedirectToOptions extends NavigateToOptions {}`,``,`interface SwitchTabOptions {`,n.length>0?` url: ${n.join(` |
|
|
17
|
+
`)};`:``,`}`,``,`type ReLaunchOptions = NavigateToOptions | SwitchTabOptions;`,``,`declare global {`,` interface Uni {`,` navigateTo(options: UniNamespace.NavigateToOptions & NavigateToOptions): void;`,` redirectTo(options: UniNamespace.RedirectToOptions & RedirectToOptions): void;`,` switchTab(options: UniNamespace.SwitchTabOptions & SwitchTabOptions): void;`,` reLaunch(options: UniNamespace.ReLaunchOptions & ReLaunchOptions): void;`,` }`,`}`,``,`export {}`,``].join(`
|
|
18
|
+
`)}const tn=e=>{},nn=(0,ne.defineComponent)({name:`OiyoPage`});var rn=class{constructor(e,t){this.pageFiles=[],this.pagesConfig={},this.config=e,this.logger=t.logger.withScope(`ROUTE`),this.oiyoState=t.oiyoState,this.oiyoRoot=t.oiyoRoot,this.oiyoLayout=t.oiyoLayout}get srcDir(){return(0,p.resolve)(this.config.rootDir,this.config.srcDir)}get mainPageDir(){return(0,p.resolve)(this.srcDir,this.config.dir.mainPackage)}get subPageDirs(){return this.config.dir.subPackages.map(e=>(0,p.resolve)(this.srcDir,e))}get pagesJsonPath(){return(0,p.resolve)(this.srcDir,`pages.json`)}get stateDir(){return this.oiyoState.stateDir}get typesDir(){return this.oiyoState.typesDir}get declarationPath(){return(0,p.resolve)(this.typesDir,`pages.d.ts`)}resolvePagesJson(e){return(0,re.defu)($t(this.pageFiles),e||this.pagesConfig)}async loadPagesConfig(){try{let{config:e,configFile:t}=await(0,b.loadConfig)({name:`pages`,cwd:this.srcDir});this.pagesConfig=e||{}}catch{this.pagesConfig={},this.logger.warn(`加载 pages 配置失败,已采用空配置`)}return this.pagesConfig}async watchPagesConfig(e){if(this.pagesConfigWatcher)return;let t=await(0,b.watchConfig)({name:`pages`,cwd:this.srcDir,acceptHMR({getDiff:e}){return e().length===0},onWatch:e=>{},onUpdate:({newConfig:t})=>{this.pagesConfig=t.config||{},this.writePagesJson(),e&&Promise.resolve(e()).catch(e=>{this.logger.error(`pages 配置更新回调失败,页面配置已更新但后续回调未完成`,{error:e})})}});this.pagesConfig=t.config||this.pagesConfig,this.pagesConfigWatcher=t}async unwatchPagesConfig(){this.pagesConfigWatcher&&=(await this.pagesConfigWatcher.unwatch(),void 0)}isPagePath(e){let t=(0,p.normalize)(e);return!t.endsWith(`.vue`)&&!t.endsWith(`.nvue`)||[...v.DEFAULT_EXCLUDE,...this.config.exclude||[]].some(e=>(0,p.matchesGlob)(t,e))||R(this.config,t)?!1:[this.mainPageDir,...this.subPageDirs].some(e=>t.startsWith(`${e}/`))}toPageFile(e,t){let n=!0,r=this.mainPageDir,i=this.subPageDirs.find(t=>e.startsWith(`${t}/`));i&&(n=!1);let a=(0,p.parse)((0,p.relative)(n?this.srcDir:i,e)),o=a.dir===``?a.name:(0,p.join)(a.dir,a.name),s=n?r:i;return{filePath:e,pagePath:o,pageBelong:(0,p.relative)(this.srcDir,s),pageMeta:t}}setPageFile(e){let t=this.pageFiles.findIndex(({pagePath:t,pageBelong:n})=>t===e.pagePath&&n===e.pageBelong);if(t===-1)return this.pageFiles.push(e),!0;let n=this.pageFiles[t],r=JSON.stringify(n.pageMeta)!==JSON.stringify(e.pageMeta);return r&&(this.pageFiles[t]=e),r}async loadPagesJson(){try{let e=await(0,f.readFile)(this.pagesJsonPath,`utf-8`),t=JSON.parse(e);for(let e of t.pages||[]){let{path:t,...n}=e,r=(0,p.resolve)(this.srcDir,e.path),i=this.toPageFile(r,n);this.setPageFile(i)}for(let e of t.subPackages||[]){let t=e.root;for(let n of e.pages||[]){let{path:e,...r}=n,i=(0,p.resolve)(this.srcDir,t,n.path);this.setPageFile(this.toPageFile(i,r))}}}catch(e){this.logger.error(`加载 pages.json 失败,已跳过现有文件内容,请检查 pages.json 是否存在且格式正确:`,{error:e})}}writePagesJson(e){try{let t=this.resolvePagesJson(e),n=`${JSON.stringify(t,null,2)}\n`;A(this.pagesJsonPath,n),this.writeDeclaration(e)}catch(e){this.logger.error(`写入 pages.json 失败,请检查目标文件权限和内容格式:`,{error:e})}}generateDeclaration(e){return en(this.resolvePagesJson(e))}writeDeclaration(e){try{(0,d.mkdirSync)(this.typesDir,{recursive:!0}),A(this.declarationPath,this.generateDeclaration(e)),this.oiyoState.ensureDeclarationEntry()}catch(e){this.logger.error(`写入 pages.d.ts 失败,请检查目标文件权限和内容格式:`,{error:e})}return this.declarationPath}async registerPages(){let e=[this.mainPageDir,...this.subPageDirs],t=(await Promise.all(e.map(e=>O({dir:e,pattern:[`**/*.vue`,`**/*.nvue`]})))).flat(2).filter(e=>this.isPagePath(e));for(let e of t){let t=await(0,f.readFile)(e,`utf-8`),n={},r=Ht(t);r&&(n=Gt(r)),this.setPageFile(this.toPageFile(e,n))}return this.pageFiles}async tryUpdatePage(e,t){let n=Gt(e);this.setPageFile(this.toPageFile(t,n))&&(this.writePagesJson(),await new Promise(e=>setTimeout(e,100)))}async transformPage(e,t){if(!this.oiyoRoot||!this.oiyoLayout)throw Error(`[oiyo] Dependencies are missing; please contact skiyee(319619193@qq.com) to fix them.`);let{descriptor:n}=(0,_.parse)(e),r=new y.default(e);if(!n.template?.content)return{code:r.toString(),sourceMap:r.generateMap()};n.scriptSetup&&await this.tryUpdatePage(n.scriptSetup.content,t);let i=this.oiyoRoot.applyRoot(n),a=[...i.imports],o=i.template,s=i.script,c={};n.scriptSetup&&(c=this.pageFiles.find(e=>t.startsWith(e.filePath))?.pageMeta||{},s=Wt(s));let l=this.oiyoLayout.applyLayout(c.layout,o);if(o=l.template,a.push(...l.imports),r.overwrite(n.template.loc.start.offset,n.template.loc.end.offset,o),n.scriptSetup){let e=Ct(n.scriptSetup.content);a=z(a,e),s=Tt(s),r.overwrite(n.scriptSetup.loc.start.offset,n.scriptSetup.loc.end.offset,`${a.join(`
|
|
9
19
|
`)}\n${s}`)}else if(s||a.length>0){let e=[`<script setup>`,...a,s,`<\/script>`].filter(Boolean).join(`
|
|
10
|
-
`);r.appendRight(n.template.loc.end.offset+11,`\n\n${e}`)}return{code:r.toString(),sourceMap:r.generateMap()}}};const N={FILE_TYPE:`files`,DIR_TYPE:`directories`,FILE_DIR_TYPE:`files_directories`,EVERYTHING_TYPE:`all`},P={root:`.`,fileFilter:e=>!0,directoryFilter:e=>!0,type:N.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(P);const Ne=`READDIRP_RECURSIVE_ERROR`,Pe=new Set([`ENOENT`,`EPERM`,`EACCES`,`ELOOP`,Ne]),F=[N.DIR_TYPE,N.EVERYTHING_TYPE,N.FILE_DIR_TYPE,N.FILE_TYPE],Fe=new Set([N.DIR_TYPE,N.EVERYTHING_TYPE,N.FILE_DIR_TYPE]),Ie=new Set([N.EVERYTHING_TYPE,N.FILE_DIR_TYPE,N.FILE_TYPE]),Le=e=>Pe.has(e.code),Re=process.platform===`win32`,I=e=>!0,L=e=>{if(e===void 0)return I;if(typeof e==`function`)return e;if(typeof e==`string`){let t=e.trim();return e=>e.basename===t}if(Array.isArray(e)){let t=e.map(e=>e.trim());return e=>t.some(t=>e.basename===t)}return I};var ze=class extends ne.Readable{constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let t={...P,...e},{root:n,type:r}=t;this._fileFilter=L(t.fileFilter),this._directoryFilter=L(t.directoryFilter);let i=t.lstat?v.lstat:v.stat;Re?this._stat=e=>i(e,{bigint:!0}):this._stat=i,this._maxDepth=t.depth??P.depth,this._wantsDir=r?Fe.has(r):!1,this._wantsFile=r?Ie.has(r):!1,this._wantsEverything=r===N.EVERYTHING_TYPE,this._root=(0,T.resolve)(n),this._isDirent=!t.alwaysStat,this._statsProp=this._isDirent?`dirent`:`stats`,this._rdOptions={encoding:`utf8`,withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(e){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&e>0;){let t=this.parent,n=t&&t.files;if(n&&n.length>0){let{path:r,depth:i}=t,a=n.splice(0,e).map(e=>this._formatEntry(e,r)),o=await Promise.all(a);for(let t of o){if(!t)continue;if(this.destroyed)return;let n=await this._getEntryType(t);n===`directory`&&this._directoryFilter(t)?(i<=this._maxDepth&&this.parents.push(this._exploreDir(t.fullPath,i+1)),this._wantsDir&&(this.push(t),e--)):(n===`file`||this._includeAsFile(t))&&this._fileFilter(t)&&this._wantsFile&&(this.push(t),e--)}}else{let e=this.parents.pop();if(!e){this.push(null);break}if(this.parent=await e,this.destroyed)return}}}catch(e){this.destroy(e)}finally{this.reading=!1}}}async _exploreDir(e,t){let n;try{n=await(0,v.readdir)(e,this._rdOptions)}catch(e){this._onError(e)}return{files:n,depth:t,path:e}}async _formatEntry(e,t){let n,r=this._isDirent?e.name:e;try{let i=(0,T.resolve)((0,T.join)(t,r));n={path:(0,T.relative)(this._root,i),fullPath:i,basename:r},n[this._statsProp]=this._isDirent?e:await this._stat(i)}catch(e){this._onError(e);return}return n}_onError(e){Le(e)&&!this.destroyed?this.emit(`warn`,e):this.destroy(e)}async _getEntryType(e){if(!e&&this._statsProp in e)return``;let t=e[this._statsProp];if(t.isFile())return`file`;if(t.isDirectory())return`directory`;if(t&&t.isSymbolicLink()){let t=e.fullPath;try{let e=await(0,v.realpath)(t),n=await(0,v.lstat)(e);if(n.isFile())return`file`;if(n.isDirectory()){let n=e.length;if(t.startsWith(e)&&t.substr(n,1)===T.sep){let n=Error(`Circular symlink detected: "${t}" points to "${e}"`);return n.code=Ne,this._onError(n)}return`directory`}}catch(e){return this._onError(e),``}}}_includeAsFile(e){let t=e&&e[this._statsProp];return t&&this._wantsEverything&&!t.isDirectory()}};function Be(e,t={}){let n=t.entryType||t.type;if(n===`both`&&(n=N.FILE_DIR_TYPE),n&&(t.type=n),!e)throw Error(`readdirp: root argument is required. Usage: readdirp(root, options)`);if(typeof e!=`string`)throw TypeError(`readdirp: root argument must be a string. Usage: readdirp(root, options)`);if(n&&!F.includes(n))throw Error(`readdirp: Invalid type passed. Use one of ${F.join(`, `)}`);return t.root=e,new ze(t)}const R=()=>{},z=process.platform,Ve=z===`win32`,He=z===`darwin`,Ue=z===`linux`,We=z===`freebsd`,Ge=(0,re.type)()===`OS400`,B={ALL:`all`,READY:`ready`,ADD:`add`,CHANGE:`change`,ADD_DIR:`addDir`,UNLINK:`unlink`,UNLINK_DIR:`unlinkDir`,RAW:`raw`,ERROR:`error`},V=B,Ke={lstat:C.lstat,stat:C.stat},H=`listeners`,U=`errHandlers`,W=`rawEmitters`,qe=[H,U,W],Je=new Set(`3dm.3ds.3g2.3gp.7z.a.aac.adp.afdesign.afphoto.afpub.ai.aif.aiff.alz.ape.apk.appimage.ar.arj.asf.au.avi.bak.baml.bh.bin.bk.bmp.btif.bz2.bzip2.cab.caf.cgm.class.cmx.cpio.cr2.cur.dat.dcm.deb.dex.djvu.dll.dmg.dng.doc.docm.docx.dot.dotm.dra.DS_Store.dsk.dts.dtshd.dvb.dwg.dxf.ecelp4800.ecelp7470.ecelp9600.egg.eol.eot.epub.exe.f4v.fbs.fh.fla.flac.flatpak.fli.flv.fpx.fst.fvt.g3.gh.gif.graffle.gz.gzip.h261.h263.h264.icns.ico.ief.img.ipa.iso.jar.jpeg.jpg.jpgv.jpm.jxr.key.ktx.lha.lib.lvp.lz.lzh.lzma.lzo.m3u.m4a.m4v.mar.mdi.mht.mid.midi.mj2.mka.mkv.mmr.mng.mobi.mov.movie.mp3.mp4.mp4a.mpeg.mpg.mpga.mxu.nef.npx.numbers.nupkg.o.odp.ods.odt.oga.ogg.ogv.otf.ott.pages.pbm.pcx.pdb.pdf.pea.pgm.pic.png.pnm.pot.potm.potx.ppa.ppam.ppm.pps.ppsm.ppsx.ppt.pptm.pptx.psd.pya.pyc.pyo.pyv.qt.rar.ras.raw.resources.rgb.rip.rlc.rmf.rmvb.rpm.rtf.rz.s3m.s7z.scpt.sgi.shar.snap.sil.sketch.slk.smv.snk.so.stl.suo.sub.swf.tar.tbz.tbz2.tga.tgz.thmx.tif.tiff.tlz.ttc.ttf.txz.udf.uvh.uvi.uvm.uvp.uvs.uvu.viv.vob.war.wav.wax.wbmp.wdp.weba.webm.webp.whl.wim.wm.wma.wmv.wmx.woff.woff2.wrm.wvx.xbm.xif.xla.xlam.xls.xlsb.xlsm.xlsx.xlt.xltm.xltx.xm.xmind.xpi.xpm.xwd.xz.z.zip.zipx`.split(`.`)),Ye=e=>Je.has(w.extname(e).slice(1).toLowerCase()),G=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},K=(e,t,n)=>{let r=e[t];r instanceof Set||(e[t]=r=new Set([r])),r.add(n)},Xe=e=>t=>{let n=e[t];n instanceof Set?n.clear():delete e[t]},q=(e,t,n)=>{let r=e[t];r instanceof Set?r.delete(n):r===n&&delete e[t]},Ze=e=>e instanceof Set?e.size===0:!e,J=new Map;function Qe(e,t,n,r,i){let a=(t,r)=>{n(e),i(t,r,{watchedPath:e}),r&&e!==r&&Y(w.resolve(e,r),H,w.join(e,r))};try{return(0,S.watch)(e,{persistent:t.persistent},a)}catch(e){r(e);return}}const Y=(e,t,n,r,i)=>{let a=J.get(e);a&&G(a[t],e=>{e(n,r,i)})},$e=(e,t,n,r)=>{let{listener:i,errHandler:a,rawEmitter:o}=r,s=J.get(t),c;if(!n.persistent)return c=Qe(e,n,i,a,o),c?c.close.bind(c):void 0;if(s)K(s,H,i),K(s,U,a),K(s,W,o);else{if(c=Qe(e,n,Y.bind(null,t,H),a,Y.bind(null,t,W)),!c)return;c.on(V.ERROR,async n=>{let r=Y.bind(null,t,U);if(s&&(s.watcherUnusable=!0),Ve&&n.code===`EPERM`)try{await(await(0,C.open)(e,`r`)).close(),r(n)}catch{}else r(n)}),s={listeners:i,errHandlers:a,rawEmitters:o,watcher:c},J.set(t,s)}return()=>{q(s,H,i),q(s,U,a),q(s,W,o),Ze(s.listeners)&&(s.watcher.close(),J.delete(t),qe.forEach(Xe(s)),s.watcher=void 0,Object.freeze(s))}},X=new Map,et=(e,t,n,r)=>{let{listener:i,rawEmitter:a}=r,o=X.get(t),s=o&&o.options;return s&&(s.persistent<n.persistent||s.interval>n.interval)&&((0,S.unwatchFile)(t),o=void 0),o?(K(o,H,i),K(o,W,a)):(o={listeners:i,rawEmitters:a,options:n,watcher:(0,S.watchFile)(t,n,(n,r)=>{G(o.rawEmitters,e=>{e(V.CHANGE,t,{curr:n,prev:r})});let i=n.mtimeMs;(n.size!==r.size||i>r.mtimeMs||i===0)&&G(o.listeners,t=>t(e,n))})},X.set(t,o)),()=>{q(o,H,i),q(o,W,a),Ze(o.listeners)&&(X.delete(t),(0,S.unwatchFile)(t),o.options=o.watcher=void 0,Object.freeze(o))}};var tt=class{constructor(e){this.fsw=e,this._boundHandleError=t=>e._handleError(t)}_watchWithNodeFs(e,t){let n=this.fsw.options,r=w.dirname(e),i=w.basename(e);this.fsw._getWatchedDir(r).add(i);let a=w.resolve(e),o={persistent:n.persistent};t||=R;let s;return n.usePolling?(o.interval=n.interval!==n.binaryInterval&&Ye(i)?n.binaryInterval:n.interval,s=et(e,a,o,{listener:t,rawEmitter:this.fsw._emitRaw})):s=$e(e,a,o,{listener:t,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw}),s}_handleFile(e,t,n){if(this.fsw.closed)return;let r=w.dirname(e),i=w.basename(e),a=this.fsw._getWatchedDir(r),o=t;if(a.has(i))return;let s=async(t,n)=>{if(this.fsw._throttle(`watch`,e,5)){if(!n||n.mtimeMs===0)try{let n=await(0,C.stat)(e);if(this.fsw.closed)return;let r=n.atimeMs,i=n.mtimeMs;if((!r||r<=i||i!==o.mtimeMs)&&this.fsw._emit(V.CHANGE,e,n),(He||Ue||We)&&o.ino!==n.ino){this.fsw._closeFile(t),o=n;let r=this._watchWithNodeFs(e,s);r&&this.fsw._addPathCloser(t,r)}else o=n}catch{this.fsw._remove(r,i)}else if(a.has(i)){let t=n.atimeMs,r=n.mtimeMs;(!t||t<=r||r!==o.mtimeMs)&&this.fsw._emit(V.CHANGE,e,n),o=n}}},c=this._watchWithNodeFs(e,s);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(e)){if(!this.fsw._throttle(V.ADD,e,0))return;this.fsw._emit(V.ADD,e,t)}return c}async _handleSymlink(e,t,n,r){if(this.fsw.closed)return;let i=e.fullPath,a=this.fsw._getWatchedDir(t);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let t;try{t=await(0,C.realpath)(n)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(i)!==t&&(this.fsw._symlinkPaths.set(i,t),this.fsw._emit(V.CHANGE,n,e.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,t),this.fsw._emit(V.ADD,n,e.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(e,t,n,r,i,a,o){if(e=w.join(e,``),o=this.fsw._throttle(`readdir`,e,1e3),!o)return;let s=this.fsw._getWatchedDir(n.path),c=new Set,l=this.fsw._readdirp(e,{fileFilter:e=>n.filterPath(e),directoryFilter:e=>n.filterDir(e)});if(l)return l.on(`data`,async o=>{if(this.fsw.closed){l=void 0;return}let u=o.path,d=w.join(e,u);if(c.add(u),!(o.stats.isSymbolicLink()&&await this._handleSymlink(o,e,d,u))){if(this.fsw.closed){l=void 0;return}(u===r||!r&&!s.has(u))&&(this.fsw._incrReadyCount(),d=w.join(i,w.relative(i,d)),this._addToNodeFs(d,t,n,a+1))}}).on(V.ERROR,this._boundHandleError),new Promise((t,u)=>{if(!l)return u();l.once(`end`,()=>{if(this.fsw.closed){l=void 0;return}let u=o?o.clear():!1;t(void 0),s.getChildren().filter(t=>t!==e&&!c.has(t)).forEach(t=>{this.fsw._remove(e,t)}),l=void 0,u&&this._handleRead(e,!1,n,r,i,a,o)})})}async _handleDir(e,t,n,r,i,a,o){let s=this.fsw._getWatchedDir(w.dirname(e)),c=s.has(w.basename(e));!(n&&this.fsw.options.ignoreInitial)&&!i&&!c&&this.fsw._emit(V.ADD_DIR,e,t),s.add(w.basename(e)),this.fsw._getWatchedDir(e);let l,u=this.fsw.options.depth;if((u==null||r<=u)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(e,n,a,i,e,r,void 0),this.fsw.closed))return;l=this._watchWithNodeFs(e,(t,n)=>{n&&n.mtimeMs===0||this._handleRead(t,!1,a,i,e,r,void 0)})}return l}async _addToNodeFs(e,t,n,r,i){let a=this.fsw._emitReady;if(this.fsw._isIgnored(e)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(e);n&&(o.filterPath=e=>n.filterPath(e),o.filterDir=e=>n.filterDir(e));try{let n=await Ke[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,n))return a(),!1;let s=this.fsw.options.followSymlinks,c;if(n.isDirectory()){let a=w.resolve(e),l=s?await(0,C.realpath)(e):e;if(this.fsw.closed||(c=await this._handleDir(o.watchPath,n,t,r,i,o,l),this.fsw.closed))return;a!==l&&l!==void 0&&this.fsw._symlinkPaths.set(a,l)}else if(n.isSymbolicLink()){let i=s?await(0,C.realpath)(e):e;if(this.fsw.closed)return;let a=w.dirname(o.watchPath);if(this.fsw._getWatchedDir(a).add(o.watchPath),this.fsw._emit(V.ADD,o.watchPath,n),c=await this._handleDir(a,n,t,r,e,o,i),this.fsw.closed)return;i!==void 0&&this.fsw._symlinkPaths.set(w.resolve(e),i)}else c=this._handleFile(o.watchPath,n,t);return a(),c&&this.fsw._addPathCloser(e,c),!1}catch(t){if(this.fsw._handleError(t))return a(),e}}};
|
|
20
|
+
`);r.appendRight(n.template.loc.end.offset+11,`\n\n${e}`)}return{code:r.toString(),sourceMap:r.generateMap()}}};function an(e){return e.endsWith(`.vue`)||e.endsWith(`.nvue`)}function on(e){return(0,p.normalize)(e.split(`?`,1)[0])}function sn(e,t){return[...e,t].filter(Boolean).join(`
|
|
21
|
+
`)}function cn(e,t,n){let r=[`<script setup>`,n,`<\/script>`].filter(Boolean).join(`
|
|
22
|
+
`);if(t.template){e.appendRight(t.template.loc.end.offset+11,`\n\n${r}`);return}e.append(`\n${r}`)}function ln(e,t,n){let r=z(n,Ct(t.content)),i=Tt(t.content);e.overwrite(t.loc.start.offset,t.loc.end.offset,sn(r,i))}function un(e){let t=new Set,n=e.matchAll(/<\/?\s*([a-z][\w-]*)\b/gi);for(let e of n){let n=e[1];t.add(n.includes(`-`)?n.split(`-`).filter(Boolean).map(e=>e[0].toUpperCase()+e.slice(1)).join(``):n)}return t}function dn(e){let t=new Set;return e.script?.content&&wt(e.script.content).forEach(e=>t.add(e)),e.scriptSetup?.content&&wt(e.scriptSetup.content).forEach(e=>t.add(e)),t}function fn(e,t,n){let{descriptor:r}=(0,_.parse)(e),i=dn(r),a=r.template?.content?Array.from(un(r.template.content)).filter(e=>!i.has(e)).map(e=>n.autoComponent.resolveComponentImport(e,t)).filter(e=>!!e):[],o=r.scriptSetup?.content?n.autoApi.resolveImports(r.scriptSetup.content,{boundNames:i}):r.script?.content?n.autoApi.resolveImports(r.script.content,{boundNames:i}):[];if(a.length===0&&o.length===0)return null;let s=new y.default(e);return r.scriptSetup?(ln(s,r.scriptSetup,[...a,...o]),{code:s.toString(),sourceMap:s.generateMap()}):r.script?(o.length>0&&ln(s,r.script,o),a.length>0&&cn(s,r,sn(a,``)),{code:s.toString(),sourceMap:s.generateMap()}):(cn(s,r,sn([...a,...o],``)),{code:s.toString(),sourceMap:s.generateMap()})}function pn(){let e;return[{name:`oiyo:auto`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`AUTO`)},transform(t,n){let r=on(n);return!an(r)||!r.startsWith(`${e.root.srcDir}/`)&&r!==e.root.rootPath?void 0:fn(t,r,e)||void 0}}]}const V={FILE_TYPE:`files`,DIR_TYPE:`directories`,FILE_DIR_TYPE:`files_directories`,EVERYTHING_TYPE:`all`},mn={root:`.`,fileFilter:e=>!0,directoryFilter:e=>!0,type:V.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(mn);const hn=`READDIRP_RECURSIVE_ERROR`,gn=new Set([`ENOENT`,`EPERM`,`EACCES`,`ELOOP`,hn]),_n=[V.DIR_TYPE,V.EVERYTHING_TYPE,V.FILE_DIR_TYPE,V.FILE_TYPE],vn=new Set([V.DIR_TYPE,V.EVERYTHING_TYPE,V.FILE_DIR_TYPE]),yn=new Set([V.EVERYTHING_TYPE,V.FILE_DIR_TYPE,V.FILE_TYPE]),bn=e=>gn.has(e.code),xn=process.platform===`win32`,Sn=e=>!0,Cn=e=>{if(e===void 0)return Sn;if(typeof e==`function`)return e;if(typeof e==`string`){let t=e.trim();return e=>e.basename===t}if(Array.isArray(e)){let t=e.map(e=>e.trim());return e=>t.some(t=>e.basename===t)}return Sn};var wn=class extends ae.Readable{constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let t={...mn,...e},{root:n,type:r}=t;this._fileFilter=Cn(t.fileFilter),this._directoryFilter=Cn(t.directoryFilter);let i=t.lstat?f.lstat:f.stat;xn?this._stat=e=>i(e,{bigint:!0}):this._stat=i,this._maxDepth=t.depth??mn.depth,this._wantsDir=r?vn.has(r):!1,this._wantsFile=r?yn.has(r):!1,this._wantsEverything=r===V.EVERYTHING_TYPE,this._root=(0,w.resolve)(n),this._isDirent=!t.alwaysStat,this._statsProp=this._isDirent?`dirent`:`stats`,this._rdOptions={encoding:`utf8`,withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(e){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&e>0;){let t=this.parent,n=t&&t.files;if(n&&n.length>0){let{path:r,depth:i}=t,a=n.splice(0,e).map(e=>this._formatEntry(e,r)),o=await Promise.all(a);for(let t of o){if(!t)continue;if(this.destroyed)return;let n=await this._getEntryType(t);n===`directory`&&this._directoryFilter(t)?(i<=this._maxDepth&&this.parents.push(this._exploreDir(t.fullPath,i+1)),this._wantsDir&&(this.push(t),e--)):(n===`file`||this._includeAsFile(t))&&this._fileFilter(t)&&this._wantsFile&&(this.push(t),e--)}}else{let e=this.parents.pop();if(!e){this.push(null);break}if(this.parent=await e,this.destroyed)return}}}catch(e){this.destroy(e)}finally{this.reading=!1}}}async _exploreDir(e,t){let n;try{n=await(0,f.readdir)(e,this._rdOptions)}catch(e){this._onError(e)}return{files:n,depth:t,path:e}}async _formatEntry(e,t){let n,r=this._isDirent?e.name:e;try{let i=(0,w.resolve)((0,w.join)(t,r));n={path:(0,w.relative)(this._root,i),fullPath:i,basename:r},n[this._statsProp]=this._isDirent?e:await this._stat(i)}catch(e){this._onError(e);return}return n}_onError(e){bn(e)&&!this.destroyed?this.emit(`warn`,e):this.destroy(e)}async _getEntryType(e){if(!e&&this._statsProp in e)return``;let t=e[this._statsProp];if(t.isFile())return`file`;if(t.isDirectory())return`directory`;if(t&&t.isSymbolicLink()){let t=e.fullPath;try{let e=await(0,f.realpath)(t),n=await(0,f.lstat)(e);if(n.isFile())return`file`;if(n.isDirectory()){let n=e.length;if(t.startsWith(e)&&t.substr(n,1)===w.sep){let n=Error(`Circular symlink detected: "${t}" points to "${e}"`);return n.code=hn,this._onError(n)}return`directory`}}catch(e){return this._onError(e),``}}}_includeAsFile(e){let t=e&&e[this._statsProp];return t&&this._wantsEverything&&!t.isDirectory()}};function Tn(e,t={}){let n=t.entryType||t.type;if(n===`both`&&(n=V.FILE_DIR_TYPE),n&&(t.type=n),!e)throw Error(`readdirp: root argument is required. Usage: readdirp(root, options)`);if(typeof e!=`string`)throw TypeError(`readdirp: root argument must be a string. Usage: readdirp(root, options)`);if(n&&!_n.includes(n))throw Error(`readdirp: Invalid type passed. Use one of ${_n.join(`, `)}`);return t.root=e,new wn(t)}const En=()=>{},H=process.platform,Dn=H===`win32`,On=H===`darwin`,kn=H===`linux`,An=H===`freebsd`,jn=(0,oe.type)()===`OS400`,U={ALL:`all`,READY:`ready`,ADD:`add`,CHANGE:`change`,ADD_DIR:`addDir`,UNLINK:`unlink`,UNLINK_DIR:`unlinkDir`,RAW:`raw`,ERROR:`error`},W=U,Mn={lstat:S.lstat,stat:S.stat},G=`listeners`,K=`errHandlers`,q=`rawEmitters`,Nn=[G,K,q],Pn=new Set(`3dm.3ds.3g2.3gp.7z.a.aac.adp.afdesign.afphoto.afpub.ai.aif.aiff.alz.ape.apk.appimage.ar.arj.asf.au.avi.bak.baml.bh.bin.bk.bmp.btif.bz2.bzip2.cab.caf.cgm.class.cmx.cpio.cr2.cur.dat.dcm.deb.dex.djvu.dll.dmg.dng.doc.docm.docx.dot.dotm.dra.DS_Store.dsk.dts.dtshd.dvb.dwg.dxf.ecelp4800.ecelp7470.ecelp9600.egg.eol.eot.epub.exe.f4v.fbs.fh.fla.flac.flatpak.fli.flv.fpx.fst.fvt.g3.gh.gif.graffle.gz.gzip.h261.h263.h264.icns.ico.ief.img.ipa.iso.jar.jpeg.jpg.jpgv.jpm.jxr.key.ktx.lha.lib.lvp.lz.lzh.lzma.lzo.m3u.m4a.m4v.mar.mdi.mht.mid.midi.mj2.mka.mkv.mmr.mng.mobi.mov.movie.mp3.mp4.mp4a.mpeg.mpg.mpga.mxu.nef.npx.numbers.nupkg.o.odp.ods.odt.oga.ogg.ogv.otf.ott.pages.pbm.pcx.pdb.pdf.pea.pgm.pic.png.pnm.pot.potm.potx.ppa.ppam.ppm.pps.ppsm.ppsx.ppt.pptm.pptx.psd.pya.pyc.pyo.pyv.qt.rar.ras.raw.resources.rgb.rip.rlc.rmf.rmvb.rpm.rtf.rz.s3m.s7z.scpt.sgi.shar.snap.sil.sketch.slk.smv.snk.so.stl.suo.sub.swf.tar.tbz.tbz2.tga.tgz.thmx.tif.tiff.tlz.ttc.ttf.txz.udf.uvh.uvi.uvm.uvp.uvs.uvu.viv.vob.war.wav.wax.wbmp.wdp.weba.webm.webp.whl.wim.wm.wma.wmv.wmx.woff.woff2.wrm.wvx.xbm.xif.xla.xlam.xls.xlsb.xlsm.xlsx.xlt.xltm.xltx.xm.xmind.xpi.xpm.xwd.xz.z.zip.zipx`.split(`.`)),Fn=e=>Pn.has(C.extname(e).slice(1).toLowerCase()),In=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},J=(e,t,n)=>{let r=e[t];r instanceof Set||(e[t]=r=new Set([r])),r.add(n)},Ln=e=>t=>{let n=e[t];n instanceof Set?n.clear():delete e[t]},Y=(e,t,n)=>{let r=e[t];r instanceof Set?r.delete(n):r===n&&delete e[t]},Rn=e=>e instanceof Set?e.size===0:!e,X=new Map;function zn(e,t,n,r,i){let a=(t,r)=>{n(e),i(t,r,{watchedPath:e}),r&&e!==r&&Z(C.resolve(e,r),G,C.join(e,r))};try{return(0,x.watch)(e,{persistent:t.persistent},a)}catch(e){r(e);return}}const Z=(e,t,n,r,i)=>{let a=X.get(e);a&&In(a[t],e=>{e(n,r,i)})},Bn=(e,t,n,r)=>{let{listener:i,errHandler:a,rawEmitter:o}=r,s=X.get(t),c;if(!n.persistent)return c=zn(e,n,i,a,o),c?c.close.bind(c):void 0;if(s)J(s,G,i),J(s,K,a),J(s,q,o);else{if(c=zn(e,n,Z.bind(null,t,G),a,Z.bind(null,t,q)),!c)return;c.on(W.ERROR,async n=>{let r=Z.bind(null,t,K);if(s&&(s.watcherUnusable=!0),Dn&&n.code===`EPERM`)try{await(await(0,S.open)(e,`r`)).close(),r(n)}catch{}else r(n)}),s={listeners:i,errHandlers:a,rawEmitters:o,watcher:c},X.set(t,s)}return()=>{Y(s,G,i),Y(s,K,a),Y(s,q,o),Rn(s.listeners)&&(s.watcher.close(),X.delete(t),Nn.forEach(Ln(s)),s.watcher=void 0,Object.freeze(s))}},Vn=new Map,Hn=(e,t,n,r)=>{let{listener:i,rawEmitter:a}=r,o=Vn.get(t),s=o&&o.options;return s&&(s.persistent<n.persistent||s.interval>n.interval)&&((0,x.unwatchFile)(t),o=void 0),o?(J(o,G,i),J(o,q,a)):(o={listeners:i,rawEmitters:a,options:n,watcher:(0,x.watchFile)(t,n,(n,r)=>{In(o.rawEmitters,e=>{e(W.CHANGE,t,{curr:n,prev:r})});let i=n.mtimeMs;(n.size!==r.size||i>r.mtimeMs||i===0)&&In(o.listeners,t=>t(e,n))})},Vn.set(t,o)),()=>{Y(o,G,i),Y(o,q,a),Rn(o.listeners)&&(Vn.delete(t),(0,x.unwatchFile)(t),o.options=o.watcher=void 0,Object.freeze(o))}};var Un=class{constructor(e){this.fsw=e,this._boundHandleError=t=>e._handleError(t)}_watchWithNodeFs(e,t){let n=this.fsw.options,r=C.dirname(e),i=C.basename(e);this.fsw._getWatchedDir(r).add(i);let a=C.resolve(e),o={persistent:n.persistent};t||=En;let s;return n.usePolling?(o.interval=n.interval!==n.binaryInterval&&Fn(i)?n.binaryInterval:n.interval,s=Hn(e,a,o,{listener:t,rawEmitter:this.fsw._emitRaw})):s=Bn(e,a,o,{listener:t,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw}),s}_handleFile(e,t,n){if(this.fsw.closed)return;let r=C.dirname(e),i=C.basename(e),a=this.fsw._getWatchedDir(r),o=t;if(a.has(i))return;let s=async(t,n)=>{if(this.fsw._throttle(`watch`,e,5)){if(!n||n.mtimeMs===0)try{let n=await(0,S.stat)(e);if(this.fsw.closed)return;let r=n.atimeMs,i=n.mtimeMs;if((!r||r<=i||i!==o.mtimeMs)&&this.fsw._emit(W.CHANGE,e,n),(On||kn||An)&&o.ino!==n.ino){this.fsw._closeFile(t),o=n;let r=this._watchWithNodeFs(e,s);r&&this.fsw._addPathCloser(t,r)}else o=n}catch{this.fsw._remove(r,i)}else if(a.has(i)){let t=n.atimeMs,r=n.mtimeMs;(!t||t<=r||r!==o.mtimeMs)&&this.fsw._emit(W.CHANGE,e,n),o=n}}},c=this._watchWithNodeFs(e,s);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(e)){if(!this.fsw._throttle(W.ADD,e,0))return;this.fsw._emit(W.ADD,e,t)}return c}async _handleSymlink(e,t,n,r){if(this.fsw.closed)return;let i=e.fullPath,a=this.fsw._getWatchedDir(t);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let t;try{t=await(0,S.realpath)(n)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(i)!==t&&(this.fsw._symlinkPaths.set(i,t),this.fsw._emit(W.CHANGE,n,e.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,t),this.fsw._emit(W.ADD,n,e.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(e,t,n,r,i,a,o){if(e=C.join(e,``),o=this.fsw._throttle(`readdir`,e,1e3),!o)return;let s=this.fsw._getWatchedDir(n.path),c=new Set,l=this.fsw._readdirp(e,{fileFilter:e=>n.filterPath(e),directoryFilter:e=>n.filterDir(e)});if(l)return l.on(`data`,async o=>{if(this.fsw.closed){l=void 0;return}let u=o.path,d=C.join(e,u);if(c.add(u),!(o.stats.isSymbolicLink()&&await this._handleSymlink(o,e,d,u))){if(this.fsw.closed){l=void 0;return}(u===r||!r&&!s.has(u))&&(this.fsw._incrReadyCount(),d=C.join(i,C.relative(i,d)),this._addToNodeFs(d,t,n,a+1))}}).on(W.ERROR,this._boundHandleError),new Promise((t,u)=>{if(!l)return u();l.once(`end`,()=>{if(this.fsw.closed){l=void 0;return}let u=o?o.clear():!1;t(void 0),s.getChildren().filter(t=>t!==e&&!c.has(t)).forEach(t=>{this.fsw._remove(e,t)}),l=void 0,u&&this._handleRead(e,!1,n,r,i,a,o)})})}async _handleDir(e,t,n,r,i,a,o){let s=this.fsw._getWatchedDir(C.dirname(e)),c=s.has(C.basename(e));!(n&&this.fsw.options.ignoreInitial)&&!i&&!c&&this.fsw._emit(W.ADD_DIR,e,t),s.add(C.basename(e)),this.fsw._getWatchedDir(e);let l,u=this.fsw.options.depth;if((u==null||r<=u)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(e,n,a,i,e,r,void 0),this.fsw.closed))return;l=this._watchWithNodeFs(e,(t,n)=>{n&&n.mtimeMs===0||this._handleRead(t,!1,a,i,e,r,void 0)})}return l}async _addToNodeFs(e,t,n,r,i){let a=this.fsw._emitReady;if(this.fsw._isIgnored(e)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(e);n&&(o.filterPath=e=>n.filterPath(e),o.filterDir=e=>n.filterDir(e));try{let n=await Mn[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,n))return a(),!1;let s=this.fsw.options.followSymlinks,c;if(n.isDirectory()){let a=C.resolve(e),l=s?await(0,S.realpath)(e):e;if(this.fsw.closed||(c=await this._handleDir(o.watchPath,n,t,r,i,o,l),this.fsw.closed))return;a!==l&&l!==void 0&&this.fsw._symlinkPaths.set(a,l)}else if(n.isSymbolicLink()){let i=s?await(0,S.realpath)(e):e;if(this.fsw.closed)return;let a=C.dirname(o.watchPath);if(this.fsw._getWatchedDir(a).add(o.watchPath),this.fsw._emit(W.ADD,o.watchPath,n),c=await this._handleDir(a,n,t,r,e,o,i),this.fsw.closed)return;i!==void 0&&this.fsw._symlinkPaths.set(C.resolve(e),i)}else c=this._handleFile(o.watchPath,n,t);return a(),c&&this.fsw._addPathCloser(e,c),!1}catch(t){if(this.fsw._handleError(t))return a(),e}}};
|
|
11
23
|
/*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */
|
|
12
|
-
const nt=/\\/g,rt=/\/\//,it=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,at=/^\.[/\\]/;function Z(e){return Array.isArray(e)?e:[e]}const Q=e=>typeof e==`object`&&!!e&&!(e instanceof RegExp);function ot(e){return typeof e==`function`?e:typeof e==`string`?t=>e===t:e instanceof RegExp?t=>e.test(t):typeof e==`object`&&e?t=>{if(e.path===t)return!0;if(e.recursive){let n=w.relative(e.path,t);return n?!n.startsWith(`..`)&&!w.isAbsolute(n):!1}return!1}:()=>!1}function st(e){if(typeof e!=`string`)throw Error(`string expected`);e=w.normalize(e),e=e.replace(/\\/g,`/`);let t=!1;e.startsWith(`//`)&&(t=!0);let n=/\/\//;for(;e.match(n);)e=e.replace(n,`/`);return t&&(e=`/`+e),e}function ct(e,t,n){let r=st(t);for(let t=0;t<e.length;t++){let i=e[t];if(i(r,n))return!0}return!1}function lt(e,t){if(e==null)throw TypeError(`anymatch: specify first argument`);let n=Z(e).map(e=>ot(e));return t==null?(e,t)=>ct(n,e,t):ct(n,t)}const ut=e=>{let t=Z(e).flat();if(!t.every(e=>typeof e==`string`))throw TypeError(`Non-string provided as watch path: ${t}`);return t.map(ft)},dt=e=>{let t=e.replace(nt,`/`),n=!1;for(t.startsWith(`//`)&&(n=!0);t.match(rt);)t=t.replace(rt,`/`);return n&&(t=`/`+t),t},ft=e=>dt(w.normalize(dt(e))),pt=(e=``)=>t=>typeof t==`string`?ft(w.isAbsolute(t)?t:w.join(e,t)):t,mt=(e,t)=>w.isAbsolute(e)?e:w.join(t,e),ht=Object.freeze(new Set);var gt=class{constructor(e,t){this.path=e,this._removeWatcher=t,this.items=new Set}add(e){let{items:t}=this;t&&e!==`.`&&e!==`..`&&t.add(e)}async remove(e){let{items:t}=this;if(!t||(t.delete(e),t.size>0))return;let n=this.path;try{await(0,C.readdir)(n)}catch{this._removeWatcher&&this._removeWatcher(w.dirname(n),w.basename(n))}}has(e){let{items:t}=this;if(t)return t.has(e)}getChildren(){let{items:e}=this;return e?[...e.values()]:[]}dispose(){this.items.clear(),this.path=``,this._removeWatcher=R,this.items=ht,Object.freeze(this)}},_t=class{constructor(e,t,n){this.fsw=n;let r=e;this.path=e=e.replace(at,``),this.watchPath=r,this.fullWatchPath=w.resolve(r),this.dirParts=[],this.dirParts.forEach(e=>{e.length>1&&e.pop()}),this.followSymlinks=t,this.statMethod=t?`stat`:`lstat`}entryPath(e){return w.join(this.watchPath,w.relative(this.watchPath,e.fullPath))}filterPath(e){let{stats:t}=e;if(t&&t.isSymbolicLink())return this.filterDir(e);let n=this.entryPath(e);return this.fsw._isntIgnored(n,t)&&this.fsw._hasReadPermissions(t)}filterDir(e){return this.fsw._isntIgnored(this.entryPath(e),e.stats)}},vt=class extends te.EventEmitter{constructor(e={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let t=e.awaitWriteFinish,n={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...e,ignored:e.ignored?Z(e.ignored):Z([]),awaitWriteFinish:t===!0?n:typeof t==`object`?{...n,...t}:!1};Ge&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let i=process.env.CHOKIDAR_USEPOLLING;if(i!==void 0){let e=i.toLowerCase();e===`false`||e===`0`?r.usePolling=!1:e===`true`||e===`1`?r.usePolling=!0:r.usePolling=!!e}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=R,this._readyEmitted=!0,process.nextTick(()=>this.emit(B.READY)))},this._emitRaw=(...e)=>this.emit(B.RAW,...e),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new tt(this),Object.freeze(r)}_addIgnoredPath(e){if(Q(e)){for(let t of this._ignoredPaths)if(Q(t)&&t.path===e.path&&t.recursive===e.recursive)return}this._ignoredPaths.add(e)}_removeIgnoredPath(e){if(this._ignoredPaths.delete(e),typeof e==`string`)for(let t of this._ignoredPaths)Q(t)&&t.path===e&&this._ignoredPaths.delete(t)}add(e,t,n){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let i=ut(e);return r&&(i=i.map(e=>mt(e,r))),i.forEach(e=>{this._removeIgnoredPath(e)}),this._userIgnored=void 0,this._readyCount||=0,this._readyCount+=i.length,Promise.all(i.map(async e=>{let r=await this._nodeFsHandler._addToNodeFs(e,!n,void 0,0,t);return r&&this._emitReady(),r})).then(e=>{this.closed||e.forEach(e=>{e&&this.add(w.dirname(e),w.basename(t||e))})}),this}unwatch(e){if(this.closed)return this;let t=ut(e),{cwd:n}=this.options;return t.forEach(e=>{!w.isAbsolute(e)&&!this._closers.has(e)&&(n&&(e=w.join(n,e)),e=w.resolve(e)),this._closePath(e),this._addIgnoredPath(e),this._watched.has(e)&&this._addIgnoredPath({path:e,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let e=[];return this._closers.forEach(t=>t.forEach(t=>{let n=t();n instanceof Promise&&e.push(n)})),this._streams.forEach(e=>e.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(e=>e.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=e.length?Promise.all(e).then(()=>void 0):Promise.resolve(),this._closePromise}getWatched(){let e={};return this._watched.forEach((t,n)=>{let r=(this.options.cwd?w.relative(this.options.cwd,n):n)||`.`;e[r]=t.getChildren().sort()}),e}emitWithAll(e,t){this.emit(e,...t),e!==B.ERROR&&this.emit(B.ALL,e,...t)}async _emit(e,t,n){if(this.closed)return;let r=this.options;Ve&&(t=w.normalize(t)),r.cwd&&(t=w.relative(r.cwd,t));let i=[t];n!=null&&i.push(n);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(t)))return o.lastChange=new Date,this;if(r.atomic){if(e===B.UNLINK)return this._pendingUnlinks.set(t,[e,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((e,t)=>{this.emit(...e),this.emit(B.ALL,...e),this._pendingUnlinks.delete(t)})},typeof r.atomic==`number`?r.atomic:100),this;e===B.ADD&&this._pendingUnlinks.has(t)&&(e=B.CHANGE,this._pendingUnlinks.delete(t))}if(a&&(e===B.ADD||e===B.CHANGE)&&this._readyEmitted)return this._awaitWriteFinish(t,a.stabilityThreshold,e,(t,n)=>{t?(e=B.ERROR,i[0]=t,this.emitWithAll(e,i)):n&&(i.length>1?i[1]=n:i.push(n),this.emitWithAll(e,i))}),this;if(e===B.CHANGE&&!this._throttle(B.CHANGE,t,50))return this;if(r.alwaysStat&&n===void 0&&(e===B.ADD||e===B.ADD_DIR||e===B.CHANGE)){let e=r.cwd?w.join(r.cwd,t):t,n;try{n=await(0,C.stat)(e)}catch{}if(!n||this.closed)return;i.push(n)}return this.emitWithAll(e,i),this}_handleError(e){let t=e&&e.code;return e&&t!==`ENOENT`&&t!==`ENOTDIR`&&(!this.options.ignorePermissionErrors||t!==`EPERM`&&t!==`EACCES`)&&this.emit(B.ERROR,e),e||this.closed}_throttle(e,t,n){this._throttled.has(e)||this._throttled.set(e,new Map);let r=this._throttled.get(e);if(!r)throw Error(`invalid throttle`);let i=r.get(t);if(i)return i.count++,!1;let a,o=()=>{let e=r.get(t),n=e?e.count:0;return r.delete(t),clearTimeout(a),e&&clearTimeout(e.timeoutObject),n};a=setTimeout(o,n);let s={timeoutObject:a,clear:o,count:0};return r.set(t,s),s}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(e,t,n,r){let i=this.options.awaitWriteFinish;if(typeof i!=`object`)return;let a=i.pollInterval,o,s=e;this.options.cwd&&!w.isAbsolute(e)&&(s=w.join(this.options.cwd,e));let c=new Date,l=this._pendingWrites;function u(n){(0,S.stat)(s,(i,s)=>{if(i||!l.has(e)){i&&i.code!==`ENOENT`&&r(i);return}let c=Number(new Date);n&&s.size!==n.size&&(l.get(e).lastChange=c),c-l.get(e).lastChange>=t?(l.delete(e),r(void 0,s)):o=setTimeout(u,a,s)})}l.has(e)||(l.set(e,{lastChange:c,cancelWait:()=>(l.delete(e),clearTimeout(o),n)}),o=setTimeout(u,a))}_isIgnored(e,t){if(this.options.atomic&&it.test(e))return!0;if(!this._userIgnored){let{cwd:e}=this.options,t=(this.options.ignored||[]).map(pt(e));this._userIgnored=lt([...[...this._ignoredPaths].map(pt(e)),...t],void 0)}return this._userIgnored(e,t)}_isntIgnored(e,t){return!this._isIgnored(e,t)}_getWatchHelpers(e){return new _t(e,this.options.followSymlinks,this)}_getWatchedDir(e){let t=w.resolve(e);return this._watched.has(t)||this._watched.set(t,new gt(t,this._boundRemove)),this._watched.get(t)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,t,n){let r=w.join(e,t),i=w.resolve(r);if(n??=this._watched.has(r)||this._watched.has(i),!this._throttle(`remove`,r,100))return;!n&&this._watched.size===1&&this.add(e,t,!0),this._getWatchedDir(r).getChildren().forEach(e=>this._remove(r,e));let a=this._getWatchedDir(e),o=a.has(t);a.remove(t),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let s=r;if(this.options.cwd&&(s=w.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(s)&&this._pendingWrites.get(s).cancelWait()===B.ADD)return;this._watched.delete(r),this._watched.delete(i);let c=n?B.UNLINK_DIR:B.UNLINK;o&&!this._isIgnored(r)&&this._emit(c,r),this._closePath(r)}_closePath(e){this._closeFile(e);let t=w.dirname(e);this._getWatchedDir(t).remove(w.basename(e))}_closeFile(e){let t=this._closers.get(e);t&&(t.forEach(e=>e()),this._closers.delete(e))}_addPathCloser(e,t){if(!t)return;let n=this._closers.get(e);n||(n=[],this._closers.set(e,n)),n.push(t)}_readdirp(e,t){if(this.closed)return;let n=Be(e,{type:B.ALL,alwaysStat:!0,lstat:!0,...t,depth:0});return this._streams.add(n),n.once(`close`,()=>{n=void 0}),n.once(`end`,()=>{n&&=(this._streams.delete(n),void 0)}),n}};function yt(e,t={}){let n=new vt(t);return n.add(e),n}function bt(e){if(!e.includes(`defineRootContext`))return``;let{descriptor:t}=(0,y.parse)(e);if(!t.scriptSetup)return``;let n=e=t.scriptSetup.content,r=xt(n);return n.substring(r.start,r.end+1).trim()}function xt(e){return se(e,`defineRootContext`)}function St(e){if(!e.includes(`<template`))return``;let{descriptor:t}=(0,y.parse)(e);return(t.template?.content||``).trim()}function Ct(e,t){let n=e.replace(/\{\{([\s\S]*?)\}\}/g,(e,n)=>e.replace(n,wt(n,t)));return n=n.replace(/((?:v-(?!for\b)[\w-]+(?::[\w-]+)?|[:@][\w-]+)\s*=\s*)(["'])([\s\S]*?)\2/g,(e,n,r,i)=>`${n}${r}${wt(i,t)}${r}`),n}function wt(e,t){let n=new Map;t.varName&&n.set(t.varName,`$oiyoRootContext`);for(let{local:e,original:r}of t.varProperties||[])n.set(e,`$oiyoRootContext.${r}`);if(n.size===0)return e;try{let t=(0,f.parse)(`(${e})`,{sourceType:`module`,plugins:[`typescript`]}),r=new x.default(e);return E(t,{Identifier(e){if(!e.isReferencedIdentifier())return;let t=n.get(e.node.name);if(!t)return;let i=e.node.start,a=e.node.end;if(!(i==null||a==null)){if(e.parentPath.isObjectProperty()&&e.parent.shorthand&&e.parent.value===e.node){r.overwrite(i-1,a-1,`${e.node.name}: ${t}`);return}r.overwrite(i-1,a-1,t)}}}),r.toString()}catch{return e}}function Tt(e,t){if(!e)throw Error(`[oiyo] App.vue 必须包含 <template> 节点`);let n=e.content;if(!(n.includes(`<OiyoPage`)||n.includes(`<oiyo-page`)))throw Error(`[oiyo] App.vue 的 template 必须包含 <OiyoPage /> 或 <oiyo-page /> 占位节点`);return n=Ct(n,t),n.trim()}function Et(e){if(!e)return;let t=e?.content;if(t){let e=Dt(t);return e.script?e:void 0}}function Dt(e){let t=(0,f.parse)(e,{sourceType:`module`,plugins:[`typescript`]}),n={};return E(t,{ImportDeclaration(t){let r=e.substring(t.node.start,t.node.end);n.imports??=[],n.imports.push(r)},CallExpression(t){let{callee:r,arguments:i}=t.node;if(r.type===`Identifier`&&r.name===`defineRootContext`&&i.length>0){let r=i[0];r.start!=null&&r.end!=null&&(n.script=e.substring(r.start,r.end));let a=t.findParent(e=>e.isVariableDeclarator());if(a&&a.isVariableDeclarator()){let e=a.node.id;e.type===`Identifier`?n.variable=e.name:e.type===`ObjectPattern`&&(n.properties=e.properties.filter(e=>e.type===`ObjectProperty`).map(e=>({original:e.key.type===`Identifier`?e.key.name:String(e.key.value),local:e.value.type===`Identifier`?e.value.name:e.key.name})))}}}}),n}function Ot(e,t){let n=e;return n=n.replace(/<OiyoPage[^>]*?\/>/g,t),n=n.replace(/<OiyoPage[^>]*>\s*<\/OiyoPage>/g,t),n=n.replace(/<oiyo-page[^>]*?\/>/g,t),n=n.replace(/<oiyo-page[^>]*>\s*<\/oiyo-page>/g,t),n}const kt=`virtual:oiyo-root-context`,$=`\0${kt}`;function At(e){let{script:t,imports:n}=e,r=[];return n?.length&&(r.push(...n),r.push(``)),t?(r.push(`let rootContextInstance = null`),r.push(``),r.push(`export function useRootContext() {`),r.push(`if (!rootContextInstance) {`),r.push(`const factory = ${t}`),r.push(`rootContextInstance = factory()`),r.push(`}`),r.push(`return rootContextInstance`),r.push(`}`)):(r.push(`export function useRootContext() {`),r.push(`return {}`),r.push(`}`)),r.join(`
|
|
13
|
-
`)}
|
|
14
|
-
import { useRootContext } from 'virtual:oiyo-root-context'
|
|
15
|
-
`);let i=t.scriptSetup.loc.start.offset+r.start,a=t.scriptSetup.loc.start.offset+r.end;i!==a&&n.overwrite(i,a,`useRootContext()`)}}return{code:n.toString(),sourceMap:n.generateMap()}}shouldRefreshView(e){return D(this.rootView.template)!==D(St(e))}applyRoot(e){let t=[],n=``,r=``;return e.template&&(n=Ot(this.rootView.template,e.template.content)),e.scriptSetup&&(t.push(...this.rootView.imports),r=`${this.rootView.script}\n${e.scriptSetup.content}`),{imports:t,script:r,template:n}}};function Mt(e){let t=!1,n=`build`;return e.logger.withScope(`VITE`),[{name:`oiyo:build`,apply:`build`,enforce:`pre`,configResolved(e){n=e.command},async buildStart(){if(t)return;await Promise.all([e.page.loadPagesConfig(),e.page.loadPagesJson(),e.layout.registerLayouts()]);let r=t=>{e.layout.isLayoutPath(t)&&e.layout.registerLayouts()};n===`serve`&&yt(e.layout.layoutDir,{ignoreInitial:!0}).on(`add`,r).on(`unlink`,r),t=!0},async transform(t,n){if(e.root.isRootPath(n))return e.root.parseRoot(t),e.root.transformRoot(t);if(e.page.isPagePath(n))return this.addWatchFile(e.root.rootPath),e.page.transformPage(t,n)},resolveId(e){if(e===`virtual:oiyo-root-context`)return $},load(t){if(t===$)return e.root.rootVM||`export function useRootContext() {return {}}`},async closeBundle(){await e.page.unwatchPagesConfig()}}]}function Nt(){return[{name:`oiyo:deps`,enforce:`pre`,config(e){return(0,b.defu)(e,{optimizeDeps:{exclude:[`@skiyee/oiyo`]}})}}]}function Pt(e){let t=(0,c.resolveOiyoConfig)(e),n=A();n.withScope(`CONFIG`);let r=new jt(t,{logger:n}),i=new me(t,{logger:n});return{logger:n,root:r,layout:i,page:new Me(t,{oiyoRoot:r,oiyoLayout:i,logger:n})}}function Ft(e){return e.logger.withScope(`VITE`),e.logger.withScope(`HMR`),[{name:`oiyo:serve`,apply:`serve`,enforce:`pre`,async buildStart(){await Promise.all([e.page.loadPagesConfig(),e.page.loadPagesJson(),e.layout.registerLayouts()])},configureServer(t){e.page.watchPagesConfig(()=>{t.hot.send({type:`full-reload`})});let n=t=>{e.layout.isLayoutPath(t)&&e.layout.registerLayouts()};t.watcher.on(`add`,n),t.watcher.on(`unlink`,n)},async transform(t,n){if(e.root.isRootPath(n))return e.root.parseRoot(t),e.root.transformRoot(t);if(e.page.isPagePath(n))return this.addWatchFile(e.root.rootPath),e.page.transformPage(t,n)},resolveId(e){if(e===`virtual:oiyo-root-context`)return $},load(t){if(t===$)return e.root.rootVM||`export function useRootContext() {return {}}`},async handleHotUpdate({file:t,server:n,read:r}){if(e.root.isRootPath(t)){let t=await r(),i=!1;if(e.root.shouldRefreshView(t)&&(i=!0),e.root.shouldRefreshVM(t)){let e=n.moduleGraph.getModuleById($);e&&(n.moduleGraph.invalidateModule(e),i=!0)}if(i){n.hot.send({type:`full-reload`});return}}},async closeBundle(){await e.page.unwatchPagesConfig()}}]}function It(e={}){let t=Pt(e);return[...Nt(),...Ft(t),...Mt(t)]}exports.LogLevels=O,exports.OiyoCorePlugin=It,exports.OiyoLayout=me,exports.OiyoPage=Me,exports.OiyoRoot=jt,exports.RESOLVED_VIRTUAL_ROOT_CONTEXT_ID=$,exports.VIRTUAL_ROOT_CONTEXT_ID=kt,exports.createLogger=A;
|
|
24
|
+
const Wn=/\\/g,Gn=/\/\//,Kn=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,qn=/^\.[/\\]/;function Q(e){return Array.isArray(e)?e:[e]}const $=e=>typeof e==`object`&&!!e&&!(e instanceof RegExp);function Jn(e){return typeof e==`function`?e:typeof e==`string`?t=>e===t:e instanceof RegExp?t=>e.test(t):typeof e==`object`&&e?t=>{if(e.path===t)return!0;if(e.recursive){let n=C.relative(e.path,t);return n?!n.startsWith(`..`)&&!C.isAbsolute(n):!1}return!1}:()=>!1}function Yn(e){if(typeof e!=`string`)throw Error(`string expected`);e=C.normalize(e),e=e.replace(/\\/g,`/`);let t=!1;e.startsWith(`//`)&&(t=!0);let n=/\/\//;for(;e.match(n);)e=e.replace(n,`/`);return t&&(e=`/`+e),e}function Xn(e,t,n){let r=Yn(t);for(let t=0;t<e.length;t++){let i=e[t];if(i(r,n))return!0}return!1}function Zn(e,t){if(e==null)throw TypeError(`anymatch: specify first argument`);let n=Q(e).map(e=>Jn(e));return t==null?(e,t)=>Xn(n,e,t):Xn(n,t)}const Qn=e=>{let t=Q(e).flat();if(!t.every(e=>typeof e==`string`))throw TypeError(`Non-string provided as watch path: ${t}`);return t.map(er)},$n=e=>{let t=e.replace(Wn,`/`),n=!1;for(t.startsWith(`//`)&&(n=!0);t.match(Gn);)t=t.replace(Gn,`/`);return n&&(t=`/`+t),t},er=e=>$n(C.normalize($n(e))),tr=(e=``)=>t=>typeof t==`string`?er(C.isAbsolute(t)?t:C.join(e,t)):t,nr=(e,t)=>C.isAbsolute(e)?e:C.join(t,e),rr=Object.freeze(new Set);var ir=class{constructor(e,t){this.path=e,this._removeWatcher=t,this.items=new Set}add(e){let{items:t}=this;t&&e!==`.`&&e!==`..`&&t.add(e)}async remove(e){let{items:t}=this;if(!t||(t.delete(e),t.size>0))return;let n=this.path;try{await(0,S.readdir)(n)}catch{this._removeWatcher&&this._removeWatcher(C.dirname(n),C.basename(n))}}has(e){let{items:t}=this;if(t)return t.has(e)}getChildren(){let{items:e}=this;return e?[...e.values()]:[]}dispose(){this.items.clear(),this.path=``,this._removeWatcher=En,this.items=rr,Object.freeze(this)}},ar=class{constructor(e,t,n){this.fsw=n;let r=e;this.path=e=e.replace(qn,``),this.watchPath=r,this.fullWatchPath=C.resolve(r),this.dirParts=[],this.dirParts.forEach(e=>{e.length>1&&e.pop()}),this.followSymlinks=t,this.statMethod=t?`stat`:`lstat`}entryPath(e){return C.join(this.watchPath,C.relative(this.watchPath,e.fullPath))}filterPath(e){let{stats:t}=e;if(t&&t.isSymbolicLink())return this.filterDir(e);let n=this.entryPath(e);return this.fsw._isntIgnored(n,t)&&this.fsw._hasReadPermissions(t)}filterDir(e){return this.fsw._isntIgnored(this.entryPath(e),e.stats)}},or=class extends ie.EventEmitter{constructor(e={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let t=e.awaitWriteFinish,n={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...e,ignored:e.ignored?Q(e.ignored):Q([]),awaitWriteFinish:t===!0?n:typeof t==`object`?{...n,...t}:!1};jn&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let i=process.env.CHOKIDAR_USEPOLLING;if(i!==void 0){let e=i.toLowerCase();e===`false`||e===`0`?r.usePolling=!1:e===`true`||e===`1`?r.usePolling=!0:r.usePolling=!!e}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=En,this._readyEmitted=!0,process.nextTick(()=>this.emit(U.READY)))},this._emitRaw=(...e)=>this.emit(U.RAW,...e),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new Un(this),Object.freeze(r)}_addIgnoredPath(e){if($(e)){for(let t of this._ignoredPaths)if($(t)&&t.path===e.path&&t.recursive===e.recursive)return}this._ignoredPaths.add(e)}_removeIgnoredPath(e){if(this._ignoredPaths.delete(e),typeof e==`string`)for(let t of this._ignoredPaths)$(t)&&t.path===e&&this._ignoredPaths.delete(t)}add(e,t,n){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let i=Qn(e);return r&&(i=i.map(e=>nr(e,r))),i.forEach(e=>{this._removeIgnoredPath(e)}),this._userIgnored=void 0,this._readyCount||=0,this._readyCount+=i.length,Promise.all(i.map(async e=>{let r=await this._nodeFsHandler._addToNodeFs(e,!n,void 0,0,t);return r&&this._emitReady(),r})).then(e=>{this.closed||e.forEach(e=>{e&&this.add(C.dirname(e),C.basename(t||e))})}),this}unwatch(e){if(this.closed)return this;let t=Qn(e),{cwd:n}=this.options;return t.forEach(e=>{!C.isAbsolute(e)&&!this._closers.has(e)&&(n&&(e=C.join(n,e)),e=C.resolve(e)),this._closePath(e),this._addIgnoredPath(e),this._watched.has(e)&&this._addIgnoredPath({path:e,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let e=[];return this._closers.forEach(t=>t.forEach(t=>{let n=t();n instanceof Promise&&e.push(n)})),this._streams.forEach(e=>e.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(e=>e.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=e.length?Promise.all(e).then(()=>void 0):Promise.resolve(),this._closePromise}getWatched(){let e={};return this._watched.forEach((t,n)=>{let r=(this.options.cwd?C.relative(this.options.cwd,n):n)||`.`;e[r]=t.getChildren().sort()}),e}emitWithAll(e,t){this.emit(e,...t),e!==U.ERROR&&this.emit(U.ALL,e,...t)}async _emit(e,t,n){if(this.closed)return;let r=this.options;Dn&&(t=C.normalize(t)),r.cwd&&(t=C.relative(r.cwd,t));let i=[t];n!=null&&i.push(n);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(t)))return o.lastChange=new Date,this;if(r.atomic){if(e===U.UNLINK)return this._pendingUnlinks.set(t,[e,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((e,t)=>{this.emit(...e),this.emit(U.ALL,...e),this._pendingUnlinks.delete(t)})},typeof r.atomic==`number`?r.atomic:100),this;e===U.ADD&&this._pendingUnlinks.has(t)&&(e=U.CHANGE,this._pendingUnlinks.delete(t))}if(a&&(e===U.ADD||e===U.CHANGE)&&this._readyEmitted)return this._awaitWriteFinish(t,a.stabilityThreshold,e,(t,n)=>{t?(e=U.ERROR,i[0]=t,this.emitWithAll(e,i)):n&&(i.length>1?i[1]=n:i.push(n),this.emitWithAll(e,i))}),this;if(e===U.CHANGE&&!this._throttle(U.CHANGE,t,50))return this;if(r.alwaysStat&&n===void 0&&(e===U.ADD||e===U.ADD_DIR||e===U.CHANGE)){let e=r.cwd?C.join(r.cwd,t):t,n;try{n=await(0,S.stat)(e)}catch{}if(!n||this.closed)return;i.push(n)}return this.emitWithAll(e,i),this}_handleError(e){let t=e&&e.code;return e&&t!==`ENOENT`&&t!==`ENOTDIR`&&(!this.options.ignorePermissionErrors||t!==`EPERM`&&t!==`EACCES`)&&this.emit(U.ERROR,e),e||this.closed}_throttle(e,t,n){this._throttled.has(e)||this._throttled.set(e,new Map);let r=this._throttled.get(e);if(!r)throw Error(`invalid throttle`);let i=r.get(t);if(i)return i.count++,!1;let a,o=()=>{let e=r.get(t),n=e?e.count:0;return r.delete(t),clearTimeout(a),e&&clearTimeout(e.timeoutObject),n};a=setTimeout(o,n);let s={timeoutObject:a,clear:o,count:0};return r.set(t,s),s}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(e,t,n,r){let i=this.options.awaitWriteFinish;if(typeof i!=`object`)return;let a=i.pollInterval,o,s=e;this.options.cwd&&!C.isAbsolute(e)&&(s=C.join(this.options.cwd,e));let c=new Date,l=this._pendingWrites;function u(n){(0,x.stat)(s,(i,s)=>{if(i||!l.has(e)){i&&i.code!==`ENOENT`&&r(i);return}let c=Number(new Date);n&&s.size!==n.size&&(l.get(e).lastChange=c),c-l.get(e).lastChange>=t?(l.delete(e),r(void 0,s)):o=setTimeout(u,a,s)})}l.has(e)||(l.set(e,{lastChange:c,cancelWait:()=>(l.delete(e),clearTimeout(o),n)}),o=setTimeout(u,a))}_isIgnored(e,t){if(this.options.atomic&&Kn.test(e))return!0;if(!this._userIgnored){let{cwd:e}=this.options,t=(this.options.ignored||[]).map(tr(e));this._userIgnored=Zn([...[...this._ignoredPaths].map(tr(e)),...t],void 0)}return this._userIgnored(e,t)}_isntIgnored(e,t){return!this._isIgnored(e,t)}_getWatchHelpers(e){return new ar(e,this.options.followSymlinks,this)}_getWatchedDir(e){let t=C.resolve(e);return this._watched.has(t)||this._watched.set(t,new ir(t,this._boundRemove)),this._watched.get(t)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,t,n){let r=C.join(e,t),i=C.resolve(r);if(n??=this._watched.has(r)||this._watched.has(i),!this._throttle(`remove`,r,100))return;!n&&this._watched.size===1&&this.add(e,t,!0),this._getWatchedDir(r).getChildren().forEach(e=>this._remove(r,e));let a=this._getWatchedDir(e),o=a.has(t);a.remove(t),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let s=r;if(this.options.cwd&&(s=C.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(s)&&this._pendingWrites.get(s).cancelWait()===U.ADD)return;this._watched.delete(r),this._watched.delete(i);let c=n?U.UNLINK_DIR:U.UNLINK;o&&!this._isIgnored(r)&&this._emit(c,r),this._closePath(r)}_closePath(e){this._closeFile(e);let t=C.dirname(e);this._getWatchedDir(t).remove(C.basename(e))}_closeFile(e){let t=this._closers.get(e);t&&(t.forEach(e=>e()),this._closers.delete(e))}_addPathCloser(e,t){if(!t)return;let n=this._closers.get(e);n||(n=[],this._closers.set(e,n)),n.push(t)}_readdirp(e,t){if(this.closed)return;let n=Tn(e,{type:U.ALL,alwaysStat:!0,lstat:!0,...t,depth:0});return this._streams.add(n),n.once(`close`,()=>{n=void 0}),n.once(`end`,()=>{n&&=(this._streams.delete(n),void 0)}),n}};function sr(e,t={}){let n=new or(t);return n.add(e),n}function cr(){let e,t=!1,n=`build`;return[{name:`oiyo:build`,apply:`build`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),n=t.command},async buildStart(){if(t)return;await Promise.all([e.autoApi.collectApis(),e.autoComponent.collectComponents(),e.route.loadPagesConfig(),e.route.loadPagesJson(),e.layout.registerLayouts()]),e.autoApi.writeDeclaration(),e.autoComponent.writeDeclaration(),e.layout.writeDeclaration(),e.route.writeDeclaration();let r=async t=>{e.layout.isLayoutPath(t)&&(await e.layout.registerLayouts(),e.layout.writeDeclaration()),e.autoComponent.isAutoComponentPath(t)&&(await e.autoComponent.collectComponents(),e.autoComponent.writeDeclaration()),e.autoApi.isAutoApiPath(t)&&(await e.autoApi.collectApis(),e.autoApi.writeDeclaration())};n===`serve`&&sr(e.layout.layoutDir,{ignoreInitial:!0}).on(`add`,e=>void r(e)).on(`unlink`,e=>void r(e)).on(`change`,e=>void r(e)),t=!0},async transform(t,n){if(e.root.isRootPath(n))return e.root.parseRoot(t),e.root.transformRoot(t);if(e.route.isPagePath(n))return this.addWatchFile(e.root.rootPath),e.route.transformPage(t,n)},resolveId(e){if(e===`virtual:oiyo-root-context`)return B},load(t){if(t===B)return e.root.rootVM||`export function useRootContext() {return {}}`},async closeBundle(){await e.route.unwatchPagesConfig()}}]}var lr=class{constructor(e){this.config=e}get stateDir(){return(0,p.resolve)(this.config.rootDir,`.oiyo`)}get typesDir(){return(0,p.resolve)(this.stateDir,`types`)}get srcDir(){return(0,p.resolve)(this.config.rootDir,this.config.srcDir)}get declarationEntryPath(){return(0,p.resolve)(this.stateDir,`oiyo.d.ts`)}get appTsconfigPath(){return(0,p.resolve)(this.stateDir,`tsconfig.app.json`)}get nodeTsconfigPath(){return(0,p.resolve)(this.stateDir,`tsconfig.node.json`)}relativeToState(e){return(0,p.normalize)((0,p.relative)(this.stateDir,e))}stringifyJson(e){return`${JSON.stringify(e,null,2)}\n`}generateDeclarationEntry(){return[`// Generated by oiyo`,``,`/// <reference types="@skiyee/oiyo/types" />`,`/// <reference path="./types/apis.d.ts" />`,`/// <reference path="./types/components.d.ts" />`,`/// <reference path="./types/layouts.d.ts" />`,`/// <reference path="./types/pages.d.ts" />`,``,`export {}`,``].join(`
|
|
25
|
+
`)}generateAppTsconfig(){let e=this.relativeToState(this.config.rootDir),t=this.relativeToState(this.srcDir),n=this.relativeToState(this.stateDir);return this.stringifyJson({compilerOptions:{paths:{"~/*":[(0,p.join)(t,`*`)],"~~/*":[(0,p.join)(e,`*`)],"@/*":[(0,p.join)(t,`*`)],"@@/*":[(0,p.join)(e,`*`)]},types:[],esModuleInterop:!0,skipLibCheck:!0,target:`ES2018`,allowJs:!0,resolveJsonModule:!0,moduleDetection:`force`,isolatedModules:!0,verbatimModuleSyntax:!0,allowArbitraryExtensions:!0,strict:!0,noUncheckedIndexedAccess:!0,forceConsistentCasingInFileNames:!0,noImplicitOverride:!0,module:`preserve`,noEmit:!0,lib:[`ESNext`,`DOM`,`DOM.Iterable`],moduleResolution:`Bundler`,useDefineForClassFields:!0},include:[(0,p.join)(n,`oiyo.d.ts`),(0,p.join)(t,`**/*`),(0,p.join)(e,`*.d.ts`)],exclude:[(0,p.join)(t,`pages.config.*`),(0,p.join)(e,`dist`),(0,p.join)(e,`node_modules`),(0,p.join)(e,`vite.config.*`),(0,p.join)(e,`oiyo.config.*`)]})}generateNodeTsconfig(){let e=this.relativeToState(this.config.rootDir),t=this.relativeToState(this.srcDir);return this.stringifyJson({compilerOptions:{paths:{},esModuleInterop:!0,skipLibCheck:!0,target:`ESNext`,allowJs:!0,resolveJsonModule:!0,moduleDetection:`force`,isolatedModules:!0,verbatimModuleSyntax:!0,allowArbitraryExtensions:!0,strict:!0,noUncheckedIndexedAccess:!0,forceConsistentCasingInFileNames:!0,noImplicitOverride:!0,module:`preserve`,noEmit:!0,types:[],moduleResolution:`Bundler`,useDefineForClassFields:!0},include:[(0,p.join)(e,`oiyo.config.*`),(0,p.join)(e,`vite.config.*`),(0,p.join)(e,`vitest.config.*`)],exclude:[(0,p.join)(t,`**/*`),(0,p.join)(e,`dist`),(0,p.join)(e,`node_modules`)]})}writeAppTsconfig(){return(0,d.mkdirSync)(this.stateDir,{recursive:!0}),A(this.appTsconfigPath,this.generateAppTsconfig()),this.appTsconfigPath}writeNodeTsconfig(){return(0,d.mkdirSync)(this.stateDir,{recursive:!0}),A(this.nodeTsconfigPath,this.generateNodeTsconfig()),this.nodeTsconfigPath}writeDeclarationEntry(){return(0,d.mkdirSync)(this.stateDir,{recursive:!0}),A(this.declarationEntryPath,this.generateDeclarationEntry()),this.writeAppTsconfig(),this.writeNodeTsconfig(),this.declarationEntryPath}ensureDeclarationEntry(){return(0,d.existsSync)(this.appTsconfigPath)||this.writeAppTsconfig(),(0,d.existsSync)(this.nodeTsconfigPath)||this.writeNodeTsconfig(),(0,d.existsSync)(this.declarationEntryPath)?this.declarationEntryPath:this.writeDeclarationEntry()}};function ur(e){let t=(0,v.resolveOiyoConfig)(e),n=pe();n.withScope(`CONFIG`);let r=new lr(t),i=new ht(t,{logger:n,oiyoState:r}),a=new $e(t,{logger:n,oiyoState:r}),o=new Vt(t,{oiyoAutoApi:a,logger:n}),s=new St(t,{logger:n,oiyoState:r});return{logger:n,config:t,autoApi:a,autoComponent:i,layout:s,state:r,route:new rn(t,{logger:n,oiyoState:r,oiyoRoot:o,oiyoLayout:s}),root:o}}function dr(e){return[{name:`oiyo:deps`,enforce:`pre`,async config(t){let{config:n}=await(0,b.loadConfig)({name:`oiyo`,cwd:t.root}),r=ur(n||e);return(0,re.defu)(t,{oiyo:r,resolve:{alias:{"~":w.default.resolve(r.config.rootDir,r.config.srcDir),"@":w.default.resolve(r.config.rootDir,r.config.srcDir),"@@":w.default.normalize(r.config.rootDir),"~~":w.default.normalize(r.config.rootDir)}},optimizeDeps:{exclude:[`@skiyee/oiyo`]}})}}]}function fr(){let e;return[{name:`oiyo:serve`,apply:`serve`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),e.logger.withScope(`HMR`)},async buildStart(){await Promise.all([e.autoApi.collectApis(),e.autoComponent.collectComponents(),e.route.loadPagesConfig(),e.route.loadPagesJson(),e.layout.registerLayouts()]),e.autoApi.writeDeclaration(),e.autoComponent.writeDeclaration(),e.layout.writeDeclaration(),e.route.writeDeclaration()},configureServer(t){e.route.watchPagesConfig(()=>{t.hot.send({type:`full-reload`})});let n=async n=>{let r=!1;e.layout.isLayoutPath(n)&&(await e.layout.registerLayouts(),e.layout.writeDeclaration(),r=!0),e.autoComponent.isAutoComponentPath(n)&&(await e.autoComponent.collectComponents(),e.autoComponent.writeDeclaration(),r=!0),e.autoApi.isAutoApiPath(n)&&(await e.autoApi.collectApis(),e.autoApi.writeDeclaration(),r=!0),r&&t.hot.send({type:`full-reload`})};t.watcher.on(`add`,e=>void n(e)),t.watcher.on(`unlink`,e=>void n(e)),t.watcher.on(`change`,e=>void n(e))},async transform(t,n){if(e.root.isRootPath(n))return e.root.parseRoot(t),e.root.transformRoot(t);if(e.route.isPagePath(n))return this.addWatchFile(e.root.rootPath),e.route.transformPage(t,n)},resolveId(e){if(e===`virtual:oiyo-root-context`)return B},load(t){if(t===B)return e.root.rootVM||`export function useRootContext() {return {}}`},async handleHotUpdate({file:t,server:n,read:r}){if(e.root.isRootPath(t)){let t=await r(),i=!1;if(e.root.shouldRefreshView(t)&&(i=!0),e.root.shouldRefreshVM(t)){let e=n.moduleGraph.getModuleById(B);e&&(n.moduleGraph.invalidateModule(e),i=!0)}if(i){n.hot.send({type:`full-reload`});return}}},async closeBundle(){await e.route.unwatchPagesConfig()}}]}function pr(e={}){return[...dr(e),...fr(),...cr(),...pn()]}exports.LogLevels=T,exports.OiyoCorePlugin=pr,exports.OiyoLayout=xt,exports.OiyoModAutoApi=$e,exports.OiyoModAutoComponent=ht,exports.OiyoModLayout=St,exports.OiyoModRoot=Vt,exports.OiyoModRoute=rn,exports.OiyoPage=nn,exports.OiyoState=lr,exports.RESOLVED_VIRTUAL_ROOT_CONTEXT_ID=B,exports.VIRTUAL_ROOT_CONTEXT_ID=Rt,exports.createLogger=pe,exports.definePageMeta=tn,exports.defineRootContext=Bt,exports.isScannedComponentPath=R,exports.resolveComponentName=st,exports.resolveScannedComponentSources=it;
|