vona-cli-set-api 1.0.8 → 1.0.11

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 (276) hide show
  1. package/cli/templates/create/module/boilerplate/_package.json +27 -7
  2. package/cli/templates/create/module/boilerplate/_tsconfig.build.json +8 -0
  3. package/cli/templates/create/module/boilerplate/_tsconfig.json +2 -3
  4. package/cli/templates/create/module/snippets/package.json.ts +17 -0
  5. package/cli/templates/create/module/snippets/tsconfig.json.ts +19 -0
  6. package/cli/templates/create/project/basic/boilerplate/.editorconfig +9 -0
  7. package/cli/templates/create/project/basic/boilerplate/.gitattributes +2 -0
  8. package/cli/templates/create/project/basic/boilerplate/.vscode/extensions.json +4 -0
  9. package/cli/templates/create/project/basic/boilerplate/.vscode/settings.json +45 -0
  10. package/cli/templates/create/project/basic/boilerplate/.vscode/vona.code-snippets +51 -0
  11. package/cli/templates/create/project/basic/boilerplate/env/.env +59 -0
  12. package/cli/templates/create/project/basic/boilerplate/env/.env.local +0 -0
  13. package/cli/templates/create/project/basic/boilerplate/env/.env.prod +26 -0
  14. package/cli/templates/create/project/basic/boilerplate/env/.env.test +0 -0
  15. package/cli/templates/create/project/basic/boilerplate/eslint.config.mjs +16 -0
  16. package/cli/templates/create/project/basic/boilerplate/package.original.json +45 -0
  17. package/cli/templates/create/project/basic/boilerplate/pnpm-workspace.yaml +7 -0
  18. package/cli/templates/create/project/basic/boilerplate/scripts/app-init.sh +4 -0
  19. package/cli/templates/create/project/basic/boilerplate/scripts/wait-for-it.sh +156 -0
  20. package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.local.ts +10 -0
  21. package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.prod.ts +21 -0
  22. package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.test.ts +10 -0
  23. package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.ts +10 -0
  24. package/cli/templates/create/project/basic/boilerplate/src/backend/config/locale/en-us.ts +5 -0
  25. package/cli/templates/create/project/basic/boilerplate/src/backend/config/locale/zh-cn.ts +5 -0
  26. package/cli/templates/create/project/basic/boilerplate/src/backend/config/locales.ts +7 -0
  27. package/cli/templates/create/project/basic/boilerplate/src/backend/typing/env.d.ts +5 -0
  28. package/cli/templates/create/project/basic/boilerplate/src/module/.gitkeep +0 -0
  29. package/cli/templates/create/project/basic/boilerplate/src/module-vendor/.gitkeep +0 -0
  30. package/cli/templates/create/project/basic/boilerplate/src/suite/.gitkeep +0 -0
  31. package/cli/templates/create/project/basic/boilerplate/src/suite-vendor/.gitkeep +0 -0
  32. package/cli/templates/create/project/basic/boilerplate/tsconfig.base.esm.json +10 -0
  33. package/cli/templates/create/project/basic/boilerplate/tsconfig.base.json +3 -0
  34. package/cli/templates/create/project/basic/boilerplate/tsconfig.json +12 -0
  35. package/cli/templates/create/suite/_package.json +2 -2
  36. package/cli/templates/create/suite/_tsconfig.json +2 -2
  37. package/cli/templates/create/test/boilerplate/{{name}}.test.ts +11 -0
  38. package/cli/templates/init/config/boilerplate/config/config.ts +5 -0
  39. package/cli/templates/init/constant/boilerplate/config/constants.ts +1 -0
  40. package/cli/templates/init/error/boilerplate/config/errors.ts +1 -0
  41. package/cli/templates/init/locale/boilerplate/config/locale/en-us.ts +1 -0
  42. package/cli/templates/init/locale/boilerplate/config/locale/zh-cn.ts +1 -0
  43. package/cli/templates/init/main/boilerplate/main.ts +2 -1
  44. package/cli/templates/init/monkey/boilerplate/monkey.ts +3 -1
  45. package/cli/templates/init/static/boilerplate/static/img/vona.png +0 -0
  46. package/cli/templates/tools/crud/boilerplate/src/controller/{{resourceName}}.ts_ +43 -0
  47. package/cli/templates/tools/crud/boilerplate/src/dto/{{resourceName}}Create.ts_ +9 -0
  48. package/cli/templates/tools/crud/boilerplate/src/dto/{{resourceName}}Update.ts_ +9 -0
  49. package/cli/templates/tools/crud/boilerplate/src/entity/{{resourceName}}.ts_ +15 -0
  50. package/cli/templates/tools/crud/boilerplate/src/model/{{resourceName}}.ts_ +5 -0
  51. package/cli/templates/tools/crud/boilerplate/src/service/{{resourceName}}.ts_ +32 -0
  52. package/cli/templates/tools/crud/boilerplate/test/{{resourceName}}.test.ts_ +46 -0
  53. package/cli/templates/tools/crud/snippets/1-package.json.ts +16 -0
  54. package/cli/templates/tools/crud/snippets/2-meta.version.ts +42 -0
  55. package/cli/templates/tools/crud/snippets/3-en-us.ts +27 -0
  56. package/cli/templates/tools/crud/snippets/4-zh-cn.ts +10 -0
  57. package/cli/templates/tools/crud/utils.ts +20 -0
  58. package/dist/index.d.ts +3 -3
  59. package/dist/index.js +3 -3
  60. package/dist/lib/bean/cli.bin.build.d.ts +15 -0
  61. package/dist/lib/bean/cli.bin.build.js +139 -0
  62. package/dist/lib/bean/cli.bin.dbReset.d.ts +13 -0
  63. package/dist/lib/bean/cli.bin.dbReset.js +46 -0
  64. package/dist/lib/bean/cli.bin.demo.d.ts +12 -0
  65. package/dist/lib/bean/cli.bin.demo.js +50 -0
  66. package/dist/lib/bean/cli.bin.dev.d.ts +14 -0
  67. package/dist/lib/bean/cli.bin.dev.js +53 -0
  68. package/dist/lib/bean/cli.bin.test.d.ts +15 -0
  69. package/dist/lib/bean/cli.bin.test.js +67 -0
  70. package/dist/lib/bean/{cli.tools.build.d.ts → cli.bin.tsc.d.ts} +2 -3
  71. package/dist/lib/bean/{cli.tools.build.js → cli.bin.tsc.js} +13 -5
  72. package/dist/lib/bean/cli.create.bean.d.ts +3 -4
  73. package/dist/lib/bean/cli.create.bean.js +42 -28
  74. package/dist/lib/bean/cli.create.module.d.ts +1 -2
  75. package/dist/lib/bean/cli.create.module.js +3 -4
  76. package/dist/lib/bean/cli.create.project.d.ts +26 -0
  77. package/dist/lib/bean/cli.create.project.js +115 -0
  78. package/dist/lib/bean/cli.create.suite.d.ts +1 -2
  79. package/dist/lib/bean/cli.create.suite.js +5 -9
  80. package/dist/lib/bean/cli.create.test.d.ts +15 -0
  81. package/dist/lib/bean/cli.create.test.js +39 -0
  82. package/dist/lib/bean/cli.default.list.d.ts +0 -1
  83. package/dist/lib/bean/cli.default.list.js +0 -1
  84. package/dist/lib/bean/cli.init.config.d.ts +8 -0
  85. package/dist/lib/bean/cli.init.config.js +36 -0
  86. package/dist/lib/bean/cli.init.constant.d.ts +8 -0
  87. package/dist/lib/bean/cli.init.constant.js +36 -0
  88. package/dist/lib/bean/cli.init.error.d.ts +8 -0
  89. package/dist/lib/bean/cli.init.error.js +47 -0
  90. package/dist/lib/bean/cli.init.locale.d.ts +8 -0
  91. package/dist/lib/bean/cli.init.locale.js +36 -0
  92. package/dist/lib/bean/cli.init.main.d.ts +0 -1
  93. package/dist/lib/bean/cli.init.main.js +2 -3
  94. package/dist/lib/bean/cli.init.monkey.d.ts +0 -1
  95. package/dist/lib/bean/cli.init.monkey.js +8 -10
  96. package/dist/lib/bean/cli.init.static.d.ts +8 -0
  97. package/dist/lib/bean/cli.init.static.js +36 -0
  98. package/dist/lib/bean/cli.tools.crud.d.ts +15 -0
  99. package/dist/lib/bean/cli.tools.crud.js +42 -0
  100. package/dist/lib/bean/cli.tools.deps.d.ts +2 -10
  101. package/dist/lib/bean/cli.tools.deps.js +16 -123
  102. package/dist/lib/bean/cli.tools.metadata.d.ts +1 -1
  103. package/dist/lib/bean/cli.tools.metadata.js +71 -32
  104. package/dist/lib/bean/toolsBin/configUtils.d.ts +7 -0
  105. package/dist/lib/bean/toolsBin/configUtils.js +56 -0
  106. package/dist/lib/bean/toolsBin/dbReset.d.ts +1 -0
  107. package/dist/lib/bean/toolsBin/dbReset.js +8 -0
  108. package/dist/lib/bean/toolsBin/demo.d.ts +1 -0
  109. package/dist/lib/bean/toolsBin/demo.js +41 -0
  110. package/dist/lib/bean/toolsBin/generateEntryFiles.d.ts +4 -0
  111. package/dist/lib/bean/toolsBin/generateEntryFiles.js +75 -0
  112. package/dist/lib/bean/toolsBin/generateVonaMeta.d.ts +10 -0
  113. package/dist/lib/bean/toolsBin/generateVonaMeta.js +17 -0
  114. package/dist/lib/bean/toolsBin/test.d.ts +1 -0
  115. package/dist/lib/bean/toolsBin/test.js +121 -0
  116. package/dist/lib/bean/toolsBin/types.d.ts +5 -0
  117. package/dist/lib/bean/toolsBin/types.js +1 -0
  118. package/dist/lib/bean/toolsMetadata/generateBeanGenerals.d.ts +2 -0
  119. package/dist/lib/bean/toolsMetadata/generateBeanGenerals.js +33 -0
  120. package/dist/lib/bean/toolsMetadata/generateBeans.d.ts +2 -2
  121. package/dist/lib/bean/toolsMetadata/generateBeans.js +33 -21
  122. package/dist/lib/bean/toolsMetadata/generateConfig.d.ts +3 -4
  123. package/dist/lib/bean/toolsMetadata/generateConfig.js +12 -14
  124. package/dist/lib/bean/toolsMetadata/generateMetadataCustom.d.ts +3 -0
  125. package/dist/lib/bean/toolsMetadata/generateMetadataCustom.js +23 -0
  126. package/dist/lib/bean/toolsMetadata/generateMonkey.d.ts +2 -3
  127. package/dist/lib/bean/toolsMetadata/generateMonkey.js +3 -4
  128. package/dist/lib/bean/toolsMetadata/generateOnions.d.ts +2 -0
  129. package/dist/lib/bean/toolsMetadata/generateOnions.js +90 -0
  130. package/dist/lib/bean/toolsMetadata/generateScope.d.ts +1 -4
  131. package/dist/lib/bean/toolsMetadata/generateScope.js +43 -16
  132. package/dist/lib/bean/toolsMetadata/generateScopeResources.d.ts +2 -0
  133. package/dist/lib/bean/toolsMetadata/generateScopeResources.js +29 -0
  134. package/dist/lib/bean/toolsMetadata/generateScopeResourcesMeta.d.ts +2 -0
  135. package/dist/lib/bean/toolsMetadata/generateScopeResourcesMeta.js +13 -0
  136. package/dist/lib/bean/toolsMetadata/utils.d.ts +9 -0
  137. package/dist/lib/bean/toolsMetadata/utils.js +82 -0
  138. package/dist/lib/beans.d.ts +36 -11
  139. package/dist/lib/beans.js +36 -11
  140. package/dist/lib/command/bin.build.d.ts +19 -0
  141. package/dist/lib/command/bin.build.js +18 -0
  142. package/dist/lib/command/bin.dbReset.d.ts +15 -0
  143. package/dist/lib/command/bin.dbReset.js +14 -0
  144. package/dist/lib/command/bin.demo.d.ts +15 -0
  145. package/dist/lib/command/bin.demo.js +14 -0
  146. package/dist/lib/command/bin.dev.d.ts +19 -0
  147. package/dist/lib/command/bin.dev.js +18 -0
  148. package/dist/lib/command/bin.test.d.ts +19 -0
  149. package/dist/lib/command/bin.test.js +18 -0
  150. package/dist/lib/command/{tools.build.d.ts → bin.tsc.d.ts} +0 -1
  151. package/dist/lib/command/{tools.build.js → bin.tsc.js} +3 -4
  152. package/dist/lib/command/create.bean.d.ts +0 -1
  153. package/dist/lib/command/create.bean.js +0 -1
  154. package/dist/lib/command/create.module.d.ts +0 -1
  155. package/dist/lib/command/create.module.js +0 -1
  156. package/dist/lib/command/create.project.d.ts +45 -0
  157. package/dist/lib/command/create.project.js +43 -0
  158. package/dist/lib/command/create.suite.d.ts +0 -1
  159. package/dist/lib/command/create.suite.js +0 -1
  160. package/dist/lib/command/create.test.d.ts +34 -0
  161. package/dist/lib/command/create.test.js +33 -0
  162. package/dist/lib/command/default.list.d.ts +0 -1
  163. package/dist/lib/command/default.list.js +0 -1
  164. package/dist/lib/command/init.config.d.ts +9 -0
  165. package/dist/lib/command/init.config.js +10 -0
  166. package/dist/lib/command/init.constant.d.ts +9 -0
  167. package/dist/lib/command/init.constant.js +10 -0
  168. package/dist/lib/command/init.error.d.ts +9 -0
  169. package/dist/lib/command/init.error.js +10 -0
  170. package/dist/lib/command/init.locale.d.ts +9 -0
  171. package/dist/lib/command/init.locale.js +10 -0
  172. package/dist/lib/command/init.main.d.ts +0 -1
  173. package/dist/lib/command/init.main.js +0 -1
  174. package/dist/lib/command/init.monkey.d.ts +0 -1
  175. package/dist/lib/command/init.monkey.js +0 -1
  176. package/dist/lib/command/init.static.d.ts +9 -0
  177. package/dist/lib/command/init.static.js +10 -0
  178. package/dist/lib/command/tools.crud.d.ts +34 -0
  179. package/dist/lib/command/tools.crud.js +33 -0
  180. package/dist/lib/command/tools.deps.d.ts +1 -11
  181. package/dist/lib/command/tools.deps.js +2 -12
  182. package/dist/lib/command/tools.metadata.d.ts +0 -1
  183. package/dist/lib/command/tools.metadata.js +0 -1
  184. package/dist/lib/commands.d.ts +237 -13
  185. package/dist/lib/commands.js +38 -11
  186. package/dist/lib/this.d.ts +0 -1
  187. package/dist/lib/this.js +0 -1
  188. package/dist/lib/utils.d.ts +15 -0
  189. package/dist/lib/utils.js +63 -0
  190. package/dist/typings.d.ts +0 -1
  191. package/dist/typings.js +0 -1
  192. package/package.json +50 -26
  193. package/templates/app/app.ejs +15 -0
  194. package/templates/app/bootstrap.ejs +13 -0
  195. package/templates/app/vona-modules-meta.ejs +49 -0
  196. package/templates/config/_tsconfig_project.json +12 -0
  197. package/templates/config/_tsconfig_source.json +40 -0
  198. package/templates/test/done-only.test.ts +3 -0
  199. package/templates/test/done.test.ts +3 -0
  200. package/cli/templates/create/bean/boilerplate/{{sceneName}}.{{beanName}}.ts_ +0 -4
  201. package/cli/templates/create/module/snippets/package.json.cjs +0 -11
  202. package/cli/templates/create/module/snippets/tsconfig.json.cjs +0 -13
  203. package/dist/index.d.ts.map +0 -1
  204. package/dist/index.js.map +0 -1
  205. package/dist/lib/bean/cli.create.bean.d.ts.map +0 -1
  206. package/dist/lib/bean/cli.create.bean.js.map +0 -1
  207. package/dist/lib/bean/cli.create.module.d.ts.map +0 -1
  208. package/dist/lib/bean/cli.create.module.js.map +0 -1
  209. package/dist/lib/bean/cli.create.suite.d.ts.map +0 -1
  210. package/dist/lib/bean/cli.create.suite.js.map +0 -1
  211. package/dist/lib/bean/cli.default.list.d.ts.map +0 -1
  212. package/dist/lib/bean/cli.default.list.js.map +0 -1
  213. package/dist/lib/bean/cli.init.main.d.ts.map +0 -1
  214. package/dist/lib/bean/cli.init.main.js.map +0 -1
  215. package/dist/lib/bean/cli.init.monkey.d.ts.map +0 -1
  216. package/dist/lib/bean/cli.init.monkey.js.map +0 -1
  217. package/dist/lib/bean/cli.tools.build.d.ts.map +0 -1
  218. package/dist/lib/bean/cli.tools.build.js.map +0 -1
  219. package/dist/lib/bean/cli.tools.deps.d.ts.map +0 -1
  220. package/dist/lib/bean/cli.tools.deps.js.map +0 -1
  221. package/dist/lib/bean/cli.tools.metadata.d.ts.map +0 -1
  222. package/dist/lib/bean/cli.tools.metadata.js.map +0 -1
  223. package/dist/lib/bean/toolsMetadata/generateAtoms.d.ts +0 -2
  224. package/dist/lib/bean/toolsMetadata/generateAtoms.d.ts.map +0 -1
  225. package/dist/lib/bean/toolsMetadata/generateAtoms.js +0 -24
  226. package/dist/lib/bean/toolsMetadata/generateAtoms.js.map +0 -1
  227. package/dist/lib/bean/toolsMetadata/generateBeans.d.ts.map +0 -1
  228. package/dist/lib/bean/toolsMetadata/generateBeans.js.map +0 -1
  229. package/dist/lib/bean/toolsMetadata/generateConfig.d.ts.map +0 -1
  230. package/dist/lib/bean/toolsMetadata/generateConfig.js.map +0 -1
  231. package/dist/lib/bean/toolsMetadata/generateControllers.d.ts +0 -2
  232. package/dist/lib/bean/toolsMetadata/generateControllers.d.ts.map +0 -1
  233. package/dist/lib/bean/toolsMetadata/generateControllers.js +0 -24
  234. package/dist/lib/bean/toolsMetadata/generateControllers.js.map +0 -1
  235. package/dist/lib/bean/toolsMetadata/generateEntities.d.ts +0 -2
  236. package/dist/lib/bean/toolsMetadata/generateEntities.d.ts.map +0 -1
  237. package/dist/lib/bean/toolsMetadata/generateEntities.js +0 -24
  238. package/dist/lib/bean/toolsMetadata/generateEntities.js.map +0 -1
  239. package/dist/lib/bean/toolsMetadata/generateModels.d.ts +0 -2
  240. package/dist/lib/bean/toolsMetadata/generateModels.d.ts.map +0 -1
  241. package/dist/lib/bean/toolsMetadata/generateModels.js +0 -34
  242. package/dist/lib/bean/toolsMetadata/generateModels.js.map +0 -1
  243. package/dist/lib/bean/toolsMetadata/generateMonkey.d.ts.map +0 -1
  244. package/dist/lib/bean/toolsMetadata/generateMonkey.js.map +0 -1
  245. package/dist/lib/bean/toolsMetadata/generateScope.d.ts.map +0 -1
  246. package/dist/lib/bean/toolsMetadata/generateScope.js.map +0 -1
  247. package/dist/lib/bean/toolsMetadata/generateServices.d.ts +0 -2
  248. package/dist/lib/bean/toolsMetadata/generateServices.d.ts.map +0 -1
  249. package/dist/lib/bean/toolsMetadata/generateServices.js +0 -54
  250. package/dist/lib/bean/toolsMetadata/generateServices.js.map +0 -1
  251. package/dist/lib/beans.d.ts.map +0 -1
  252. package/dist/lib/beans.js.map +0 -1
  253. package/dist/lib/command/create.bean.d.ts.map +0 -1
  254. package/dist/lib/command/create.bean.js.map +0 -1
  255. package/dist/lib/command/create.module.d.ts.map +0 -1
  256. package/dist/lib/command/create.module.js.map +0 -1
  257. package/dist/lib/command/create.suite.d.ts.map +0 -1
  258. package/dist/lib/command/create.suite.js.map +0 -1
  259. package/dist/lib/command/default.list.d.ts.map +0 -1
  260. package/dist/lib/command/default.list.js.map +0 -1
  261. package/dist/lib/command/init.main.d.ts.map +0 -1
  262. package/dist/lib/command/init.main.js.map +0 -1
  263. package/dist/lib/command/init.monkey.d.ts.map +0 -1
  264. package/dist/lib/command/init.monkey.js.map +0 -1
  265. package/dist/lib/command/tools.build.d.ts.map +0 -1
  266. package/dist/lib/command/tools.build.js.map +0 -1
  267. package/dist/lib/command/tools.deps.d.ts.map +0 -1
  268. package/dist/lib/command/tools.deps.js.map +0 -1
  269. package/dist/lib/command/tools.metadata.d.ts.map +0 -1
  270. package/dist/lib/command/tools.metadata.js.map +0 -1
  271. package/dist/lib/commands.d.ts.map +0 -1
  272. package/dist/lib/commands.js.map +0 -1
  273. package/dist/lib/this.d.ts.map +0 -1
  274. package/dist/lib/this.js.map +0 -1
  275. package/dist/typings.d.ts.map +0 -1
  276. package/dist/typings.js.map +0 -1
