@tramvai/cli 2.64.0 → 2.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/README.md +46 -38
  2. package/lib/api/analyze/providers/shared.js +1 -1
  3. package/lib/api/analyze/providers/shared.js.map +1 -1
  4. package/lib/api/benchmark/index.d.ts +1 -1
  5. package/lib/api/build/child-app.js +3 -2
  6. package/lib/api/build/child-app.js.map +1 -1
  7. package/lib/api/build/module.js +1 -2
  8. package/lib/api/build/module.js.map +1 -1
  9. package/lib/api/build/providers/shared.js +1 -1
  10. package/lib/api/build/providers/shared.js.map +1 -1
  11. package/lib/api/index.d.ts +6 -2
  12. package/lib/api/index.js +3 -3
  13. package/lib/api/index.js.map +1 -1
  14. package/lib/api/shared/types/withConfig.d.ts +3 -2
  15. package/lib/api/start/providers/application/server.js +11 -18
  16. package/lib/api/start/providers/application/server.js.map +1 -1
  17. package/lib/api/start/providers/application/shared.js +17 -25
  18. package/lib/api/start/providers/application/shared.js.map +1 -1
  19. package/lib/api/start/providers/child-app/shared.js +19 -25
  20. package/lib/api/start/providers/child-app/shared.js.map +1 -1
  21. package/lib/api/start/providers/module/shared.js +18 -24
  22. package/lib/api/start/providers/module/shared.js.map +1 -1
  23. package/lib/api/start/utils/banner.js +3 -2
  24. package/lib/api/start/utils/banner.js.map +1 -1
  25. package/lib/api/start/utils/listenServer.js +3 -2
  26. package/lib/api/start/utils/listenServer.js.map +1 -1
  27. package/lib/api/start/utils/tips/tips.js +10 -8
  28. package/lib/api/start/utils/tips/tips.js.map +1 -1
  29. package/lib/api/start-prod/providers/application.js +6 -5
  30. package/lib/api/start-prod/providers/application.js.map +1 -1
  31. package/lib/api/start-prod/providers/child-app.js +3 -2
  32. package/lib/api/start-prod/providers/child-app.js.map +1 -1
  33. package/lib/api/start-prod/providers/shared.js +5 -13
  34. package/lib/api/start-prod/providers/shared.js.map +1 -1
  35. package/lib/builder/webpack/devServer/client.js +18 -15
  36. package/lib/builder/webpack/devServer/client.js.map +1 -1
  37. package/lib/builder/webpack/devServer/notifier.d.ts +2 -2
  38. package/lib/builder/webpack/devServer/notifier.js +3 -3
  39. package/lib/builder/webpack/devServer/notifier.js.map +1 -1
  40. package/lib/builder/webpack/devServer/pool/process/pool.js +3 -2
  41. package/lib/builder/webpack/devServer/pool/process/pool.js.map +1 -1
  42. package/lib/builder/webpack/devServer/pool/thread/pool.js +7 -0
  43. package/lib/builder/webpack/devServer/pool/thread/pool.js.map +1 -1
  44. package/lib/builder/webpack/devServer/server.js +7 -2
  45. package/lib/builder/webpack/devServer/server.js.map +1 -1
  46. package/lib/builder/webpack/providers/analyze/shared.js +3 -3
  47. package/lib/builder/webpack/providers/analyze/shared.js.map +1 -1
  48. package/lib/builder/webpack/providers/build/application/server.js.map +1 -1
  49. package/lib/builder/webpack/providers/build/client.js +3 -3
  50. package/lib/builder/webpack/providers/build/client.js.map +1 -1
  51. package/lib/builder/webpack/providers/build/server.js +1 -1
  52. package/lib/builder/webpack/providers/build/server.js.map +1 -1
  53. package/lib/builder/webpack/tokens.d.ts +313 -3
  54. package/lib/builder/webpack/tokens.js.map +1 -1
  55. package/lib/builder/webpack/utils/copyBuildFile.d.ts +2 -1
  56. package/lib/builder/webpack/utils/copyBuildFile.js +2 -3
  57. package/lib/builder/webpack/utils/copyBuildFile.js.map +1 -1
  58. package/lib/builder/webpack/utils/copyStatsJsonFile.d.ts +2 -1
  59. package/lib/builder/webpack/utils/copyStatsJsonFile.js +1 -1
  60. package/lib/builder/webpack/utils/copyStatsJsonFile.js.map +1 -1
  61. package/lib/cli/CLI.d.ts +2 -2
  62. package/lib/cli/CLI.js +2 -2
  63. package/lib/cli/CLI.js.map +1 -1
  64. package/lib/cli/index.js.map +1 -1
  65. package/lib/commands/analyze/command.d.ts +1 -1
  66. package/lib/commands/analyze/command.js.map +1 -1
  67. package/lib/commands/benchmark/command.d.ts +1 -1
  68. package/lib/commands/benchmark/command.js.map +1 -1
  69. package/lib/commands/build/command.d.ts +1 -1
  70. package/lib/commands/build/command.js.map +1 -1
  71. package/lib/commands/new/new.js +0 -1
  72. package/lib/commands/new/new.js.map +1 -1
  73. package/lib/commands/new/questions/packageManager.d.ts +1 -1
  74. package/lib/commands/new/questions/packageManager.js.map +1 -1
  75. package/lib/commands/new/questions/template.d.ts +1 -1
  76. package/lib/commands/new/questions/template.js.map +1 -1
  77. package/lib/commands/new/questions/testingFramework.d.ts +1 -1
  78. package/lib/commands/new/questions/testingFramework.js.map +1 -1
  79. package/lib/commands/new/questions/type.d.ts +1 -1
  80. package/lib/commands/new/questions/type.js.map +1 -1
  81. package/lib/commands/new/steps/initializationGit.d.ts +1 -1
  82. package/lib/commands/new/steps/initializationGit.js.map +1 -1
  83. package/lib/commands/start/command.d.ts +1 -1
  84. package/lib/commands/start/command.js.map +1 -1
  85. package/lib/commands/start-prod/command.d.ts +1 -1
  86. package/lib/commands/start-prod/command.js.map +1 -1
  87. package/lib/commands/static/application.js +4 -4
  88. package/lib/commands/static/application.js.map +1 -1
  89. package/lib/commands/static/command.d.ts +1 -1
  90. package/lib/commands/static/command.js.map +1 -1
  91. package/lib/commands/static/generate.js +2 -2
  92. package/lib/commands/static/generate.js.map +1 -1
  93. package/lib/commands/static/server.d.ts +2 -1
  94. package/lib/commands/static/server.js +1 -1
  95. package/lib/commands/static/server.js.map +1 -1
  96. package/lib/commands/static/staticServer.d.ts +2 -1
  97. package/lib/commands/static/staticServer.js +1 -1
  98. package/lib/commands/static/staticServer.js.map +1 -1
  99. package/lib/commands/update/updatePackageJson.js +3 -0
  100. package/lib/commands/update/updatePackageJson.js.map +1 -1
  101. package/lib/config/configManager.d.ts +15 -73
  102. package/lib/config/configManager.js +64 -92
  103. package/lib/config/configManager.js.map +1 -1
  104. package/lib/config/showConfig.d.ts +1 -1
  105. package/lib/config/showConfig.js +1 -1
  106. package/lib/config/showConfig.js.map +1 -1
  107. package/lib/config/validate.d.ts +5 -4
  108. package/lib/config/validate.js +2 -9
  109. package/lib/config/validate.js.map +1 -1
  110. package/lib/di/tokens/config.d.ts +106 -1
  111. package/lib/di/tokens/config.js.map +1 -1
  112. package/lib/external/config.d.ts +2 -2
  113. package/lib/library/babel/index.js +1 -0
  114. package/lib/library/babel/index.js.map +1 -1
  115. package/lib/library/swc/index.js +1 -1
  116. package/lib/library/swc/index.js.map +1 -1
  117. package/lib/library/webpack/application/client/common.js +6 -4
  118. package/lib/library/webpack/application/client/common.js.map +1 -1
  119. package/lib/library/webpack/application/client/dev.js +9 -8
  120. package/lib/library/webpack/application/client/dev.js.map +1 -1
  121. package/lib/library/webpack/application/client/prod/optimization/splitChunks.js +40 -39
  122. package/lib/library/webpack/application/client/prod/optimization/splitChunks.js.map +1 -1
  123. package/lib/library/webpack/application/client/prod.js +3 -4
  124. package/lib/library/webpack/application/client/prod.js.map +1 -1
  125. package/lib/library/webpack/application/server/common.js +5 -5
  126. package/lib/library/webpack/application/server/common.js.map +1 -1
  127. package/lib/library/webpack/application/server/dev.js +3 -6
  128. package/lib/library/webpack/application/server/dev.js.map +1 -1
  129. package/lib/library/webpack/application/server/prod.js +3 -4
  130. package/lib/library/webpack/application/server/prod.js.map +1 -1
  131. package/lib/library/webpack/blocks/apiResolve.js +1 -1
  132. package/lib/library/webpack/blocks/apiResolve.js.map +1 -1
  133. package/lib/library/webpack/blocks/configResolve.js +2 -2
  134. package/lib/library/webpack/blocks/configResolve.js.map +1 -1
  135. package/lib/library/webpack/blocks/configToEnv.js +5 -2
  136. package/lib/library/webpack/blocks/configToEnv.js.map +1 -1
  137. package/lib/library/webpack/blocks/css.d.ts +3 -1
  138. package/lib/library/webpack/blocks/css.js +17 -6
  139. package/lib/library/webpack/blocks/css.js.map +1 -1
  140. package/lib/library/webpack/blocks/extractCssPlugin.d.ts +4 -3
  141. package/lib/library/webpack/blocks/extractCssPlugin.js +4 -6
  142. package/lib/library/webpack/blocks/extractCssPlugin.js.map +1 -1
  143. package/lib/library/webpack/blocks/filesClient.d.ts +3 -2
  144. package/lib/library/webpack/blocks/filesClient.js +7 -7
  145. package/lib/library/webpack/blocks/filesClient.js.map +1 -1
  146. package/lib/library/webpack/blocks/filesServer.d.ts +2 -1
  147. package/lib/library/webpack/blocks/filesServer.js +3 -3
  148. package/lib/library/webpack/blocks/filesServer.js.map +1 -1
  149. package/lib/library/webpack/blocks/js.d.ts +2 -1
  150. package/lib/library/webpack/blocks/js.js +1 -1
  151. package/lib/library/webpack/blocks/js.js.map +1 -1
  152. package/lib/library/webpack/blocks/nodeClient.d.ts +2 -1
  153. package/lib/library/webpack/blocks/nodeClient.js +2 -2
  154. package/lib/library/webpack/blocks/nodeClient.js.map +1 -1
  155. package/lib/library/webpack/blocks/optimize.d.ts +2 -1
  156. package/lib/library/webpack/blocks/optimize.js +3 -3
  157. package/lib/library/webpack/blocks/optimize.js.map +1 -1
  158. package/lib/library/webpack/blocks/pagesResolve.js +1 -1
  159. package/lib/library/webpack/blocks/pagesResolve.js.map +1 -1
  160. package/lib/library/webpack/blocks/postcssAssets.d.ts +2 -1
  161. package/lib/library/webpack/blocks/postcssAssets.js +2 -2
  162. package/lib/library/webpack/blocks/postcssAssets.js.map +1 -1
  163. package/lib/library/webpack/blocks/serverInline.d.ts +2 -1
  164. package/lib/library/webpack/blocks/serverInline.js.map +1 -1
  165. package/lib/library/webpack/blocks/ts.d.ts +2 -1
  166. package/lib/library/webpack/blocks/ts.js.map +1 -1
  167. package/lib/library/webpack/child-app/client/common.d.ts +2 -2
  168. package/lib/library/webpack/child-app/client/common.js +1 -1
  169. package/lib/library/webpack/child-app/client/common.js.map +1 -1
  170. package/lib/library/webpack/child-app/client/dev.d.ts +2 -2
  171. package/lib/library/webpack/child-app/client/dev.js +6 -5
  172. package/lib/library/webpack/child-app/client/dev.js.map +1 -1
  173. package/lib/library/webpack/child-app/client/prod.d.ts +2 -2
  174. package/lib/library/webpack/child-app/client/prod.js.map +1 -1
  175. package/lib/library/webpack/child-app/common.d.ts +2 -2
  176. package/lib/library/webpack/child-app/common.js.map +1 -1
  177. package/lib/library/webpack/child-app/server/common.d.ts +2 -2
  178. package/lib/library/webpack/child-app/server/common.js +1 -1
  179. package/lib/library/webpack/child-app/server/common.js.map +1 -1
  180. package/lib/library/webpack/child-app/server/dev.d.ts +2 -2
  181. package/lib/library/webpack/child-app/server/dev.js.map +1 -1
  182. package/lib/library/webpack/child-app/server/prod.d.ts +2 -2
  183. package/lib/library/webpack/child-app/server/prod.js.map +1 -1
  184. package/lib/library/webpack/common/client/prod.d.ts +2 -1
  185. package/lib/library/webpack/common/client/prod.js +4 -5
  186. package/lib/library/webpack/common/client/prod.js.map +1 -1
  187. package/lib/library/webpack/common/main.d.ts +2 -1
  188. package/lib/library/webpack/common/main.js +3 -3
  189. package/lib/library/webpack/common/main.js.map +1 -1
  190. package/lib/library/webpack/common/server/prod.d.ts +2 -1
  191. package/lib/library/webpack/common/server/prod.js +4 -5
  192. package/lib/library/webpack/common/server/prod.js.map +1 -1
  193. package/lib/library/webpack/index.js +1 -2
  194. package/lib/library/webpack/index.js.map +1 -1
  195. package/lib/library/webpack/loaders/image-loader/index.d.ts +2 -1
  196. package/lib/library/webpack/loaders/image-loader/index.js.map +1 -1
  197. package/lib/library/webpack/loaders/pagesResolve.d.ts +10 -1
  198. package/lib/library/webpack/loaders/pagesResolve.js +4 -3
  199. package/lib/library/webpack/loaders/pagesResolve.js.map +1 -1
  200. package/lib/library/webpack/loaders/replaceContent.d.ts +6 -1
  201. package/lib/library/webpack/loaders/replaceContent.js +4 -3
  202. package/lib/library/webpack/loaders/replaceContent.js.map +1 -1
  203. package/lib/library/webpack/module/client/common.js +1 -1
  204. package/lib/library/webpack/module/client/common.js.map +1 -1
  205. package/lib/library/webpack/module/externals.d.ts +1 -1
  206. package/lib/library/webpack/module/externals.js.map +1 -1
  207. package/lib/library/webpack/module/resolveExternal.d.ts +1 -1
  208. package/lib/library/webpack/module/resolveExternal.js.map +1 -1
  209. package/lib/library/webpack/module/server/common.js +1 -1
  210. package/lib/library/webpack/module/server/common.js.map +1 -1
  211. package/lib/library/webpack/plugins/LazyModuleInitialization.d.ts +2 -2
  212. package/lib/library/webpack/plugins/LazyModuleInitialization.js +1 -0
  213. package/lib/library/webpack/plugins/LazyModuleInitialization.js.map +1 -1
  214. package/lib/library/webpack/plugins/WebpackBar/utils/index.d.ts +7 -7
  215. package/lib/library/webpack/plugins/WebpackBar/utils/index.js.map +1 -1
  216. package/lib/library/webpack/plugins/WebpackBar/utils/webpack.d.ts +2 -2
  217. package/lib/library/webpack/plugins/WebpackBar/utils/webpack.js.map +1 -1
  218. package/lib/library/webpack/types/webpack.d.ts +2 -2
  219. package/lib/library/webpack/utils/files.d.ts +4 -3
  220. package/lib/library/webpack/utils/files.js +2 -2
  221. package/lib/library/webpack/utils/files.js.map +1 -1
  222. package/lib/library/webpack/utils/transpiler.d.ts +3 -2
  223. package/lib/library/webpack/utils/transpiler.js +2 -2
  224. package/lib/library/webpack/utils/transpiler.js.map +1 -1
  225. package/lib/library/webpack/utils/workersPool.d.ts +3 -6
  226. package/lib/library/webpack/utils/workersPool.js +1 -1
  227. package/lib/library/webpack/utils/workersPool.js.map +1 -1
  228. package/lib/models/config.d.ts +2 -3
  229. package/lib/models/config.js +32 -3
  230. package/lib/models/config.js.map +1 -1
  231. package/lib/schema/ConfigSchema.d.ts +13 -4
  232. package/lib/schema/autogeneratedSchema.json +1808 -2074
  233. package/lib/typings/configEntry/application.d.ts +81 -86
  234. package/lib/typings/configEntry/child-app.d.ts +10 -29
  235. package/lib/typings/configEntry/cli.d.ts +254 -0
  236. package/lib/typings/configEntry/{CheckAsyncTsConfig.js → cli.js} +1 -1
  237. package/lib/typings/configEntry/cli.js.map +1 -0
  238. package/lib/typings/configEntry/common.d.ts +16 -276
  239. package/lib/typings/configEntry/common.js +15 -0
  240. package/lib/typings/configEntry/common.js.map +1 -1
  241. package/lib/typings/configEntry/module.d.ts +10 -29
  242. package/lib/typings/configEntry/package.d.ts +2 -1
  243. package/lib/ui/commander.js +1 -1
  244. package/lib/ui/commander.js.map +1 -1
  245. package/lib/utils/applyTemplate.js.map +1 -1
  246. package/lib/utils/detectPortSync.d.ts +1 -0
  247. package/lib/utils/detectPortSync.js +10 -0
  248. package/lib/utils/detectPortSync.js.map +1 -0
  249. package/lib/utils/safeRequire.js +5 -1
  250. package/lib/utils/safeRequire.js.map +1 -1
  251. package/lib/utils/webpackBuild.d.ts +2 -1
  252. package/lib/utils/webpackBuild.js +3 -3
  253. package/lib/utils/webpackBuild.js.map +1 -1
  254. package/package.json +14 -9
  255. package/schema.json +1802 -2068
  256. package/src/api/analyze/providers/shared.ts +3 -2
  257. package/src/api/benchmark/__integration__/__fixtures__/tramvai.json +1 -8
  258. package/src/api/benchmark/index.ts +1 -1
  259. package/src/api/build/__integration__/__fixtures__/app/App.tsx +0 -1
  260. package/src/api/build/__integration__/__fixtures__/app/index.tsx +14 -8
  261. package/src/api/build/__integration__/__fixtures__/app/server.tsx +0 -1
  262. package/src/api/build/__integration__/__fixtures__/tramvai.json +1 -10
  263. package/src/api/build/__integration__/build.test.ts +4 -13
  264. package/src/api/build/child-app.ts +4 -4
  265. package/src/api/build/module.ts +2 -4
  266. package/src/api/build/providers/shared.ts +2 -2
  267. package/src/api/index.ts +6 -2
  268. package/src/api/shared/types/withConfig.ts +5 -6
  269. package/src/api/start/__integration__/__fixtures__/app/index.tsx +11 -7
  270. package/src/api/start/__integration__/__fixtures__/tramvai.json +6 -17
  271. package/src/api/start/__integration__/start.test.ts +38 -13
  272. package/src/api/start/providers/application/server.ts +14 -23
  273. package/src/api/start/providers/application/shared.ts +26 -52
  274. package/src/api/start/providers/child-app/shared.ts +23 -46
  275. package/src/api/start/providers/module/shared.ts +24 -47
  276. package/src/api/start/utils/banner.ts +3 -2
  277. package/src/api/start/utils/listenServer.ts +2 -1
  278. package/src/api/start/utils/tips/tips.ts +11 -8
  279. package/src/api/start-prod/providers/application.ts +19 -19
  280. package/src/api/start-prod/providers/child-app.ts +7 -8
  281. package/src/api/start-prod/providers/shared.ts +6 -20
  282. package/src/builder/webpack/devServer/client.ts +22 -15
  283. package/src/builder/webpack/devServer/notifier.ts +6 -6
  284. package/src/builder/webpack/devServer/pool/process/pool.ts +3 -3
  285. package/src/builder/webpack/devServer/pool/thread/pool.ts +7 -0
  286. package/src/builder/webpack/devServer/server.ts +13 -6
  287. package/src/builder/webpack/providers/analyze/shared.ts +3 -2
  288. package/src/builder/webpack/providers/build/application/server.ts +5 -1
  289. package/src/builder/webpack/providers/build/client.ts +2 -2
  290. package/src/builder/webpack/providers/build/server.ts +1 -1
  291. package/src/builder/webpack/tokens.ts +4 -3
  292. package/src/builder/webpack/utils/copyBuildFile.ts +4 -5
  293. package/src/builder/webpack/utils/copyStatsJsonFile.ts +5 -2
  294. package/src/cli/CLI.ts +6 -6
  295. package/src/cli/index.ts +1 -1
  296. package/src/commands/analyze/command.ts +1 -1
  297. package/src/commands/benchmark/command.ts +1 -1
  298. package/src/commands/build/command.ts +2 -2
  299. package/src/commands/new/new.ts +0 -1
  300. package/src/commands/new/questions/packageManager.ts +1 -1
  301. package/src/commands/new/questions/template.ts +1 -1
  302. package/src/commands/new/questions/testingFramework.ts +1 -1
  303. package/src/commands/new/questions/type.ts +1 -1
  304. package/src/commands/new/steps/initializationGit.ts +1 -1
  305. package/src/commands/new/templates/app/monorepo/tramvai.json.hbs +6 -32
  306. package/src/commands/new/templates/app/multirepo/tramvai.json.hbs +6 -23
  307. package/src/commands/new/templates/child-app/monorepo/tramvai.json.hbs +3 -18
  308. package/src/commands/new/templates/child-app/multirepo/tramvai.json.hbs +3 -9
  309. package/src/commands/start/command.ts +2 -2
  310. package/src/commands/start-prod/command.ts +2 -2
  311. package/src/commands/static/application.ts +5 -14
  312. package/src/commands/static/command.ts +1 -1
  313. package/src/commands/static/generate.ts +2 -2
  314. package/src/commands/static/server.ts +5 -2
  315. package/src/commands/static/staticServer.ts +6 -3
  316. package/src/commands/update/updatePackageJson.ts +6 -2
  317. package/src/config/configManager.spec.ts +49 -0
  318. package/src/config/configManager.ts +129 -197
  319. package/src/config/showConfig.ts +2 -2
  320. package/src/config/validate.ts +14 -25
  321. package/src/di/tokens/config.ts +2 -1
  322. package/src/library/babel/index.ts +1 -0
  323. package/src/library/swc/__integration__/swc.build.test.ts +3 -21
  324. package/src/library/swc/__integration__/swc.start.test.ts +3 -21
  325. package/src/library/swc/index.ts +1 -1
  326. package/src/library/webpack/application/client/common.ts +7 -7
  327. package/src/library/webpack/application/client/dev.ts +9 -9
  328. package/src/library/webpack/application/client/prod/optimization/splitChunks.ts +43 -44
  329. package/src/library/webpack/application/client/prod.ts +3 -5
  330. package/src/library/webpack/application/server/common.ts +5 -8
  331. package/src/library/webpack/application/server/dev.ts +5 -6
  332. package/src/library/webpack/application/server/prod.ts +3 -9
  333. package/src/library/webpack/blocks/apiResolve.ts +1 -1
  334. package/src/library/webpack/blocks/configResolve.ts +2 -2
  335. package/src/library/webpack/blocks/configToEnv.ts +5 -2
  336. package/src/library/webpack/blocks/css.ts +26 -17
  337. package/src/library/webpack/blocks/extractCssPlugin.ts +11 -10
  338. package/src/library/webpack/blocks/filesClient.ts +52 -50
  339. package/src/library/webpack/blocks/filesServer.ts +4 -3
  340. package/src/library/webpack/blocks/js.ts +3 -2
  341. package/src/library/webpack/blocks/nodeClient.ts +4 -3
  342. package/src/library/webpack/blocks/optimize.ts +5 -6
  343. package/src/library/webpack/blocks/pagesResolve.ts +1 -1
  344. package/src/library/webpack/blocks/postcssAssets.ts +6 -7
  345. package/src/library/webpack/blocks/serverInline.ts +2 -1
  346. package/src/library/webpack/blocks/ts.ts +2 -1
  347. package/src/library/webpack/child-app/client/common.ts +3 -3
  348. package/src/library/webpack/child-app/client/dev.ts +8 -8
  349. package/src/library/webpack/child-app/client/prod.ts +2 -2
  350. package/src/library/webpack/child-app/common.ts +2 -2
  351. package/src/library/webpack/child-app/server/common.ts +3 -3
  352. package/src/library/webpack/child-app/server/dev.ts +2 -2
  353. package/src/library/webpack/child-app/server/prod.ts +2 -2
  354. package/src/library/webpack/common/client/prod.ts +10 -6
  355. package/src/library/webpack/common/main.ts +9 -4
  356. package/src/library/webpack/common/server/prod.ts +10 -6
  357. package/src/library/webpack/index.ts +2 -3
  358. package/src/library/webpack/loaders/image-loader/index.ts +2 -1
  359. package/src/library/webpack/loaders/pagesResolve.ts +17 -5
  360. package/src/library/webpack/loaders/replaceContent.ts +11 -2
  361. package/src/library/webpack/module/client/common.ts +1 -1
  362. package/src/library/webpack/module/externals.ts +1 -1
  363. package/src/library/webpack/module/resolveExternal.ts +1 -1
  364. package/src/library/webpack/module/server/common.ts +1 -1
  365. package/src/library/webpack/plugins/LazyModuleInitialization.ts +6 -1
  366. package/src/library/webpack/plugins/WebpackBar/utils/index.ts +8 -8
  367. package/src/library/webpack/plugins/WebpackBar/utils/webpack.ts +1 -1
  368. package/src/library/webpack/types/webpack.ts +2 -2
  369. package/src/library/webpack/utils/files.ts +4 -3
  370. package/src/library/webpack/utils/transpiler.ts +6 -11
  371. package/src/library/webpack/utils/workersPool.ts +6 -9
  372. package/src/models/config.spec.ts +352 -0
  373. package/src/models/config.ts +41 -9
  374. package/src/schema/ConfigSchema.ts +15 -4
  375. package/src/schema/autogeneratedSchema.json +1808 -2074
  376. package/src/schema/tramvai.spec.ts +89 -184
  377. package/src/typings/configEntry/application.ts +85 -87
  378. package/src/typings/configEntry/child-app.ts +10 -30
  379. package/src/typings/configEntry/cli.ts +271 -0
  380. package/src/typings/configEntry/common.ts +26 -278
  381. package/src/typings/configEntry/module.ts +11 -30
  382. package/src/typings/configEntry/package.ts +3 -1
  383. package/src/ui/commander.ts +1 -1
  384. package/src/utils/applyTemplate.ts +2 -2
  385. package/src/utils/detectPortSync.ts +7 -0
  386. package/src/utils/safeRequire.ts +6 -1
  387. package/src/utils/webpackBuild.ts +4 -3
  388. package/lib/library/webpack/plugins/DedupePlugin/DedupePlugin.d.ts +0 -37
  389. package/lib/library/webpack/plugins/DedupePlugin/DedupePlugin.js +0 -241
  390. package/lib/library/webpack/plugins/DedupePlugin/DedupePlugin.js.map +0 -1
  391. package/lib/library/webpack/plugins/DedupePlugin/index.d.ts +0 -1
  392. package/lib/library/webpack/plugins/DedupePlugin/index.js +0 -6
  393. package/lib/library/webpack/plugins/DedupePlugin/index.js.map +0 -1
  394. package/lib/typings/configEntry/CheckAsyncTsConfig.d.ts +0 -13
  395. package/lib/typings/configEntry/CheckAsyncTsConfig.js.map +0 -1
  396. package/src/library/webpack/plugins/DedupePlugin/DedupePlugin.spec.ts +0 -95
  397. package/src/library/webpack/plugins/DedupePlugin/DedupePlugin.ts +0 -307
  398. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-1/index.js +0 -3
  399. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-1/node_modules/package-dep/index.js +0 -1
  400. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-1/node_modules/package-dep/package.json +0 -7
  401. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-1/package.json +0 -7
  402. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-2/index.js +0 -3
  403. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-2/node_modules/package-dep/index.js +0 -1
  404. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-2/node_modules/package-dep/package.json +0 -7
  405. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-2/package.json +0 -7
  406. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-3/index.js +0 -3
  407. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-3/node_modules/package-dep/index.js +0 -1
  408. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-3/node_modules/package-dep/package.json +0 -7
  409. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-3/package.json +0 -7
  410. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-dep/index.js +0 -1
  411. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-dep/package.json +0 -7
  412. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-1/index.js +0 -3
  413. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-1/node_modules/package-esm-dep/index.js +0 -1
  414. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-1/node_modules/package-esm-dep/package.json +0 -8
  415. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-1/package.json +0 -8
  416. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-2/index.js +0 -3
  417. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-2/node_modules/package-esm-dep/index.js +0 -1
  418. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-2/node_modules/package-esm-dep/package.json +0 -8
  419. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-2/package.json +0 -8
  420. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/package-lock.json +0 -0
  421. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/package.json +0 -14
  422. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/src/index.js +0 -9
  423. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/tramvai.json +0 -67
  424. package/src/library/webpack/plugins/DedupePlugin/__integration__/DedupePlugin.test.ts +0 -90
  425. package/src/library/webpack/plugins/DedupePlugin/index.ts +0 -1
  426. package/src/typings/configEntry/CheckAsyncTsConfig.ts +0 -15
