@_tc/template-core 0.2.0-bate.0 → 0.2.0-bate.10

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.
Files changed (164) hide show
  1. package/.skills/tc-component-usage-skills/reference/template-core-frontend.md +8 -1
  2. package/.skills/tc-generator/SKILL.md +3 -2
  3. package/.skills/tc-generator/reference/example.md +1 -1
  4. package/.skills/tc-generator/reference/model-schema.md +18 -0
  5. package/.skills/tc-generator/reference/project-template/index.js +1 -1
  6. package/.skills/tc-generator/reference/runtime-extensions.md +22 -2
  7. package/AGENT_README.md +35 -14
  8. package/README.md +238 -33
  9. package/cjs/app/controller/view.js +1 -1
  10. package/cjs/app/{extend → extends}/db.js +1 -1
  11. package/cjs/app/extends/localCacheHtmlEtag.js +1 -0
  12. package/cjs/app/extends/render-view.js +1 -0
  13. package/cjs/app/middleware.js +1 -1
  14. package/cjs/app/view/entry.tpl +0 -16
  15. package/cjs/bundler/buildFE.js +1 -0
  16. package/cjs/bundler/index.js +1 -1
  17. package/cjs/bundler/state.js +1 -1
  18. package/cjs/bundler/utils.js +3 -3
  19. package/cjs/packages/common/index.js +1 -1
  20. package/cjs/packages/common/rafTimer.js +1 -0
  21. package/cjs/packages/common/string/index.js +1 -1
  22. package/cjs/packages/core/index.js +1 -1
  23. package/cjs/packages/core/loader/controller.js +1 -1
  24. package/cjs/packages/core/loader/extend.js +1 -1
  25. package/cjs/packages/core/loader/middleware.js +1 -1
  26. package/cjs/packages/core/loader/router-schema.js +1 -1
  27. package/cjs/packages/core/loader/router.js +1 -1
  28. package/cjs/packages/core/loader/service.js +1 -1
  29. package/cjs/packages/utils/runFileFn.js +1 -1
  30. package/esm/app/controller/view.js +28 -15
  31. package/esm/app/{extend → extends}/$fetch.js +1 -1
  32. package/esm/app/{extend → extends}/crypto.js +1 -1
  33. package/esm/app/{extend → extends}/db.js +2 -2
  34. package/esm/app/{extend → extends}/generateErrorMessage.js +1 -1
  35. package/esm/app/extends/localCacheHtmlEtag.js +41 -0
  36. package/esm/app/{extend → extends}/logger.js +1 -1
  37. package/esm/app/{extend → extends}/parsingParamsOnUrl.js +1 -1
  38. package/esm/app/extends/render-view.js +18 -0
  39. package/esm/app/middleware.js +8 -12
  40. package/esm/app/view/entry.tpl +0 -16
  41. package/esm/bundler/buildFE.js +14 -0
  42. package/esm/bundler/index.js +2 -14
  43. package/esm/bundler/state.js +5 -1
  44. package/esm/bundler/utils.js +130 -104
  45. package/esm/packages/common/index.js +7 -6
  46. package/esm/packages/common/rafTimer.js +47 -0
  47. package/esm/packages/common/string/index.js +11 -2
  48. package/esm/packages/core/index.js +34 -28
  49. package/esm/packages/core/loader/controller.js +6 -6
  50. package/esm/packages/core/loader/extend.js +6 -6
  51. package/esm/packages/core/loader/middleware.js +6 -6
  52. package/esm/packages/core/loader/router-schema.js +7 -7
  53. package/esm/packages/core/loader/router.js +13 -13
  54. package/esm/packages/core/loader/service.js +6 -6
  55. package/esm/packages/utils/runFileFn.js +10 -10
  56. package/fe/frontend/apps/dash/Dashboard.js +6 -4
  57. package/fe/frontend/apps/dash/dash.entry.js +4 -0
  58. package/fe/frontend/src/common/generateMenuData.d.ts +4 -1
  59. package/fe/frontend/src/common/generateMenuData.js +3 -3
  60. package/fe/frontend/src/common/language.d.ts +12 -1
  61. package/fe/frontend/src/common/language.js +25 -4
  62. package/fe/frontend/src/common/rafTimer.d.ts +1 -0
  63. package/fe/frontend/src/common/rafTimer.js +2 -0
  64. package/fe/frontend/src/common/request.js +1 -0
  65. package/fe/frontend/src/common/theme.d.ts +7 -0
  66. package/fe/frontend/src/common/theme.js +33 -0
  67. package/fe/frontend/src/components/BasePage/HeaderView.js +2 -2
  68. package/fe/frontend/src/components/LanguageSwitch/LanguageSwitch.js +22 -6
  69. package/fe/frontend/src/components/ThemeSwitch/ThemeSwitch.d.ts +3 -2
  70. package/fe/frontend/src/components/ThemeSwitch/ThemeSwitch.js +6 -29
  71. package/fe/frontend/src/components/ThemeSwitch/index.d.ts +1 -0
  72. package/fe/frontend/src/components/ThemeSwitch/index.js +3 -2
  73. package/fe/frontend/src/components/index.js +2 -2
  74. package/fe/frontend/src/defaultPages/NotFoundPage/index.js +4 -3
  75. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/DetailPanel.js +14 -9
  76. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/PopFrom.js +8 -7
  77. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaSearch/index.js +20 -24
  78. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/PreviewImage.d.ts +10 -0
  79. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/PreviewImage.js +17 -0
  80. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/data.d.ts +5 -0
  81. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/data.js +8 -0
  82. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/index.js +50 -32
  83. package/fe/frontend/src/defaultPages/SchemaPage/index.css +0 -4
  84. package/fe/frontend/src/defaultPages/SchemaPage/index.js +5 -3
  85. package/fe/frontend/src/defaultPages/SlotPage/index.js +6 -3
  86. package/fe/frontend/src/hooks/useText.d.ts +3 -0
  87. package/fe/frontend/src/hooks/useText.js +14 -0
  88. package/fe/frontend/src/index.d.ts +11 -3
  89. package/fe/frontend/src/index.js +8 -3
  90. package/fe/frontend/src/language/index.d.ts +0 -2
  91. package/fe/frontend/src/language/index.js +1 -7
  92. package/fe/frontend/src/language/resources.d.ts +2 -0
  93. package/fe/frontend/src/language/resources.js +9 -0
  94. package/fe/model/types/data/schema.d.ts +24 -2
  95. package/fe/model/types/index.d.ts +1 -0
  96. package/fe/packages/common/i18n/default.js +3 -0
  97. package/fe/packages/common/i18n/en-US.js +5 -2
  98. package/fe/packages/common/i18n/index.js +13 -0
  99. package/fe/packages/common/i18n/locales.js +7 -0
  100. package/fe/packages/common/index.d.ts +1 -0
  101. package/fe/packages/common/rafTimer.d.ts +7 -0
  102. package/fe/packages/common/rafTimer.js +168 -0
  103. package/fe/packages/common/string/index.d.ts +9 -0
  104. package/fe/packages/react/hooks/index.d.ts +9 -0
  105. package/fe/packages/react/hooks/index.js +8 -0
  106. package/fe/packages/react/hooks/useRefState.d.ts +4 -12
  107. package/fe/packages/react/hooks/useRefState.js +18 -8
  108. package/fe/packages/react/ui/components/DataTable/dataTableWidth.d.ts +12 -0
  109. package/fe/packages/react/ui/components/DataTable/dataTableWidth.js +33 -0
  110. package/fe/packages/react/ui/components/DataTable/dataTableWidth.test.js +39 -0
  111. package/fe/packages/react/ui/components/DataTable/index.d.ts +1 -1
  112. package/fe/packages/react/ui/components/DataTable/index.js +12 -32
  113. package/fe/packages/react/ui/components/Textarea/Textarea.d.ts +1 -1
  114. package/fe/packages/react/ui/components/Textarea/Textarea.js +1 -1
  115. package/fe/packages/react/ui/components/types/baseType.d.ts +21 -0
  116. package/fe/packages/react/ui/components/types/baseType.js +0 -0
  117. package/model/frontend/src/common/language.d.ts +12 -1
  118. package/model/frontend/src/hooks/useText.d.ts +3 -0
  119. package/model/frontend/src/language/index.d.ts +0 -2
  120. package/model/frontend/src/language/resources.d.ts +2 -0
  121. package/model/model/types/data/schema.d.ts +24 -2
  122. package/model/model/types/index.d.ts +1 -0
  123. package/model/packages/common/index.d.ts +1 -0
  124. package/model/packages/common/rafTimer.d.ts +7 -0
  125. package/model/packages/common/string/index.d.ts +9 -0
  126. package/model/packages/react/ui/components/DataTable/dataTableWidth.d.ts +12 -0
  127. package/model/packages/react/ui/components/DataTable/index.d.ts +1 -1
  128. package/model/packages/react/ui/components/Textarea/Textarea.d.ts +1 -1
  129. package/model/packages/react/ui/components/types/baseType.d.ts +21 -0
  130. package/package.json +5 -5
  131. package/types/app/extends/localCacheHtmlEtag.d.ts +10 -0
  132. package/types/app/{extend → extends}/render-view.d.ts +1 -1
  133. package/types/app/service/base.d.ts +1 -1
  134. package/types/app/service/project.d.ts +1 -1
  135. package/types/app/type.d.ts +2 -1
  136. package/types/app/typings.d.ts +10 -8
  137. package/types/bundler/buildFE.d.ts +2 -0
  138. package/types/bundler/index.d.ts +1 -2
  139. package/types/bundler/state.d.ts +4 -0
  140. package/types/bundler/utils.d.ts +5 -0
  141. package/types/index.d.ts +3 -3
  142. package/types/packages/common/i18n/default.d.ts +4 -0
  143. package/types/packages/common/i18n/en-US.d.ts +6 -2
  144. package/types/packages/common/i18n/index.d.ts +21 -0
  145. package/types/packages/common/i18n/locales.d.ts +10 -0
  146. package/types/packages/common/i18n/types.d.ts +40 -0
  147. package/types/packages/common/index.d.ts +1 -0
  148. package/types/packages/common/rafTimer.d.ts +44 -0
  149. package/types/packages/common/string/index.d.ts +16 -0
  150. package/types/packages/core/loader/extend.d.ts +1 -1
  151. package/types/packages/core/types.d.ts +4 -0
  152. package/cjs/app/extend/render-view.js +0 -1
  153. package/esm/app/extend/render-view.js +0 -25
  154. /package/cjs/app/{extend → extends}/$fetch.js +0 -0
  155. /package/cjs/app/{extend → extends}/crypto.js +0 -0
  156. /package/cjs/app/{extend → extends}/generateErrorMessage.js +0 -0
  157. /package/cjs/app/{extend → extends}/logger.js +0 -0
  158. /package/cjs/app/{extend → extends}/parsingParamsOnUrl.js +0 -0
  159. /package/types/app/{extend → extends}/$fetch.d.ts +0 -0
  160. /package/types/app/{extend → extends}/crypto.d.ts +0 -0
  161. /package/types/app/{extend → extends}/db.d.ts +0 -0
  162. /package/types/app/{extend → extends}/generateErrorMessage.d.ts +0 -0
  163. /package/types/app/{extend → extends}/logger.d.ts +0 -0
  164. /package/types/app/{extend → extends}/parsingParamsOnUrl.d.ts +0 -0
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./http/index.js`),t=require(`./guards/index.js`),n=require(`./array/index.js`),r=require(`./cache/LRUCache.js`),i=require(`./i18n/default.js`),a=require(`./i18n/en-US.js`),o=require(`./i18n/locales.js`),s=require(`./i18n/index.js`),c=require(`./log/index.js`),l=require(`./number/index.js`),u=require(`./object/filterEmpty.js`),d=require(`./object/index.js`),f=require(`./string/index.js`);exports.ANSI_RESET=c.ANSI_RESET,exports.FetchAxios=e.FetchAxios,exports.LRUCache=r.LRUCache,exports.ansiColors=c.ansiColors,exports.axios=e.axios,exports.capitalize=f.capitalize,exports.chunk=n.chunk,exports.clamp=l.clamp,exports.colorLog=c.colorLog,exports.colorize=c.colorize,exports.compact=n.compact,exports.createInstance=e.createInstance,exports.defaultEnglishResources=a.defaultEnglishResources,exports.defaultLanguage=o.defaultLanguage,exports.defaultLanguageResources=i.defaultLanguageResources,exports.filterEmpty=u.filterEmpty,exports.filtereEmpty=u.filtereEmpty,exports.getI18nPathValue=s.getI18nPathValue,exports.getLanguage=s.getLanguage,exports.groupBy=n.groupBy,exports.i18n=s.i18n,exports.i18nStore=s.i18nStore,exports.interpolateI18nMessage=s.interpolateI18nMessage,exports.isBlank=f.isBlank,exports.isBoolean=t.isBoolean,exports.isFunction=t.isFunction,exports.isNil=t.isNil,exports.isNonNullable=t.isNonNullable,exports.isNumber=t.isNumber,exports.isPlainI18nDictionary=s.isPlainI18nDictionary,exports.isPlainObject=t.isPlainObject,exports.isString=t.isString,exports.joinColorized=c.joinColorized,exports.kebabCase=f.kebabCase,exports.languageLocalKey=o.languageLocalKey,exports.logColor=c.logColor,exports.logColorized=c.logColorized,exports.logGreen=c.logGreen,exports.logJoinColorized=c.logJoinColorized,exports.logPink=c.logPink,exports.logRed=c.logRed,exports.logWhite=c.logWhite,exports.logYellow=c.logYellow,exports.mapValues=d.mapValues,exports.mergeI18nDictionary=s.mergeI18nDictionary,exports.mergeI18nResources=s.mergeI18nResources,exports.omit=d.omit,exports.pick=d.pick,exports.t=s.t,exports.toArray=n.toArray,exports.toFiniteNumber=l.toFiniteNumber,exports.translate=s.translate,exports.translations=o.translations,exports.uniqueBy=n.uniqueBy;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./guards/index.js`),t=require(`./array/index.js`),n=require(`./cache/LRUCache.js`),r=require(`./http/index.js`),i=require(`./i18n/default.js`),a=require(`./i18n/en-US.js`),o=require(`./i18n/locales.js`),s=require(`./i18n/index.js`),c=require(`./log/index.js`),l=require(`./number/index.js`),u=require(`./object/filterEmpty.js`),d=require(`./object/index.js`),f=require(`./rafTimer.js`),p=require(`./string/index.js`);exports.ANSI_RESET=c.ANSI_RESET,exports.FetchAxios=r.FetchAxios,exports.LRUCache=n.LRUCache,exports.ansiColors=c.ansiColors,exports.axios=r.axios,exports.capitalize=p.capitalize,exports.chunk=t.chunk,exports.clamp=l.clamp,exports.clearRafTimer=f.clearRafTimer,exports.colorLog=c.colorLog,exports.colorize=c.colorize,exports.compact=t.compact,exports.createInstance=r.createInstance,exports.defaultEnglishResources=a.defaultEnglishResources,exports.defaultLanguage=o.defaultLanguage,exports.defaultLanguageResources=i.defaultLanguageResources,exports.filterEmpty=u.filterEmpty,exports.filtereEmpty=u.filtereEmpty,exports.getI18nPathValue=s.getI18nPathValue,exports.getLanguage=s.getLanguage,exports.groupBy=t.groupBy,exports.i18n=s.i18n,exports.i18nStore=s.i18nStore,exports.interpolateI18nMessage=s.interpolateI18nMessage,exports.isBlank=p.isBlank,exports.isBoolean=e.isBoolean,exports.isFunction=e.isFunction,exports.isNil=e.isNil,exports.isNonNullable=e.isNonNullable,exports.isNumber=e.isNumber,exports.isPlainI18nDictionary=s.isPlainI18nDictionary,exports.isPlainObject=e.isPlainObject,exports.isString=e.isString,exports.joinColorized=c.joinColorized,exports.joinStr=p.joinStr,exports.kebabCase=p.kebabCase,exports.languageLocalKey=o.languageLocalKey,exports.logColor=c.logColor,exports.logColorized=c.logColorized,exports.logGreen=c.logGreen,exports.logJoinColorized=c.logJoinColorized,exports.logPink=c.logPink,exports.logRed=c.logRed,exports.logWhite=c.logWhite,exports.logYellow=c.logYellow,exports.mapValues=d.mapValues,exports.mergeI18nDictionary=s.mergeI18nDictionary,exports.mergeI18nResources=s.mergeI18nResources,exports.omit=d.omit,exports.pick=d.pick,exports.rafClearInterval=f.rafClearInterval,exports.rafClearTimeout=f.rafClearTimeout,exports.rafSetInterval=f.rafSetInterval,exports.rafSetTimeout=f.rafSetTimeout,exports.t=s.t,exports.toArray=t.toArray,exports.toFiniteNumber=l.toFiniteNumber,exports.translate=s.translate,exports.translations=o.translations,exports.uniqueBy=t.uniqueBy;
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=16,t=globalThis,n=new Map,r=0,i=e=>Math.max(0,e??0),a=()=>t.performance?.now?.()??Date.now(),o=()=>{let n=t.requestAnimationFrame,r=t.cancelAnimationFrame;if(typeof n==`function`&&typeof r==`function`)return{scheduleFrame:e=>n.call(t,e),cancelFrame:e=>r.call(t,e)};let i=t.setTimeout,o=t.clearTimeout;if(typeof i!=`function`||typeof o!=`function`)throw Error(`raf timer requires requestAnimationFrame or setTimeout/clearTimeout.`);return{scheduleFrame:n=>i.call(t,()=>n(a()),e),cancelFrame:e=>o.call(t,e)}},s,c=()=>(s??=o(),s),l=()=>(r+=1,r),u=e=>{let t=n.get(e);t&&(c().cancelFrame(t.frameId),n.delete(e))},d=(e,t)=>{let r=n.get(e);if(r){if(r.type===`timeout`?t-r.startTime>=r.delay:t-r.lastRunTime>=r.delay){if(r.type===`timeout`){n.delete(e),r.callback();return}r.lastRunTime=t,r.callback()}n.has(e)&&(r.frameId=c().scheduleFrame(t=>d(e,t)))}},f=(e,t,r,o)=>{let s=l(),u=a(),f={type:e,delay:i(r),callback:()=>t(...o??[]),startTime:u,lastRunTime:u,frameId:0};return n.set(s,f),f.frameId=c().scheduleFrame(e=>d(s,e)),s},p=(e,t,...n)=>f(`timeout`,e,t,n),m=e=>{u(e)},h=(e,t,...n)=>f(`interval`,e,t,n),g=e=>{u(e)},_=e=>{u(e)};exports.clearRafTimer=_,exports.rafClearInterval=g,exports.rafClearTimeout=m,exports.rafSetInterval=h,exports.rafSetTimeout=p;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>e==null||e.trim().length===0,t=e=>e.length===0?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`,n=e=>e.trim().replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/[\s_]+/g,`-`).replace(/-+/g,`-`).toLowerCase();exports.capitalize=t,exports.isBlank=e,exports.kebabCase=n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>e==null||e.trim().length===0,t=e=>e.length===0?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`,n=e=>e.trim().replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/[\s_]+/g,`-`).replace(/-+/g,`-`).toLowerCase(),r=(...e)=>{let t=e[e.length-1],n=typeof t==`object`&&t&&!Array.isArray(t)&&`separator`in t?t:void 0,r=n?.separator??` `;return(n?e.slice(0,-1):e).flatMap(e=>{if(Array.isArray(e)){let[t,n]=e;return t?n:void 0}return e}).filter(e=>e!=null&&e!==!1&&e!==``).join(r)};exports.capitalize=t,exports.isBlank=e,exports.joinStr=r,exports.kebabCase=n;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../_virtual/_rolldown/runtime.js`),t=require(`./paths.js`),n=require(`./env.js`),r=require(`../utils/path.js`),i=require(`../utils/runFileFn.js`);require(`../utils/index.js`);const a=require(`./loader/config.js`),o=require(`./loader/controller.js`),s=require(`./loader/extend.js`),c=require(`./loader/middleware.js`),l=require(`./loader/model.js`),u=require(`./loader/router.js`),d=require(`./loader/router-schema.js`),f=require(`./loader/service.js`);let p=require(`koa`);p=e.__toESM(p,1);var m=l,h=async(e={})=>{let t=new p.default;t.hooks={},t.hooks.initing?.();let{frameBaseDir:i,baseDir:l,...m}=e;t.options=m,t.options.pageBasePage=t.options.pageBasePage??`/`,t.options.apiPrefix=t.options.apiPrefix||`/api`;let h=t.baseDir=l??process.cwd(),_=t.frameBaseDir=i??r.resolve(__dirname,`..`);t.businessAppPath=r.resolve(h,`app`),t.frameAppPath=r.resolve(_,`app`),t.paths=[{type:`frame`,path:t.frameAppPath},{type:`business`,path:t.businessAppPath}],t.envs=n(),console.log(`-- [init] env: ${t.envs.get()} --`),a(t),console.log(`-- [init] loader config done --`),await s(t),console.log(`-- [init] loader extend done --`),d(t),console.log(`-- [init] loader routerSchema done --`),f(t),console.log(`-- [init] loader service done --`),o(t),console.log(`-- [init] loader controller done --`),c(t),console.log(`-- [init] loader middleware done --`),g(t),u(t),console.log(`-- [init] loader router done --`);try{let e=t.config.port||process.env.PORT||`8080`,r=parseInt(e+``,10),i=process.env.IP||`0.0.0.0`;t.listen(r,i),console.log(`Server port: http://localhost:${r}`),console.log(`run env is ${n().get()}`)}catch(e){console.error(e)}return t.hooks.inited?.(),t},g=e=>{[`frame`,`business`].map(n=>({type:n,path:t.getAppPath(e,n)})).forEach(t=>{for(let n of[`ts`,`js`]){let a=`middleware.${n}`,o=r.resolve(t.path,a);try{i.runFileFn(o)?.(e),console.log(`-- [init] loader ${t.type} appMiddleware ${a} done -- (${t.path})`);break}catch(e){let n=e;if(!(n?.code===`MODULE_NOT_FOUND`&&typeof n?.message==`string`&&(n.message.includes(`Cannot find module '${o}'`)||n.message.includes(`Cannot find module "${o}"`))))throw console.log(`-- [error] loader ${t.type} appMiddleware ${a} error -- (${o})`),e}}})};exports.loaderModel=m,exports.start=h;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../../_virtual/_rolldown/runtime.js`),t=require(`./env.js`),n=require(`../utils/path.js`),r=require(`../utils/runFileFn.js`);require(`../utils/index.js`);const i=require(`./loader/config.js`),a=require(`./paths.js`),o=require(`./loader/controller.js`),s=require(`./loader/extend.js`),c=require(`./loader/middleware.js`),l=require(`./loader/model.js`),u=require(`./loader/router.js`),d=require(`./loader/router-schema.js`),f=require(`./loader/service.js`);let p=require(`koa`);p=e.__toESM(p,1);var m=l,h=async(e={})=>{let r=new p.default;r.hooks={},r.hooks.initing?.();let{frameBaseDir:l,baseDir:m,...h}=e;r.options=h,r.options.pageBasePage=r.options.pageBasePage??`/`,r.options.apiPrefix=r.options.apiPrefix||`/api`;let _=r.baseDir=m??process.cwd(),v=r.frameBaseDir=l??n.resolve(__dirname,`..`);r.businessAppPath=n.resolve(_,`app`),r.frameAppPath=n.resolve(v,`app`),r.paths=[{type:`frame`,path:r.frameAppPath},{type:`business`,path:r.businessAppPath}];let y=r.options.additionalPublicPaths??[];y=Array.isArray(y)?y:[y],r.publicsPath=[n.resolve(a.getAppPath(r,`business`),`./public`),n.resolve(a.getAppPath(r,`frame`),`./public`),...y],r.envs=t(),console.log(`-- [init] env: ${r.envs.get()} --`),i(r),console.log(`-- [init] loader config done --`),await s(r),console.log(`-- [init] loader extends done --`),d(r),console.log(`-- [init] loader routerSchema done --`),f(r),console.log(`-- [init] loader service done --`),o(r),console.log(`-- [init] loader controller done --`),c(r),console.log(`-- [init] loader middleware done --`),g(r),u(r),console.log(`-- [init] loader router done --`);try{let e=r.config.port||process.env.PORT||`8080`,n=parseInt(e+``,10),i=process.env.IP||`0.0.0.0`;r.listen(n,i),console.log(`Server port: http://localhost:${n}`),console.log(`run env is ${t().get()}`)}catch(e){console.error(e)}return r.hooks.inited?.(),r},g=e=>{[`frame`,`business`].map(t=>({type:t,path:a.getAppPath(e,t)})).forEach(t=>{for(let i of[`ts`,`js`]){let a=`middleware.${i}`,o=n.resolve(t.path,a);try{r.runFileFn(o)?.(e),console.log(`-- [init] loader ${t.type} appMiddleware ${a} done -- (${t.path})`);break}catch(e){let n=e;if(!(n?.code===`MODULE_NOT_FOUND`&&typeof n?.message==`string`&&(n.message.includes(`Cannot find module '${o}'`)||n.message.includes(`Cannot find module "${o}"`))))throw console.log(`-- [error] loader ${t.type} appMiddleware ${a} error -- (${o})`),e}}})};exports.loaderModel=m,exports.start=h;
@@ -1 +1 @@
1
- const e=require(`../paths.js`),t=require(`../../utils/loadFile.js`),n=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);var r=r=>{r.controller=e.getAppPaths(r).reduce((e,i)=>({...e,...t.loadFileFn(i,`controller`,{loadFileCallback:e=>new(n.runFileFn(e)(r))})}),{})};module.exports=r;
1
+ const e=require(`../../utils/loadFile.js`),t=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);const n=require(`../paths.js`);var r=r=>{r.controller=n.getAppPaths(r).reduce((n,i)=>({...n,...e.loadFileFn(i,`controller`,{loadFileCallback:e=>new(t.runFileFn(e)(r))})}),{})};module.exports=r;
@@ -1 +1 @@
1
- const e=require(`../paths.js`),t=require(`../../utils/loadFile.js`),n=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);var r=async r=>{r.extends={...r.extends};let i=[];e.getAppPaths(r).forEach(e=>{t.loadFileFn(e,`extend`,{processingFileCallback:((e,t,a)=>{if(!a){for(let t in r)if(t===e){console.log(`\x1B[31m%s\x1B[0m`,`[extend loader error] name:${e} is already in app`);return}let a=n.runFileFn(t)(r);i.push(Promise.resolve(a).then(t=>({fileName:e,value:t})))}})})}),(await Promise.all(i)).forEach(({fileName:e,value:t})=>{r.extends[e]=t})};module.exports=r;
1
+ const e=require(`../../utils/loadFile.js`),t=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);const n=require(`../paths.js`);var r=async r=>{r.extends={...r.extends};let i=[];n.getAppPaths(r).forEach(n=>{e.loadFileFn(n,`extends`,{processingFileCallback:((e,n,a)=>{if(!a){for(let t in r)if(t===e){console.log(`\x1B[31m%s\x1B[0m`,`[extend loader error] name:${e} is already in app`);return}let a=t.runFileFn(n)(r);i.push(Promise.resolve(a).then(t=>({fileName:e,value:t})))}})})}),(await Promise.all(i)).forEach(({fileName:e,value:t})=>{r.extends[e]=t})};module.exports=r;
@@ -1 +1 @@
1
- const e=require(`../paths.js`),t=require(`../../utils/loadFile.js`),n=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);var r=r=>{r.middlewares=e.getAppPaths(r).reduce((e,i)=>{let a=t.loadFileFn(i,`middlewares`,{loadFileCallback:e=>n.runFileFn(e)(r)});return{...e,...a}},{})};module.exports=r;
1
+ const e=require(`../../utils/loadFile.js`),t=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);const n=require(`../paths.js`);var r=r=>{r.middlewares=n.getAppPaths(r).reduce((n,i)=>{let a=e.loadFileFn(i,`middlewares`,{loadFileCallback:e=>t.runFileFn(e)(r)});return{...n,...a}},{})};module.exports=r;
@@ -1 +1 @@
1
- const e=require(`../paths.js`),t=require(`../../utils/path.js`),n=require(`../../utils/loadFile.js`),r=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);var i=i=>{let a={};e.getAppPaths(i).forEach(e=>{n.loadFileFn(e,`router-schema`,{preProcessingFileCallback(e){a={...a,...r.runFileFn(t.resolve(e))}}})}),i.routerSchema=a};module.exports=i;
1
+ const e=require(`../../utils/path.js`),t=require(`../../utils/loadFile.js`),n=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);const r=require(`../paths.js`);var i=i=>{let a={};r.getAppPaths(i).forEach(r=>{t.loadFileFn(r,`router-schema`,{preProcessingFileCallback(t){a={...a,...n.runFileFn(e.resolve(t))}}})}),i.routerSchema=a};module.exports=i;
@@ -1 +1 @@
1
- const e=require(`../../../_virtual/_rolldown/runtime.js`),t=require(`../paths.js`),n=require(`../../utils/path.js`),r=require(`../../utils/loadFile.js`),i=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);let a=require(`fs`),o=require(`koa-router`);o=e.__toESM(o,1);var s=e=>{let s,c=t.getAppPath(e,`business`);if(c)for(let t of[`router-guard.ts`,`router-guard.js`]){let r=n.resolve(c,t);if((0,a.existsSync)(r)){s=i.runFileFn(r)(e);break}}s||console.info(`-- [router-guard] -- not router-guard.(ts|js) file`);let l=[];t.getAppPaths(e).forEach(t=>{r.loadFileFn(t,`router`,{preProcessingFileCallback:t=>{let r=new o.default;r.level=0,l.push(r),i.runFileFn(n.resolve(t))(e,r)}})});let u=new o.default;u.level=99,u.get(`(.*)`,async(t,n)=>{console.info(`\x1B[31m%s\x1B[0m`,`-- notFound path: ${t.path} --`);let r=s?.(t);t.status=302,r?typeof r==`string`?t.redirect(r??`/`):(t.status=r.status,t.body=r.body):t.path.includes(`${e.options.apiPrefix}/`)?(t.status=200,t.body={code:404,message:`${t.path} not found`}):(t.status=404,t.body=`notFound`)}),l.push(u),l.sort((e,t)=>(e.level??0)<(t.level??0)?-1:1),l.forEach(t=>{e.use(t.routes()),e.use(t.allowedMethods())}),e.currentUseRouter=l};module.exports=s;
1
+ const e=require(`../../../_virtual/_rolldown/runtime.js`),t=require(`../../utils/path.js`),n=require(`../../utils/loadFile.js`),r=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);const i=require(`../paths.js`);let a=require(`fs`),o=require(`koa-router`);o=e.__toESM(o,1);var s=e=>{let s,c=i.getAppPath(e,`business`);if(c)for(let n of[`router-guard.ts`,`router-guard.js`]){let i=t.resolve(c,n);if((0,a.existsSync)(i)){s=r.runFileFn(i)(e);break}}s||console.info(`-- [router-guard] -- not router-guard.(ts|js) file`);let l=[];i.getAppPaths(e).forEach(i=>{n.loadFileFn(i,`router`,{preProcessingFileCallback:n=>{let i=new o.default;i.level=0,l.push(i),r.runFileFn(t.resolve(n))(e,i)}})});let u=new o.default;u.level=99,u.get(`(.*)`,async(t,n)=>{console.info(`\x1B[31m%s\x1B[0m`,`-- notFound path: ${t.path} --`);let r=s?.(t);t.status=302,r?typeof r==`string`?t.redirect(r??`/`):(t.status=r.status,t.body=r.body):t.path.includes(`${e.options.apiPrefix}/`)?(t.status=200,t.body={code:404,message:`${t.path} not found`}):(t.status=404,t.body=`notFound`)}),l.push(u),l.sort((e,t)=>(e.level??0)<(t.level??0)?-1:1),l.forEach(t=>{e.use(t.routes()),e.use(t.allowedMethods())}),e.currentUseRouter=l};module.exports=s;
@@ -1 +1 @@
1
- const e=require(`../paths.js`),t=require(`../../utils/loadFile.js`),n=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);var r=r=>{r.service=e.getAppPaths(r).reduce((e,i)=>({...e,...t.loadFileFn(i,`service`,{loadFileCallback:e=>new(n.runFileFn(e)(r))})}),{})};module.exports=r;
1
+ const e=require(`../../utils/loadFile.js`),t=require(`../../utils/runFileFn.js`);require(`../../utils/index.js`);const n=require(`../paths.js`);var r=r=>{r.service=n.getAppPaths(r).reduce((n,i)=>({...n,...e.loadFileFn(i,`service`,{loadFileCallback:e=>new(t.runFileFn(e)(r))})}),{})};module.exports=r;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../_virtual/_rolldown/runtime.js`);let e=require(`path`),t=require(`fs`);var n=!1;function r(e){return i(typeof e==`string`?a(e):e)}function i(e){return e&&typeof e==`object`&&`default`in e&&e.default!==void 0?e.default:e}function a(t){try{return require(t)}catch(n){if((0,e.extname)(t)!==`.ts`||!o(n))throw n;return s(),delete require.cache[require.resolve(t)],require(t)}}function o(e){let t=e,n=t?.message??``;return t?.code===`ERR_UNKNOWN_FILE_EXTENSION`||t?.code===`ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`||t?.name===`SyntaxError`||n.indexOf(`Cannot use import statement outside a module`)!==-1||n.indexOf(`Unexpected token 'export'`)!==-1}function s(){if(n)return;let e=c();require.extensions[`.ts`]=(n,r)=>{let{outputText:i}=e.transpileModule((0,t.readFileSync)(r,`utf8`),{compilerOptions:{module:e.ModuleKind.CommonJS,target:e.ScriptTarget.ES2020,esModuleInterop:!0,allowSyntheticDefaultImports:!0}});n._compile(i,r)},n=!0}function c(){try{return require(`typescript`)}catch(e){throw Error(`Unable to load TypeScript file. Please install "typescript" or run with a TypeScript runtime. ${String(e)}`)}}exports.runFileFn=r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../../_virtual/_rolldown/runtime.js`);let e=require(`fs`),t=require(`path`);var n=!1;function r(e){return i(typeof e==`string`?a(e):e)}function i(e){return e&&typeof e==`object`&&`default`in e&&e.default!==void 0?e.default:e}function a(e){try{return require(e)}catch(n){if((0,t.extname)(e)!==`.ts`||!o(n))throw n;return s(),delete require.cache[require.resolve(e)],require(e)}}function o(e){let t=e,n=t?.message??``;return t?.code===`ERR_UNKNOWN_FILE_EXTENSION`||t?.code===`ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`||t?.name===`SyntaxError`||n.indexOf(`Cannot use import statement outside a module`)!==-1||n.indexOf(`Unexpected token 'export'`)!==-1}function s(){if(n)return;let t=c();require.extensions[`.ts`]=(n,r)=>{let{outputText:i}=t.transpileModule((0,e.readFileSync)(r,`utf8`),{compilerOptions:{module:t.ModuleKind.CommonJS,target:t.ScriptTarget.ES2020,esModuleInterop:!0,allowSyntheticDefaultImports:!0}});n._compile(i,r)},n=!0}function c(){try{return require(`typescript`)}catch(e){throw Error(`Unable to load TypeScript file. Please install "typescript" or run with a TypeScript runtime. ${String(e)}`)}}exports.runFileFn=r;
@@ -1,21 +1,34 @@
1
+ import { joinStr as e } from "../../packages/common/string/index.js";
1
2
  //#region app/controller/view.ts
