@tramvai/cli 2.63.0 → 2.65.9

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 (416) 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/shared.js +1 -1
  16. package/lib/api/start/providers/application/shared.js.map +1 -1
  17. package/lib/api/start/providers/child-app/shared.js +8 -7
  18. package/lib/api/start/providers/child-app/shared.js.map +1 -1
  19. package/lib/api/start/providers/module/shared.js +14 -13
  20. package/lib/api/start/providers/module/shared.js.map +1 -1
  21. package/lib/api/start/utils/banner.js +3 -2
  22. package/lib/api/start/utils/banner.js.map +1 -1
  23. package/lib/api/start/utils/tips/tips.js +10 -8
  24. package/lib/api/start/utils/tips/tips.js.map +1 -1
  25. package/lib/api/start-prod/providers/application.js +5 -5
  26. package/lib/api/start-prod/providers/application.js.map +1 -1
  27. package/lib/api/start-prod/providers/child-app.js +2 -2
  28. package/lib/api/start-prod/providers/child-app.js.map +1 -1
  29. package/lib/api/start-prod/providers/shared.js +3 -3
  30. package/lib/api/start-prod/providers/shared.js.map +1 -1
  31. package/lib/builder/webpack/devServer/client.js +18 -15
  32. package/lib/builder/webpack/devServer/client.js.map +1 -1
  33. package/lib/builder/webpack/devServer/notifier.d.ts +2 -2
  34. package/lib/builder/webpack/devServer/notifier.js +3 -3
  35. package/lib/builder/webpack/devServer/notifier.js.map +1 -1
  36. package/lib/builder/webpack/devServer/pool/process/pool.js +3 -2
  37. package/lib/builder/webpack/devServer/pool/process/pool.js.map +1 -1
  38. package/lib/builder/webpack/devServer/pool/thread/pool.js +7 -0
  39. package/lib/builder/webpack/devServer/pool/thread/pool.js.map +1 -1
  40. package/lib/builder/webpack/devServer/server.js +7 -2
  41. package/lib/builder/webpack/devServer/server.js.map +1 -1
  42. package/lib/builder/webpack/providers/analyze/shared.js +3 -3
  43. package/lib/builder/webpack/providers/analyze/shared.js.map +1 -1
  44. package/lib/builder/webpack/providers/build/application/server.js.map +1 -1
  45. package/lib/builder/webpack/providers/build/client.js +3 -3
  46. package/lib/builder/webpack/providers/build/client.js.map +1 -1
  47. package/lib/builder/webpack/providers/build/server.js +1 -1
  48. package/lib/builder/webpack/providers/build/server.js.map +1 -1
  49. package/lib/builder/webpack/tokens.d.ts +313 -3
  50. package/lib/builder/webpack/tokens.js.map +1 -1
  51. package/lib/builder/webpack/utils/copyBuildFile.d.ts +2 -1
  52. package/lib/builder/webpack/utils/copyBuildFile.js +2 -3
  53. package/lib/builder/webpack/utils/copyBuildFile.js.map +1 -1
  54. package/lib/builder/webpack/utils/copyStatsJsonFile.d.ts +2 -1
  55. package/lib/builder/webpack/utils/copyStatsJsonFile.js +1 -1
  56. package/lib/builder/webpack/utils/copyStatsJsonFile.js.map +1 -1
  57. package/lib/cli/CLI.d.ts +2 -2
  58. package/lib/cli/CLI.js +2 -2
  59. package/lib/cli/CLI.js.map +1 -1
  60. package/lib/cli/index.js.map +1 -1
  61. package/lib/commands/analyze/command.d.ts +1 -1
  62. package/lib/commands/analyze/command.js.map +1 -1
  63. package/lib/commands/benchmark/command.d.ts +1 -1
  64. package/lib/commands/benchmark/command.js.map +1 -1
  65. package/lib/commands/build/command.d.ts +1 -1
  66. package/lib/commands/build/command.js.map +1 -1
  67. package/lib/commands/new/new.js +0 -1
  68. package/lib/commands/new/new.js.map +1 -1
  69. package/lib/commands/new/questions/packageManager.d.ts +1 -1
  70. package/lib/commands/new/questions/packageManager.js.map +1 -1
  71. package/lib/commands/new/questions/template.d.ts +1 -1
  72. package/lib/commands/new/questions/template.js.map +1 -1
  73. package/lib/commands/new/questions/testingFramework.d.ts +1 -1
  74. package/lib/commands/new/questions/testingFramework.js.map +1 -1
  75. package/lib/commands/new/questions/type.d.ts +1 -1
  76. package/lib/commands/new/questions/type.js.map +1 -1
  77. package/lib/commands/new/steps/initializationGit.d.ts +1 -1
  78. package/lib/commands/new/steps/initializationGit.js.map +1 -1
  79. package/lib/commands/start/command.d.ts +1 -1
  80. package/lib/commands/start/command.js.map +1 -1
  81. package/lib/commands/start-prod/command.d.ts +1 -1
  82. package/lib/commands/start-prod/command.js.map +1 -1
  83. package/lib/commands/static/application.js +4 -4
  84. package/lib/commands/static/application.js.map +1 -1
  85. package/lib/commands/static/command.d.ts +1 -1
  86. package/lib/commands/static/command.js.map +1 -1
  87. package/lib/commands/static/generate.js +2 -2
  88. package/lib/commands/static/generate.js.map +1 -1
  89. package/lib/commands/static/server.d.ts +2 -1
  90. package/lib/commands/static/server.js +1 -1
  91. package/lib/commands/static/server.js.map +1 -1
  92. package/lib/commands/static/staticServer.d.ts +2 -1
  93. package/lib/commands/static/staticServer.js +1 -1
  94. package/lib/commands/static/staticServer.js.map +1 -1
  95. package/lib/commands/update/updatePackageJson.js +3 -0
  96. package/lib/commands/update/updatePackageJson.js.map +1 -1
  97. package/lib/config/configManager.d.ts +12 -73
  98. package/lib/config/configManager.js +61 -92
  99. package/lib/config/configManager.js.map +1 -1
  100. package/lib/config/showConfig.d.ts +1 -1
  101. package/lib/config/showConfig.js +1 -1
  102. package/lib/config/showConfig.js.map +1 -1
  103. package/lib/config/validate.d.ts +5 -4
  104. package/lib/config/validate.js +2 -9
  105. package/lib/config/validate.js.map +1 -1
  106. package/lib/di/tokens/config.d.ts +106 -1
  107. package/lib/di/tokens/config.js.map +1 -1
  108. package/lib/external/config.d.ts +2 -2
  109. package/lib/library/babel/index.js +1 -0
  110. package/lib/library/babel/index.js.map +1 -1
  111. package/lib/library/swc/index.js +1 -1
  112. package/lib/library/swc/index.js.map +1 -1
  113. package/lib/library/webpack/application/client/common.js +6 -4
  114. package/lib/library/webpack/application/client/common.js.map +1 -1
  115. package/lib/library/webpack/application/client/dev.js +9 -8
  116. package/lib/library/webpack/application/client/dev.js.map +1 -1
  117. package/lib/library/webpack/application/client/prod/optimization/splitChunks.js +40 -39
  118. package/lib/library/webpack/application/client/prod/optimization/splitChunks.js.map +1 -1
  119. package/lib/library/webpack/application/client/prod.js +3 -4
  120. package/lib/library/webpack/application/client/prod.js.map +1 -1
  121. package/lib/library/webpack/application/server/common.js +5 -5
  122. package/lib/library/webpack/application/server/common.js.map +1 -1
  123. package/lib/library/webpack/application/server/dev.js +3 -6
  124. package/lib/library/webpack/application/server/dev.js.map +1 -1
  125. package/lib/library/webpack/application/server/prod.js +3 -4
  126. package/lib/library/webpack/application/server/prod.js.map +1 -1
  127. package/lib/library/webpack/blocks/apiResolve.js +1 -1
  128. package/lib/library/webpack/blocks/apiResolve.js.map +1 -1
  129. package/lib/library/webpack/blocks/configResolve.js +2 -2
  130. package/lib/library/webpack/blocks/configResolve.js.map +1 -1
  131. package/lib/library/webpack/blocks/configToEnv.js +5 -2
  132. package/lib/library/webpack/blocks/configToEnv.js.map +1 -1
  133. package/lib/library/webpack/blocks/css.d.ts +3 -1
  134. package/lib/library/webpack/blocks/css.js +17 -6
  135. package/lib/library/webpack/blocks/css.js.map +1 -1
  136. package/lib/library/webpack/blocks/extractCssPlugin.d.ts +4 -3
  137. package/lib/library/webpack/blocks/extractCssPlugin.js +4 -6
  138. package/lib/library/webpack/blocks/extractCssPlugin.js.map +1 -1
  139. package/lib/library/webpack/blocks/filesClient.d.ts +3 -2
  140. package/lib/library/webpack/blocks/filesClient.js +7 -7
  141. package/lib/library/webpack/blocks/filesClient.js.map +1 -1
  142. package/lib/library/webpack/blocks/filesServer.d.ts +2 -1
  143. package/lib/library/webpack/blocks/filesServer.js +3 -3
  144. package/lib/library/webpack/blocks/filesServer.js.map +1 -1
  145. package/lib/library/webpack/blocks/js.d.ts +2 -1
  146. package/lib/library/webpack/blocks/js.js +1 -1
  147. package/lib/library/webpack/blocks/js.js.map +1 -1
  148. package/lib/library/webpack/blocks/nodeClient.d.ts +2 -1
  149. package/lib/library/webpack/blocks/nodeClient.js +2 -2
  150. package/lib/library/webpack/blocks/nodeClient.js.map +1 -1
  151. package/lib/library/webpack/blocks/optimize.d.ts +2 -1
  152. package/lib/library/webpack/blocks/optimize.js +3 -3
  153. package/lib/library/webpack/blocks/optimize.js.map +1 -1
  154. package/lib/library/webpack/blocks/pagesResolve.js +1 -1
  155. package/lib/library/webpack/blocks/pagesResolve.js.map +1 -1
  156. package/lib/library/webpack/blocks/postcssAssets.d.ts +2 -1
  157. package/lib/library/webpack/blocks/postcssAssets.js +2 -2
  158. package/lib/library/webpack/blocks/postcssAssets.js.map +1 -1
  159. package/lib/library/webpack/blocks/serverInline.d.ts +2 -1
  160. package/lib/library/webpack/blocks/serverInline.js.map +1 -1
  161. package/lib/library/webpack/blocks/ts.d.ts +2 -1
  162. package/lib/library/webpack/blocks/ts.js.map +1 -1
  163. package/lib/library/webpack/child-app/client/common.d.ts +2 -2
  164. package/lib/library/webpack/child-app/client/common.js +1 -1
  165. package/lib/library/webpack/child-app/client/common.js.map +1 -1
  166. package/lib/library/webpack/child-app/client/dev.d.ts +2 -2
  167. package/lib/library/webpack/child-app/client/dev.js +6 -5
  168. package/lib/library/webpack/child-app/client/dev.js.map +1 -1
  169. package/lib/library/webpack/child-app/client/prod.d.ts +2 -2
  170. package/lib/library/webpack/child-app/client/prod.js.map +1 -1
  171. package/lib/library/webpack/child-app/common.d.ts +2 -2
  172. package/lib/library/webpack/child-app/common.js.map +1 -1
  173. package/lib/library/webpack/child-app/server/common.d.ts +2 -2
  174. package/lib/library/webpack/child-app/server/common.js +1 -1
  175. package/lib/library/webpack/child-app/server/common.js.map +1 -1
  176. package/lib/library/webpack/child-app/server/dev.d.ts +2 -2
  177. package/lib/library/webpack/child-app/server/dev.js.map +1 -1
  178. package/lib/library/webpack/child-app/server/prod.d.ts +2 -2
  179. package/lib/library/webpack/child-app/server/prod.js.map +1 -1
  180. package/lib/library/webpack/common/client/prod.d.ts +2 -1
  181. package/lib/library/webpack/common/client/prod.js +4 -5
  182. package/lib/library/webpack/common/client/prod.js.map +1 -1
  183. package/lib/library/webpack/common/main.d.ts +2 -1
  184. package/lib/library/webpack/common/main.js +3 -3
  185. package/lib/library/webpack/common/main.js.map +1 -1
  186. package/lib/library/webpack/common/server/prod.d.ts +2 -1
  187. package/lib/library/webpack/common/server/prod.js +4 -5
  188. package/lib/library/webpack/common/server/prod.js.map +1 -1
  189. package/lib/library/webpack/index.js +1 -2
  190. package/lib/library/webpack/index.js.map +1 -1
  191. package/lib/library/webpack/loaders/image-loader/index.d.ts +2 -1
  192. package/lib/library/webpack/loaders/image-loader/index.js.map +1 -1
  193. package/lib/library/webpack/loaders/pagesResolve.d.ts +10 -1
  194. package/lib/library/webpack/loaders/pagesResolve.js +4 -3
  195. package/lib/library/webpack/loaders/pagesResolve.js.map +1 -1
  196. package/lib/library/webpack/loaders/replaceContent.d.ts +6 -1
  197. package/lib/library/webpack/loaders/replaceContent.js +4 -3
  198. package/lib/library/webpack/loaders/replaceContent.js.map +1 -1
  199. package/lib/library/webpack/module/client/common.js +1 -1
  200. package/lib/library/webpack/module/client/common.js.map +1 -1
  201. package/lib/library/webpack/module/externals.d.ts +1 -1
  202. package/lib/library/webpack/module/externals.js.map +1 -1
  203. package/lib/library/webpack/module/resolveExternal.d.ts +1 -1
  204. package/lib/library/webpack/module/resolveExternal.js.map +1 -1
  205. package/lib/library/webpack/module/server/common.js +1 -1
  206. package/lib/library/webpack/module/server/common.js.map +1 -1
  207. package/lib/library/webpack/plugins/LazyModuleInitialization.d.ts +2 -2
  208. package/lib/library/webpack/plugins/LazyModuleInitialization.js +1 -0
  209. package/lib/library/webpack/plugins/LazyModuleInitialization.js.map +1 -1
  210. package/lib/library/webpack/plugins/WebpackBar/utils/index.d.ts +7 -7
  211. package/lib/library/webpack/plugins/WebpackBar/utils/index.js.map +1 -1
  212. package/lib/library/webpack/plugins/WebpackBar/utils/webpack.d.ts +2 -2
  213. package/lib/library/webpack/plugins/WebpackBar/utils/webpack.js.map +1 -1
  214. package/lib/library/webpack/types/webpack.d.ts +2 -2
  215. package/lib/library/webpack/utils/files.d.ts +4 -3
  216. package/lib/library/webpack/utils/files.js +2 -2
  217. package/lib/library/webpack/utils/files.js.map +1 -1
  218. package/lib/library/webpack/utils/transpiler.d.ts +3 -2
  219. package/lib/library/webpack/utils/transpiler.js +2 -2
  220. package/lib/library/webpack/utils/transpiler.js.map +1 -1
  221. package/lib/library/webpack/utils/workersPool.d.ts +3 -6
  222. package/lib/library/webpack/utils/workersPool.js +1 -1
  223. package/lib/library/webpack/utils/workersPool.js.map +1 -1
  224. package/lib/models/config.d.ts +2 -3
  225. package/lib/models/config.js +32 -3
  226. package/lib/models/config.js.map +1 -1
  227. package/lib/schema/ConfigSchema.d.ts +13 -4
  228. package/lib/schema/autogeneratedSchema.json +1808 -2074
  229. package/lib/typings/configEntry/application.d.ts +81 -86
  230. package/lib/typings/configEntry/child-app.d.ts +10 -29
  231. package/lib/typings/configEntry/cli.d.ts +254 -0
  232. package/lib/typings/configEntry/{CheckAsyncTsConfig.js → cli.js} +1 -1
  233. package/lib/typings/configEntry/cli.js.map +1 -0
  234. package/lib/typings/configEntry/common.d.ts +16 -276
  235. package/lib/typings/configEntry/common.js +15 -0
  236. package/lib/typings/configEntry/common.js.map +1 -1
  237. package/lib/typings/configEntry/module.d.ts +10 -29
  238. package/lib/typings/configEntry/package.d.ts +2 -1
  239. package/lib/ui/commander.js +1 -1
  240. package/lib/ui/commander.js.map +1 -1
  241. package/lib/utils/applyTemplate.js.map +1 -1
  242. package/lib/utils/safeRequire.js +5 -1
  243. package/lib/utils/safeRequire.js.map +1 -1
  244. package/lib/utils/webpackBuild.d.ts +2 -1
  245. package/lib/utils/webpackBuild.js +3 -3
  246. package/lib/utils/webpackBuild.js.map +1 -1
  247. package/package.json +13 -9
  248. package/schema.json +1802 -2068
  249. package/src/api/analyze/providers/shared.ts +3 -2
  250. package/src/api/benchmark/__integration__/__fixtures__/tramvai.json +1 -8
  251. package/src/api/benchmark/index.ts +1 -1
  252. package/src/api/build/__integration__/__fixtures__/app/App.tsx +0 -1
  253. package/src/api/build/__integration__/__fixtures__/app/index.tsx +14 -8
  254. package/src/api/build/__integration__/__fixtures__/app/server.tsx +0 -1
  255. package/src/api/build/__integration__/__fixtures__/tramvai.json +1 -10
  256. package/src/api/build/__integration__/build.test.ts +4 -13
  257. package/src/api/build/child-app.ts +4 -4
  258. package/src/api/build/module.ts +2 -4
  259. package/src/api/build/providers/shared.ts +2 -2
  260. package/src/api/index.ts +6 -2
  261. package/src/api/shared/types/withConfig.ts +5 -6
  262. package/src/api/start/__integration__/__fixtures__/app/index.tsx +11 -7
  263. package/src/api/start/__integration__/__fixtures__/tramvai.json +6 -17
  264. package/src/api/start/__integration__/start.test.ts +1 -12
  265. package/src/api/start/providers/application/shared.ts +2 -2
  266. package/src/api/start/providers/child-app/shared.ts +9 -14
  267. package/src/api/start/providers/module/shared.ts +19 -30
  268. package/src/api/start/utils/banner.ts +3 -2
  269. package/src/api/start/utils/tips/tips.ts +11 -8
  270. package/src/api/start-prod/providers/application.ts +10 -14
  271. package/src/api/start-prod/providers/child-app.ts +4 -5
  272. package/src/api/start-prod/providers/shared.ts +4 -8
  273. package/src/builder/webpack/devServer/client.ts +22 -15
  274. package/src/builder/webpack/devServer/notifier.ts +6 -6
  275. package/src/builder/webpack/devServer/pool/process/pool.ts +3 -3
  276. package/src/builder/webpack/devServer/pool/thread/pool.ts +7 -0
  277. package/src/builder/webpack/devServer/server.ts +13 -6
  278. package/src/builder/webpack/providers/analyze/shared.ts +3 -2
  279. package/src/builder/webpack/providers/build/application/server.ts +5 -1
  280. package/src/builder/webpack/providers/build/client.ts +3 -2
  281. package/src/builder/webpack/providers/build/server.ts +1 -1
  282. package/src/builder/webpack/tokens.ts +4 -3
  283. package/src/builder/webpack/utils/copyBuildFile.ts +4 -5
  284. package/src/builder/webpack/utils/copyStatsJsonFile.ts +5 -2
  285. package/src/cli/CLI.ts +6 -6
  286. package/src/cli/index.ts +1 -1
  287. package/src/commands/analyze/command.ts +1 -1
  288. package/src/commands/benchmark/command.ts +1 -1
  289. package/src/commands/build/command.ts +2 -2
  290. package/src/commands/new/new.ts +0 -1
  291. package/src/commands/new/questions/packageManager.ts +1 -1
  292. package/src/commands/new/questions/template.ts +1 -1
  293. package/src/commands/new/questions/testingFramework.ts +1 -1
  294. package/src/commands/new/questions/type.ts +1 -1
  295. package/src/commands/new/steps/initializationGit.ts +1 -1
  296. package/src/commands/new/templates/app/monorepo/tramvai.json.hbs +6 -32
  297. package/src/commands/new/templates/app/multirepo/tramvai.json.hbs +6 -23
  298. package/src/commands/new/templates/child-app/monorepo/tramvai.json.hbs +3 -18
  299. package/src/commands/new/templates/child-app/multirepo/tramvai.json.hbs +3 -9
  300. package/src/commands/start/command.ts +2 -2
  301. package/src/commands/start-prod/command.ts +2 -2
  302. package/src/commands/static/application.ts +5 -14
  303. package/src/commands/static/command.ts +1 -1
  304. package/src/commands/static/generate.ts +2 -2
  305. package/src/commands/static/server.ts +5 -2
  306. package/src/commands/static/staticServer.ts +6 -3
  307. package/src/commands/update/updatePackageJson.ts +6 -2
  308. package/src/config/configManager.spec.ts +49 -0
  309. package/src/config/configManager.ts +123 -197
  310. package/src/config/showConfig.ts +2 -2
  311. package/src/config/validate.ts +14 -25
  312. package/src/di/tokens/config.ts +2 -1
  313. package/src/library/babel/index.ts +1 -0
  314. package/src/library/swc/__integration__/swc.build.test.ts +3 -21
  315. package/src/library/swc/__integration__/swc.start.test.ts +3 -21
  316. package/src/library/swc/index.ts +1 -1
  317. package/src/library/webpack/application/client/common.ts +7 -7
  318. package/src/library/webpack/application/client/dev.ts +9 -9
  319. package/src/library/webpack/application/client/prod/optimization/splitChunks.ts +43 -44
  320. package/src/library/webpack/application/client/prod.ts +3 -5
  321. package/src/library/webpack/application/server/common.ts +5 -8
  322. package/src/library/webpack/application/server/dev.ts +5 -6
  323. package/src/library/webpack/application/server/prod.ts +3 -9
  324. package/src/library/webpack/blocks/apiResolve.ts +1 -1
  325. package/src/library/webpack/blocks/configResolve.ts +2 -2
  326. package/src/library/webpack/blocks/configToEnv.ts +5 -2
  327. package/src/library/webpack/blocks/css.ts +26 -17
  328. package/src/library/webpack/blocks/extractCssPlugin.ts +11 -10
  329. package/src/library/webpack/blocks/filesClient.ts +52 -50
  330. package/src/library/webpack/blocks/filesServer.ts +4 -3
  331. package/src/library/webpack/blocks/js.ts +3 -2
  332. package/src/library/webpack/blocks/nodeClient.ts +4 -3
  333. package/src/library/webpack/blocks/optimize.ts +5 -6
  334. package/src/library/webpack/blocks/pagesResolve.ts +1 -1
  335. package/src/library/webpack/blocks/postcssAssets.ts +6 -7
  336. package/src/library/webpack/blocks/serverInline.ts +2 -1
  337. package/src/library/webpack/blocks/ts.ts +2 -1
  338. package/src/library/webpack/child-app/client/common.ts +3 -3
  339. package/src/library/webpack/child-app/client/dev.ts +8 -8
  340. package/src/library/webpack/child-app/client/prod.ts +2 -2
  341. package/src/library/webpack/child-app/common.ts +2 -2
  342. package/src/library/webpack/child-app/server/common.ts +3 -3
  343. package/src/library/webpack/child-app/server/dev.ts +2 -2
  344. package/src/library/webpack/child-app/server/prod.ts +2 -2
  345. package/src/library/webpack/common/client/prod.ts +10 -6
  346. package/src/library/webpack/common/main.ts +9 -4
  347. package/src/library/webpack/common/server/prod.ts +10 -6
  348. package/src/library/webpack/index.ts +2 -3
  349. package/src/library/webpack/loaders/image-loader/index.ts +2 -1
  350. package/src/library/webpack/loaders/pagesResolve.ts +17 -5
  351. package/src/library/webpack/loaders/replaceContent.ts +11 -2
  352. package/src/library/webpack/module/client/common.ts +1 -1
  353. package/src/library/webpack/module/externals.ts +1 -1
  354. package/src/library/webpack/module/resolveExternal.ts +1 -1
  355. package/src/library/webpack/module/server/common.ts +1 -1
  356. package/src/library/webpack/plugins/LazyModuleInitialization.ts +6 -1
  357. package/src/library/webpack/plugins/WebpackBar/utils/index.ts +8 -8
  358. package/src/library/webpack/plugins/WebpackBar/utils/webpack.ts +1 -1
  359. package/src/library/webpack/types/webpack.ts +2 -2
  360. package/src/library/webpack/utils/files.ts +4 -3
  361. package/src/library/webpack/utils/transpiler.ts +6 -11
  362. package/src/library/webpack/utils/workersPool.ts +6 -9
  363. package/src/models/config.spec.ts +352 -0
  364. package/src/models/config.ts +41 -9
  365. package/src/schema/ConfigSchema.ts +15 -4
  366. package/src/schema/autogeneratedSchema.json +1808 -2074
  367. package/src/schema/tramvai.spec.ts +89 -184
  368. package/src/typings/configEntry/application.ts +85 -87
  369. package/src/typings/configEntry/child-app.ts +10 -30
  370. package/src/typings/configEntry/cli.ts +271 -0
  371. package/src/typings/configEntry/common.ts +26 -278
  372. package/src/typings/configEntry/module.ts +11 -30
  373. package/src/typings/configEntry/package.ts +3 -1
  374. package/src/ui/commander.ts +1 -1
  375. package/src/utils/applyTemplate.ts +2 -2
  376. package/src/utils/safeRequire.ts +6 -1
  377. package/src/utils/webpackBuild.ts +4 -3
  378. package/lib/library/webpack/plugins/DedupePlugin/DedupePlugin.d.ts +0 -37
  379. package/lib/library/webpack/plugins/DedupePlugin/DedupePlugin.js +0 -241
  380. package/lib/library/webpack/plugins/DedupePlugin/DedupePlugin.js.map +0 -1
  381. package/lib/library/webpack/plugins/DedupePlugin/index.d.ts +0 -1
  382. package/lib/library/webpack/plugins/DedupePlugin/index.js +0 -6
  383. package/lib/library/webpack/plugins/DedupePlugin/index.js.map +0 -1
  384. package/lib/typings/configEntry/CheckAsyncTsConfig.d.ts +0 -13
  385. package/lib/typings/configEntry/CheckAsyncTsConfig.js.map +0 -1
  386. package/src/library/webpack/plugins/DedupePlugin/DedupePlugin.spec.ts +0 -95
  387. package/src/library/webpack/plugins/DedupePlugin/DedupePlugin.ts +0 -307
  388. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-1/index.js +0 -3
  389. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-1/node_modules/package-dep/index.js +0 -1
  390. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-1/node_modules/package-dep/package.json +0 -7
  391. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-1/package.json +0 -7
  392. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-2/index.js +0 -3
  393. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-2/node_modules/package-dep/index.js +0 -1
  394. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-2/node_modules/package-dep/package.json +0 -7
  395. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-2/package.json +0 -7
  396. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-3/index.js +0 -3
  397. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-3/node_modules/package-dep/index.js +0 -1
  398. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-3/node_modules/package-dep/package.json +0 -7
  399. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-3/package.json +0 -7
  400. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-dep/index.js +0 -1
  401. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-dep/package.json +0 -7
  402. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-1/index.js +0 -3
  403. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-1/node_modules/package-esm-dep/index.js +0 -1
  404. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-1/node_modules/package-esm-dep/package.json +0 -8
  405. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-1/package.json +0 -8
  406. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-2/index.js +0 -3
  407. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-2/node_modules/package-esm-dep/index.js +0 -1
  408. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-2/node_modules/package-esm-dep/package.json +0 -8
  409. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/node_modules/package-esm-2/package.json +0 -8
  410. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/package-lock.json +0 -0
  411. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/package.json +0 -14
  412. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/src/index.js +0 -9
  413. package/src/library/webpack/plugins/DedupePlugin/__fixtures__/dedupe/tramvai.json +0 -67
  414. package/src/library/webpack/plugins/DedupePlugin/__integration__/DedupePlugin.test.ts +0 -90
  415. package/src/library/webpack/plugins/DedupePlugin/index.ts +0 -1
  416. package/src/typings/configEntry/CheckAsyncTsConfig.ts +0 -15