@@ -3,6 +3,7 @@ import { provide } from '@tinkoff/dippy';
3
3
  import chalk from 'chalk';
4
4
  import rimraf from 'rimraf';
5
5
  import webpack from 'webpack';
6
+ import type { ConfigManager } from '../../../../api';
6
7
  import {
7
8
  CLI_PACKAGE_MANAGER,
8
9
  CLI_ROOT_DIR_TOKEN,
@@ -78,7 +79,7 @@ export const analyzeSharedProviders: Provider[] = [
78
79
  multi: true,
79
80
  useFactory: ({ configManager }) => {
80
81
  return function clearBuildDir() {
81
- return rimraf.sync(`${configManager.getBuildPath()}/**`, {});
82
+ return rimraf.sync(`${configManager.buildPath}/**`, {});
82
83
  };
83
84
  },
84
85
  deps: {
@@ -90,7 +91,7 @@ export const analyzeSharedProviders: Provider[] = [
90
91
  multi: true,
91
92
  useFactory: ({ configManager, rootDir, packageManager }) => {
92
93
  return async function prepareImageOptimization() {
93
- if (configManager.build?.configurations?.imageOptimization?.enabled) {
94
+ if (configManager.imageOptimization?.enabled) {
94
95
  await npmRequire({
95
96
  cliRootDir: rootDir,
96
97
  packageManager,
@@ -1,6 +1,8 @@
1
1
  import type { Provider } from '@tinkoff/dippy';
2
2
  import { provide } from '@tinkoff/dippy';
3
+ import type { ConfigManager } from '../../../../../config/configManager';
3
4
  import { CONFIG_MANAGER_TOKEN } from '../../../../../di/tokens';
5
+ import type { ApplicationConfigEntry } from '../../../../../typings/configEntry/application';
4
6
  import { CLOSE_HANDLER_TOKEN } from '../../../tokens';
5
7
  import { copyStatsJsonFileToServerDirectory } from '../../../utils/copyStatsJsonFile';
6
8
 
@@ -10,7 +12,9 @@ export const buildApplicationServerProviders: Provider[] = [
10
12
  multi: true,
11
13
  useFactory: ({ configManager }) => {
12
14
  return async function copyStatsFiles() {
13
- return copyStatsJsonFileToServerDirectory(configManager);
15
+ return copyStatsJsonFileToServerDirectory(
16
+ configManager as ConfigManager<ApplicationConfigEntry>
17
+ );
14
18
  };
15
19
  },
16
20
  deps: {
@@ -47,7 +47,7 @@ export const buildClientProviders: Provider[] = [
47
47
  multi: true,
48
48
  useFactory: ({ configManager }) => {
49
49
  return function clearBuildDir() {
50
- return rimraf.sync(`${configManager.getBuildPath()}/**`, {});
50
+ return rimraf.sync(`${configManager.buildPath}/**`, {});
51
51
  };
52
52
  },
53
53
  deps: {
@@ -59,7 +59,7 @@ export const buildClientProviders: Provider[] = [
59
59
  multi: true,
60
60
  useFactory: ({ configManager, rootDir, packageManager }) => {
61
61
  return async function prepareImageOptimization() {
62
- if (configManager.build?.configurations?.imageOptimization?.enabled) {
62
+ if (configManager.imageOptimization?.enabled) {
63
63
  await npmRequire({
64
64
  cliRootDir: rootDir,
65
65
  packageManager,
@@ -29,7 +29,7 @@ export const buildServerProviders: Provider[] = [
29
29
  multi: true,
30
30
  useFactory: ({ configManager }) => {
31
31
  return function clearBuildDir() {
32
- return rimraf.sync(`${configManager.getBuildPath()}/**`, {});
32
+ return rimraf.sync(`${configManager.buildPath}/**`, {});
33
33
  };
34
34
  },
35
35
  deps: {
@@ -5,14 +5,15 @@ import type { EventEmitter } from 'events';
5
5
  import type { ConfigManager } from '../../config/configManager';
6
6
  import type { GetBuildStats } from '../../typings/build/Builder';
7
7
  import type { AnalyzePlugin } from './types';
8
+ import type { CliConfigEntry } from '../../typings/configEntry/cli';
8
9
 
9
- export const CLIENT_CONFIG_MANAGER_TOKEN = createToken<ConfigManager>(
10
+ export const CLIENT_CONFIG_MANAGER_TOKEN = createToken<ConfigManager<CliConfigEntry>>(
10
11
  'builder-webpack clientConfigManager'
11
12
  );
12
- export const CLIENT_MODERN_CONFIG_MANAGER_TOKEN = createToken<ConfigManager>(
13
+ export const CLIENT_MODERN_CONFIG_MANAGER_TOKEN = createToken<ConfigManager<CliConfigEntry>>(
13
14
  'builder-webpack clientModernConfigManager'
14
15
  );
15
- export const SERVER_CONFIG_MANAGER_TOKEN = createToken<ConfigManager>(
16
+ export const SERVER_CONFIG_MANAGER_TOKEN = createToken<ConfigManager<CliConfigEntry>>(
16
17
  'builder-webpack serverConfigManager'
17
18
  );
18
19
  export const WEBPACK_CLIENT_CONFIG_TOKEN = createToken<Config>('builder-webpack clientConfig');
@@ -1,6 +1,7 @@
1
1
  import * as fs from 'fs-extra';
2
2
  import path from 'path';
3
3
  import type { ConfigManager } from '../../../config/configManager';
4
+ import type { ApplicationConfigEntry } from '../../../typings/configEntry/application';
4
5
 
5
6
  export function copyBuildFile({
6
7
  config,
@@ -8,16 +9,14 @@ export function copyBuildFile({
8
9
  fromType,
9
10
  fileName,
10
11
  }: {
11
- config: ConfigManager;
12
+ config: ConfigManager<ApplicationConfigEntry>;
12
13
  fromType: 'client' | 'server';
13
14
  inputPath?: string;
14
15
  fileName: string;
15
16
  }) {
16
17
  const inputPathBase =
17
- inputPath ||
18
- (fromType === 'client' ? config.build.options.outputClient : config.build.options.outputServer);
19
- const outputPathBase =
20
- fromType === 'client' ? config.build.options.outputServer : config.build.options.outputClient;
18
+ inputPath || (fromType === 'client' ? config.output.client : config.output.server);
19
+ const outputPathBase = fromType === 'client' ? config.output.server : config.output.client;
21
20
 
22
21
  return fs.copy(
23
22
  path.resolve(config.rootDir, inputPathBase, fileName),
@@ -2,12 +2,15 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { copyBuildFile } from './copyBuildFile';
4
4
  import type { ConfigManager } from '../../../config/configManager';
5
+ import type { ApplicationConfigEntry } from '../../../typings/configEntry/application';
5
6
 
6
- export const copyStatsJsonFileToServerDirectory = async (clientConfigManager: ConfigManager) => {
7
+ export const copyStatsJsonFileToServerDirectory = async (
8
+ clientConfigManager: ConfigManager<ApplicationConfigEntry>
9
+ ) => {
7
10
  const STATS_JSON_FILE_NAME = 'stats.json';
8
11
  const STATS_JSON_FILE_NAME_MODERN = 'stats.modern.json';
9
12
 
10
- const statsJsonFileDirectoryPath = clientConfigManager.build.options.outputClient;
13
+ const statsJsonFileDirectoryPath = clientConfigManager.output.client;
11
14
 
12
15
  const statsJsonFilePath = path.resolve(
13
16
  clientConfigManager.rootDir,
package/src/cli/CLI.ts CHANGED
@@ -14,21 +14,21 @@ export class CLI {
14
14
 
15
15
  commands: Command[];
16
16
 
17
- runTask = (name, params) => {
17
+ runTask = (name: string, params: any) => {
18
18
  const task = this.tasks.find((item) => item.name === name);
19
19
 
20
20
  if (!task) {
21
- console.error('Не найдена задача: ', name, params);
21
+ throw new Error(`Task ${name} not found`);
22
22
  }
23
23
 
24
24
  return task.run(params);
25
25
  };
26
26
 
27
- runCommand = (name, params) => {
27
+ runCommand = (name: string, params: any) => {
28
28
  const command = this.commands.find((item) => item.name === name);
29
29
 
30
30
  if (!command) {
31
- console.error('Не найдена команда: ', name, params);
31
+ throw new Error(`Command ${name} not found`);
32
32
  }
33
33
 
34
34
  return command.run(params);
@@ -69,11 +69,11 @@ export class CLI {
69
69
  this.commands = commandsMap.map((CommandItem) => new CommandItem(this.context));
70
70
  }
71
71
 
72
- async run(argv) {
72
+ async run(argv: any) {
73
73
  return this.createCommandLineUI(argv);
74
74
  }
75
75
 
76
- protected createCommandLineUI(argv): Promise<CommandResult> {
76
+ protected createCommandLineUI(argv: any): Promise<CommandResult> {
77
77
  return new Promise((resolve) => {
78
78
  commander(this.commands, resolve)(argv);
79
79
  });
package/src/cli/index.ts CHANGED
@@ -95,7 +95,7 @@ export async function cliInitialized(cliArgs = process.argv) {
95
95
  );
96
96
 
97
97
  return await cliInstance.run(cliArgs);
98
- } catch (e) {
98
+ } catch (e: any) {
99
99
  logger.event({
100
100
  type: 'error',
101
101
  event: 'GLOBAL:ERROR',
@@ -31,7 +31,7 @@ class AnalyzeCommand extends CLICommand<Params> {
31
31
  {
32
32
  name: '--fileCache',
33
33
  value: '[fileCache]',
34
- transformer: (value) => value !== 'false',
34
+ transformer: (value: string) => value !== 'false',
35
35
  description: 'Enable/disable persistent file cache for used cli builder',
36
36
  },
37
37
  ];
@@ -20,7 +20,7 @@ export class BenchmarkCommand extends CLICommand<Params> {
20
20
  {
21
21
  name: '--rs, --resolveSymlinks',
22
22
  value: '[resolveSymlinks]',
23
- transformer: (value) => value !== 'false',
23
+ transformer: (value: string) => value !== 'false',
24
24
  description:
25
25
  'Pass value to `resolve.symlinks` in webpack (https://webpack.js.org/configuration/resolve/#resolve-symlinks)`',
26
26
  },
@@ -27,7 +27,7 @@ class BuildCommand extends CLICommand<Params> {
27
27
  {
28
28
  name: '--rs, --resolveSymlinks',
29
29
  value: '[resolveSymlinks]',
30
- transformer: (value) => value !== 'false',
30
+ transformer: (value: string) => value !== 'false',
31
31
  description:
32
32
  'Pass value to `resolve.symlinks` in webpack (https://webpack.js.org/configuration/resolve/#resolve-symlinks)`',
33
33
  },
@@ -54,7 +54,7 @@ class BuildCommand extends CLICommand<Params> {
54
54
  {
55
55
  name: '--fileCache',
56
56
  value: '[fileCache]',
57
- transformer: (value) => value !== 'false',
57
+ transformer: (value: string) => value !== 'false',
58
58
  description: 'Enable/disable persistent file cache for used cli builder',
59
59
  },
60
60
  {
@@ -42,7 +42,6 @@ export default async function createNew(context: Context, params: Params): Promi
42
42
  type: 'application',
43
43
  name,
44
44
  root: directoryName,
45
- commands: {},
46
45
  };
47
46
 
48
47
  const {
@@ -2,7 +2,7 @@ type PackageManagers = 'npm' | 'yarn';
2
2
 
3
3
  const choices = ['npm', 'yarn'];
4
4
 
5
- const packageManagerQuestion = (answer) => ({
5
+ const packageManagerQuestion = (answer: string) => ({
6
6
  type: 'list' as const,
7
7
  name: 'packageManager' as const,
8
8
  message: 'Choose a package manager for the project',
@@ -13,7 +13,7 @@ const choices = [
13
13
  },
14
14
  ];
15
15
 
16
- const templateQuestion = (answer) => ({
16
+ const templateQuestion = (answer: string) => ({
17
17
  type: 'list' as const,
18
18
  name: 'template' as const,
19
19
  message: 'Choose a template for your project',
@@ -2,7 +2,7 @@ type TestingFrameworks = 'none' | 'jest';
2
2
 
3
3
  const choices = ['none', 'jest'];
4
4
 
5
- const testingFrameworkQuestion = (answer) => ({
5
+ const testingFrameworkQuestion = (answer: string) => ({
6
6
  type: 'list' as const,
7
7
  name: 'testingFramework' as const,
8
8
  message: 'Choose a test framework for your project',
@@ -13,7 +13,7 @@ const choices = [
13
13
  },
14
14
  ];
15
15
 
16
- const typeQuestion = (answer) => ({
16
+ const typeQuestion = (answer: string) => ({
17
17
  type: 'list' as const,
18
18
  name: 'type' as const,
19
19
  message: 'Choose a type for your project',
@@ -1,7 +1,7 @@
1
1
  import execa from 'execa';
2
2
  import chalk from 'chalk';
3
3
 
4
- export async function initializationGit(localDir) {
4
+ export async function initializationGit(localDir: string) {
5
5
  console.log(`${chalk.blue('[GIT]')} Initializing git`);
6
6
 
7
7
  await execa('git', ['init'], { cwd: localDir, stdio: 'inherit' });
@@ -5,38 +5,12 @@
5
5
  "name": "{{configEntry.name}}",
6
6
  "root": "apps/{{configEntry.name}}",
7
7
  "type": "application",
8
- "commands": {
9
- "build": {
10
- "options": {
11
- "server": "apps/{{configEntry.name}}/index.ts"
12
- },
13
- "configurations": {
14
- "sourceMap": true,
15
- "modern": true,
16
- "granularChunks": true,
17
- "postcss": {
18
- "config": "apps/{{configEntry.name}}/postcss"
19
- },
20
- "alias": {
21
- "~shared": "./apps/{{configEntry.name}}/shared",
22
- "~entities": "./apps/{{configEntry.name}}/entities",
23
- "~features": "./apps/{{configEntry.name}}/features",
24
- "~widgets": "./apps/{{configEntry.name}}/widgets",
25
- "~pages": "./apps/{{configEntry.name}}/pages",
26
- "~processes": "./apps/{{configEntry.name}}/processes",
27
- "~app": "./apps/{{configEntry.name}}/app"
28
- },
29
- "fileSystemPages": {
30
- "enable": true
31
- }
32
- }
33
- },
34
- "serve": {
35
- "configurations": {
36
- "hotRefresh": true,
37
- "modern": true
38
- }
39
- }
8
+ "sourceMap": true,
9
+ "postcss": {
10
+ "config": "apps/{{configEntry.name}}/postcss"
11
+ },
12
+ "fileSystemPages": {
13
+ "enabled": true
40
14
  }
41
15
  }
42
16
  }
@@ -5,29 +5,12 @@
5
5
  "name": "{{configEntry.name}}",
6
6
  "root": "src",
7
7
  "type": "application",
8
- "commands": {
9
- "build": {
10
- "options": {
11
- "server": "src/index.ts"
12
- },
13
- "configurations": {
14
- "sourceMap": true,
15
- "modern": true,
16
- "granularChunks": true,
17
- "postcss": {
18
- "config": "src/postcss"
19
- },
20
- "fileSystemPages": {
21
- "enable": true
22
- }
23
- }
24
- },
25
- "serve": {
26
- "configurations": {
27
- "hotRefresh": true,
28
- "modern": true
29
- }
30
- }
8
+ "sourceMap": true,
9
+ "postcss": {
10
+ "config": "src/postcss"
11
+ },
12
+ "fileSystemPages": {
13
+ "enabled": true
31
14
  }
32
15
  }
33
16
  }
@@ -5,24 +5,9 @@
5
5
  "name": "{{configEntry.name}}",
6
6
  "root": "child-apps/{{configEntry.name}}",
7
7
  "type": "child-app",
8
- "commands": {
9
- "build": {
10
- "configurations": {
11
- "postcss": {
12
- "config": "apps/{{configEntry.name}}/postcss"
13
- },
14
- "alias": {
15
- "~shared": "./apps/{{configEntry.name}}/shared",
16
- "~entities": "./apps/{{configEntry.name}}/entities",
17
- "~features": "./apps/{{configEntry.name}}/features",
18
- "~widgets": "./apps/{{configEntry.name}}/widgets",
19
- "~pages": "./apps/{{configEntry.name}}/pages",
20
- "~processes": "./apps/{{configEntry.name}}/processes",
21
- "~app": "./apps/{{configEntry.name}}/app"
22
- }
23
- }
24
- }
25
- }
8
+ "postcss": {
9
+ "config": "apps/{{configEntry.name}}/postcss"
10
+ },
26
11
  }
27
12
  }
28
13
  }
@@ -5,15 +5,9 @@
5
5
  "name": "{{configEntry.name}}",
6
6
  "root": "src",
7
7
  "type": "child-app",
8
- "commands": {
9
- "build": {
10
- "configurations": {
11
- "postcss": {
12
- "config": "src/postcss"
13
- },
14
- }
15
- }
16
- }
8
+ "postcss": {
9
+ "config": "src/postcss"
10
+ },
17
11
  }
18
12
  }
19
13
  }
@@ -83,7 +83,7 @@ export class StartCommand extends CLICommand<Params> {
83
83
  {
84
84
  name: '--rs, --resolveSymlinks',
85
85
  value: '[resolveSymlinks]',
86
- transformer: (value) => value !== 'false',
86
+ transformer: (value: string) => value !== 'false',
87
87
  description:
88
88
  'Pass value to `resolve.symlinks` in webpack (https://webpack.js.org/configuration/resolve/#resolve-symlinks)`',
89
89
  },
@@ -102,7 +102,7 @@ export class StartCommand extends CLICommand<Params> {
102
102
  {
103
103
  name: '--fileCache',
104
104
  value: '[fileCache]',
105
- transformer: (value) => value !== 'false',
105
+ transformer: (value: string) => value !== 'false',
106
106
  description: 'Enable/disable persistent file cache for used cli builder',
107
107
  },
108
108
  {
@@ -34,7 +34,7 @@ export class StartProdCommand extends CLICommand<Params> {
34
34
  {
35
35
  name: '--rs, --resolveSymlinks',
36
36
  value: '[resolveSymlinks]',
37
- transformer: (value) => value !== 'false',
37
+ transformer: (value: string) => value !== 'false',
38
38
  description:
39
39
  'Pass value to `resolve.symlinks` in webpack (https://webpack.js.org/configuration/resolve/#resolve-symlinks)`',
40
40
  },
@@ -76,7 +76,7 @@ export class StartProdCommand extends CLICommand<Params> {
76
76
  {
77
77
  name: '--fileCache',
78
78
  value: '[fileCache]',
79
- transformer: (value) => value !== 'false',
79
+ transformer: (value: string) => value !== 'false',
80
80
  description: 'Enable/disable persistent file cache for used cli builder',
81
81
  },
82
82
  {
@@ -11,7 +11,7 @@ import { webpackServerConfig } from '../../library/webpack/application/server/pr
11
11
  import type { CommandResult } from '../../models/command';
12
12
  import type { ApplicationConfigEntry } from '../../typings/configEntry/application';
13
13
  import type { Params } from './command';
14
- import { ConfigManager } from '../../config/configManager';
14
+ import { createConfigManager } from '../../config/configManager';
15
15
  import { request } from './request';
16
16
  import { generateStatic } from './generate';
17
17
  import { toWebpackConfig } from '../../library/webpack/utils/toWebpackConfig';
@@ -27,7 +27,7 @@ export const staticApp = async (
27
27
  configEntry: ApplicationConfigEntry,
28
28
  options: Params
29
29
  ): Promise<CommandResult> => {
30
- const clientConfigManager = new ConfigManager(configEntry, {
30
+ const clientConfigManager = createConfigManager(configEntry, {
31
31
  env: 'production',
32
32
  ...options,
33
33
  buildType: 'client',
@@ -46,17 +46,8 @@ export const staticApp = async (
46
46
  });
47
47
  }
48
48
 
49
- const {
50
- name,
51
- host,
52
- port,
53
- staticPort,
54
- staticHost,
55
- build: {
56
- options: { outputClient },
57
- },
58
- } = serverConfigManager;
59
- const root = serverConfigManager.getBuildPath();
49
+ const { name, host, port, staticPort, staticHost, output } = serverConfigManager;
50
+ const root = serverConfigManager.buildPath;
60
51
 
61
52
  context.logger.event({
62
53
  type: 'debug',
@@ -76,7 +67,7 @@ export const staticApp = async (
76
67
  PORT_SERVER: `${port}`,
77
68
  ASSETS_PREFIX:
78
69
  process.env.ASSETS_PREFIX ??
79
- `http://${staticHost}:${staticPort}/${outputClient.replace(/\/$/, '')}/`,
70
+ `http://${staticHost}:${staticPort}/${output.client.replace(/\/$/, '')}/`,
80
71
  },
81
72
  });
82
73
 
@@ -44,7 +44,7 @@ export class StaticCommand extends CLICommand<Params> {
44
44
  {
45
45
  name: '--fileCache',
46
46
  value: '[fileCache]',
47
- transformer: (value) => value !== 'false',
47
+ transformer: (value: string) => value !== 'false',
48
48
  description: 'Enable/disable persistent file cache for used cli builder',
49
49
  },
50
50
  {
@@ -17,8 +17,8 @@ export const generateStatic = async (
17
17
  const q = new PQueue(MAX_CONCURRENT);
18
18
  const promises = [];
19
19
 
20
- const { host, port, rootDir, build } = configManager;
21
- const staticPath = resolve(rootDir, build.options.outputStatic);
20
+ const { host, port, rootDir, output } = configManager;
21
+ const staticPath = resolve(rootDir, output.static);
22
22
  const serverPath = `http://${host}:${port}`;
23
23
 
24
24
  for (const path of paths) {
@@ -3,8 +3,11 @@ import express from 'express';
3
3
  import compression from 'compression';
4
4
  import zlib from 'zlib';
5
5
  import type { ConfigManager } from '../../config/configManager';
6
+ import type { ApplicationConfigEntry } from '../../typings/configEntry/application';
6
7
 
7
- export const startServer = (configManager: ConfigManager): Promise<Server> => {
8
+ export const startServer = (
9
+ configManager: ConfigManager<ApplicationConfigEntry>
10
+ ): Promise<Server> => {
8
11
  const { port } = configManager;
9
12
  const app = express();
10
13
 
@@ -22,7 +25,7 @@ export const startServer = (configManager: ConfigManager): Promise<Server> => {
22
25
  next();
23
26
  });
24
27
 
25
- app.use('/', express.static(configManager.build.options.outputStatic));
28
+ app.use('/', express.static(configManager.output.static));
26
29
 
27
30
  return new Promise((resolve) => {
28
31
  const server = app.listen(port, () => {
@@ -3,8 +3,11 @@ import express from 'express';
3
3
  import compression from 'compression';
4
4
  import zlib from 'zlib';
5
5
  import type { ConfigManager } from '../../config/configManager';
6
+ import type { ApplicationConfigEntry } from '../../typings/configEntry/application';
6
7
 
7
- export const startStaticServer = (configManager: ConfigManager): Promise<Server> => {
8
+ export const startStaticServer = (
9
+ configManager: ConfigManager<ApplicationConfigEntry>
10
+ ): Promise<Server> => {
8
11
  const { staticHost, staticPort } = configManager;
9
12
  const app = express();
10
13
 
@@ -23,8 +26,8 @@ export const startStaticServer = (configManager: ConfigManager): Promise<Server>
23
26
  });
24
27
 
25
28
  app.use(
26
- `/${configManager.build.options.outputClient.replace(/\/$/, '')}/`,
27
- express.static(configManager.getBuildPath())
29
+ `/${configManager.output.client.replace(/\/$/, '')}/`,
30
+ express.static(configManager.buildPath)
28
31
  );
29
32
 
30
33
  return new Promise((resolve) => {
@@ -8,14 +8,14 @@ const isUnifiedVersion = (name: string) => {
8
8
  return name.startsWith('@tramvai');
9
9
  };
10
10
 
11
- const getVersionFromDep = (dep) => parse(dep)?.version || minVersion(dep)?.version;
11
+ const getVersionFromDep = (dep: string) => parse(dep)?.version || minVersion(dep)?.version;
12
12
 
13
13
  const updateEntry = async (
14
14
  deps: Record<string, any>,
15
15
  dep: string,
16
16
  { currentVersion, version }: { currentVersion: string; version: string }
17
17
  ) => {
18
- let nextVersion: string;
18
+ let nextVersion: string | undefined;
19
19
 
20
20
  if (isUnifiedVersion(dep) && getVersionFromDep(deps[dep]) === currentVersion) {
21
21
  nextVersion = version;
@@ -66,6 +66,10 @@ export const updatePackageJson = async (version: string) => {
66
66
  const content = JSON.parse(file.toString());
67
67
  const currentVersion = getVersionFromDep(content.dependencies['@tramvai/core']);
68
68
 
69
+ if (!currentVersion) {
70
+ throw new Error("Couldn't resolve current tramvai version");
71
+ }
72
+
69
73
  if (currentVersion === version) {
70
74
  console.error('The installed version is equal to the current version, no update is required.');
71
75
  process.exit(0);