2
- var e = (e) => JSON.stringify(e).replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/&/g, "\\u0026").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"), t = ((t) => class {
3
- async renderPage(n, r) {
4
- if (n.path.includes(`${t.options.apiPrefix}/`)) await r();
3
+ var t = (e) => JSON.stringify(e).replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/&/g, "\\u0026").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"), n = ((n) => class {
4
+ async renderPage(r, i) {
5
+ let a = r.path;
6
+ if (n.extends.localCacheHtmlEtag.keepFreshFEBuildKey(), a.includes(`${n.options.apiPrefix}/`)) await i();
5
7
  else {
6
- t.extends.logger.log(" - render page: " + n.params.page);
8
+ n.extends.logger.log(" - render page: " + r.params.page);
7
9
  try {
8
- t.extends.renderView(`${n.params.page}.entry.tpl`, n, {
9
- projKey: n.query.projk,
10
- name: t.options?.name,
11
- env: t.envs.get(),
12
- basePath: e(`${t.options.pageBasePage}${n.params.page}`),
13
- projKeyJson: e(String(n.query.projk ?? "")),
14
- signKey: e(t.config.signKey),
15
- options: e(t.options)
16
- });
10
+ let i = r.query.projk;
11
+ Array.isArray(i) && (i = e(...i));
12
+ let a = {
13
+ projKey: i ?? "",
14
+ name: n.options?.name ?? "",
15
+ env: n.envs.get(),
16
+ basePath: t(`${n.options.pageBasePage}${r.params.page}`),
17
+ projKeyJson: t(String(r.query.projk ?? "")),
18
+ signKey: t(n.config.signKey),
19
+ options: t(n.options)
20
+ }, o = n.extends.renderView(`${r.params.page}.entry.tpl`, r, a), s = e(a.basePath, a.name, a.env, a.projKey);
21
+ if (!n.extends.localCacheHtmlEtag.hasEtag(s)) {
22
+ let e = n.extends.crypto.hmacSign(o);
23
+ n.extends.localCacheHtmlEtag.setEtag(s, e);
24
+ }
25
+ let c = n.extends.localCacheHtmlEtag.getEtag(s);
26
+ if (c || console.log("---- etag 缓存异常 请检查服务 ----"), r.etag = c ?? Date.now() + "", r.fresh) {
27
+ r.status = 304;
28
+ return;
29
+ }
17
30
  } catch (e) {
18
- console.log("-------------- render view error --------------"), console.log(e), t.extends.generateErrorMessage("template not found", {
31
+ console.log("-------------- render view error --------------"), console.log(e), n.extends.generateErrorMessage("template not found", {
19
32
  status: 404,
20
33
  showError: !0,
21
34
  code: 0
@@ -25,4 +38,4 @@ var e = (e) => JSON.stringify(e).replace(/</g, "\\u003c").replace(/>/g, "\\u003e
25
38
  }
26
39
  });
27
40
  //#endregion
28
- export { t as default };
41
+ export { n as default };
@@ -1,5 +1,5 @@
1
1
  import { FetchAxios as e } from "../../packages/common/http/index.js";
2
- //#region app/extend/$fetch.ts
2
+ //#region app/extends/$fetch.ts
3
3
  var t = (t) => {
4
4
  let n = new e({
5
5
  timeout: 15e3,
@@ -1,5 +1,5 @@
1
1
  import { createHmac as e, timingSafeEqual as t } from "node:crypto";
2
- //#region app/extend/crypto.ts
2
+ //#region app/extends/crypto.ts
3
3
  var n = "sha256", r = ".", i = "template-core-crypto", a = (e, t) => String(t ?? e.config.signKey ?? i), o = (e) => e ?? n, s = (e) => e || r, c = (e) => Buffer.isBuffer(e) ? e : Buffer.from(e), l = (n) => {
4
4
  let r = (e) => c(e).toString("base64url"), i = (e) => Buffer.from(e, "base64url"), l = (e) => i(e).toString("utf8"), u = (t, r) => e(o(r?.algorithm), a(n, r?.secret)).update(t).digest("base64url"), d = (e, n) => {
5
5
  let r = Buffer.from(e), i = Buffer.from(n);
@@ -1,7 +1,7 @@
1
1
  import { __require as e } from "../../_virtual/_rolldown/runtime.js";
2
2
  import { mkdirSync as t } from "node:fs";
3
3
  import { dirname as n, isAbsolute as r, resolve as i } from "node:path";
4
- //#region app/extend/db.ts
4
+ //#region app/extends/db.ts
5
5
  var a = "framework", o = ".template-core/template-core.sqlite";
6
6
  function s(e) {
7
7
  let r = u(e), i, a = !1, o = 0, s = () => (x(a), i || (t(n(r), { recursive: !0 }), i = c(r), l(i)), i), d = {
@@ -70,7 +70,7 @@ function c(t) {
70
70
  try {
71
71
  r = e(n);
72
72
  } catch (e) {
73
- throw Error(`[db] 默认数据库依赖 Node.js 内置 ${n},当前运行环境不可用。请升级 Node.js,或在业务项目覆盖 app/extend/db.ts。${S(e)}`);
73
+ throw Error(`[db] 默认数据库依赖 Node.js 内置 ${n},当前运行环境不可用。请升级 Node.js,或在业务项目覆盖 app/extends/db.ts。${S(e)}`);
74
74
  }
75
75
  if (!r.DatabaseSync) throw Error(`[db] ${n} 未提供 DatabaseSync,无法初始化默认 SQLite 数据库。`);
76
76
  return new r.DatabaseSync(t);
@@ -1,4 +1,4 @@
1
- //#region app/extend/generateErrorMessage.ts
1
+ //#region app/extends/generateErrorMessage.ts
2
2
  var e = () => (e, t) => {
3
3
  let n = Error(e);
4
4
  throw n.status = t?.status, n.code = t?.code, n.returnError = t?.showError, n;
@@ -0,0 +1,41 @@
1
+ import { existsSync as e, readFileSync as t } from "fs";
2
+ import n from "path";
3
+ //#region app/extends/localCacheHtmlEtag.ts
4
+ var r = "./dist/FEBuildKey", i = {
5
+ etags: {},
6
+ FEBuildKey: null
7
+ }, a = ((a) => {
8
+ let o = (e, t) => {
9
+ i.etags[e] = t;
10
+ }, s = (e) => !!c(e), c = (e) => i.etags[e] || null, l = (e) => {
11
+ i.FEBuildKey = e;
12
+ }, u = () => i.FEBuildKey || null, d = () => {
13
+ for (let t of a.publicsPath) {
14
+ let i = n.resolve(t, r);
15
+ if (e(i)) return i;
16
+ }
17
+ }, f = () => {
18
+ let e, n = d();
19
+ return n && (e = t(n, "utf-8")), e === u();
20
+ };
21
+ return {
22
+ keepFreshFEBuildKey: () => {
23
+ if (!f()) {
24
+ let e = d();
25
+ if (e) {
26
+ let n = t(e, "utf-8");
27
+ if (n) {
28
+ l(n), i.etags = {};
29
+ return;
30
+ }
31
+ }
32
+ console.log("--- 没找到前端构建key文件 ---"), console.log("--- filePath --- -> ", e);
33
+ }
34
+ },
35
+ hasEtag: s,
36
+ getEtag: c,
37
+ setEtag: o
38
+ };
39
+ });
40
+ //#endregion
41
+ export { a as default };
@@ -1,4 +1,4 @@
1
- //#region app/extend/logger.ts
1
+ //#region app/extends/logger.ts
2
2
  var e = async (e) => {
3
3
  let t = console;
4
4
  if (e.envs.get() !== "local") {
@@ -1,4 +1,4 @@
1
- //#region app/extend/parsingParamsOnUrl.ts
1
+ //#region app/extends/parsingParamsOnUrl.ts
2
2
  var e = () => (e, t) => {
3
3
  let n = e.split("/"), r = t.split("/");
4
4
  if (n.length !== r.length) return null;
@@ -0,0 +1,18 @@
1
+ import e from "node:path";
2
+ import t from "nunjucks";
3
+ //#region app/extends/render-view.ts
4
+ var n = (n) => {
5
+ let r = n.publicsPath.map((t) => e.resolve(t, "./dist"));
6
+ console.log(r);
7
+ let i = t.configure(r, {
8
+ autoescape: !0,
9
+ throwOnUndefined: !1,
10
+ trimBlocks: !1,
11
+ lstripBlocks: !1,
12
+ noCache: n.envs.get() === "local",
13
+ ...typeof n.config.nunjucks == "object" ? n.config.nunjucks : {}
14
+ });
15
+ return n.extends.nunjucksEnv = i, (e, t, n) => t.body = i.render(e, Object.assign({}, t.state, n));
16
+ };
17
+ //#endregion
18
+ export { n as default };
@@ -1,26 +1,22 @@
1
- import { getAppPath as e } from "../packages/core/paths.js";
2
- import t from "koa-compress";
3
- import { resolve as n } from "path";
4
- import r from "koa-bodyparser";
5
- import i from "koa-static";
1
+ import e from "koa-compress";
2
+ import t from "koa-bodyparser";
3
+ import n from "koa-static";
6
4
  //#region app/middleware.ts
7
- var a = r({
5
+ var r = t({
8
6
  formLimit: "1000mb",
9
7
  enableTypes: [
10
8
  "form",
11
9
  "json",
12
10
  "text"
13
11
  ]
14
- }), o = (r) => {
15
- let o = r.envs.isLocal() ? {
12
+ }), i = (t) => {
13
+ let i = t.envs.isLocal() ? {
16
14
  maxage: 0,
17
15
  setHeaders(e) {
18
16
  e.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate"), e.setHeader("Pragma", "no-cache"), e.setHeader("Expires", "0");
19
17
  }
20
18
  } : { maxage: 365 * 24 * 60 * 60 * 1e3 };
21
- r.use(r.middlewares.errorHandle), r.use(t({ threshold: 2048 }));
22
- let s = n(e(r, "business"), "./public"), c = n(e(r, "frame"), "./public"), l = r.options.additionalPublicPaths ?? [];
23
- l = Array.isArray(l) ? l : [l], r.use(i(c, o)), r.use(i(s, o)), l.forEach((e) => r.use(i(e, o))), r.use(a), r.use(r.middlewares.requestParameterParsing), r.use(r.middlewares.projectHandler), !r.envs.isLocal() && r.use(r.middlewares.apiSignVerify), r.use(r.middlewares.apiParamsVerify);
19
+ t.use(t.middlewares.errorHandle), t.use(e({ threshold: 2048 })), t.publicsPath.forEach((e) => t.use(n(e, i))), t.use(r), t.use(t.middlewares.requestParameterParsing), t.use(t.middlewares.projectHandler), !t.envs.isLocal() && t.use(t.middlewares.apiSignVerify), t.use(t.middlewares.apiParamsVerify);
24
20
  };
25
21
  //#endregion
26
- export { o as default };
22
+ export { i as default };
@@ -3,22 +3,6 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <script>
7
- ;(() => {
8
- const root = document.documentElement
9
- let theme = root.classList.contains('dark') ? 'dark' : 'light'
10
-
11
- try {
12
- const storedTheme = window.localStorage.getItem('tc_theme')
13
- if (storedTheme === 'light' || storedTheme === 'dark') {
14
- theme = storedTheme
15
- }
16
- } catch (_error) {}
17
-
18
- root.classList.toggle('dark', theme === 'dark')
19
- root.style.colorScheme = theme
20
- })()
21
- </script>
22
6
  <link rel="icon" type="image/x-icon" href="/static/logo.png" />
23
7
  <title>{{ name }}</title>
24
8
  <!-- TC_HEAD_SLOT -->
@@ -0,0 +1,14 @@
1
+ import { logRed as e } from "../packages/common/log/index.js";
2
+ import { setBuildFEOptions as t } from "./state.js";
3
+ import { dev as n } from "./dev.js";
4
+ import { prod as r } from "./prod.js";
5
+ //#region bundler/buildFE.ts
6
+ var i = (i, a) => {
7
+ switch (t(a), i) {
8
+ case "dev": return n();
9
+ case "prod": return r();
10
+ default: return e("Usage: npx tsx scripts/index.ts [dev|prod]"), Promise.resolve();
11
+ }
12
+ };
13
+ //#endregion
14
+ export { i as buildFE };
@@ -1,15 +1,3 @@
1
1
  import { buildBE as e } from "./buildBE.js";
2
- import { logRed as t } from "../packages/common/log/index.js";
3
- import { setBuildFEOptions as n } from "./state.js";
4
- import { dev as r } from "./dev.js";
5
- import { prod as i } from "./prod.js";
6
- //#region bundler/index.ts
7
- var a = (e, a) => {
8
- switch (n(a), e) {
9
- case "dev": return r();
10
- case "prod": return i();
11
- default: return t("Usage: npx tsx scripts/index.ts [dev|prod]"), Promise.resolve();
12
- }
13
- };
14
- //#endregion
15
- export { e as buildBE, a as buildFE };
2
+ import { buildFE as t } from "./buildFE.js";
3
+ export { e as buildBE, t as buildFE };
@@ -1,8 +1,12 @@
1
1
  //#region bundler/state.ts
2
- var e = { options: { output: "frame" } };
2
+ var e = { options: {
3
+ output: "frame",
4
+ minifyHtml: !1
5
+ } };
3
6
  function t(t) {
4
7
  e.options = {
5
8
  output: "frame",
9
+ minifyHtml: !1,
6
10
  ...t
7
11
  };
8
12
  }