@_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.
- package/.skills/tc-component-usage-skills/reference/template-core-frontend.md +8 -1
- package/.skills/tc-generator/SKILL.md +3 -2
- package/.skills/tc-generator/reference/example.md +1 -1
- package/.skills/tc-generator/reference/model-schema.md +18 -0
- package/.skills/tc-generator/reference/project-template/index.js +1 -1
- package/.skills/tc-generator/reference/runtime-extensions.md +22 -2
- package/AGENT_README.md +35 -14
- package/README.md +238 -33
- package/cjs/app/controller/view.js +1 -1
- package/cjs/app/{extend → extends}/db.js +1 -1
- package/cjs/app/extends/localCacheHtmlEtag.js +1 -0
- package/cjs/app/extends/render-view.js +1 -0
- package/cjs/app/middleware.js +1 -1
- package/cjs/app/view/entry.tpl +0 -16
- package/cjs/bundler/buildFE.js +1 -0
- package/cjs/bundler/index.js +1 -1
- package/cjs/bundler/state.js +1 -1
- package/cjs/bundler/utils.js +3 -3
- package/cjs/packages/common/index.js +1 -1
- package/cjs/packages/common/rafTimer.js +1 -0
- package/cjs/packages/common/string/index.js +1 -1
- package/cjs/packages/core/index.js +1 -1
- package/cjs/packages/core/loader/controller.js +1 -1
- package/cjs/packages/core/loader/extend.js +1 -1
- package/cjs/packages/core/loader/middleware.js +1 -1
- package/cjs/packages/core/loader/router-schema.js +1 -1
- package/cjs/packages/core/loader/router.js +1 -1
- package/cjs/packages/core/loader/service.js +1 -1
- package/cjs/packages/utils/runFileFn.js +1 -1
- package/esm/app/controller/view.js +28 -15
- package/esm/app/{extend → extends}/$fetch.js +1 -1
- package/esm/app/{extend → extends}/crypto.js +1 -1
- package/esm/app/{extend → extends}/db.js +2 -2
- package/esm/app/{extend → extends}/generateErrorMessage.js +1 -1
- package/esm/app/extends/localCacheHtmlEtag.js +41 -0
- package/esm/app/{extend → extends}/logger.js +1 -1
- package/esm/app/{extend → extends}/parsingParamsOnUrl.js +1 -1
- package/esm/app/extends/render-view.js +18 -0
- package/esm/app/middleware.js +8 -12
- package/esm/app/view/entry.tpl +0 -16
- package/esm/bundler/buildFE.js +14 -0
- package/esm/bundler/index.js +2 -14
- package/esm/bundler/state.js +5 -1
- package/esm/bundler/utils.js +130 -104
- package/esm/packages/common/index.js +7 -6
- package/esm/packages/common/rafTimer.js +47 -0
- package/esm/packages/common/string/index.js +11 -2
- package/esm/packages/core/index.js +34 -28
- package/esm/packages/core/loader/controller.js +6 -6
- package/esm/packages/core/loader/extend.js +6 -6
- package/esm/packages/core/loader/middleware.js +6 -6
- package/esm/packages/core/loader/router-schema.js +7 -7
- package/esm/packages/core/loader/router.js +13 -13
- package/esm/packages/core/loader/service.js +6 -6
- package/esm/packages/utils/runFileFn.js +10 -10
- package/fe/frontend/apps/dash/Dashboard.js +6 -4
- package/fe/frontend/apps/dash/dash.entry.js +4 -0
- package/fe/frontend/src/common/generateMenuData.d.ts +4 -1
- package/fe/frontend/src/common/generateMenuData.js +3 -3
- package/fe/frontend/src/common/language.d.ts +12 -1
- package/fe/frontend/src/common/language.js +25 -4
- package/fe/frontend/src/common/rafTimer.d.ts +1 -0
- package/fe/frontend/src/common/rafTimer.js +2 -0
- package/fe/frontend/src/common/request.js +1 -0
- package/fe/frontend/src/common/theme.d.ts +7 -0
- package/fe/frontend/src/common/theme.js +33 -0
- package/fe/frontend/src/components/BasePage/HeaderView.js +2 -2
- package/fe/frontend/src/components/LanguageSwitch/LanguageSwitch.js +22 -6
- package/fe/frontend/src/components/ThemeSwitch/ThemeSwitch.d.ts +3 -2
- package/fe/frontend/src/components/ThemeSwitch/ThemeSwitch.js +6 -29
- package/fe/frontend/src/components/ThemeSwitch/index.d.ts +1 -0
- package/fe/frontend/src/components/ThemeSwitch/index.js +3 -2
- package/fe/frontend/src/components/index.js +2 -2
- package/fe/frontend/src/defaultPages/NotFoundPage/index.js +4 -3
- package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/DetailPanel.js +14 -9
- package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/PopFrom.js +8 -7
- package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaSearch/index.js +20 -24
- package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/PreviewImage.d.ts +10 -0
- package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/PreviewImage.js +17 -0
- package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/data.d.ts +5 -0
- package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/data.js +8 -0
- package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/index.js +50 -32
- package/fe/frontend/src/defaultPages/SchemaPage/index.css +0 -4
- package/fe/frontend/src/defaultPages/SchemaPage/index.js +5 -3
- package/fe/frontend/src/defaultPages/SlotPage/index.js +6 -3
- package/fe/frontend/src/hooks/useText.d.ts +3 -0
- package/fe/frontend/src/hooks/useText.js +14 -0
- package/fe/frontend/src/index.d.ts +11 -3
- package/fe/frontend/src/index.js +8 -3
- package/fe/frontend/src/language/index.d.ts +0 -2
- package/fe/frontend/src/language/index.js +1 -7
- package/fe/frontend/src/language/resources.d.ts +2 -0
- package/fe/frontend/src/language/resources.js +9 -0
- package/fe/model/types/data/schema.d.ts +24 -2
- package/fe/model/types/index.d.ts +1 -0
- package/fe/packages/common/i18n/default.js +3 -0
- package/fe/packages/common/i18n/en-US.js +5 -2
- package/fe/packages/common/i18n/index.js +13 -0
- package/fe/packages/common/i18n/locales.js +7 -0
- package/fe/packages/common/index.d.ts +1 -0
- package/fe/packages/common/rafTimer.d.ts +7 -0
- package/fe/packages/common/rafTimer.js +168 -0
- package/fe/packages/common/string/index.d.ts +9 -0
- package/fe/packages/react/hooks/index.d.ts +9 -0
- package/fe/packages/react/hooks/index.js +8 -0
- package/fe/packages/react/hooks/useRefState.d.ts +4 -12
- package/fe/packages/react/hooks/useRefState.js +18 -8
- package/fe/packages/react/ui/components/DataTable/dataTableWidth.d.ts +12 -0
- package/fe/packages/react/ui/components/DataTable/dataTableWidth.js +33 -0
- package/fe/packages/react/ui/components/DataTable/dataTableWidth.test.js +39 -0
- package/fe/packages/react/ui/components/DataTable/index.d.ts +1 -1
- package/fe/packages/react/ui/components/DataTable/index.js +12 -32
- package/fe/packages/react/ui/components/Textarea/Textarea.d.ts +1 -1
- package/fe/packages/react/ui/components/Textarea/Textarea.js +1 -1
- package/fe/packages/react/ui/components/types/baseType.d.ts +21 -0
- package/fe/packages/react/ui/components/types/baseType.js +0 -0
- package/model/frontend/src/common/language.d.ts +12 -1
- package/model/frontend/src/hooks/useText.d.ts +3 -0
- package/model/frontend/src/language/index.d.ts +0 -2
- package/model/frontend/src/language/resources.d.ts +2 -0
- package/model/model/types/data/schema.d.ts +24 -2
- package/model/model/types/index.d.ts +1 -0
- package/model/packages/common/index.d.ts +1 -0
- package/model/packages/common/rafTimer.d.ts +7 -0
- package/model/packages/common/string/index.d.ts +9 -0
- package/model/packages/react/ui/components/DataTable/dataTableWidth.d.ts +12 -0
- package/model/packages/react/ui/components/DataTable/index.d.ts +1 -1
- package/model/packages/react/ui/components/Textarea/Textarea.d.ts +1 -1
- package/model/packages/react/ui/components/types/baseType.d.ts +21 -0
- package/package.json +5 -5
- package/types/app/extends/localCacheHtmlEtag.d.ts +10 -0
- package/types/app/{extend → extends}/render-view.d.ts +1 -1
- package/types/app/service/base.d.ts +1 -1
- package/types/app/service/project.d.ts +1 -1
- package/types/app/type.d.ts +2 -1
- package/types/app/typings.d.ts +10 -8
- package/types/bundler/buildFE.d.ts +2 -0
- package/types/bundler/index.d.ts +1 -2
- package/types/bundler/state.d.ts +4 -0
- package/types/bundler/utils.d.ts +5 -0
- package/types/index.d.ts +3 -3
- package/types/packages/common/i18n/default.d.ts +4 -0
- package/types/packages/common/i18n/en-US.d.ts +6 -2
- package/types/packages/common/i18n/index.d.ts +21 -0
- package/types/packages/common/i18n/locales.d.ts +10 -0
- package/types/packages/common/i18n/types.d.ts +40 -0
- package/types/packages/common/index.d.ts +1 -0
- package/types/packages/common/rafTimer.d.ts +44 -0
- package/types/packages/common/string/index.d.ts +16 -0
- package/types/packages/core/loader/extend.d.ts +1 -1
- package/types/packages/core/types.d.ts +4 -0
- package/cjs/app/extend/render-view.js +0 -1
- package/esm/app/extend/render-view.js +0 -25
- /package/cjs/app/{extend → extends}/$fetch.js +0 -0
- /package/cjs/app/{extend → extends}/crypto.js +0 -0
- /package/cjs/app/{extend → extends}/generateErrorMessage.js +0 -0
- /package/cjs/app/{extend → extends}/logger.js +0 -0
- /package/cjs/app/{extend → extends}/parsingParamsOnUrl.js +0 -0
- /package/types/app/{extend → extends}/$fetch.d.ts +0 -0
- /package/types/app/{extend → extends}/crypto.d.ts +0 -0
- /package/types/app/{extend → extends}/db.d.ts +0 -0
- /package/types/app/{extend → extends}/generateErrorMessage.d.ts +0 -0
- /package/types/app/{extend → extends}/logger.d.ts +0 -0
- /package/types/app/{extend → extends}/parsingParamsOnUrl.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./
|
|
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(`./
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(`
|
|
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
|
|
3
|
-
async renderPage(
|
|
4
|
-
|
|
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
|
-
|
|
8
|
+
n.extends.logger.log(" - render page: " + r.params.page);
|
|
7
9
|
try {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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),
|
|
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 {
|
|
41
|
+
export { n as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHmac as e, timingSafeEqual as t } from "node:crypto";
|
|
2
|
-
//#region app/
|
|
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/
|
|
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/
|
|
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);
|
|
@@ -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 };
|
|
@@ -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 };
|
package/esm/app/middleware.js
CHANGED
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import t from "koa-
|
|
3
|
-
import
|
|
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
|
|
5
|
+
var r = t({
|
|
8
6
|
formLimit: "1000mb",
|
|
9
7
|
enableTypes: [
|
|
10
8
|
"form",
|
|
11
9
|
"json",
|
|
12
10
|
"text"
|
|
13
11
|
]
|
|
14
|
-
}),
|
|
15
|
-
let
|
|
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
|
-
|
|
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 {
|
|
22
|
+
export { i as default };
|
package/esm/app/view/entry.tpl
CHANGED
|
@@ -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 };
|
package/esm/bundler/index.js
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
1
|
import { buildBE as e } from "./buildBE.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
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 };
|
package/esm/bundler/state.js
CHANGED