@_tc/template-core 0.0.1 → 0.0.2

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 (748) hide show
  1. package/README.md +1108 -0
  2. package/cjs/_virtual/_rolldown/runtime.js +1 -0
  3. package/cjs/app/controller/base.js +1 -0
  4. package/cjs/app/controller/project.js +1 -0
  5. package/cjs/app/controller/view.js +1 -0
  6. package/cjs/app/data/signKey.js +1 -0
  7. package/cjs/app/extend/$fetch.js +1 -0
  8. package/cjs/app/extend/db.js +1 -0
  9. package/cjs/app/extend/generateErrorMessage.js +1 -0
  10. package/cjs/app/extend/logger.js +1 -0
  11. package/cjs/app/extend/parsingParamsOnUrl.js +1 -0
  12. package/cjs/app/extend/render-view.js +1 -0
  13. package/cjs/app/middleware/api-params-verify.js +1 -0
  14. package/cjs/app/middleware/api-sign-verify.js +1 -0
  15. package/cjs/app/middleware/error-handle.js +1 -0
  16. package/cjs/app/middleware/project-handler.js +1 -0
  17. package/cjs/app/middleware.js +1 -0
  18. package/cjs/app/router/project.js +1 -0
  19. package/cjs/app/router/view.js +1 -0
  20. package/cjs/app/router-schema/project.js +1 -0
  21. package/cjs/app/service/base.js +1 -0
  22. package/cjs/app/service/project.js +1 -0
  23. package/cjs/app/type.js +1 -0
  24. package/cjs/app/typings.js +1 -0
  25. package/cjs/app/view/entry.tpl +30 -0
  26. package/cjs/bundler/defaultAlias.js +1 -0
  27. package/cjs/bundler/dev.js +1 -0
  28. package/cjs/bundler/index.js +1 -0
  29. package/cjs/bundler/prod.js +1 -0
  30. package/cjs/bundler/state.js +1 -0
  31. package/cjs/bundler/utils.js +1 -0
  32. package/cjs/index.js +1 -0
  33. package/cjs/packages/common/LRUCache.js +1 -0
  34. package/cjs/packages/common/array/index.js +1 -0
  35. package/cjs/packages/common/cache/LRUCache.js +1 -0
  36. package/cjs/packages/common/cache/index.js +1 -0
  37. package/cjs/packages/common/guards/index.js +1 -0
  38. package/cjs/packages/common/http/index.js +1 -0
  39. package/cjs/packages/common/i18n/default.js +1 -0
  40. package/cjs/packages/common/i18n/en-US.js +1 -0
  41. package/cjs/packages/common/i18n/index.js +1 -0
  42. package/cjs/packages/common/i18n/locales.js +1 -0
  43. package/cjs/packages/common/i18n/types.js +1 -0
  44. package/cjs/packages/common/index.js +1 -0
  45. package/cjs/packages/common/log/index.js +2 -0
  46. package/cjs/packages/common/number/index.js +1 -0
  47. package/cjs/packages/common/object/filterEmpty.js +1 -0
  48. package/cjs/packages/common/object/filtereEmpty.js +1 -0
  49. package/cjs/packages/common/object/index.js +1 -0
  50. package/cjs/packages/common/string/index.js +1 -0
  51. package/cjs/packages/common/types/index.js +1 -0
  52. package/cjs/packages/core/env.js +1 -0
  53. package/cjs/packages/core/index.js +1 -0
  54. package/cjs/packages/core/loader/config.js +1 -0
  55. package/cjs/packages/core/loader/controller.js +1 -0
  56. package/cjs/packages/core/loader/extend.js +1 -0
  57. package/cjs/packages/core/loader/middleware.js +1 -0
  58. package/cjs/packages/core/loader/model.js +1 -0
  59. package/cjs/packages/core/loader/router-schema.js +1 -0
  60. package/cjs/packages/core/loader/router.js +1 -0
  61. package/cjs/packages/core/loader/service.js +1 -0
  62. package/cjs/packages/core/paths.js +1 -0
  63. package/cjs/packages/core/types.js +1 -0
  64. package/cjs/packages/utils/getAllFilesInFolder.js +1 -0
  65. package/cjs/packages/utils/getAllFnReturnValue.js +1 -0
  66. package/cjs/packages/utils/index.js +1 -0
  67. package/cjs/packages/utils/loadFile.js +1 -0
  68. package/cjs/packages/utils/path.js +1 -0
  69. package/cjs/packages/utils/runFileFn.js +1 -0
  70. package/esm/_virtual/_rolldown/runtime.js +20 -0
  71. package/esm/app/controller/base.js +26 -0
  72. package/esm/app/controller/project.js +52 -0
  73. package/esm/app/controller/view.js +23 -0
  74. package/esm/app/data/signKey.js +8 -0
  75. package/esm/app/extend/$fetch.js +15 -0
  76. package/esm/app/extend/db.js +6 -0
  77. package/esm/app/extend/generateErrorMessage.js +7 -0
  78. package/esm/app/extend/logger.js +26 -0
  79. package/esm/app/extend/parsingParamsOnUrl.js +14 -0
  80. package/esm/app/extend/render-view.js +19 -0
  81. package/esm/app/middleware/api-params-verify.js +56 -0
  82. package/esm/app/middleware/api-sign-verify.js +18 -0
  83. package/esm/app/middleware/error-handle.js +24 -0
  84. package/esm/app/middleware/project-handler.js +15 -0
  85. package/esm/app/middleware.js +18 -0
  86. package/esm/app/router/project.js +7 -0
  87. package/esm/app/router/view.js +7 -0
  88. package/esm/app/router-schema/project.js +15 -0
  89. package/esm/app/service/base.js +14 -0
  90. package/esm/app/service/project.js +23 -0
  91. package/esm/app/type.js +0 -0
  92. package/esm/app/typings.js +0 -0
  93. package/esm/app/view/entry.tpl +30 -0
  94. package/esm/bundler/defaultAlias.js +4 -0
  95. package/esm/bundler/dev.js +12 -0
  96. package/esm/bundler/index.js +18 -0
  97. package/esm/bundler/prod.js +14 -0
  98. package/esm/bundler/state.js +10 -0
  99. package/esm/bundler/utils.js +194 -0
  100. package/esm/index.js +16 -0
  101. package/esm/packages/common/LRUCache.js +2 -0
  102. package/esm/packages/common/array/index.js +27 -0
  103. package/esm/packages/common/cache/LRUCache.js +39 -0
  104. package/esm/packages/common/cache/index.js +2 -0
  105. package/esm/packages/common/guards/index.js +8 -0
  106. package/esm/packages/common/http/index.js +256 -0
  107. package/esm/packages/common/i18n/default.js +88 -0
  108. package/esm/packages/common/i18n/en-US.js +88 -0
  109. package/esm/packages/common/i18n/index.js +91 -0
  110. package/esm/packages/common/i18n/locales.js +9 -0
  111. package/esm/packages/common/i18n/types.js +0 -0
  112. package/esm/packages/common/index.js +14 -0
  113. package/esm/packages/common/log/index.js +93 -0
  114. package/esm/packages/common/number/index.js +10 -0
  115. package/esm/packages/common/object/filterEmpty.js +23 -0
  116. package/esm/packages/common/object/filtereEmpty.js +2 -0
  117. package/esm/packages/common/object/index.js +17 -0
  118. package/esm/packages/common/string/index.js +4 -0
  119. package/esm/packages/common/types/index.js +0 -0
  120. package/esm/packages/core/env.js +24 -0
  121. package/esm/packages/core/index.js +52 -0
  122. package/esm/packages/core/loader/config.js +27 -0
  123. package/esm/packages/core/loader/controller.js +13 -0
  124. package/esm/packages/core/loader/extend.js +23 -0
  125. package/esm/packages/core/loader/middleware.js +16 -0
  126. package/esm/packages/core/loader/model.js +68 -0
  127. package/esm/packages/core/loader/router-schema.js +19 -0
  128. package/esm/packages/core/loader/router.js +36 -0
  129. package/esm/packages/core/loader/service.js +13 -0
  130. package/esm/packages/core/paths.js +9 -0
  131. package/esm/packages/core/types.js +0 -0
  132. package/esm/packages/utils/getAllFilesInFolder.js +9 -0
  133. package/esm/packages/utils/getAllFnReturnValue.js +0 -0
  134. package/esm/packages/utils/index.js +5 -0
  135. package/esm/packages/utils/loadFile.js +34 -0
  136. package/esm/packages/utils/path.js +16 -0
  137. package/esm/packages/utils/runFileFn.js +45 -0
  138. package/fe/frontend/apps/dash/Dashboard.d.ts +6 -0
  139. package/fe/frontend/apps/dash/Dashboard.js +75 -0
  140. package/fe/frontend/apps/dash/dash.entry.d.ts +2 -0
  141. package/fe/frontend/apps/dash/dash.entry.js +80 -0
  142. package/fe/frontend/apps/dash/types.d.ts +17 -0
  143. package/fe/frontend/apps/dash/types.js +1 -0
  144. package/fe/frontend/apps/testPage/index.d.ts +3 -0
  145. package/fe/frontend/apps/testPage/index.js +6 -0
  146. package/fe/frontend/apps/testPage/testPage.entry.d.ts +2 -0
  147. package/fe/frontend/apps/testPage/testPage.entry.js +6 -0
  148. package/fe/frontend/extended/SchemaForm/data.d.ts +13 -0
  149. package/fe/frontend/extended/SchemaForm/data.js +8 -0
  150. package/fe/frontend/src/api/baseInfo.d.ts +31 -0
  151. package/fe/frontend/src/api/baseInfo.js +15 -0
  152. package/fe/frontend/src/common/CRUD/CRUD.d.ts +3 -0
  153. package/fe/frontend/src/common/CRUD/CRUD.js +2 -0
  154. package/fe/frontend/src/common/CRUD/index.d.ts +2 -0
  155. package/fe/frontend/src/common/CRUD/index.js +1 -0
  156. package/fe/frontend/src/common/auth/index.d.ts +7 -0
  157. package/fe/frontend/src/common/auth/index.js +20 -0
  158. package/fe/frontend/src/common/fetchErrorShow.d.ts +3 -0
  159. package/fe/frontend/src/common/fetchErrorShow.js +8 -0
  160. package/fe/frontend/src/common/generateMenuData.d.ts +4 -0
  161. package/fe/frontend/src/common/generateMenuData.js +12 -0
  162. package/fe/frontend/src/common/importComponent.d.ts +5 -0
  163. package/fe/frontend/src/common/importComponent.js +8 -0
  164. package/fe/frontend/src/common/language.d.ts +2 -0
  165. package/fe/frontend/src/common/language.js +9 -0
  166. package/fe/frontend/src/common/logFn/index.d.ts +5 -0
  167. package/fe/frontend/src/common/logFn/index.js +9 -0
  168. package/fe/frontend/src/common/menu.d.ts +34 -0
  169. package/fe/frontend/src/common/menu.js +101 -0
  170. package/fe/frontend/src/common/request.d.ts +37 -0
  171. package/fe/frontend/src/common/request.js +217 -0
  172. package/fe/frontend/src/components/AsyncSelect/AsyncSelect.d.ts +8 -0
  173. package/fe/frontend/src/components/AsyncSelect/AsyncSelect.js +32 -0
  174. package/fe/frontend/src/components/AsyncSelect/index.d.ts +4 -0
  175. package/fe/frontend/src/components/AsyncSelect/index.js +3 -0
  176. package/fe/frontend/src/components/BasePage/HeaderView.d.ts +9 -0
  177. package/fe/frontend/src/components/BasePage/HeaderView.js +14 -0
  178. package/fe/frontend/src/components/Router/index.d.ts +9 -0
  179. package/fe/frontend/src/components/Router/index.js +11 -0
  180. package/fe/frontend/src/components/Router/type.d.ts +2 -0
  181. package/fe/frontend/src/components/Router/type.js +1 -0
  182. package/fe/frontend/src/defaultPages/Iframe/index.d.ts +3 -0
  183. package/fe/frontend/src/defaultPages/Iframe/index.js +14 -0
  184. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/DetailPanel.d.ts +7 -0
  185. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/DetailPanel.js +94 -0
  186. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/PopFrom.d.ts +13 -0
  187. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/PopFrom.js +124 -0
  188. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/builtIn.d.ts +44 -0
  189. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/builtIn.js +7 -0
  190. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/data.d.ts +4 -0
  191. package/fe/frontend/src/defaultPages/SchemaPage/components/CallCom/data.js +6 -0
  192. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaSearch/index.d.ts +3 -0
  193. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaSearch/index.js +63 -0
  194. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/index.d.ts +11 -0
  195. package/fe/frontend/src/defaultPages/SchemaPage/components/SchemaTable/index.js +188 -0
  196. package/fe/frontend/src/defaultPages/SchemaPage/data/eventInfo.d.ts +8 -0
  197. package/fe/frontend/src/defaultPages/SchemaPage/data/eventInfo.js +6 -0
  198. package/fe/frontend/src/defaultPages/SchemaPage/data/index.d.ts +3 -0
  199. package/fe/frontend/src/defaultPages/SchemaPage/data/index.js +1 -0
  200. package/fe/frontend/src/defaultPages/SchemaPage/hooks/useComConfig.d.ts +10 -0
  201. package/fe/frontend/src/defaultPages/SchemaPage/hooks/useComConfig.js +14 -0
  202. package/fe/frontend/src/defaultPages/SchemaPage/index.css +167 -0
  203. package/fe/frontend/src/defaultPages/SchemaPage/index.d.ts +4 -0
  204. package/fe/frontend/src/defaultPages/SchemaPage/index.js +75 -0
  205. package/fe/frontend/src/defaultPages/SchemaPage/schemaType.d.ts +51 -0
  206. package/fe/frontend/src/defaultPages/SchemaPage/schemaType.js +4 -0
  207. package/fe/frontend/src/defaultPages/SchemaPage/utils/permissions.d.ts +3 -0
  208. package/fe/frontend/src/defaultPages/SchemaPage/utils/permissions.js +3 -0
  209. package/fe/frontend/src/defaultPages/SchemaPage/utils/schemaConversion.d.ts +3 -0
  210. package/fe/frontend/src/defaultPages/SchemaPage/utils/schemaConversion.js +115 -0
  211. package/fe/frontend/src/defaultPages/SchemaPage/utils/validator.d.ts +7 -0
  212. package/fe/frontend/src/defaultPages/SchemaPage/utils/validator.js +36 -0
  213. package/fe/frontend/src/defaultPages/SidebarSlotPage/SidebarSlotContainer.d.ts +10 -0
  214. package/fe/frontend/src/defaultPages/SidebarSlotPage/SidebarSlotContainer.js +38 -0
  215. package/fe/frontend/src/defaultPages/SidebarSlotPage/index.d.ts +3 -0
  216. package/fe/frontend/src/defaultPages/SidebarSlotPage/index.js +16 -0
  217. package/fe/frontend/src/defaultPages/SidebarSlotPageTmp.d.ts +3 -0
  218. package/fe/frontend/src/defaultPages/SidebarSlotPageTmp.js +17 -0
  219. package/fe/frontend/src/defaultPages/SlotPage/index.d.ts +3 -0
  220. package/fe/frontend/src/defaultPages/SlotPage/index.js +26 -0
  221. package/fe/frontend/src/exportStore.d.ts +17 -0
  222. package/fe/frontend/src/exportStore.js +16 -0
  223. package/fe/frontend/src/hooks/useCurrentMenuData.d.ts +19 -0
  224. package/fe/frontend/src/hooks/useCurrentMenuData.js +28 -0
  225. package/fe/frontend/src/hooks/useRouterParams.d.ts +5 -0
  226. package/fe/frontend/src/hooks/useRouterParams.js +11 -0
  227. package/fe/frontend/src/index.d.ts +16 -0
  228. package/fe/frontend/src/index.js +13 -0
  229. package/fe/frontend/src/main.css +96 -0
  230. package/fe/frontend/src/main.d.ts +27 -0
  231. package/fe/frontend/src/main.js +72 -0
  232. package/fe/frontend/src/stores/apiFreezer.d.ts +93 -0
  233. package/fe/frontend/src/stores/apiFreezer.js +49 -0
  234. package/fe/frontend/src/stores/mode.d.ts +19 -0
  235. package/fe/frontend/src/stores/mode.js +37 -0
  236. package/fe/frontend/src/stores/schemaEventBus.d.ts +42 -0
  237. package/fe/frontend/src/stores/schemaEventBus.js +70 -0
  238. package/fe/frontend/src/stores/schemaStore.d.ts +47 -0
  239. package/fe/frontend/src/stores/schemaStore.js +26 -0
  240. package/fe/frontend/src/typing/scalability.d.ts +47 -0
  241. package/fe/frontend/src/typing/scalability.js +1 -0
  242. package/fe/frontend/src/typing/window.d.ts +7 -0
  243. package/fe/frontend/src/typing/window.js +1 -0
  244. package/fe/model/types/data/button.d.ts +32 -0
  245. package/fe/model/types/data/button.js +16 -0
  246. package/fe/model/types/data/component.d.ts +40 -0
  247. package/fe/model/types/data/component.js +11 -0
  248. package/fe/model/types/data/fetchInfo.d.ts +20 -0
  249. package/fe/model/types/data/fetchInfo.js +1 -0
  250. package/fe/model/types/data/schema.d.ts +98 -0
  251. package/fe/model/types/data/schema.js +1 -0
  252. package/fe/model/types/data/search.d.ts +7 -0
  253. package/fe/model/types/data/search.js +1 -0
  254. package/fe/model/types/menuType.d.ts +73 -0
  255. package/fe/model/types/menuType.js +1 -0
  256. package/fe/model/types/model.d.ts +33 -0
  257. package/fe/model/types/model.js +1 -0
  258. package/fe/packages/common/array/index.d.ts +7 -0
  259. package/fe/packages/common/array/index.js +40 -0
  260. package/fe/packages/common/cache/LRUCache.d.ts +13 -0
  261. package/fe/packages/common/cache/LRUCache.js +47 -0
  262. package/fe/packages/common/cache/index.d.ts +2 -0
  263. package/fe/packages/common/cache/index.js +1 -0
  264. package/fe/packages/common/guards/index.d.ts +9 -0
  265. package/fe/packages/common/guards/index.js +24 -0
  266. package/fe/packages/common/http/index.d.ts +90 -0
  267. package/fe/packages/common/http/index.js +310 -0
  268. package/fe/packages/common/i18n/default.d.ts +92 -0
  269. package/fe/packages/common/i18n/default.js +90 -0
  270. package/fe/packages/common/i18n/en-US.d.ts +92 -0
  271. package/fe/packages/common/i18n/en-US.js +90 -0
  272. package/fe/packages/common/i18n/index.d.ts +43 -0
  273. package/fe/packages/common/i18n/index.js +173 -0
  274. package/fe/packages/common/i18n/locales.d.ts +8 -0
  275. package/fe/packages/common/i18n/locales.js +10 -0
  276. package/fe/packages/common/i18n/types.d.ts +71 -0
  277. package/fe/packages/common/i18n/types.js +1 -0
  278. package/fe/packages/common/index.d.ts +11 -0
  279. package/fe/packages/common/index.js +10 -0
  280. package/fe/packages/common/log/index.d.ts +33 -0
  281. package/fe/packages/common/log/index.js +176 -0
  282. package/fe/packages/common/number/index.d.ts +3 -0
  283. package/fe/packages/common/number/index.js +10 -0
  284. package/fe/packages/common/object/filterEmpty.d.ts +3 -0
  285. package/fe/packages/common/object/filterEmpty.js +33 -0
  286. package/fe/packages/common/object/index.d.ts +5 -0
  287. package/fe/packages/common/object/index.js +25 -0
  288. package/fe/packages/common/string/index.d.ts +4 -0
  289. package/fe/packages/common/string/index.js +17 -0
  290. package/fe/packages/common/types/index.d.ts +4 -0
  291. package/fe/packages/common/types/index.js +1 -0
  292. package/fe/packages/ui/react/assets/table/no-result.svg +5 -0
  293. package/fe/packages/ui/react/components/Button/Button.d.ts +58 -0
  294. package/fe/packages/ui/react/components/Button/Button.js +72 -0
  295. package/fe/packages/ui/react/components/Button/SumbitButton.d.ts +13 -0
  296. package/fe/packages/ui/react/components/Button/SumbitButton.js +25 -0
  297. package/fe/packages/ui/react/components/Button/index.d.ts +4 -0
  298. package/fe/packages/ui/react/components/Button/index.js +2 -0
  299. package/fe/packages/ui/react/components/Checkbox/Checkbox.d.ts +17 -0
  300. package/fe/packages/ui/react/components/Checkbox/Checkbox.js +39 -0
  301. package/fe/packages/ui/react/components/Checkbox/index.d.ts +2 -0
  302. package/fe/packages/ui/react/components/Checkbox/index.js +1 -0
  303. package/fe/packages/ui/react/components/ConfirmDialog/ConfirmDialog.d.ts +20 -0
  304. package/fe/packages/ui/react/components/ConfirmDialog/ConfirmDialog.js +11 -0
  305. package/fe/packages/ui/react/components/ConfirmDialog/index.d.ts +2 -0
  306. package/fe/packages/ui/react/components/ConfirmDialog/index.js +1 -0
  307. package/fe/packages/ui/react/components/DataTable/ActionBtn.d.ts +8 -0
  308. package/fe/packages/ui/react/components/DataTable/ActionBtn.js +96 -0
  309. package/fe/packages/ui/react/components/DataTable/index.d.ts +52 -0
  310. package/fe/packages/ui/react/components/DataTable/index.js +187 -0
  311. package/fe/packages/ui/react/components/Date/Calendar.d.ts +35 -0
  312. package/fe/packages/ui/react/components/Date/Calendar.js +216 -0
  313. package/fe/packages/ui/react/components/Date/Date.d.ts +38 -0
  314. package/fe/packages/ui/react/components/Date/Date.js +201 -0
  315. package/fe/packages/ui/react/components/Date/DateTestPage.d.ts +2 -0
  316. package/fe/packages/ui/react/components/Date/DateTestPage.js +29 -0
  317. package/fe/packages/ui/react/components/Date/LocaleContext.d.ts +6 -0
  318. package/fe/packages/ui/react/components/Date/LocaleContext.js +8 -0
  319. package/fe/packages/ui/react/components/Date/LocaleProvider.d.ts +19 -0
  320. package/fe/packages/ui/react/components/Date/LocaleProvider.js +24 -0
  321. package/fe/packages/ui/react/components/Date/TimePicker.d.ts +7 -0
  322. package/fe/packages/ui/react/components/Date/TimePicker.js +78 -0
  323. package/fe/packages/ui/react/components/Date/data.d.ts +6 -0
  324. package/fe/packages/ui/react/components/Date/data.js +4 -0
  325. package/fe/packages/ui/react/components/Date/dateLocaleStore.d.ts +16 -0
  326. package/fe/packages/ui/react/components/Date/dateLocaleStore.js +14 -0
  327. package/fe/packages/ui/react/components/Date/dropdownPositioning.d.ts +3 -0
  328. package/fe/packages/ui/react/components/Date/dropdownPositioning.js +12 -0
  329. package/fe/packages/ui/react/components/Date/index.d.ts +6 -0
  330. package/fe/packages/ui/react/components/Date/index.js +5 -0
  331. package/fe/packages/ui/react/components/Date/locales.d.ts +43 -0
  332. package/fe/packages/ui/react/components/Date/locales.js +21 -0
  333. package/fe/packages/ui/react/components/Drawer/Drawer.d.ts +29 -0
  334. package/fe/packages/ui/react/components/Drawer/Drawer.js +100 -0
  335. package/fe/packages/ui/react/components/Drawer/index.d.ts +3 -0
  336. package/fe/packages/ui/react/components/Drawer/index.js +1 -0
  337. package/fe/packages/ui/react/components/Dropdown/Dropdown.d.ts +26 -0
  338. package/fe/packages/ui/react/components/Dropdown/Dropdown.js +49 -0
  339. package/fe/packages/ui/react/components/Dropdown/index.d.ts +2 -0
  340. package/fe/packages/ui/react/components/Dropdown/index.js +1 -0
  341. package/fe/packages/ui/react/components/Form/Form.d.ts +18 -0
  342. package/fe/packages/ui/react/components/Form/Form.js +8 -0
  343. package/fe/packages/ui/react/components/Form/FormItem.d.ts +41 -0
  344. package/fe/packages/ui/react/components/Form/FormItem.js +43 -0
  345. package/fe/packages/ui/react/components/Form/SchemaForm/data.d.ts +40 -0
  346. package/fe/packages/ui/react/components/Form/SchemaForm/data.js +18 -0
  347. package/fe/packages/ui/react/components/Form/SchemaForm/index.d.ts +153 -0
  348. package/fe/packages/ui/react/components/Form/SchemaForm/index.js +79 -0
  349. package/fe/packages/ui/react/components/Form/index.d.ts +5 -0
  350. package/fe/packages/ui/react/components/Form/index.js +4 -0
  351. package/fe/packages/ui/react/components/Form/useForm.d.ts +3 -0
  352. package/fe/packages/ui/react/components/Form/useForm.js +1 -0
  353. package/fe/packages/ui/react/components/ImagePreview/ImagePreview.d.ts +8 -0
  354. package/fe/packages/ui/react/components/ImagePreview/ImagePreview.js +169 -0
  355. package/fe/packages/ui/react/components/ImagePreview/PreviewImage.d.ts +11 -0
  356. package/fe/packages/ui/react/components/ImagePreview/PreviewImage.js +28 -0
  357. package/fe/packages/ui/react/components/ImagePreview/index.d.ts +3 -0
  358. package/fe/packages/ui/react/components/ImagePreview/index.js +2 -0
  359. package/fe/packages/ui/react/components/Input/Input.d.ts +45 -0
  360. package/fe/packages/ui/react/components/Input/Input.js +61 -0
  361. package/fe/packages/ui/react/components/Input/index.d.ts +2 -0
  362. package/fe/packages/ui/react/components/Input/index.js +1 -0
  363. package/fe/packages/ui/react/components/InputNumber/InputNumber.d.ts +28 -0
  364. package/fe/packages/ui/react/components/InputNumber/InputNumber.js +144 -0
  365. package/fe/packages/ui/react/components/InputNumber/index.d.ts +2 -0
  366. package/fe/packages/ui/react/components/InputNumber/index.js +1 -0
  367. package/fe/packages/ui/react/components/InputNumber/inputNumberUtils.d.ts +30 -0
  368. package/fe/packages/ui/react/components/InputNumber/inputNumberUtils.js +63 -0
  369. package/fe/packages/ui/react/components/InputNumber/inputNumberUtils.test.d.ts +2 -0
  370. package/fe/packages/ui/react/components/InputNumber/inputNumberUtils.test.js +27 -0
  371. package/fe/packages/ui/react/components/Label/Label.d.ts +51 -0
  372. package/fe/packages/ui/react/components/Label/Label.js +35 -0
  373. package/fe/packages/ui/react/components/Label/index.d.ts +3 -0
  374. package/fe/packages/ui/react/components/Label/index.js +2 -0
  375. package/fe/packages/ui/react/components/Menu/Menu.d.ts +18 -0
  376. package/fe/packages/ui/react/components/Menu/Menu.js +102 -0
  377. package/fe/packages/ui/react/components/Menu/MenuContext.d.ts +39 -0
  378. package/fe/packages/ui/react/components/Menu/MenuContext.js +97 -0
  379. package/fe/packages/ui/react/components/Menu/MenuItem.d.ts +3 -0
  380. package/fe/packages/ui/react/components/Menu/MenuItem.js +33 -0
  381. package/fe/packages/ui/react/components/Menu/SubMenu.d.ts +10 -0
  382. package/fe/packages/ui/react/components/Menu/SubMenu.js +169 -0
  383. package/fe/packages/ui/react/components/Menu/index.d.ts +9 -0
  384. package/fe/packages/ui/react/components/Menu/index.js +5 -0
  385. package/fe/packages/ui/react/components/Menu/menuTypes.d.ts +59 -0
  386. package/fe/packages/ui/react/components/Menu/menuTypes.js +1 -0
  387. package/fe/packages/ui/react/components/Menu/utils.d.ts +2 -0
  388. package/fe/packages/ui/react/components/Menu/utils.js +7 -0
  389. package/fe/packages/ui/react/components/Message/Message.d.ts +20 -0
  390. package/fe/packages/ui/react/components/Message/Message.js +58 -0
  391. package/fe/packages/ui/react/components/Message/MessageManager.d.ts +37 -0
  392. package/fe/packages/ui/react/components/Message/MessageManager.js +90 -0
  393. package/fe/packages/ui/react/components/Message/data.d.ts +2 -0
  394. package/fe/packages/ui/react/components/Message/data.js +1 -0
  395. package/fe/packages/ui/react/components/Message/index.d.ts +3 -0
  396. package/fe/packages/ui/react/components/Message/index.js +1 -0
  397. package/fe/packages/ui/react/components/Modal/Modal.d.ts +27 -0
  398. package/fe/packages/ui/react/components/Modal/Modal.js +14 -0
  399. package/fe/packages/ui/react/components/Modal/ModalManager.d.ts +59 -0
  400. package/fe/packages/ui/react/components/Modal/ModalManager.js +90 -0
  401. package/fe/packages/ui/react/components/Modal/index.d.ts +4 -0
  402. package/fe/packages/ui/react/components/Modal/index.js +2 -0
  403. package/fe/packages/ui/react/components/Overlay/Overlay.d.ts +23 -0
  404. package/fe/packages/ui/react/components/Overlay/Overlay.js +53 -0
  405. package/fe/packages/ui/react/components/Overlay/index.d.ts +3 -0
  406. package/fe/packages/ui/react/components/Overlay/index.js +1 -0
  407. package/fe/packages/ui/react/components/Pagination/Pagination.d.ts +18 -0
  408. package/fe/packages/ui/react/components/Pagination/Pagination.js +88 -0
  409. package/fe/packages/ui/react/components/Pagination/index.d.ts +2 -0
  410. package/fe/packages/ui/react/components/Pagination/index.js +1 -0
  411. package/fe/packages/ui/react/components/Popup/Popup.d.ts +26 -0
  412. package/fe/packages/ui/react/components/Popup/Popup.js +81 -0
  413. package/fe/packages/ui/react/components/Popup/index.d.ts +2 -0
  414. package/fe/packages/ui/react/components/Popup/index.js +1 -0
  415. package/fe/packages/ui/react/components/Search/Search.d.ts +17 -0
  416. package/fe/packages/ui/react/components/Search/Search.js +12 -0
  417. package/fe/packages/ui/react/components/Search/index.d.ts +2 -0
  418. package/fe/packages/ui/react/components/Search/index.js +1 -0
  419. package/fe/packages/ui/react/components/Select/Select.d.ts +26 -0
  420. package/fe/packages/ui/react/components/Select/Select.js +123 -0
  421. package/fe/packages/ui/react/components/Select/dropdownPositioning.d.ts +3 -0
  422. package/fe/packages/ui/react/components/Select/dropdownPositioning.js +13 -0
  423. package/fe/packages/ui/react/components/Select/index.d.ts +2 -0
  424. package/fe/packages/ui/react/components/Select/index.js +1 -0
  425. package/fe/packages/ui/react/components/Skeleton/Skeleton.d.ts +28 -0
  426. package/fe/packages/ui/react/components/Skeleton/Skeleton.js +31 -0
  427. package/fe/packages/ui/react/components/Skeleton/index.d.ts +3 -0
  428. package/fe/packages/ui/react/components/Skeleton/index.js +1 -0
  429. package/fe/packages/ui/react/components/Switch/Switch.d.ts +11 -0
  430. package/fe/packages/ui/react/components/Switch/Switch.js +22 -0
  431. package/fe/packages/ui/react/components/Switch/index.d.ts +2 -0
  432. package/fe/packages/ui/react/components/Switch/index.js +1 -0
  433. package/fe/packages/ui/react/components/TableSearch/TableSearch.d.ts +68 -0
  434. package/fe/packages/ui/react/components/TableSearch/TableSearch.js +121 -0
  435. package/fe/packages/ui/react/components/TableSearch/index.d.ts +2 -0
  436. package/fe/packages/ui/react/components/TableSearch/index.js +1 -0
  437. package/fe/packages/ui/react/components/TableSearch/lang.d.ts +15 -0
  438. package/fe/packages/ui/react/components/TableSearch/lang.js +14 -0
  439. package/fe/packages/ui/react/components/TableSearch/tableSearchLocaleStore.d.ts +9 -0
  440. package/fe/packages/ui/react/components/TableSearch/tableSearchLocaleStore.js +11 -0
  441. package/fe/packages/ui/react/components/Textarea/Textarea.d.ts +67 -0
  442. package/fe/packages/ui/react/components/Textarea/Textarea.js +37 -0
  443. package/fe/packages/ui/react/components/Textarea/index.d.ts +2 -0
  444. package/fe/packages/ui/react/components/Textarea/index.js +1 -0
  445. package/fe/packages/ui/react/components/Tooltip/Tooltip.d.ts +25 -0
  446. package/fe/packages/ui/react/components/Tooltip/Tooltip.js +79 -0
  447. package/fe/packages/ui/react/components/Tooltip/index.d.ts +2 -0
  448. package/fe/packages/ui/react/components/Tooltip/index.js +1 -0
  449. package/fe/packages/ui/react/components/TreeSelect/TreeSelect.d.ts +25 -0
  450. package/fe/packages/ui/react/components/TreeSelect/TreeSelect.js +160 -0
  451. package/fe/packages/ui/react/components/TreeSelect/index.d.ts +2 -0
  452. package/fe/packages/ui/react/components/TreeSelect/index.js +1 -0
  453. package/fe/packages/ui/react/components/Upload/ImageUpload.d.ts +9 -0
  454. package/fe/packages/ui/react/components/Upload/ImageUpload.js +75 -0
  455. package/fe/packages/ui/react/components/Upload/Upload.d.ts +41 -0
  456. package/fe/packages/ui/react/components/Upload/Upload.js +6 -0
  457. package/fe/packages/ui/react/components/Upload/index.d.ts +3 -0
  458. package/fe/packages/ui/react/components/Upload/index.js +2 -0
  459. package/fe/packages/ui/react/components/breadcrumb/breadcrumb.d.ts +35 -0
  460. package/fe/packages/ui/react/components/breadcrumb/breadcrumb.js +81 -0
  461. package/fe/packages/ui/react/components/breadcrumb/index.d.ts +2 -0
  462. package/fe/packages/ui/react/components/breadcrumb/index.js +1 -0
  463. package/fe/packages/ui/react/components/hooks/useDropdownPositioning.d.ts +49 -0
  464. package/fe/packages/ui/react/components/hooks/useDropdownPositioning.js +137 -0
  465. package/fe/packages/ui/react/components/hooks/useInputController.d.ts +24 -0
  466. package/fe/packages/ui/react/components/hooks/useInputController.js +45 -0
  467. package/fe/packages/ui/react/components/index.d.ts +30 -0
  468. package/fe/packages/ui/react/components/index.js +29 -0
  469. package/fe/packages/ui/react/components/table/index.d.ts +2 -0
  470. package/fe/packages/ui/react/components/table/index.js +1 -0
  471. package/fe/packages/ui/react/components/table/table.d.ts +27 -0
  472. package/fe/packages/ui/react/components/table/table.js +116 -0
  473. package/fe/packages/ui/react/components/testPage/MenuTestPage.d.ts +2 -0
  474. package/fe/packages/ui/react/components/testPage/MenuTestPage.js +104 -0
  475. package/fe/packages/ui/react/components/testPage/index.d.ts +3 -0
  476. package/fe/packages/ui/react/components/testPage/index.js +337 -0
  477. package/fe/packages/ui/react/hooks/useBreadcrumb.d.ts +10 -0
  478. package/fe/packages/ui/react/hooks/useBreadcrumb.js +2 -0
  479. package/fe/packages/ui/react/hooks/useExecuteOnce.d.ts +30 -0
  480. package/fe/packages/ui/react/hooks/useExecuteOnce.js +57 -0
  481. package/fe/packages/ui/react/hooks/useInit.d.ts +3 -0
  482. package/fe/packages/ui/react/hooks/useInit.js +9 -0
  483. package/fe/packages/ui/react/hooks/useLanguage.d.ts +2 -0
  484. package/fe/packages/ui/react/hooks/useLanguage.js +4 -0
  485. package/fe/packages/ui/react/hooks/usePagination.d.ts +16 -0
  486. package/fe/packages/ui/react/hooks/usePagination.js +27 -0
  487. package/fe/packages/ui/react/hooks/useRefState.d.ts +30 -0
  488. package/fe/packages/ui/react/hooks/useRefState.js +29 -0
  489. package/fe/packages/ui/react/hooks/useWatch.d.ts +23 -0
  490. package/fe/packages/ui/react/hooks/useWatch.js +87 -0
  491. package/fe/packages/ui/react/hooks/useWatch.test.d.ts +2 -0
  492. package/fe/packages/ui/react/hooks/useWatch.test.js +22 -0
  493. package/fe/packages/ui/react/i18n/I18nProvider.d.ts +31 -0
  494. package/fe/packages/ui/react/i18n/I18nProvider.js +25 -0
  495. package/fe/packages/ui/react/i18n/index.d.ts +4 -0
  496. package/fe/packages/ui/react/i18n/index.js +3 -0
  497. package/fe/packages/ui/react/i18n/useI18n.d.ts +13 -0
  498. package/fe/packages/ui/react/i18n/useI18n.js +18 -0
  499. package/fe/packages/ui/react/index.css +238 -0
  500. package/fe/packages/ui/react/index.d.ts +5 -0
  501. package/fe/packages/ui/react/index.js +6 -0
  502. package/fe/packages/ui/react/lib/createStoreHook.d.ts +9 -0
  503. package/fe/packages/ui/react/lib/createStoreHook.js +6 -0
  504. package/fe/packages/ui/react/lib/export.d.ts +66 -0
  505. package/fe/packages/ui/react/lib/export.js +138 -0
  506. package/fe/packages/ui/react/lib/utils.d.ts +34 -0
  507. package/fe/packages/ui/react/lib/utils.js +70 -0
  508. package/fe/packages/ui/react/stores/breadcrumb.d.ts +15 -0
  509. package/fe/packages/ui/react/stores/breadcrumb.js +66 -0
  510. package/fe/packages/ui/react/stores/language.d.ts +4 -0
  511. package/fe/packages/ui/react/stores/language.js +2 -0
  512. package/{typings/type.d.ts → fe/packages/ui/react/types/index.d.ts} +1 -1
  513. package/fe/packages/ui/react/types/index.js +1 -0
  514. package/fe/typings/type.d.ts +5 -0
  515. package/fe/typings/type.js +1 -0
  516. package/model/index.d.ts +1 -1
  517. package/model/test.d.ts +1 -5
  518. package/model/types/data/button.d.ts +32 -0
  519. package/model/types/data/component.d.ts +40 -0
  520. package/model/types/data/fetchInfo.d.ts +20 -0
  521. package/model/types/data/schema.d.ts +98 -0
  522. package/model/types/data/search.d.ts +7 -0
  523. package/model/types/index.d.ts +3 -0
  524. package/model/types/menuType.d.ts +73 -0
  525. package/model/types/model.d.ts +33 -0
  526. package/package.json +61 -8
  527. package/{app → types/app}/controller/base.d.ts +4 -6
  528. package/types/app/controller/project.d.ts +22 -0
  529. package/{app → types/app}/controller/view.d.ts +1 -3
  530. package/{app → types/app}/data/signKey.d.ts +0 -1
  531. package/types/app/extend/$fetch.d.ts +8 -0
  532. package/types/app/extend/db.d.ts +2 -0
  533. package/{app → types/app}/extend/generateErrorMessage.d.ts +0 -1
  534. package/{app → types/app}/extend/logger.d.ts +1 -2
  535. package/{app → types/app}/extend/parsingParamsOnUrl.d.ts +0 -1
  536. package/{app → types/app}/extend/render-view.d.ts +1 -3
  537. package/{app → types/app}/middleware/api-params-verify.d.ts +1 -3
  538. package/{app → types/app}/middleware/api-sign-verify.d.ts +1 -3
  539. package/types/app/middleware/error-handle.d.ts +4 -0
  540. package/types/app/middleware/project-handler.d.ts +4 -0
  541. package/{app → types/app}/middleware.d.ts +0 -3
  542. package/{app/router/view.d.ts → types/app/router/project.d.ts} +1 -2
  543. package/types/app/router/view.d.ts +3 -0
  544. package/types/app/router-schema/project.d.ts +3 -0
  545. package/types/app/service/base.d.ts +9 -0
  546. package/types/app/service/project.d.ts +57 -0
  547. package/types/app/type.d.ts +5 -0
  548. package/types/app/typings.d.ts +43 -0
  549. package/types/bundler/defaultAlias.d.ts +3 -0
  550. package/types/bundler/dev.d.ts +1 -0
  551. package/types/bundler/index.d.ts +2 -0
  552. package/types/bundler/prod.d.ts +1 -0
  553. package/types/bundler/state.d.ts +18 -0
  554. package/types/bundler/utils.d.ts +9 -0
  555. package/types/config/config.default.d.ts +14 -0
  556. package/types/index.d.ts +28 -0
  557. package/types/packages/common/LRUCache.d.ts +1 -0
  558. package/types/packages/common/array/index.d.ts +6 -0
  559. package/types/packages/common/cache/LRUCache.d.ts +12 -0
  560. package/types/packages/common/cache/index.d.ts +1 -0
  561. package/types/packages/common/guards/index.d.ts +8 -0
  562. package/types/packages/common/http/index.d.ts +89 -0
  563. package/types/packages/common/i18n/default.d.ts +91 -0
  564. package/types/packages/common/i18n/en-US.d.ts +91 -0
  565. package/types/packages/common/i18n/index.d.ts +42 -0
  566. package/types/packages/common/i18n/locales.d.ts +7 -0
  567. package/types/packages/common/i18n/types.d.ts +70 -0
  568. package/types/packages/common/index.d.ts +10 -0
  569. package/types/packages/common/log/index.d.ts +32 -0
  570. package/types/packages/common/number/index.d.ts +2 -0
  571. package/types/packages/common/object/filterEmpty.d.ts +2 -0
  572. package/types/packages/common/object/filtereEmpty.d.ts +1 -0
  573. package/types/packages/common/object/index.d.ts +4 -0
  574. package/types/packages/common/string/index.d.ts +3 -0
  575. package/types/packages/common/types/index.d.ts +3 -0
  576. package/{packages → types/packages}/core/env.d.ts +0 -1
  577. package/{packages → types/packages}/core/index.d.ts +1 -2
  578. package/types/packages/core/loader/config.d.ts +9 -0
  579. package/types/packages/core/loader/controller.d.ts +17 -0
  580. package/types/packages/core/loader/extend.d.ts +8 -0
  581. package/types/packages/core/loader/middleware.d.ts +11 -0
  582. package/types/packages/core/loader/model.d.ts +36 -0
  583. package/types/packages/core/loader/router-schema.d.ts +18 -0
  584. package/{packages/core/loader/extend.d.ts → types/packages/core/loader/router.d.ts} +5 -1
  585. package/types/packages/core/loader/service.d.ts +17 -0
  586. package/{packages → types/packages}/core/paths.d.ts +0 -1
  587. package/{packages → types/packages}/core/types.d.ts +60 -9
  588. package/{packages → types/packages}/utils/getAllFilesInFolder.d.ts +5 -1
  589. package/types/packages/utils/getAllFnReturnValue.d.ts +0 -0
  590. package/{packages → types/packages}/utils/index.d.ts +0 -1
  591. package/{packages → types/packages}/utils/loadFile.d.ts +6 -1
  592. package/types/packages/utils/path.d.ts +24 -0
  593. package/types/packages/utils/runFileFn.d.ts +7 -0
  594. package/types/typings/type.d.ts +4 -0
  595. package/app/controller/base.d.ts.map +0 -1
  596. package/app/controller/base.js +0 -24
  597. package/app/controller/base.js.map +0 -1
  598. package/app/controller/project.d.ts +0 -12
  599. package/app/controller/project.d.ts.map +0 -1
  600. package/app/controller/project.js +0 -48
  601. package/app/controller/project.js.map +0 -1
  602. package/app/controller/view.d.ts.map +0 -1
  603. package/app/controller/view.js +0 -15
  604. package/app/controller/view.js.map +0 -1
  605. package/app/data/signKey.d.ts.map +0 -1
  606. package/app/data/signKey.js +0 -5
  607. package/app/data/signKey.js.map +0 -1
  608. package/app/extend/db.d.ts +0 -3
  609. package/app/extend/db.d.ts.map +0 -1
  610. package/app/extend/db.js +0 -8
  611. package/app/extend/db.js.map +0 -1
  612. package/app/extend/generateErrorMessage.d.ts.map +0 -1
  613. package/app/extend/generateErrorMessage.js +0 -12
  614. package/app/extend/generateErrorMessage.js.map +0 -1
  615. package/app/extend/logger.d.ts.map +0 -1
  616. package/app/extend/logger.js +0 -73
  617. package/app/extend/logger.js.map +0 -1
  618. package/app/extend/parsingParamsOnUrl.d.ts.map +0 -1
  619. package/app/extend/parsingParamsOnUrl.js +0 -23
  620. package/app/extend/parsingParamsOnUrl.js.map +0 -1
  621. package/app/extend/render-view.d.ts.map +0 -1
  622. package/app/extend/render-view.js +0 -22
  623. package/app/extend/render-view.js.map +0 -1
  624. package/app/middleware/api-params-verify.d.ts.map +0 -1
  625. package/app/middleware/api-params-verify.js +0 -64
  626. package/app/middleware/api-params-verify.js.map +0 -1
  627. package/app/middleware/api-sign-verify.d.ts.map +0 -1
  628. package/app/middleware/api-sign-verify.js +0 -29
  629. package/app/middleware/api-sign-verify.js.map +0 -1
  630. package/app/middleware/error-handle.d.ts +0 -6
  631. package/app/middleware/error-handle.d.ts.map +0 -1
  632. package/app/middleware/error-handle.js +0 -34
  633. package/app/middleware/error-handle.js.map +0 -1
  634. package/app/middleware/project-handler.d.ts +0 -5
  635. package/app/middleware/project-handler.d.ts.map +0 -1
  636. package/app/middleware/project-handler.js +0 -22
  637. package/app/middleware/project-handler.js.map +0 -1
  638. package/app/middleware.d.ts.map +0 -1
  639. package/app/middleware.js +0 -39
  640. package/app/middleware.js.map +0 -1
  641. package/app/router/project.d.ts +0 -5
  642. package/app/router/project.d.ts.map +0 -1
  643. package/app/router/project.js +0 -9
  644. package/app/router/project.js.map +0 -1
  645. package/app/router/view.d.ts.map +0 -1
  646. package/app/router/view.js +0 -6
  647. package/app/router/view.js.map +0 -1
  648. package/app/router-schema/project.d.ts +0 -4
  649. package/app/router-schema/project.d.ts.map +0 -1
  650. package/app/router-schema/project.js +0 -34
  651. package/app/router-schema/project.js.map +0 -1
  652. package/app/service/bese.d.ts +0 -11
  653. package/app/service/bese.d.ts.map +0 -1
  654. package/app/service/bese.js +0 -18
  655. package/app/service/bese.js.map +0 -1
  656. package/app/service/project.d.ts +0 -28
  657. package/app/service/project.d.ts.map +0 -1
  658. package/app/service/project.js +0 -39
  659. package/app/service/project.js.map +0 -1
  660. package/app/type.d.ts +0 -3
  661. package/app/type.d.ts.map +0 -1
  662. package/app/type.js +0 -3
  663. package/app/type.js.map +0 -1
  664. package/app/typings.d.ts +0 -52
  665. package/app/typings.d.ts.map +0 -1
  666. package/app/typings.js +0 -3
  667. package/app/typings.js.map +0 -1
  668. package/index.d.ts +0 -29
  669. package/index.d.ts.map +0 -1
  670. package/index.js +0 -22
  671. package/index.js.map +0 -1
  672. package/model/index.d.ts.map +0 -1
  673. package/model/index.js +0 -7
  674. package/model/index.js.map +0 -1
  675. package/model/test.d.ts.map +0 -1
  676. package/model/test.js +0 -6
  677. package/model/test.js.map +0 -1
  678. package/model/test2.d.ts +0 -6
  679. package/model/test2.d.ts.map +0 -1
  680. package/model/test2.js +0 -6
  681. package/model/test2.js.map +0 -1
  682. package/packages/core/env.d.ts.map +0 -1
  683. package/packages/core/env.js +0 -26
  684. package/packages/core/env.js.map +0 -1
  685. package/packages/core/index.d.ts.map +0 -1
  686. package/packages/core/index.js +0 -93
  687. package/packages/core/index.js.map +0 -1
  688. package/packages/core/loader/config.d.ts +0 -4
  689. package/packages/core/loader/config.d.ts.map +0 -1
  690. package/packages/core/loader/config.js +0 -32
  691. package/packages/core/loader/config.js.map +0 -1
  692. package/packages/core/loader/controller.d.ts +0 -4
  693. package/packages/core/loader/controller.d.ts.map +0 -1
  694. package/packages/core/loader/controller.js +0 -18
  695. package/packages/core/loader/controller.js.map +0 -1
  696. package/packages/core/loader/extend.d.ts.map +0 -1
  697. package/packages/core/loader/extend.js +0 -34
  698. package/packages/core/loader/extend.js.map +0 -1
  699. package/packages/core/loader/middleware.d.ts +0 -4
  700. package/packages/core/loader/middleware.d.ts.map +0 -1
  701. package/packages/core/loader/middleware.js +0 -16
  702. package/packages/core/loader/middleware.js.map +0 -1
  703. package/packages/core/loader/model.d.ts +0 -15
  704. package/packages/core/loader/model.d.ts.map +0 -1
  705. package/packages/core/loader/model.js +0 -90
  706. package/packages/core/loader/model.js.map +0 -1
  707. package/packages/core/loader/router-schema.d.ts +0 -4
  708. package/packages/core/loader/router-schema.d.ts.map +0 -1
  709. package/packages/core/loader/router-schema.js +0 -20
  710. package/packages/core/loader/router-schema.js.map +0 -1
  711. package/packages/core/loader/router.d.ts +0 -4
  712. package/packages/core/loader/router.d.ts.map +0 -1
  713. package/packages/core/loader/router.js +0 -46
  714. package/packages/core/loader/router.js.map +0 -1
  715. package/packages/core/loader/service.d.ts +0 -4
  716. package/packages/core/loader/service.d.ts.map +0 -1
  717. package/packages/core/loader/service.js +0 -17
  718. package/packages/core/loader/service.js.map +0 -1
  719. package/packages/core/paths.d.ts.map +0 -1
  720. package/packages/core/paths.js +0 -11
  721. package/packages/core/paths.js.map +0 -1
  722. package/packages/core/types.d.ts.map +0 -1
  723. package/packages/core/types.js +0 -3
  724. package/packages/core/types.js.map +0 -1
  725. package/packages/utils/getAllFilesInFolder.d.ts.map +0 -1
  726. package/packages/utils/getAllFilesInFolder.js +0 -46
  727. package/packages/utils/getAllFilesInFolder.js.map +0 -1
  728. package/packages/utils/getAllFnReturnValue.d.ts +0 -1
  729. package/packages/utils/getAllFnReturnValue.d.ts.map +0 -1
  730. package/packages/utils/getAllFnReturnValue.js +0 -2
  731. package/packages/utils/getAllFnReturnValue.js.map +0 -1
  732. package/packages/utils/index.d.ts.map +0 -1
  733. package/packages/utils/index.js +0 -21
  734. package/packages/utils/index.js.map +0 -1
  735. package/packages/utils/loadFile.d.ts.map +0 -1
  736. package/packages/utils/loadFile.js +0 -57
  737. package/packages/utils/loadFile.js.map +0 -1
  738. package/packages/utils/path.d.ts +0 -7
  739. package/packages/utils/path.d.ts.map +0 -1
  740. package/packages/utils/path.js +0 -51
  741. package/packages/utils/path.js.map +0 -1
  742. package/packages/utils/runFileFn.d.ts +0 -6
  743. package/packages/utils/runFileFn.d.ts.map +0 -1
  744. package/packages/utils/runFileFn.js +0 -6
  745. package/packages/utils/runFileFn.js.map +0 -1
  746. package/typings/type.d.ts.map +0 -1
  747. package/typings/type.js +0 -3
  748. package/typings/type.js.map +0 -1