@@ -1,15 +1,17 @@
1
+ import path from 'node:path';
1
2
  import { BeanCliBase } from '@cabloy/cli';
3
+ import { getOnionMetasMeta, getOnionScenesMeta } from '@cabloy/module-info';
4
+ import { toUpperCaseFirstChar } from '@cabloy/word-utils';
2
5
  import fse from 'fs-extra';
3
- import path from 'path';
4
- import { generateBeans } from './toolsMetadata/generateBeans.js';
5
- import { generateAtoms } from './toolsMetadata/generateAtoms.js';
6
- import { generateControllers } from './toolsMetadata/generateControllers.js';
7
- import { generateEntities } from './toolsMetadata/generateEntities.js';
8
- import { generateModels } from './toolsMetadata/generateModels.js';
9
- import { generateServices } from './toolsMetadata/generateServices.js';
10
- import { generateConfig, generateConstant, generateError, generateLocale } from './toolsMetadata/generateConfig.js';
11
- import { generateScope } from './toolsMetadata/generateScope.js';
12
- import { generateMonkey, generateMain } from './toolsMetadata/generateMonkey.js';
6
+ import { generateBeanGenerals } from "./toolsMetadata/generateBeanGenerals.js";
7
+ import { generateBeans } from "./toolsMetadata/generateBeans.js";
8
+ import { generateConfig, generateConstant, generateError, generateLocale } from "./toolsMetadata/generateConfig.js";
9
+ import { generateMetadataCustom } from "./toolsMetadata/generateMetadataCustom.js";
10
+ import { generateMain, generateMonkey } from "./toolsMetadata/generateMonkey.js";
11
+ import { generateOnions } from "./toolsMetadata/generateOnions.js";
12
+ import { generateScope } from "./toolsMetadata/generateScope.js";
13
+ import { generateScopeResources } from "./toolsMetadata/generateScopeResources.js";
14
+ import { generateScopeResourcesMeta } from "./toolsMetadata/generateScopeResourcesMeta.js";
13
15
  export class CliToolsMetadata extends BeanCliBase {
14
16
  async execute() {
15
17
  const { argv } = this.context;
@@ -49,22 +51,49 @@ export class CliToolsMetadata extends BeanCliBase {
49
51
  await this.helper.ensureDir(metaDir);
50
52
  // relativeNameCapitalize
51
53
  const relativeNameCapitalize = this.helper.stringToCapitalize(moduleName, '-');
54
+ // onionScenesMeta
55
+ const onionScenesMeta = getOnionScenesMeta(this.modulesMeta.modules);
52
56
  // content
53
57
  let content = '';
54
58
  // beans
55
- content += await generateBeans(moduleName, modulePath);
56
- // atoms
57
- content += await generateAtoms(moduleName, modulePath);
58
- // controllers
59
- content += await generateControllers(moduleName, modulePath);
60
- // entities
61
- content += await generateEntities(moduleName, modulePath);
62
- // models
63
- const contentModels = await generateModels(moduleName, modulePath);
64
- content += contentModels;
65
- // services
66
- const contentServices = await generateServices(moduleName, modulePath);
67
- content += contentServices;
59
+ content += await generateBeans(onionScenesMeta, moduleName, modulePath);
60
+ // onions
61
+ const scopeResources = {};
62
+ for (const sceneName in onionScenesMeta) {
63
+ const sceneMeta = onionScenesMeta[sceneName];
64
+ // general
65
+ content += await generateOnions(sceneName, sceneMeta, moduleName, modulePath);
66
+ // scope resources
67
+ if (sceneMeta.scopeResource) {
68
+ const contentScopeResource = await generateScopeResources(sceneName, sceneMeta, moduleName, modulePath);
69
+ if (contentScopeResource) {
70
+ content += contentScopeResource;
71
+ scopeResources[sceneName] = `IModule${toUpperCaseFirstChar(sceneName)}`;
72
+ }
73
+ }
74
+ // bean generals
75
+ if (sceneMeta.beanGeneral) {
76
+ content += await generateBeanGenerals(sceneName, sceneMeta, moduleName, modulePath);
77
+ }
78
+ // metas
79
+ if (sceneName === 'meta') {
80
+ const onionMetasMeta = getOnionMetasMeta(this.modulesMeta.modules);
81
+ for (const metaName in onionMetasMeta) {
82
+ const metaMeta = onionMetasMeta[metaName];
83
+ if (metaMeta.scopeResource) {
84
+ const contentScopeResourceMeta = await generateScopeResourcesMeta(metaName, metaMeta, sceneName, sceneMeta, moduleName, modulePath);
85
+ if (contentScopeResourceMeta) {
86
+ content += contentScopeResourceMeta;
87
+ scopeResources[metaName] = `Meta${toUpperCaseFirstChar(metaName)}`;
88
+ }
89
+ }
90
+ }
91
+ }
92
+ // metadata custom
93
+ if (sceneMeta.metadataCustom) {
94
+ content += await generateMetadataCustom(this, sceneName, sceneMeta, moduleName, modulePath);
95
+ }
96
+ }
68
97
  // config
69
98
  const contentConfig = await generateConfig(modulePath);
70
99
  content += contentConfig;
@@ -82,14 +111,14 @@ export class CliToolsMetadata extends BeanCliBase {
82
111
  // main
83
112
  content += await generateMain(modulePath);
84
113
  // scope
85
- content += await generateScope(moduleName, relativeNameCapitalize, {
114
+ content += await generateScope(moduleName, relativeNameCapitalize, scopeResources, {
86
115
  config: contentConfig,
87
116
  errors: contentErrors,
88
117
  locales: contentLocales,
89
118
  constants: contentConstants,
90
- services: contentServices,
91
- models: contentModels,
92
119
  });
120
+ // patch
121
+ content = this._generatePatch(content);
93
122
  // empty
94
123
  if (!content.trim()) {
95
124
  content = 'export {};';
@@ -102,31 +131,41 @@ export class CliToolsMetadata extends BeanCliBase {
102
131
  // index
103
132
  await this._generateIndex(modulePath);
104
133
  }
134
+ _generatePatch(content) {
135
+ if (!content)
136
+ return content;
137
+ if (content.includes('TypeEntityOptionsFields')) {
138
+ content = `import type { TypeEntityOptionsFields } from 'vona-module-a-openapi';\n${content}`;
139
+ }
140
+ if (content.includes('TypeControllerOptionsActions')) {
141
+ content = `import type { TypeControllerOptionsActions } from 'vona-module-a-openapi';\n${content}`;
142
+ }
143
+ return content;
144
+ }
105
145
  async _generateThis(moduleName, relativeNameCapitalize, modulePath) {
106
146
  const thisDest = path.join(modulePath, 'src/.metadata/this.ts');
107
147
  if (fse.existsSync(thisDest))
108
148
  return;
109
149
  const content = `export const __ThisModule__ = '${moduleName}';
110
- export { ScopeModule${relativeNameCapitalize} as ScopeModule } from './index.js';
150
+ export { ScopeModule${relativeNameCapitalize} as ScopeModule } from './index.ts';
111
151
  `;
112
152
  // save
113
153
  await fse.writeFile(thisDest, content);
114
154
  }
115
155
  async _generateIndex(modulePath) {
116
- const jsExport = "export * from './.metadata/index.js';";
156
+ const jsExport = "export * from './.metadata/index.ts';";
117
157
  const jsFile = path.join(modulePath, 'src/index.ts');
118
158
  let jsContent;
119
159
  if (fse.existsSync(jsFile)) {
120
160
  jsContent = (await fse.readFile(jsFile)).toString();
121
- if (jsContent.indexOf(jsExport) > -1)
161
+ if (jsContent.includes(jsExport))
122
162
  return;
123
- jsContent = jsExport + '\n' + jsContent;
163
+ jsContent = `${jsExport}\n${jsContent}`;
124
164
  jsContent = jsContent.replace('export {};\n', '');
125
165
  }
126
166
  else {
127
- jsContent = jsExport + '\n';
167
+ jsContent = `${jsExport}\n`;
128
168
  }
129
169
  await fse.writeFile(jsFile, jsContent);
130
170
  }
131
171
  }
132
- //# sourceMappingURL=cli.tools.metadata.js.map
@@ -0,0 +1,7 @@
1
+ import type { VonaConfigMeta } from '@cabloy/module-info';
2
+ import type { VonaBinConfigOptions } from './types.ts';
3
+ import { glob } from '@cabloy/module-glob';
4
+ export declare function createConfigUtils(configMeta: VonaConfigMeta, configOptions: VonaBinConfigOptions): {
5
+ loadEnvs: () => NodeJS.ProcessEnv;
6
+ loadModulesMeta: () => ReturnType<typeof glob>;
7
+ };
@@ -0,0 +1,56 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ import * as dotenv from '@cabloy/dotenv';
4
+ import { glob } from '@cabloy/module-glob';
5
+ import { getEnvMeta, getNodeEnv } from "../../utils.js";
6
+ export function createConfigUtils(configMeta, configOptions) {
7
+ let __modulesMeta;
8
+ return {
9
+ loadEnvs: __loadEnvs,
10
+ loadModulesMeta: __loadModulesMeta,
11
+ };
12
+ //////////////////////////////
13
+ function __loadEnvs() {
14
+ const meta = getEnvMeta(configMeta);
15
+ const envDir = path.join(configOptions.appDir, 'env');
16
+ const envs = dotenv.loadEnvs(meta, envDir, '.env');
17
+ const res = Object.assign({
18
+ NODE_ENV: getNodeEnv(meta.mode),
19
+ }, envs, {
20
+ META_FLAVOR: meta.flavor,
21
+ META_MODE: meta.mode,
22
+ });
23
+ if (configOptions.workers !== undefined) {
24
+ res.SERVER_WORKERS = configOptions.workers.toString();
25
+ }
26
+ // maybe empty string
27
+ if (!res.SERVER_WORKERS) {
28
+ if (meta.mode === 'prod') {
29
+ res.SERVER_WORKERS = os.cpus().length.toString();
30
+ }
31
+ else {
32
+ res.SERVER_WORKERS = '1';
33
+ }
34
+ }
35
+ for (const key of ['NODE_ENV', 'SERVER_WORKERS', 'META_FLAVOR', 'META_MODE']) {
36
+ if (res[key] !== false) {
37
+ process.env[key] = res[key];
38
+ }
39
+ }
40
+ // ok
41
+ return res;
42
+ }
43
+ async function __loadModulesMeta() {
44
+ const meta = getEnvMeta(configMeta);
45
+ // modules
46
+ __modulesMeta = await glob({
47
+ projectMode: 'vona',
48
+ projectPath: configOptions.appDir,
49
+ disabledModules: process.env.PROJECT_DISABLED_MODULES,
50
+ disabledSuites: process.env.PROJECT_DISABLED_SUITES,
51
+ log: false,
52
+ meta,
53
+ });
54
+ return __modulesMeta;
55
+ }
56
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { closeApp, createGeneralApp } from 'vona-core';
2
+ const argv = process.argv.slice(2);
3
+ const projectPath = argv[0];
4
+ await dbResetRun(projectPath);
5
+ async function dbResetRun(projectPath) {
6
+ await createGeneralApp(projectPath);
7
+ await closeApp();
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import path from 'node:path';
10
+ import fse from 'fs-extra';
11
+ import { closeApp, createGeneralApp, pathToHref } from 'vona-core';
12
+ import parser from 'yargs-parser';
13
+ const __template = `import type { IArgv, VonaApplication } from 'vona';
14
+
15
+ export async function main(app: VonaApplication, _argv: IArgv) {}
16
+ `;
17
+ const projectPath = process.argv[2];
18
+ const argv = parser(process.argv.slice(3));
19
+ let mainFile;
20
+ if (argv._[0]?.endsWith('.ts')) {
21
+ mainFile = argv._[0];
22
+ argv._ = argv._.slice(1);
23
+ }
24
+ else {
25
+ mainFile = 'index.ts';
26
+ }
27
+ await demoRun(projectPath);
28
+ async function demoRun(projectPath) {
29
+ // create
30
+ const app = await createGeneralApp(projectPath, { SERVER_LISTEN_DISABLE: 'true' });
31
+ // demo
32
+ const demoFile = path.join(projectPath, `src/backend/demo/${mainFile}`);
33
+ if (!fse.existsSync(demoFile)) {
34
+ await fse.outputFile(demoFile, __template);
35
+ }
36
+ // run
37
+ const demoInstance = await import(__rewriteRelativeImportExtension(pathToHref(demoFile)));
38
+ await demoInstance.main(app, argv);
39
+ // close
40
+ await closeApp();
41
+ }
@@ -0,0 +1,4 @@
1
+ import type { glob } from '@cabloy/module-glob';
2
+ import type { VonaConfigMeta } from '@cabloy/module-info';
3
+ import type { VonaBinConfigOptions } from './types.ts';
4
+ export declare function generateEntryFiles(configMeta: VonaConfigMeta, configOptions: VonaBinConfigOptions, modulesMeta: Awaited<ReturnType<typeof glob>>, env: NodeJS.ProcessEnv): Promise<void>;
@@ -0,0 +1,75 @@
1
+ import path from 'node:path';
2
+ import { getEnvFiles } from '@cabloy/dotenv';
3
+ import chalk from 'chalk';
4
+ import fse from 'fs-extra';
5
+ import { copyTemplateFile, getEnvMeta, resolveTemplatePath } from "../../utils.js";
6
+ export async function generateEntryFiles(configMeta, configOptions, modulesMeta, env) {
7
+ // config
8
+ await __generateConfig();
9
+ // modules meta
10
+ await __generateModulesMeta();
11
+ // env
12
+ await __generateEnvJson();
13
+ // app
14
+ await __generateApp();
15
+ //////////////////////////////
16
+ async function __generateConfig() {
17
+ // check config
18
+ let configDir = path.join(configOptions.appDir, 'src/backend/config');
19
+ if (!fse.existsSync(configDir)) {
20
+ // eslint-disable-next-line
21
+ console.log(chalk.red('path not found: src/backend/config\n'));
22
+ process.exit(0);
23
+ }
24
+ // meta
25
+ const meta = getEnvMeta(configMeta);
26
+ configDir = path.join(configOptions.appDir, 'src/backend/config/config');
27
+ const files = getEnvFiles(meta, configDir, 'config', '.ts');
28
+ const filenames = files.map(item => path.basename(item));
29
+ const imports = [];
30
+ const constNames = [];
31
+ for (const filename of filenames) {
32
+ const parts = filename.split('.');
33
+ let constName = parts[0];
34
+ for (let index = 1; index < parts.length - 1; index++) {
35
+ constName += parts[index].charAt(0).toUpperCase() + parts[index].substring(1);
36
+ }
37
+ imports.push(`import ${constName} from '../src/backend/config/config/${filename}';`);
38
+ constNames.push(constName);
39
+ }
40
+ const contentDest = `${imports.join('\n')}\nexport default [${constNames.join(', ')}];`;
41
+ // output
42
+ const fileDest = path.join(configOptions.appDir, configOptions.runtimeDir, 'config.ts');
43
+ fse.ensureFileSync(fileDest);
44
+ fse.writeFileSync(fileDest, contentDest, 'utf-8');
45
+ }
46
+ async function __generateApp() {
47
+ const templates = [['app/bootstrap.ejs', 'bootstrap.ts'], ['app/app.ejs', 'app.ts']];
48
+ for (const [templateSrc, templateDest] of templates) {
49
+ const fileSrc = resolveTemplatePath(templateSrc);
50
+ const fileDest = path.join(configOptions.appDir, configOptions.runtimeDir, templateDest);
51
+ await fse.ensureDir(path.join(configOptions.appDir, configOptions.runtimeDir));
52
+ const vars = {
53
+ appMonkey: fse.existsSync(path.join(configOptions.appDir, 'src/backend/config/monkey.ts')),
54
+ };
55
+ await copyTemplateFile(fileSrc, fileDest, vars);
56
+ }
57
+ }
58
+ async function __generateModulesMeta() {
59
+ // modules
60
+ const { modules, modulesArray } = modulesMeta;
61
+ const moduleNames = modulesArray.map(item => item.info.relativeName);
62
+ // src
63
+ const fileSrc = resolveTemplatePath('app/vona-modules-meta.ejs');
64
+ const fileDest = path.join(configOptions.appDir, configOptions.runtimeDir, 'modules-meta.ts');
65
+ await fse.ensureDir(path.join(configOptions.appDir, configOptions.runtimeDir));
66
+ await copyTemplateFile(fileSrc, fileDest, { modules, moduleNames });
67
+ }
68
+ async function __generateEnvJson() {
69
+ const contentDest = `export default ${JSON.stringify(env, null, 2)} as unknown as NodeJS.ProcessEnv;\n`;
70
+ // output
71
+ const fileDest = path.join(configOptions.appDir, configOptions.runtimeDir, 'env.ts');
72
+ fse.ensureFileSync(fileDest);
73
+ fse.writeFileSync(fileDest, contentDest, 'utf-8');
74
+ }
75
+ }
@@ -0,0 +1,10 @@
1
+ import type { VonaConfigMeta } from '@cabloy/module-info';
2
+ import type { VonaBinConfigOptions } from './types.ts';
3
+ export declare function generateVonaMeta(configMeta: VonaConfigMeta, configOptions: VonaBinConfigOptions): Promise<{
4
+ env: NodeJS.ProcessEnv;
5
+ modulesMeta: {
6
+ suites: Record<string, import("@cabloy/module-info").ISuite>;
7
+ modules: Record<string, import("@cabloy/module-info").IModule>;
8
+ modulesArray: import("@cabloy/module-info").IModule[];
9
+ };
10
+ }>;
@@ -0,0 +1,17 @@
1
+ import { createConfigUtils } from "./configUtils.js";
2
+ import { generateEntryFiles } from "./generateEntryFiles.js";
3
+ export async function generateVonaMeta(configMeta, configOptions) {
4
+ // config utils
5
+ const configUtils = createConfigUtils(configMeta, configOptions);
6
+ // env
7
+ const env = configUtils.loadEnvs();
8
+ // modulesMeta
9
+ const modulesMeta = await configUtils.loadModulesMeta();
10
+ // generateEntryFiles
11
+ await generateEntryFiles(configMeta, configOptions, modulesMeta, env);
12
+ // ok
13
+ return {
14
+ env,
15
+ modulesMeta,
16
+ };
17
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
1
+ import { createWriteStream } from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { run } from 'node:test';
5
+ import { sleep } from '@cabloy/utils';
6
+ import TableClass from 'cli-table3';
7
+ import fse from 'fs-extra';
8
+ import { globby } from 'globby';
9
+ import { lcov, tap } from 'node:test/reporters';
10
+ import { closeApp, createGeneralApp } from 'vona-core';
11
+ import whyIsNodeRunning from 'why-is-node-running';
12
+ import { resolveTemplatePath } from "../../utils.js";
13
+ const argv = process.argv.slice(2);
14
+ const projectPath = argv[0];
15
+ const coverage = argv[1] === 'true';
16
+ const patterns = (argv[2] || '').split(',');
17
+ await testRun(projectPath, coverage, patterns);
18
+ async function testRun(projectPath, coverage, patterns) {
19
+ // patterns ignore
20
+ const patternsIgnore = (!coverage && process.env.TEST_PATTERNS_IGNORE) ? process.env.TEST_PATTERNS_IGNORE.split(',') : undefined;
21
+ // files
22
+ const files = await globby(patterns, {
23
+ cwd: projectPath,
24
+ ignore: patternsIgnore,
25
+ });
26
+ if (process.env.TEST_ONLY === 'true') {
27
+ files.push(resolveTemplatePath('test/done-only.test.ts'));
28
+ }
29
+ else {
30
+ files.push(resolveTemplatePath('test/done.test.ts'));
31
+ }
32
+ // concurrency
33
+ let concurrency = 1;
34
+ if (process.env.TEST_CONCURRENCY === 'true') {
35
+ concurrency = os.cpus().length;
36
+ }
37
+ else if (process.env.TEST_CONCURRENCY === 'false') {
38
+ concurrency = 1;
39
+ }
40
+ else {
41
+ concurrency = Number.parseInt(process.env.TEST_CONCURRENCY);
42
+ }
43
+ // coverage
44
+ let coverageIncludeGlobs = [];
45
+ if (coverage) {
46
+ if (fse.existsSync(path.join(projectPath, 'packages-vona/vona-core'))) {
47
+ coverageIncludeGlobs = coverageIncludeGlobs.concat(['packages-vona/vona-core/**/*.ts', 'src/module-vendor/**/*.ts', 'src/suite-vendor/**/*.ts']);
48
+ }
49
+ else {
50
+ coverageIncludeGlobs = coverageIncludeGlobs.concat(['src/module/**/*.ts', 'src/suite/**/*.ts']);
51
+ }
52
+ }
53
+ const coverageExcludeGlobs = [
54
+ 'src/module/*/cli/**/*.ts',
55
+ 'src/module/*/templates/**/*.ts',
56
+ 'src/suite/*/modules/*/cli/**/*.ts',
57
+ 'src/suite/*/modules/*/templates/**/*.ts',
58
+ 'src/module-vendor/*/cli/**/*.ts',
59
+ 'src/module-vendor/*/templates/**/*.ts',
60
+ 'src/suite-vendor/*/modules/*/cli/**/*.ts',
61
+ 'src/suite-vendor/*/modules/*/templates/**/*.ts',
62
+ ];
63
+ return new Promise(resolve => {
64
+ const testStream = run({
65
+ isolation: 'none',
66
+ concurrency,
67
+ only: process.env.TEST_ONLY === 'true',
68
+ coverage,
69
+ coverageIncludeGlobs,
70
+ coverageExcludeGlobs,
71
+ cwd: projectPath,
72
+ files,
73
+ setup: async () => {
74
+ await createGeneralApp(projectPath);
75
+ },
76
+ })
77
+ .on('test:coverage', data => {
78
+ outputCoverageReport(data.summary.totals);
79
+ })
80
+ .on('test:summary', async () => {
81
+ resolve(undefined);
82
+ })
83
+ .on('test:pass', async (t) => {
84
+ if (t.name === '---done---') {
85
+ await closeApp();
86
+ // handles
87
+ if (process.env.TEST_WHYISNODERUNNING === 'true') {
88
+ await sleep(2000);
89
+ const handles = process._getActiveHandles();
90
+ if (handles.length > 3) {
91
+ whyIsNodeRunning();
92
+ }
93
+ }
94
+ }
95
+ });
96
+ if (coverage) {
97
+ const reporterDir = path.join(projectPath, 'coverage');
98
+ fse.ensureDirSync(reporterDir);
99
+ const reporter = createWriteStream(path.join(reporterDir, 'lcov.info'));
100
+ testStream.compose(lcov)
101
+ .pipe(reporter);
102
+ }
103
+ else {
104
+ testStream.compose(tap)
105
+ .pipe(process.stdout);
106
+ }
107
+ });
108
+ }
109
+ function outputCoverageReport(totals) {
110
+ // table
111
+ const table = new TableClass({
112
+ head: ['', 'Total', 'Covered', 'Percent'],
113
+ colWidths: [15, 15, 15, 25],
114
+ });
115
+ table.push(['Lines', totals.totalLineCount, totals.coveredLineCount, totals.coveredLinePercent]);
116
+ table.push(['Branches', totals.totalBranchCount, totals.coveredBranchCount, totals.coveredBranchPercent]);
117
+ table.push(['Functions', totals.totalFunctionCount, totals.coveredFunctionCount, totals.coveredFunctionPercent]);
118
+ // eslint-disable-next-line
119
+ console.log(table.toString());
120
+ }
121
+ ;
@@ -0,0 +1,5 @@
1
+ export interface VonaBinConfigOptions {
2
+ appDir: string;
3
+ runtimeDir: string;
4
+ workers?: number;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { OnionSceneMeta } from '@cabloy/module-info';
2
+ export declare function generateBeanGenerals(sceneName: string, sceneMeta: OnionSceneMeta, moduleName: string, modulePath: string): Promise<string>;
@@ -0,0 +1,33 @@
1
+ import { globBeanFiles } from "./utils.js";
2
+ export async function generateBeanGenerals(sceneName, sceneMeta, moduleName, modulePath) {
3
+ const globFiles = await globBeanFiles(sceneName, sceneMeta, moduleName, modulePath);
4
+ if (globFiles.length === 0)
5
+ return '';
6
+ //
7
+ const contentImports = [];
8
+ const contentRecords = [];
9
+ for (const globFile of globFiles) {
10
+ const { fileNameJSRelative, className, beanName, isIgnore } = globFile;
11
+ const beanFullName = `${moduleName}.${sceneName}.${beanName}`;
12
+ if (isIgnore)
13
+ continue;
14
+ if (!sceneMeta.scopeResource) {
15
+ contentImports.push(`import type { ${className} } from '${fileNameJSRelative}';`);
16
+ }
17
+ contentRecords.push(`'${beanFullName}': ${className};`);
18
+ }
19
+ if (contentRecords.length === 0)
20
+ return '';
21
+ // combine
22
+ const content = `/** ${sceneName}: begin */
23
+ ${contentImports.join('\n')}
24
+ import 'vona';
25
+ declare module 'vona' {
26
+ export interface IBeanRecordGeneral {
27
+ ${contentRecords.join('\n')}
28
+ }
29
+ }
30
+ /** ${sceneName}: end */
31
+ `;
32
+ return content;
33
+ }
@@ -1,2 +1,2 @@
1
- export declare function generateBeans(moduleName: string, modulePath: string): Promise<string>;
2
- //# sourceMappingURL=generateBeans.d.ts.map
1
+ import type { OnionScenesMeta } from '@cabloy/module-info';
2
+ export declare function generateBeans(onionScenesMeta: OnionScenesMeta, moduleName: string, modulePath: string): Promise<string>;
@@ -1,33 +1,51 @@
1
- import path from 'path';
2
- import eggBornUtils from 'egg-born-utils';
3
- export async function generateBeans(moduleName, modulePath) {
4
- const pattern = `${modulePath}/src/bean/*.ts`;
5
- const files = await eggBornUtils.tools.globbyAsync(pattern);
1
+ import path from 'node:path';
2
+ import { toUpperCaseFirstChar } from '@cabloy/word-utils';
3
+ import { globby } from 'globby';
4
+ import { checkIgnoreOfParts, getScopeModuleName } from "./utils.js";
5
+ // todo: remove
6
+ export async function generateBeans(onionScenesMeta, moduleName, modulePath) {
7
+ const scopeModuleName = getScopeModuleName(moduleName);
8
+ // ignore
9
+ const ignore = Object.keys(onionScenesMeta).map(item => `**/${item}.*.ts`);
10
+ // files
11
+ const files = await globby('src/bean/*.ts', { ignore, cwd: modulePath });
6
12
  if (files.length === 0)
7
13
  return '';
8
14
  files.sort();
9
15
  const contentExports = [];
16
+ const contentScopes = [];
10
17
  const contentImports = [];
11
18
  const contentRecordsGlobal = [];
12
19
  const contentRecordsGeneral = [];
13
20
  for (const file of files) {
14
21
  const fileName = path.basename(file);
22
+ if (fileName.startsWith('_'))
23
+ continue;
15
24
  const parts = fileName.split('.').slice(0, -1);
16
25
  if (parts.length < 2)
17
26
  continue;
18
27
  const isIgnore = checkIgnoreOfParts(parts);
19
28
  const isBeanGlobal = parts[0] === 'bean';
20
- const fileNameJS = fileName.replace('.ts', '.js');
21
- let className = parts.map(item => item.charAt(0).toUpperCase() + item.substring(1)).join('');
29
+ // const sceneName = parts.slice(0, -1).join('.');
30
+ // const beanName = parts[parts.length - 1];
31
+ // const beanNameCapitalize = toUpperCaseFirstChar(beanName);
32
+ const fileNameJS = fileName; // fileName.replace('.ts', '.js');
33
+ const className = parts.map(item => toUpperCaseFirstChar(item)).join('');
22
34
  const beanFullName = isBeanGlobal ? parts[1] : `${moduleName}.${parts.join('.')}`;
23
- if (className === 'BeanBase')
24
- className = 'BeanBase2';
25
35
  contentExports.push(`export * from '../bean/${fileNameJS}';`);
26
- contentImports.push(`import { ${className} } from '../bean/${fileNameJS}';`);
36
+ // ignore virtual
37
+ contentScopes.push(`
38
+ export interface ${className} {
39
+ /** @internal */
40
+ get scope(): ${scopeModuleName};
41
+ }`);
42
+ if (isBeanGlobal || !isIgnore) {
43
+ contentImports.push(`import type { ${className} } from '../bean/${fileNameJS}';`);
44
+ }
27
45
  if (isBeanGlobal && !isIgnore) {
28
46
  contentRecordsGlobal.push(`'${beanFullName}': ${className};`);
29
47
  }
30
- else {
48
+ if ((isBeanGlobal && isIgnore) || (!isBeanGlobal && !isIgnore)) {
31
49
  contentRecordsGeneral.push(`'${beanFullName}': ${className};`);
32
50
  }
33
51
  }
@@ -43,18 +61,12 @@ declare module 'vona' {
43
61
 
44
62
  export interface IBeanRecordGeneral {
45
63
  ${contentRecordsGeneral.join('\n')}
46
- }
64
+ }
65
+ }
66
+ declare module 'vona-module-${moduleName}' {
67
+ ${contentScopes.join('\n')}
47
68
  }
48
69
  /** beans: end */
49
70
  `;
50
71
  return content;
51
72
  }
52
- function checkIgnoreOfParts(parts) {
53
- const indexLast = parts.length - 1;
54
- if (parts[indexLast].endsWith('_')) {
55
- parts[indexLast] = parts[indexLast].substring(0, parts[indexLast].length - 1);
56
- return true;
57
- }
58
- return false;
59
- }
60
- //# sourceMappingURL=generateBeans.js.map