@@ -14,51 +14,6 @@ describe('JSON schema для tramvai.json', () => {
14
14
  expect(() => ajv.compile(schema)).not.toThrow();
15
15
  });
16
16
 
17
- it('Базовая конфигурация проходит валидацию схемы', () => {
18
- const ajv = new Ajv({ allErrors: true });
19
- const validate = ajv.compile(schema);
20
-
21
- const baseConfig = {
22
- projects: {
23
- app: {
24
- name: 'test-app',
25
- root: 'src/app',
26
- type: 'application',
27
- commands: {
28
- build: {
29
- options: {},
30
- configurations: {},
31
- },
32
- serve: {
33
- configurations: {},
34
- notifications: {},
35
- },
36
- },
37
- },
38
- module: {
39
- name: 'test-module',
40
- root: 'src/module',
41
- type: 'module',
42
- commands: {
43
- build: {
44
- options: {},
45
- configurations: {},
46
- },
47
- serve: {
48
- configurations: {},
49
- notifications: {},
50
- },
51
- },
52
- },
53
- },
54
- };
55
-
56
- const valid = validate(baseConfig);
57
-
58
- expect(valid).toBe(true);
59
- expect(validate.errors).toBe(null);
60
- });
61
-
62
17
  it('Применяет значения по умолчанию', () => {
63
18
  (resolve as any).mockReturnValue('mock');
64
19
  (requireResolve as any).mockReturnValue('mock');
@@ -85,165 +40,115 @@ describe('JSON schema для tramvai.json', () => {
85
40
  const valid = validate(config);
86
41
 
87
42
  expect(valid).toBe(true);
43
+ expect(validate.errors).toBe(null);
88
44
  expect(config).not.toEqual(originalConfig);
89
45
 
90
46
  expect(config).toMatchInlineSnapshot(`
91
47
  {
92
48
  "projects": {
93
49
  "app": {
94
- "commands": {
95
- "build": {
96
- "configurations": {
97
- "checkAsyncTs": false,
98
- "commonChunk": false,
99
- "commonChunkSplitNumber": 3,
100
- "dedupe": "equality",
101
- "definePlugin": {
102
- "dev": {},
103
- "prod": {},
104
- },
105
- "enableFillActionNamePlugin": false,
106
- "experiments": {
107
- "minicss": {
108
- "useImportModule": true,
109
- },
110
- "transpilation": {
111
- "loader": "babel",
112
- },
113
- "webpack": {
114
- "backCompat": false,
115
- "cacheUnaffected": true,
116
- },
117
- },
118
- "externals": [],
119
- "fileSystemPages": {
120
- "enable": false,
121
- "pagesDir": "pages",
122
- "routesDir": "routes",
123
- },
124
- "generateDataQaTag": false,
125
- "granularChunks": true,
126
- "granularChunksMinSize": 20000,
127
- "granularChunksSplitNumber": 2,
128
- "modern": true,
129
- "postcss": {
130
- "config": "postcss.config",
131
- },
132
- "removeTypeofWindow": true,
133
- "sourceMap": false,
134
- "sourceMapServer": false,
135
- "terserParallel": true,
136
- "transpileOnlyModernLibs": true,
137
- },
138
- "options": {
139
- "outputClient": "dist/client",
140
- "outputServer": "dist/server",
141
- "outputStatic": "dist/static",
142
- "polyfill": "",
143
- "server": "src/server",
144
- "serverApiDir": "src/api",
145
- },
50
+ "checkAsyncTs": false,
51
+ "cssMinimize": "css-minimizer",
52
+ "dedupe": {
53
+ "enabled": true,
54
+ "strategy": "equality",
55
+ },
56
+ "define": {
57
+ "development": {},
58
+ "production": {},
59
+ "shared": {},
60
+ },
61
+ "enableFillActionNamePlugin": false,
62
+ "experiments": {
63
+ "minicss": {
64
+ "useImportModule": true,
146
65
  },
147
- "serve": {
148
- "configurations": {
149
- "experiments": {
150
- "minicss": {
151
- "useImportModule": true,
152
- },
153
- "serverRunner": "process",
154
- "transpilation": {
155
- "loader": "babel",
156
- },
157
- "webpack": {
158
- "backCompat": false,
159
- "cacheUnaffected": true,
160
- },
161
- },
162
- "externals": [
163
- "react$",
164
- "react-dom",
165
- "prop-types",
166
- "express",
167
- "core-js",
168
- ],
169
- "hotRefresh": true,
170
- "modern": true,
171
- "sourceMap": false,
172
- },
173
- "notifications": {},
66
+ "serverRunner": "process",
67
+ "transpilation": {
68
+ "loader": "babel",
174
69
  },
70
+ "webpack": {
71
+ "backCompat": false,
72
+ "cacheUnaffected": true,
73
+ },
74
+ },
75
+ "externals": [],
76
+ "fileSystemPages": {
77
+ "enabled": false,
78
+ "pagesDir": "pages",
79
+ "routesDir": "routes",
175
80
  },
81
+ "generateDataQaTag": false,
82
+ "hotRefresh": {
83
+ "enabled": true,
84
+ },
85
+ "modern": true,
176
86
  "name": "test-app",
87
+ "notifications": {},
88
+ "output": {
89
+ "client": "dist/client",
90
+ "server": "dist/server",
91
+ "static": "dist/static",
92
+ },
93
+ "postcss": {},
177
94
  "root": "src/app",
95
+ "serverApiDir": "src/api",
96
+ "sourceMap": false,
97
+ "splitChunks": {
98
+ "commonChunkSplitNumber": 3,
99
+ "granularChunksMinSize": 20000,
100
+ "granularChunksSplitNumber": 2,
101
+ "mode": "granularChunks",
102
+ },
103
+ "terser": {
104
+ "parallel": true,
105
+ },
106
+ "transpileOnlyModernLibs": true,
178
107
  "type": "application",
108
+ "webpack": {},
179
109
  },
180
110
  "module": {
181
- "commands": {
182
- "build": {
183
- "configurations": {
184
- "dedupe": "equality",
185
- "definePlugin": {
186
- "dev": {},
187
- "prod": {},
188
- },
189
- "enableFillActionNamePlugin": false,
190
- "experiments": {
191
- "minicss": {
192
- "useImportModule": true,
193
- },
194
- "transpilation": {
195
- "loader": "babel",
196
- },
197
- "webpack": {
198
- "backCompat": false,
199
- "cacheUnaffected": true,
200
- },
201
- },
202
- "fileSystemPages": {
203
- "enable": false,
204
- "pagesDir": "pages",
205
- "routesDir": "routes",
206
- },
207
- "generateDataQaTag": false,
208
- "modern": true,
209
- "postcss": {
210
- "config": "postcss.config",
211
- "cssLocalIdentName": "[hash:base64:5]",
212
- },
213
- "removeTypeofWindow": true,
214
- "sourceMap": false,
215
- "sourceMapServer": false,
216
- "terserParallel": true,
217
- "transpileOnlyModernLibs": true,
218
- },
219
- "options": {
220
- "output": "dist/modules",
221
- },
111
+ "cssMinimize": "css-minimizer",
112
+ "dedupe": {
113
+ "enabled": true,
114
+ "strategy": "equality",
115
+ },
116
+ "define": {
117
+ "development": {},
118
+ "production": {},
119
+ "shared": {},
120
+ },
121
+ "enableFillActionNamePlugin": false,
122
+ "experiments": {
123
+ "minicss": {
124
+ "useImportModule": true,
125
+ },
126
+ "transpilation": {
127
+ "loader": "babel",
222
128
  },
223
- "serve": {
224
- "configurations": {
225
- "experiments": {
226
- "minicss": {
227
- "useImportModule": true,
228
- },
229
- "transpilation": {
230
- "loader": "babel",
231
- },
232
- "webpack": {
233
- "backCompat": false,
234
- "cacheUnaffected": true,
235
- },
236
- },
237
- "hotRefresh": true,
238
- "modern": true,
239
- "sourceMap": false,
240
- },
241
- "notifications": {},
129
+ "webpack": {
130
+ "backCompat": false,
131
+ "cacheUnaffected": true,
242
132
  },
243
133
  },
134
+ "generateDataQaTag": false,
135
+ "hotRefresh": {
136
+ "enabled": true,
137
+ },
244
138
  "name": "test-module",
139
+ "notifications": {},
140
+ "output": "dist/modules",
141
+ "postcss": {
142
+ "cssLocalIdentName": "[hash:base64:5]",
143
+ },
245
144
  "root": "src/module",
145
+ "sourceMap": false,
146
+ "terser": {
147
+ "parallel": true,
148
+ },
149
+ "transpileOnlyModernLibs": true,
246
150
  "type": "module",
151
+ "webpack": {},
247
152
  },
248
153
  },
249
154
  }
@@ -1,129 +1,127 @@
1
- import type { ConfigEntry, Experiments } from './common';
2
- import type { CheckAsyncTsConfig } from './CheckAsyncTsConfig';
1
+ // eslint-disable-next-line no-restricted-imports
2
+ import type { ForkTsCheckerWebpackPluginOptions } from 'fork-ts-checker-webpack-plugin/lib/ForkTsCheckerWebpackPluginOptions';
3
+ import type { CliConfigEntry, Experiments } from './cli';
4
+ import type { OverridableOption } from './common';
3
5
 
4
- export interface ApplicationBuild {
6
+ export interface CheckAsyncTsConfig {
5
7
  /**
8
+ * при включении этого флага в build-сборку добавляется проверка типов
9
+ * при невалидных типах сборка падает
10
+ */
11
+ failOnBuild?: boolean;
12
+ /**
13
+ * дополнительные опции
14
+ * @link https://github.com/TypeStrong/fork-ts-checker-webpack-plugin
15
+ */
16
+ pluginOptions?: Partial<ForkTsCheckerWebpackPluginOptions>;
17
+ }
18
+
19
+ export interface ApplicationExperiments extends Experiments {
20
+ /**
21
+ * @title How to run server build
22
+ * @default "process"
23
+ */
24
+ serverRunner?: 'process' | 'thread';
25
+ }
26
+
27
+ export interface ApplicationConfigEntry extends CliConfigEntry {
28
+ type: 'application';
29
+ /**
30
+ * @title Path to polyfill file. By default, looks for the `src/polyfill`
31
+ */
32
+ polyfill?: string;
33
+ /**
34
+ * @title Path to folder with papi handlers
35
+ * @default "src/api"
36
+ */
37
+ serverApiDir: string;
38
+ /**
39
+ * @title Controls the cli output locations
6
40
  * @default {}
7
41
  */
8
- options?: {
9
- /**
10
- * @title `@deprecated` Vendor is not used anymore
11
- * @deprecated Vendor is not used anymore
12
- */
13
- vendor?: string;
14
- /**
15
- * @title Path to polyfill file
16
- * @default ""
17
- */
18
- polyfill?: string;
19
- /**
20
- * @title Path to server entry point
21
- * @default "src/server"
22
- */
23
- server?: string;
24
- /**
25
- * @title Path to folder with papi handlers
26
- * @default "src/api"
27
- */
28
- serverApiDir?: string;
42
+ output: {
29
43
  /**
30
44
  * @title Path to build assets for server
31
45
  * @default "dist/server"
32
46
  */
33
- outputServer?: string;
47
+ server: string;
34
48
  /**
35
49
  * @title Path to build assets for client
36
50
  * @default "dist/client"
37
51
  */
38
- outputClient?: string;
52
+ client: string;
39
53
  /**
40
54
  * @title Path to build static assets
41
55
  * @default "dist/static"
42
56
  */
43
- outputStatic?: string;
57
+ static: string;
44
58
  };
45
59
  /**
60
+ * @title Enable build for modern browsers
61
+ * @default true
62
+ */
63
+ modern?: boolean;
64
+
65
+ /**
66
+ * @title File-System Routing feature
46
67
  * @default {}
47
68
  */
48
- configurations?: ConfigEntry['commands']['build']['configurations'] & {
69
+ fileSystemPages: {
49
70
  /**
50
- * @title Separate one common chunk to many small dynamic chunks
51
- * @default true
71
+ * @title Read pages from file system
72
+ * @default false
52
73
  */
53
- granularChunks?: boolean;
74
+ enabled: boolean;
54
75
  /**
55
- * @title Move module to shared chunk if used at least as many times in other chunks
56
- * @default 2
76
+ * @title Folder with pages from which static routers are generated
77
+ * @default "routes"
57
78
  */
58
- granularChunksSplitNumber?: number;
79
+ routesDir: string | false;
59
80
  /**
60
- * @title Minimum shared chunk size in bytes
61
- * @default 20000
81
+ * @title Folder with components which can be manually added to static routers
82
+ * @default "pages"
62
83
  */
63
- granularChunksMinSize?: number;
64
- /**
65
- * @title Enable auto chunk splitting (`granularChunks` option alternative)
66
- * @default false
67
- */
68
- commonChunk?: boolean;
84
+ pagesDir: string | false;
85
+ };
86
+ /**
87
+ * @title Configure the options on webpack splitChunks
88
+ * @default {}
89
+ */
90
+ splitChunks: {
69
91
  /**
70
- * @title Move module to common chunk if used at least as many times in other chunks
71
- * @default 3
92
+ * @default "granularChunks"
72
93
  */
73
- commonChunkSplitNumber?: number;
94
+ mode: 'granularChunks' | 'commonChunk' | false;
74
95
  /**
75
- * @title Configuration for fork-ts-checker-webpack-plugin
76
- * @default false
96
+ * @title Move module to shared chunk if used at least as many times in other chunks
97
+ * @default 2
77
98
  */
78
- checkAsyncTs?: boolean | CheckAsyncTsConfig;
99
+ granularChunksSplitNumber: number;
79
100
  /**
80
- * @title Pass list to Webpack config externals field
81
- * @default []
101
+ * @title Minimum shared chunk size in bytes
102
+ * @default 20000
82
103
  */
83
- externals?: string[];
104
+ granularChunksMinSize: number;
84
105
  /**
85
- * @default {"config": "postcss.config"}
106
+ * @title `@deprecated will be removed in next major release` Move module to common chunk if used at least as many times in other chunks
107
+ * @default 3
86
108
  */
87
- postcss?: ConfigEntry['commands']['build']['configurations']['postcss'];
109
+ commonChunkSplitNumber: number;
88
110
  };
89
- }
90
-
91
- export type ApplicationServe = ConfigEntry['commands']['serve'] & {
92
111
  /**
93
- * @default {}
112
+ * @title Configuration for fork-ts-checker-webpack-plugin
113
+ * @default false
94
114
  */
95
- configurations?: ConfigEntry['commands']['serve']['configurations'] & {
96
- /**
97
- * @title Pass list to Webpack config externals field
98
- * @default ["react$", "react-dom", "prop-types", "express", "core-js"]
99
- */
100
- externals?: string[];
101
- /**
102
- * @default {}
103
- */
104
- experiments?: Experiments & {
105
- /**
106
- * @title How to run server build
107
- * @default "process"
108
- */
109
- serverRunner?: 'process' | 'thread';
110
- };
111
- };
112
- };
115
+ checkAsyncTs: boolean | CheckAsyncTsConfig;
113
116
 
114
- export interface ApplicationConfigEntry extends ConfigEntry {
115
- type: 'application';
116
117
  /**
118
+ * @title Pass list to Webpack config externals field
119
+ * @default []
120
+ */
121
+ externals: OverridableOption<string[]>;
122
+ /**
123
+ * @title Experimental settings
117
124
  * @default {}
118
125
  */
119
- commands?: {
120
- /**
121
- * @default {}
122
- */
123
- build?: ApplicationBuild;
124
- /**
125
- * @default {}
126
- */
127
- serve?: ApplicationServe;
128
- };
126
+ experiments: ApplicationExperiments;
129
127
  }
@@ -1,40 +1,20 @@
1
- import type { ConfigEntry } from './common';
1
+ import type { CliConfigEntry } from './cli';
2
2
 
3
- export interface ChildAppBuild {
4
- /**
5
- * @default {}
6
- */
7
- options?: {
8
- /**
9
- * @title Path to build module assets
10
- * @default "dist/child-app"
11
- */
12
- output?: string;
13
- };
3
+ export interface ChildAppConfigEntry extends CliConfigEntry {
4
+ type: 'child-app';
14
5
  /**
15
- * @default {}
6
+ * @title Path to build module assets
7
+ * @default "dist/child-app"
16
8
  */
17
- configurations?: ConfigEntry['commands']['build']['configurations'] & {
18
- /**
19
- * @default {"config": "postcss.config", "cssLocalIdentName": "[hash:base64:5]"}
20
- */
21
- postcss?: ConfigEntry['commands']['build']['configurations']['postcss'];
22
- };
23
- }
24
-
25
- export interface ChildAppConfigEntry extends ConfigEntry {
26
- type: 'child-app';
9
+ output: string;
27
10
  /**
28
11
  * @default {}
29
12
  */
30
- commands?: {
31
- /**
32
- * @default {}
33
- */
34
- build?: ChildAppBuild;
13
+ postcss: CliConfigEntry['postcss'] & {
35
14
  /**
36
- * @default {}
15
+ * @title CSS identifiers build algorithm
16
+ * @default "[hash:base64:5]"
37
17
  */
38
- serve?: ConfigEntry['commands']['serve'];
18
+ cssLocalIdentName?: CliConfigEntry['postcss']['cssLocalIdentName'];
39
19
  };
40
20
  }