package/README.md ADDED
@@ -0,0 +1,1108 @@
1
+ # @_tc/template-core
2
+
3
+ TemplateCore 是一个基于 TypeScript、Koa、React 的后台框架包。它把后端约定式加载、前端 Dashboard、Schema CRUD 页面、模型配置和类型扩展放到同一个 npm 包里,项目只需要按目录补充自己的 `app/`、`model/`、`frontend/`。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ pnpm add @_tc/template-core
9
+ ```
10
+
11
+ 要求:
12
+
13
+ - Node.js >= 18
14
+ - pnpm >= 8
15
+ - 使用内置前端时,需要安装 React、Vite 等 peer dependencies
16
+
17
+ ## 快速使用
18
+
19
+ 项目建议结构:
20
+
21
+ ```text
22
+ my-admin/
23
+ ├── app/
24
+ │ ├── controller/
25
+ │ │ └── product.ts
26
+ │ ├── router/
27
+ │ │ └── product.ts
28
+ │ └── service/
29
+ ├── config/
30
+ │ └── config.default.ts
31
+ ├── frontend/
32
+ │ ├── src/ # 库代码
33
+ │ ├── apps/ # 应用入口
34
+ │ └── extended/ # 扩展点
35
+ ├── model/
36
+ │ └── product/
37
+ │ ├── mode.ts
38
+ │ └── project/
39
+ │ └── demo.ts
40
+ ├── typing/
41
+ │ └── template-core.d.ts
42
+ └── index.ts
43
+ ```
44
+
45
+ 启动入口:
46
+
47
+ ```ts
48
+ import { join } from 'path'
49
+ import { serverStart } from '@_tc/template-core'
50
+ import { buildFE } from '@_tc/template-core/bundler'
51
+
52
+ serverStart({
53
+ name: 'my-admin',
54
+ baseDir: join(__dirname, '.'),
55
+ pageBasePage: '/',
56
+ })
57
+
58
+ buildFE('dev')
59
+ ```
60
+
61
+ 只用后端能力时,可以不调用 `buildFE('dev')`。
62
+
63
+ ### serverStart 参数说明
64
+
65
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
66
+ | --- | --- | --- | --- | --- |
67
+ | `name` | `string` | 否 | - | 应用名称 |
68
+ | `baseDir` | `string` | 否 | - | 项目根目录,通常为 `join(__dirname, '.')` |
69
+ | `pageBasePage` | `string` | 否 | `'/'` | 页面访问前缀,所有前端页面路由的基础路径 |
70
+ | `homePage` | `string` | 否 | - | 应用首页路径 |
71
+ | `frameBaseDir` | `string` | 否 | - | 框架根目录,通常不需要手动设置 |
72
+
73
+ 框架会自动读取 `config/config.default.ts` 中的配置(如 `port`、`host`、`env` 等)。
74
+
75
+ ### buildFE 参数说明
76
+
77
+ ```ts
78
+ buildFE(mode: 'dev' | 'prod', options?: BuildFEOptions)
79
+ ```
80
+
81
+ **mode**:构建模式
82
+ - `'dev'`:开发模式,启动 Vite 开发服务器,支持热更新
83
+ - `'prod'`:生产模式,构建优化后的静态资源
84
+
85
+ **options.output**:构建输出位置
86
+ - `'frame'`(默认):输出到框架包内的 `node_modules/@_tc/template-core/app/public/dist`
87
+ - `'run'`:输出到项目根目录的 `app/public/dist`,适合 TypeScript 编译后的项目
88
+ - `() => string`:自定义函数,返回输出目录的绝对路径
89
+
90
+ 示例:
91
+
92
+ ```ts
93
+ // 开发模式,默认输出到框架包
94
+ buildFE('dev')
95
+
96
+ // 生产模式,输出到项目目录
97
+ buildFE('prod', { output: 'run' })
98
+
99
+ // 自定义输出路径
100
+ buildFE('prod', {
101
+ output: () => join(__dirname, 'dist/public')
102
+ })
103
+ ```
104
+
105
+ 配置文件:
106
+
107
+ ```ts
108
+ // config/config.default.ts
109
+ export default {
110
+ port: 9000,
111
+ host: '0.0.0.0',
112
+ }
113
+ ```
114
+
115
+ 访问默认后台:
116
+
117
+ ```text
118
+ http://localhost:9000/dash?projk=demo
119
+ ```
120
+
121
+ `projk` 对应 `model/{modelKey}/project/{projectKey}.ts` 里的 `projectKey`。
122
+
123
+ ## 公开入口
124
+
125
+ | 入口 | 用途 |
126
+ | --- | --- |
127
+ | `@_tc/template-core` | 服务启动、基础 Controller/Service、Koa 类型 |
128
+ | `@_tc/template-core/bundler` | 前端构建函数 `buildFE` |
129
+ | `@_tc/template-core/fe` | 前端初始化、Dash 路由扩展、请求方法、SchemaPage 事件和共享状态 |
130
+ | `@_tc/template-core/fe/rc` | UI/SchemaForm 组件和类型 |
131
+ | `@_tc/template-core/fe/tailwind_ui.css` | 前端全局样式入口,源码对应 `frontend/src/main.css` |
132
+ | `@_tc/template-core/model` | model 配置类型 |
133
+
134
+ ## 样式与 Tailwind V4
135
+
136
+ 使用内置前端或 UI 组件时,需要引入包内样式。默认 `@_tc/template-core/fe` 的 `initApp` 会经过源码入口 `frontend/src/main.tsx` 引入 `frontend/src/main.css`;如果项目侧自定义入口、只使用 `fe/rc` 组件,或希望样式入口更明确,建议显式引入:
137
+
138
+ ```ts
139
+ // frontend/xxx/xxx.entry.tsx
140
+ import '@_tc/template-core/fe/tailwind_ui.css'
141
+ ```
142
+
143
+ 如果项目有自己的全局样式入口,也可以在 CSS 中引入:
144
+
145
+ ```css
146
+ /* frontend/main.css */
147
+ @import "@_tc/template-core/fe/tailwind_ui.css";
148
+
149
+ /* 扫描项目源码 */
150
+ @source "./**/*.{js,ts,jsx,tsx}";
151
+ @source "../model/**/*.{js,ts,jsx,tsx}";
152
+ ```
153
+
154
+ Tailwind V4 默认会忽略 `node_modules` 和 `.gitignore` 中的文件。如果没有使用上面的 `tailwind_ui.css`,或者项目侧构建链路绕过了 TemplateCore 的样式入口,需要手动把包加入 Tailwind 扫描:
155
+
156
+ ```css
157
+ /* frontend/main.css */
158
+ @import "tailwindcss";
159
+
160
+ @source "./**/*.{js,ts,jsx,tsx}";
161
+ @source "../model/**/*.{js,ts,jsx,tsx}";
162
+ @source "../node_modules/@_tc/template-core";
163
+ ```
164
+
165
+ VS Code 建议安装官方 Tailwind CSS IntelliSense 插件,并在工作区 `.vscode/settings.json` 指向项目 CSS 入口:
166
+
167
+ ```json
168
+ {
169
+ "tailwindCSS.experimental.configFile": "frontend/main.css",
170
+ "files.associations": {
171
+ "*.css": "tailwindcss"
172
+ },
173
+ "css.lint.unknownAtRules": "ignore"
174
+ }
175
+ ```
176
+
177
+ 多入口项目可以写成对象:
178
+
179
+ ```json
180
+ {
181
+ "tailwindCSS.experimental.configFile": {
182
+ "frontend/main.css": "frontend/**/*.{ts,tsx,js,jsx}",
183
+ "frontend/admin/admin.css": "frontend/admin/**/*.{ts,tsx,js,jsx}"
184
+ }
185
+ }
186
+ ```
187
+
188
+ ## 内置功能
189
+
190
+ - Koa 服务启动:`serverStart(options)`。
191
+ - 约定式加载:自动加载 `config`、`extend`、`router-schema`、`service`、`controller`、`middleware`、`router`。
192
+ - 双层 app:框架内置 `app/` 和项目 `app/` 一起加载。
193
+ - 默认项目接口:
194
+ - `GET /api/project/model_list`
195
+ - `GET /api/project/list`
196
+ - `GET /api/project/:key`
197
+ - React Dashboard:内置 `/dash` 页面入口。
198
+ - 组件预览页面:内置 `/testPage` 页面,用于查看和测试框架内置的 UI 组件。
199
+ - 菜单渲染:支持 `schema`、`custom`、`iframe`、`sidebar`。
200
+ - Schema CRUD:根据 `model` 中的 `schemaConfig` 生成搜索、表格、新增、编辑、详情。
201
+ - 内置 UI 组件:提供丰富的 React 组件库,详见下方"内置 UI 组件"章节。
202
+ - API 中间件:错误处理、静态资源、body parser、项目上下文、接口签名、参数校验。
203
+ - 前端构建:扫描 `frontend/**/*.entry.{ts,tsx,js,jsx}`,输出服务端可渲染的 `.entry.tpl`。
204
+ - 类型扩展:支持扩展 SchemaForm、CallCom、KoaApp。
205
+
206
+ ## 前端公共能力
207
+
208
+ 项目侧需要 TemplateCore 前端能力时,优先从 `@_tc/template-core/fe` 导入,不要直接依赖 `frontend/src/common/...`、`frontend/src/defaultPages/...`、`frontend/src/stores/...` 这类内部路径。
209
+
210
+ ```ts
211
+ import {
212
+ apiFreezerStore,
213
+ eventsInfo,
214
+ FreezeState,
215
+ get,
216
+ merge,
217
+ modeStore,
218
+ post,
219
+ request,
220
+ schemaEventBus,
221
+ schemaStore,
222
+ useApiFreezer,
223
+ useModeStore,
224
+ useSchemaStore,
225
+ } from '@_tc/template-core/fe'
226
+
227
+ import type {
228
+ CallComComponentsMap,
229
+ CallComRenderer,
230
+ DashRoutesExtender,
231
+ FormFieldSchema,
232
+ ApiFreezerRequestMatcher,
233
+ SchemaFormComponentsMap,
234
+ SchemaFormNamespace,
235
+ SelectProps,
236
+ } from '@_tc/template-core/fe'
237
+ ```
238
+
239
+ 当前公共入口包含:
240
+
241
+ | 类型 | 导出内容 |
242
+ | --- | --- |
243
+ | 应用启动 | `initApp` |
244
+ | Dash 扩展类型 | `DashRoutesExtender`、`DashRoutesContext` |
245
+ | SchemaPage 类型 | `CallComComponentsMap`、`CallComRenderer` |
246
+ | SchemaForm 类型 | `FormFieldSchema`、`SchemaFormComponentsMap`、`SchemaFormNamespace`、`SelectProps` |
247
+ | 请求方法 | `request`、`get`、`post`、`put`、`patch`、`del` |
248
+ | 请求冻结 | `apiFreezerStore`、`useApiFreezer`、`FreezeState`、`ApiFreezerRequestMatcher` |
249
+ | 事件工具 | `eventsInfo`、`merge` |
250
+ | 共享状态 | `modeStore`、`useModeStore`、`schemaStore`、`useSchemaStore`、`schemaEventBus` |
251
+
252
+ `modeStore` 管项目模型和当前项目数据,`schemaStore` 管当前 Schema 页面的 schema/cache,`schemaEventBus` 用来在 Search、Table、CallCom 之间通信。
253
+
254
+ ### 前端请求封装详解
255
+
256
+ 框架内置的请求封装基于 `@tc/common/http`,底层使用原生 `fetch` API,实现了类似 Axios 的接口和拦截器机制,提供了签名、鉴权、错误处理等能力。
257
+
258
+ **基础配置**:
259
+ - `BASE_URL`:固定为 `/api`
260
+ - `timeout`:15000ms(15秒)
261
+ - `credentials`:`'include'`,支持跨域携带 cookie
262
+
263
+ **请求拦截器**:
264
+
265
+ 每个请求会自动添加以下 headers:
266
+
267
+ ```ts
268
+ {
269
+ 's_t': '当前时间戳',
270
+ 's_sign': 'md5(签名密钥_时间戳)',
271
+ 'projk': '当前项目 key(从 localStorage 读取)',
272
+ 'Authorization': 'Bearer token(如果已登录)'
273
+ }
274
+ ```
275
+
276
+ **签名机制**:
277
+ - 签名密钥:`sakjdfnkjwjfnfkjkjldljksndf`(前后端需保持一致)
278
+ - 签名算法:`md5(签名密钥_${时间戳})`
279
+ - 服务端会在非 local 环境下校验签名和时间戳
280
+
281
+ **响应拦截器**:
282
+
283
+ - **401 处理**:自动清空 token 并跳转到 `/login`
284
+ - **错误提取**:自动从响应中提取 `message`、`msg` 或 `errors` 字段
285
+ - **超时处理**:请求超时会返回 "Request timed out"
286
+ - **网络错误**:网络异常会返回 "Network error"
287
+
288
+ **使用示例**:
289
+
290
+ ```ts
291
+ import { get, post, put, del } from '@_tc/template-core/fe'
292
+
293
+ // GET 请求
294
+ const data = await get('/product/list', { page: 1, pageSize: 10 })
295
+
296
+ // POST 请求
297
+ const result = await post('/product', { name: '商品名称', price: 100 })
298
+
299
+ // PUT 请求
300
+ await put('/product', { id: 1, name: '新名称' })
301
+
302
+ // DELETE 请求
303
+ await del('/product', { id: 1 })
304
+ ```
305
+
306
+ **请求冻结器**:
307
+
308
+ 请求冻结器用于在某段流程中暂停普通 API 请求,典型场景是 RT 刷新 token:刷新期间冻结其它请求,刷新接口本身走白名单放行,刷新完成后再解冻并回放队列。
309
+
310
+ 冻结器只在 `Freeze` 状态拦截请求;`Hibernation` 和 `Thawing` 状态都会直接放行。解冻时会按最多 4 个并发回放已冻结的请求;相同序列化参数的请求只会实际发送一次,多个调用方共享同一份响应或错误。
311
+
312
+ ```ts
313
+ import { apiFreezerStore } from '@_tc/template-core/fe'
314
+
315
+ const { freezing, thawing, setRequestWhitelist } = apiFreezerStore.getState()
316
+
317
+ setRequestWhitelist([
318
+ '/auth/refresh',
319
+ /^\/auth\//,
320
+ (api) => api.includes('/refresh-token'),
321
+ ])
322
+
323
+ freezing()
324
+
325
+ try {
326
+ await refreshToken()
327
+ } finally {
328
+ thawing()
329
+ }
330
+ ```
331
+
332
+ 白名单支持三种 matcher:
333
+
334
+ - `string`:精确匹配 API 路径
335
+ - `RegExp`:正则匹配 API 路径
336
+ - `(api, params) => boolean`:自定义判断,`params` 是请求函数收到的完整参数
337
+
338
+ **注意事项**:
339
+ - `get` 和 `del` 方法的参数会自动转为 query string
340
+ - `post`、`put`、`patch` 方法的参数会作为 request body
341
+ - 所有请求方法都会自动处理错误,无需手动 try-catch(除非需要自定义错误处理)
342
+ - 底层使用原生 `fetch` API,但提供了类似 Axios 的拦截器和配置接口
343
+
344
+ ## 内置 UI 组件
345
+
346
+ 框架通过 `@_tc/template-core/fe/rc` 提供了丰富的 React 组件库,可在项目中直接使用。
347
+
348
+ ### 基础组件
349
+
350
+ | 组件 | 用途 | 导入路径 |
351
+ | --- | --- | --- |
352
+ | `Button` | 按钮组件,支持多种样式和尺寸 | `@_tc/template-core/fe/rc` |
353
+ | `Input` | 输入框组件 | `@_tc/template-core/fe/rc` |
354
+ | `Select` | 下拉选择组件,支持单选和多选 | `@_tc/template-core/fe/rc` |
355
+ | `DatePicker` | 日期选择器 | `@_tc/template-core/fe/rc` |
356
+ | `Upload` | 文件上传组件 | `@_tc/template-core/fe/rc` |
357
+ | `Checkbox` | 复选框组件 | `@_tc/template-core/fe/rc` |
358
+ | `Radio` | 单选框组件 | `@_tc/template-core/fe/rc` |
359
+ | `Switch` | 开关组件 | `@_tc/template-core/fe/rc` |
360
+
361
+ ### 表单组件
362
+
363
+ | 组件 | 用途 | 导入路径 |
364
+ | --- | --- | --- |
365
+ | `Form` | 表单容器组件 | `@_tc/template-core/fe/rc` |
366
+ | `SchemaForm` | 配置驱动的表单组件,根据 schema 自动生成表单 | `@_tc/template-core/fe/rc` |
367
+ | `FormItem` | 表单项组件 | `@_tc/template-core/fe/rc` |
368
+
369
+ ### 数据展示组件
370
+
371
+ | 组件 | 用途 | 导入路径 |
372
+ | --- | --- | --- |
373
+ | `DataTable` | 数据表格组件,支持分页、排序、筛选 | `@_tc/template-core/fe/rc` |
374
+ | `TableSearch` | 表格搜索组件,配合 DataTable 使用 | `@_tc/template-core/fe/rc` |
375
+ | `Pagination` | 分页组件 | `@_tc/template-core/fe/rc` |
376
+
377
+ ### 反馈组件
378
+
379
+ | 组件 | 用途 | 导入路径 |
380
+ | --- | --- | --- |
381
+ | `Modal` | 模态框组件 | `@_tc/template-core/fe/rc` |
382
+ | `Drawer` | 抽屉组件 | `@_tc/template-core/fe/rc` |
383
+ | `Message` | 消息提示组件 | `@_tc/template-core/fe/rc` |
384
+ | `Notification` | 通知组件 | `@_tc/template-core/fe/rc` |
385
+ | `Loading` | 加载状态组件 | `@_tc/template-core/fe/rc` |
386
+
387
+ ### 布局组件
388
+
389
+ | 组件 | 用途 | 导入路径 |
390
+ | --- | --- | --- |
391
+ | `Layout` | 页面布局组件 | `@_tc/template-core/fe/rc` |
392
+ | `Card` | 卡片容器组件 | `@_tc/template-core/fe/rc` |
393
+ | `Tabs` | 标签页组件 | `@_tc/template-core/fe/rc` |
394
+
395
+ ### 使用示例
396
+
397
+ ```tsx
398
+ import { Button, Input, Select, Modal, DataTable } from '@_tc/template-core/fe/rc'
399
+
400
+ function MyComponent() {
401
+ return (
402
+ <div>
403
+ <Button variant="primary" onClick={() => console.log('clicked')}>
404
+ 点击我
405
+ </Button>
406
+
407
+ <Input placeholder="请输入内容" />
408
+
409
+ <Select
410
+ options={[
411
+ { label: '选项1', value: '1' },
412
+ { label: '选项2', value: '2' },
413
+ ]}
414
+ />
415
+ </div>
416
+ )
417
+ }
418
+ ```
419
+
420
+ **注意**:
421
+ - 所有组件都支持 TypeScript 类型提示
422
+ - 组件样式基于 Tailwind CSS V4
423
+ - 详细的组件 API 和示例可以访问 `/testPage` 页面查看
424
+
425
+ ## 后端约定
426
+
427
+ 项目目录会按下面规则加载:
428
+
429
+ ```text
430
+ app/controller/**/*.(js|ts) -> app.controller
431
+ app/service/**/*.(js|ts) -> app.service
432
+ app/middleware/**/*.(js|ts) -> app.middlewares
433
+ app/router/**/*.(js|ts) -> Koa router
434
+ app/router-schema/**/*.(js|ts) -> app.routerSchema
435
+ app/extend/*.(js|ts) -> app.extends
436
+ config/config.default.(js|ts) -> app.config
437
+ config/config.{env}.(js|ts) -> app.config
438
+ model/**/*.(js|ts) -> 项目模型配置
439
+ ```
440
+
441
+ 内置扩展:
442
+
443
+ - `app.extends.$fetch`:Node 侧基于 `fetch` 的 axios 风格请求实例,支持 `get/post/put/patch/delete` 和 `create(config)`。
444
+
445
+ Controller 示例:
446
+
447
+ ```ts
448
+ import { baseFn, type ControllerFN, type Ctx } from '@_tc/template-core'
449
+
450
+ const getProductController = ((app) => {
451
+ const BaseController = baseFn.baseControllerFn(app)
452
+
453
+ return class ProductController extends BaseController {
454
+ list = async (ctx: Ctx) => {
455
+ this.success(ctx, {
456
+ data: [],
457
+ page: 1,
458
+ pageSize: 10,
459
+ total: 0,
460
+ })
461
+ }
462
+ }
463
+ }) satisfies ControllerFN
464
+
465
+ export default getProductController
466
+ ```
467
+
468
+ Router 示例:
469
+
470
+ ```ts
471
+ import type { KoaApp, Router } from '@_tc/template-core'
472
+
473
+ export default (app: KoaApp, router: Router) => {
474
+ router.get('/api/product/list', app.controller.product.list)
475
+ }
476
+ ```
477
+
478
+ ## model 数据如何配置
479
+
480
+ `model` 是后台菜单、项目和 Schema 页面的数据源。框架会读取:
481
+
482
+ ```text
483
+ model/{modelKey}/mode.ts
484
+ model/{modelKey}/project/{projectKey}.ts
485
+ ```
486
+
487
+ `mode.ts` 定义模型模板:
488
+
489
+ ```ts
490
+ import type { ModelDataType } from '@_tc/template-core/model'
491
+
492
+ const model: ModelDataType = {
493
+ mode: 'MB',
494
+ name: '商品后台',
495
+ desc: '商品管理',
496
+ icon: '',
497
+ homePage: '/dash?projk=demo',
498
+ menuLayout: 'left',
499
+ menu: [
500
+ {
501
+ key: 'product',
502
+ name: '商品列表',
503
+ menuType: 'module',
504
+ moduleType: 'schema',
505
+ schemaConfig: {
506
+ api: '/api/product',
507
+ schema: {
508
+ type: 'object',
509
+ properties: {
510
+ product_id: {
511
+ type: 'string',
512
+ label: '商品 ID',
513
+ tableOption: { width: 160 },
514
+ detailPanelOption: {},
515
+ editFormOption: {
516
+ comType: 'input',
517
+ disabled: true,
518
+ },
519
+ },
520
+ product_name: {
521
+ type: 'string',
522
+ label: '商品名称',
523
+ tableOption: {},
524
+ searchOption: { comType: 'input' },
525
+ createFormOption: { comType: 'input' },
526
+ editFormOption: { comType: 'input' },
527
+ detailPanelOption: {},
528
+ },
529
+ price: {
530
+ type: 'number',
531
+ label: '价格',
532
+ tableOption: {},
533
+ createFormOption: { comType: 'inputNumber' },
534
+ editFormOption: { comType: 'inputNumber' },
535
+ detailPanelOption: {},
536
+ },
537
+ },
538
+ required: ['product_name'],
539
+ },
540
+ componentConfig: {
541
+ createForm: {
542
+ title: '新增商品',
543
+ saveBtnText: '创建',
544
+ },
545
+ editForm: {
546
+ title: '编辑商品',
547
+ saveBtnText: '保存',
548
+ fetchKey: 'product_id',
549
+ },
550
+ detailPanel: {
551
+ title: '商品详情',
552
+ fetchKey: 'product_id',
553
+ },
554
+ },
555
+ tableConfig: {
556
+ headerButtons: [
557
+ {
558
+ label: '新增',
559
+ eventKey: 'callComponent',
560
+ variant: 'primary',
561
+ eventOption: { comName: 'createForm' },
562
+ },
563
+ ],
564
+ rowButtons: [
565
+ {
566
+ label: '编辑',
567
+ eventKey: 'callComponent',
568
+ eventOption: { comName: 'editForm' },
569
+ },
570
+ {
571
+ label: '详情',
572
+ eventKey: 'callComponent',
573
+ eventOption: { comName: 'detailPanel' },
574
+ },
575
+ {
576
+ label: '删除',
577
+ eventKey: 'remove',
578
+ eventOption: {
579
+ params: {
580
+ product_id: 'schema::product_id',
581
+ },
582
+ },
583
+ },
584
+ ],
585
+ },
586
+ },
587
+ },
588
+ ],
589
+ }
590
+
591
+ export default model
592
+ ```
593
+
594
+ `project/demo.ts` 定义项目覆盖:
595
+
596
+ ```ts
597
+ export default {
598
+ name: 'Demo 企业',
599
+ desc: 'Demo 企业商品后台',
600
+ homePage: '/dash?projk=demo',
601
+ }
602
+ ```
603
+
604
+ 合并规则:
605
+
606
+ - `project` 会继承同目录上层 `mode`。
607
+ - 对象递归合并,`project` 覆盖 `mode`。
608
+ - 数组按 `key` 合并:同 key 覆盖,不同 key 新增。
609
+ - `model/index.ts` 或 `model/index.js` 会被 loader 跳过。
610
+
611
+ ### model 数组合并示例
612
+
613
+ 假设 `mode.ts` 定义了两个菜单项:
614
+
615
+ ```ts
616
+ // model/product/mode.ts
617
+ export default {
618
+ name: '商品后台',
619
+ menu: [
620
+ {
621
+ key: 'product',
622
+ name: '商品列表',
623
+ menuType: 'module',
624
+ moduleType: 'schema',
625
+ schemaConfig: {
626
+ api: '/api/product',
627
+ // ... 省略 schema 配置
628
+ },
629
+ },
630
+ {
631
+ key: 'category',
632
+ name: '分类管理',
633
+ menuType: 'module',
634
+ moduleType: 'schema',
635
+ schemaConfig: {
636
+ api: '/api/category',
637
+ // ... 省略 schema 配置
638
+ },
639
+ },
640
+ ],
641
+ }
642
+ ```
643
+
644
+ `project/demo.ts` 可以:
645
+
646
+ ```ts
647
+ // model/product/project/demo.ts
648
+ export default {
649
+ name: 'Demo 企业商品后台',
650
+ menu: [
651
+ // 1. 覆盖:修改 product 菜单的名称和配置
652
+ {
653
+ key: 'product',
654
+ name: 'Demo 商品', // 覆盖 name
655
+ schemaConfig: {
656
+ api: '/api/demo/product', // 覆盖 api
657
+ },
658
+ },
659
+ // 2. 新增:添加 brand 菜单
660
+ {
661
+ key: 'brand',
662
+ name: '品牌管理',
663
+ menuType: 'module',
664
+ moduleType: 'schema',
665
+ schemaConfig: {
666
+ api: '/api/brand',
667
+ },
668
+ },
669
+ // 3. 继承:category 菜单未在 project 中定义,会完整继承 mode 的配置
670
+ ],
671
+ }
672
+ ```
673
+
674
+ 合并后的结果:
675
+
676
+ ```ts
677
+ {
678
+ name: 'Demo 企业商品后台', // project 覆盖
679
+ menu: [
680
+ {
681
+ key: 'product',
682
+ name: 'Demo 商品', // project 覆盖
683
+ menuType: 'module', // mode 继承
684
+ moduleType: 'schema', // mode 继承
685
+ schemaConfig: {
686
+ api: '/api/demo/product', // project 覆盖
687
+ // schema 配置会递归合并
688
+ },
689
+ },
690
+ {
691
+ key: 'category', // mode 完整继承
692
+ name: '分类管理',
693
+ menuType: 'module',
694
+ moduleType: 'schema',
695
+ schemaConfig: {
696
+ api: '/api/category',
697
+ },
698
+ },
699
+ {
700
+ key: 'brand', // project 新增
701
+ name: '品牌管理',
702
+ menuType: 'module',
703
+ moduleType: 'schema',
704
+ schemaConfig: {
705
+ api: '/api/brand',
706
+ },
707
+ },
708
+ ],
709
+ }
710
+ ```
711
+
712
+ **关键点**:
713
+ - 数组合并依赖 `key` 字段,确保每个菜单项都有唯一的 `key`
714
+ - 同 `key` 的项会递归合并,不是简单替换
715
+ - `project` 中未定义的项会完整继承 `mode` 的配置
716
+
717
+ ## model 数据如何引用
718
+
719
+ 后端可以直接调用 loader:
720
+
721
+ ```ts
722
+ import { modelLoader, type KoaApp } from '@_tc/template-core'
723
+
724
+ export default (app: KoaApp) => {
725
+ const modelList = modelLoader(app)
726
+ return modelList
727
+ }
728
+ ```
729
+
730
+ 前端默认不直接读文件,而是通过内置接口获取:
731
+
732
+ ```text
733
+ GET /api/project/model_list
734
+ GET /api/project/list?projk=demo
735
+ GET /api/project/demo
736
+ ```
737
+
738
+ Dashboard 会根据 `projk` 请求 `/api/project/:key`,再按返回的 `menu` 渲染页面。
739
+
740
+ Schema 页面的接口约定:
741
+
742
+ ```text
743
+ GET {api}/list -> 表格列表
744
+ GET {api} -> 编辑/详情拉取,参数由 fetchKey 决定
745
+ POST {api} -> 新增
746
+ PUT {api} -> 编辑
747
+ DELETE {api} -> 删除
748
+ ```
749
+
750
+ `schema::字段名` 表示从当前表格行读取字段值,常用于删除按钮参数。
751
+
752
+ ## 如何扩展组件
753
+
754
+ ### 扩展 SchemaForm 字段组件
755
+
756
+ 1. 声明字段类型。
757
+ 2. 注册运行时组件。
758
+ 3. 在 `model` 的 `createFormOption`、`editFormOption`、`searchOption` 中使用。
759
+
760
+ 类型声明:
761
+
762
+ ```ts
763
+ // typing/template-core.d.ts
764
+ import '@_tc/template-core/fe/rc'
765
+ import type { SelectProps } from '@_tc/template-core/fe/rc'
766
+
767
+ declare module '@_tc/template-core/fe/rc' {
768
+ export namespace SchemaFormNamespace {
769
+ interface FieldTypes {
770
+ businessSelect: true
771
+ }
772
+
773
+ interface PropsMap {
774
+ businessSelect: SelectProps & {
775
+ requestUrl?: string
776
+ valueField?: string
777
+ labelField?: string
778
+ }
779
+ }
780
+ }
781
+ }
782
+ ```
783
+
784
+ 运行时注册:
785
+
786
+ ```ts
787
+ // frontend/extended/SchemaForm/data.ts
788
+ import React from 'react'
789
+ import type { SchemaFormComponentsMap } from '@_tc/template-core/fe/rc'
790
+
791
+ const componentsMap = {
792
+ businessSelect: React.lazy(async () => ({
793
+ default: (await import('../../components/BusinessSelect')).BusinessSelect,
794
+ })),
795
+ } satisfies SchemaFormComponentsMap
796
+
797
+ export default componentsMap
798
+ ```
799
+
800
+ model 中使用:
801
+
802
+ ```ts
803
+ status: {
804
+ type: 'string',
805
+ label: '状态',
806
+ searchOption: {
807
+ comType: 'businessSelect',
808
+ requestUrl: '/api/status/options',
809
+ valueField: 'value',
810
+ labelField: 'label',
811
+ },
812
+ }
813
+ ```
814
+
815
+ ### 扩展 SchemaPage CallCom
816
+
817
+ CallCom 是 SchemaPage 中的弹窗、抽屉、面板类组件。内置组件有:
818
+
819
+ - `createForm`
820
+ - `editForm`
821
+ - `detailPanel`
822
+
823
+ 声明配置类型:
824
+
825
+ ```ts
826
+ // typing/template-core.d.ts
827
+ import '@_tc/template-core/model'
828
+
829
+ declare module '@_tc/template-core/model' {
830
+ export namespace CallComNamespace {
831
+ interface ConfigMap {
832
+ auditPanel: {
833
+ title: string
834
+ fetchKey: string
835
+ approveApi?: string
836
+ }
837
+ }
838
+
839
+ interface OptionMap {
840
+ auditPanel: {
841
+ visible?: boolean
842
+ }
843
+ }
844
+ }
845
+ }
846
+ ```
847
+
848
+ 注册运行时组件:
849
+
850
+ ```ts
851
+ // frontend/extended/SchemaPage/CallCom/data.ts
852
+ import { lazy } from 'react'
853
+ import type { CallComComponentsMap } from '@_tc/template-core/fe'
854
+
855
+ const componentsMap = {
856
+ auditPanel: lazy(() => import('../../components/AuditPanel')),
857
+ } satisfies CallComComponentsMap
858
+
859
+ export default componentsMap
860
+ ```
861
+
862
+ 组件示例:
863
+
864
+ ```tsx
865
+ // frontend/src/components/AuditPanel.tsx
866
+ import { eventsInfo, merge, schemaEventBus } from '@_tc/template-core/fe'
867
+
868
+ export default function AuditPanel(props: {
869
+ data: Record<string, unknown>
870
+ comName: 'auditPanel'
871
+ }) {
872
+ const closeAndRefresh = () => {
873
+ schemaEventBus.getState().emitCom({
874
+ type: merge(eventsInfo.closeCom, eventsInfo.initTable),
875
+ })
876
+ }
877
+
878
+ return (
879
+ <div>
880
+ <div>审核对象:{String(props.data.id ?? '')}</div>
881
+ <button onClick={closeAndRefresh}>完成</button>
882
+ </div>
883
+ )
884
+ }
885
+ ```
886
+
887
+ model 中使用:
888
+
889
+ ```ts
890
+ componentConfig: {
891
+ auditPanel: {
892
+ title: '审核',
893
+ fetchKey: 'id',
894
+ approveApi: '/api/audit/approve',
895
+ },
896
+ },
897
+ tableConfig: {
898
+ rowButtons: [
899
+ {
900
+ label: '审核',
901
+ eventKey: 'callComponent',
902
+ eventOption: {
903
+ comName: 'auditPanel',
904
+ },
905
+ },
906
+ ],
907
+ },
908
+ ```
909
+
910
+ 字段级配置使用 `${组件名}Option`:
911
+
912
+ ```ts
913
+ remark: {
914
+ type: 'string',
915
+ label: '备注',
916
+ auditPanelOption: {
917
+ visible: true,
918
+ },
919
+ }
920
+ ```
921
+
922
+ ## 如何配置类型扩展
923
+
924
+ ### tsconfig
925
+
926
+ 如果项目分了后端、前端、model 多个 TS 上下文,确保它们都 include 同一份声明文件:
927
+
928
+ ```json
929
+ {
930
+ "include": ["app/**/*", "model/**/*", "frontend/**/*", "typing/**/*.d.ts"]
931
+ }
932
+ ```
933
+
934
+ ### SchemaForm 类型扩展
935
+
936
+ 扩展目标:
937
+
938
+ ```ts
939
+ declare module '@_tc/template-core/fe/rc' {
940
+ export namespace SchemaFormNamespace {
941
+ interface FieldTypes {}
942
+ interface PropsMap {}
943
+ }
944
+ }
945
+ ```
946
+
947
+ - `FieldTypes` 用来增加字段类型名。
948
+ - `PropsMap` 用来绑定该字段的 props 类型。
949
+ - 类型声明只负责 TS 校验,运行时还必须在 `frontend/extended/SchemaForm/data.ts` 注册组件。
950
+
951
+ ### CallCom 类型扩展
952
+
953
+ 扩展目标:
954
+
955
+ ```ts
956
+ declare module '@_tc/template-core/model' {
957
+ export namespace CallComNamespace {
958
+ interface ConfigMap {}
959
+ interface OptionMap {}
960
+ }
961
+ }
962
+ ```
963
+
964
+ - `ConfigMap` 对应 `schemaConfig.componentConfig.xxx`。
965
+ - `OptionMap` 对应字段上的 `xxxOption`。
966
+ - 运行时组件注册在 `frontend/extended/SchemaPage/CallCom/data.ts`。
967
+
968
+ ### KoaApp 类型扩展
969
+
970
+ 使用方推荐增强根包 `@_tc/template-core`:
971
+
972
+ ```ts
973
+ // typing/template-core.d.ts
974
+ import '@_tc/template-core'
975
+
976
+ declare module '@_tc/template-core' {
977
+ namespace FrameworkAugment {
978
+ interface IServiceAugmented {
979
+ product: {
980
+ list(): Promise<unknown[]>
981
+ }
982
+ }
983
+
984
+ interface IControllerAugmented {
985
+ product: {
986
+ list(ctx: import('@_tc/template-core').Ctx): Promise<void>
987
+ }
988
+ }
989
+
990
+ interface IExtendsAugmented {
991
+ redis: {
992
+ get(key: string): Promise<string | null>
993
+ }
994
+ }
995
+
996
+ interface IMiddlewaresAugmented {
997
+ auth: import('koa').Middleware
998
+ }
999
+
1000
+ interface AppConfigAugmented {
1001
+ authSecret: string
1002
+ }
1003
+ }
1004
+ }
1005
+ ```
1006
+
1007
+ 使用:
1008
+
1009
+ ```ts
1010
+ import type { KoaApp } from '@_tc/template-core'
1011
+
1012
+ export default (app: KoaApp) => {
1013
+ app.config.authSecret
1014
+ app.service.product.list()
1015
+ app.extends.$fetch.get('https://example.com/api')
1016
+ app.extends.redis.get('token')
1017
+ }
1018
+ ```
1019
+
1020
+ 如果在 TemplateCore 仓库源码内部扩展,声明目标通常是内部别名 `@tc/core`;npm 使用方不要依赖 `@tc/*` 内部路径。
1021
+
1022
+ ## 扩展自定义前端页面
1023
+
1024
+ 新增应用入口:
1025
+
1026
+ ```text
1027
+ frontend/admin/admin.entry.tsx
1028
+ ```
1029
+
1030
+ 入口文件名必须包含 `.entry.`,构建器才会扫描。
1031
+
1032
+ 扩展 Dashboard 路由:
1033
+
1034
+ ```tsx
1035
+ // frontend/extended/dash/customRoutes.tsx
1036
+ import type { DashRoutesExtender } from '@_tc/template-core/fe'
1037
+
1038
+ const extendDashRoutes: DashRoutesExtender = ({ topRoutes, sidebarRoutes }) => {
1039
+ topRoutes.push({
1040
+ path: 'custom-page',
1041
+ component: <div>Custom Page</div>,
1042
+ })
1043
+
1044
+ sidebarRoutes.push({
1045
+ path: 'custom-sidebar-page',
1046
+ component: <div>Custom Sidebar Page</div>,
1047
+ })
1048
+ }
1049
+
1050
+ export default extendDashRoutes
1051
+ ```
1052
+
1053
+ **路径规则说明**:
1054
+
1055
+ - **topRoutes**:追加到 Dashboard 顶层路由,路径相对于 `/dash`
1056
+ - 示例:`path: 'custom-page'` → 访问路径为 `/dash/custom-page`
1057
+ - 不要写成 `/custom-page`,使用相对路径即可
1058
+
1059
+ - **sidebarRoutes**:追加到侧边栏容器的子路由,路径相对于 `/dash/_sidebar_`
1060
+ - 示例:`path: 'custom-sidebar-page'` → 访问路径为 `/dash/_sidebar_/custom-sidebar-page`
1061
+ - 适用于 `menuLayout: 'left'` 的项目
1062
+
1063
+ model 中用 `custom` 菜单指向自定义路径:
1064
+
1065
+ ```ts
1066
+ {
1067
+ key: 'custom',
1068
+ name: '自定义页面',
1069
+ menuType: 'module',
1070
+ moduleType: 'custom',
1071
+ customConfig: {
1072
+ path: '/custom-page', // 注意:这里使用完整路径,以 / 开头
1073
+ },
1074
+ }
1075
+ ```
1076
+
1077
+ ## 构建
1078
+
1079
+ 开发构建:
1080
+
1081
+ ```ts
1082
+ import { buildFE } from '@_tc/template-core/bundler'
1083
+
1084
+ buildFE('dev')
1085
+ ```
1086
+
1087
+ 生产构建:
1088
+
1089
+ ```ts
1090
+ buildFE('prod')
1091
+ ```
1092
+
1093
+ 默认输出到框架包的 `app/public/dist`。如果要输出到项目:
1094
+
1095
+ ```ts
1096
+ buildFE('prod', {
1097
+ output: 'run',
1098
+ })
1099
+ ```
1100
+
1101
+ ## 注意事项
1102
+
1103
+ - 不要在项目代码里引用 `dist/fe/*`、`dist/model/*` 这类构建产物路径。
1104
+ - npm 使用方只使用公开入口:`@_tc/template-core/*`。
1105
+ - SchemaForm 和 CallCom 的类型扩展、运行时注册都要做,少一个就只会“类型通过但页面不显示”或“页面能配但类型报错”。
1106
+ - `model` 数组合并依赖稳定 `key`。
1107
+ - Dashboard 默认需要 URL 带 `?projk=项目key`。
1108
+ - 前端入口必须命名为 `.entry.tsx`、`.entry.ts`、`.entry.jsx` 或 `.entry.js`。