piral-cli 1.0.0-pre.2296 → 1.0.1-beta.5640

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 (408) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -7
  3. package/lib/api.js +23 -23
  4. package/lib/api.js.map +1 -1
  5. package/lib/apps/add-piral-instance-pilet.d.ts +26 -0
  6. package/lib/apps/add-piral-instance-pilet.js +53 -0
  7. package/lib/apps/add-piral-instance-pilet.js.map +1 -0
  8. package/lib/apps/build-pilet.d.ts +33 -2
  9. package/lib/apps/build-pilet.js +159 -32
  10. package/lib/apps/build-pilet.js.map +1 -1
  11. package/lib/apps/build-piral.d.ts +18 -1
  12. package/lib/apps/build-piral.js +68 -52
  13. package/lib/apps/build-piral.js.map +1 -1
  14. package/lib/apps/debug-pilet.d.ts +38 -2
  15. package/lib/apps/debug-pilet.js +150 -108
  16. package/lib/apps/debug-pilet.js.map +1 -1
  17. package/lib/apps/debug-piral.d.ts +23 -0
  18. package/lib/apps/debug-piral.js +63 -52
  19. package/lib/apps/debug-piral.js.map +1 -1
  20. package/lib/apps/declaration-piral.js +5 -3
  21. package/lib/apps/declaration-piral.js.map +1 -1
  22. package/lib/apps/index.d.ts +3 -0
  23. package/lib/apps/index.js +8 -1
  24. package/lib/apps/index.js.map +1 -1
  25. package/lib/apps/new-pilet.d.ts +7 -3
  26. package/lib/apps/new-pilet.js +47 -52
  27. package/lib/apps/new-pilet.js.map +1 -1
  28. package/lib/apps/new-piral.d.ts +7 -3
  29. package/lib/apps/new-piral.js +33 -23
  30. package/lib/apps/new-piral.js.map +1 -1
  31. package/lib/apps/pack-pilet.d.ts +9 -0
  32. package/lib/apps/pack-pilet.js +6 -13
  33. package/lib/apps/pack-pilet.js.map +1 -1
  34. package/lib/apps/publish-pilet.d.ts +23 -3
  35. package/lib/apps/publish-pilet.js +112 -62
  36. package/lib/apps/publish-pilet.js.map +1 -1
  37. package/lib/apps/publish-piral.d.ts +6 -2
  38. package/lib/apps/publish-piral.js +30 -26
  39. package/lib/apps/publish-piral.js.map +1 -1
  40. package/lib/apps/remove-piral-instance-pilet.d.ts +22 -0
  41. package/lib/apps/remove-piral-instance-pilet.js +52 -0
  42. package/lib/apps/remove-piral-instance-pilet.js.map +1 -0
  43. package/lib/apps/run-emulator-piral.d.ts +34 -0
  44. package/lib/apps/run-emulator-piral.js +91 -0
  45. package/lib/apps/run-emulator-piral.js.map +1 -0
  46. package/lib/apps/upgrade-pilet.d.ts +6 -2
  47. package/lib/apps/upgrade-pilet.js +41 -43
  48. package/lib/apps/upgrade-pilet.js.map +1 -1
  49. package/lib/apps/upgrade-piral.d.ts +2 -2
  50. package/lib/apps/upgrade-piral.js +21 -20
  51. package/lib/apps/upgrade-piral.js.map +1 -1
  52. package/lib/apps/validate-pilet.js +30 -36
  53. package/lib/apps/validate-pilet.js.map +1 -1
  54. package/lib/apps/validate-piral.js +13 -10
  55. package/lib/apps/validate-piral.js.map +1 -1
  56. package/lib/build/bundler-calls.d.ts +3 -0
  57. package/lib/build/bundler-calls.js +117 -0
  58. package/lib/build/bundler-calls.js.map +1 -0
  59. package/lib/build/run-build-pilet.d.ts +1 -0
  60. package/lib/build/run-build-pilet.js +65 -0
  61. package/lib/build/run-build-pilet.js.map +1 -0
  62. package/lib/build/run-build-piral.d.ts +1 -0
  63. package/lib/build/run-build-piral.js +67 -0
  64. package/lib/build/run-build-piral.js.map +1 -0
  65. package/lib/build/run-debug-mono-piral.d.ts +1 -0
  66. package/lib/build/run-debug-mono-piral.js +70 -0
  67. package/lib/build/run-debug-mono-piral.js.map +1 -0
  68. package/lib/build/run-debug-pilet.d.ts +1 -0
  69. package/lib/build/run-debug-pilet.js +89 -0
  70. package/lib/build/run-debug-pilet.js.map +1 -0
  71. package/lib/build/run-debug-piral.d.ts +1 -0
  72. package/lib/build/run-debug-piral.js +85 -0
  73. package/lib/build/run-debug-piral.js.map +1 -0
  74. package/lib/bundler.js +75 -26
  75. package/lib/bundler.js.map +1 -1
  76. package/lib/cli.js +7 -4
  77. package/lib/cli.js.map +1 -1
  78. package/lib/commands.js +266 -46
  79. package/lib/commands.js.map +1 -1
  80. package/lib/common/archive.d.ts +4 -0
  81. package/lib/common/archive.js +31 -10
  82. package/lib/common/archive.js.map +1 -1
  83. package/lib/common/browser.d.ts +2 -1
  84. package/lib/common/browser.js +17 -8
  85. package/lib/common/browser.js.map +1 -1
  86. package/lib/common/clients/index.d.ts +21 -0
  87. package/lib/common/clients/index.js +48 -0
  88. package/lib/common/clients/index.js.map +1 -0
  89. package/lib/common/clients/lerna.d.ts +7 -1
  90. package/lib/common/clients/lerna.js +93 -7
  91. package/lib/common/clients/lerna.js.map +1 -1
  92. package/lib/common/clients/npm.d.ts +6 -1
  93. package/lib/common/clients/npm.js +66 -18
  94. package/lib/common/clients/npm.js.map +1 -1
  95. package/lib/common/clients/pnp.d.ts +7 -0
  96. package/lib/common/clients/pnp.js +104 -0
  97. package/lib/common/clients/pnp.js.map +1 -0
  98. package/lib/common/clients/pnpm.d.ts +5 -0
  99. package/lib/common/clients/pnpm.js +55 -6
  100. package/lib/common/clients/pnpm.js.map +1 -1
  101. package/lib/common/clients/rush.d.ts +7 -0
  102. package/lib/common/clients/rush.js +127 -0
  103. package/lib/common/clients/rush.js.map +1 -0
  104. package/lib/common/clients/yarn.d.ts +5 -0
  105. package/lib/common/clients/yarn.js +57 -6
  106. package/lib/common/clients/yarn.js.map +1 -1
  107. package/lib/common/compatibility.js +14 -9
  108. package/lib/common/compatibility.js.map +1 -1
  109. package/lib/common/config.d.ts +52 -1
  110. package/lib/common/config.js +10 -30
  111. package/lib/common/config.js.map +1 -1
  112. package/lib/common/constants.d.ts +10 -2
  113. package/lib/common/constants.js +22 -4
  114. package/lib/common/constants.js.map +1 -1
  115. package/lib/common/declaration.d.ts +2 -1
  116. package/lib/common/declaration.js +113 -56
  117. package/lib/common/declaration.js.map +1 -1
  118. package/lib/common/emoji.d.ts +8 -0
  119. package/lib/common/emoji.js +10 -1
  120. package/lib/common/emoji.js.map +1 -1
  121. package/lib/common/emulator.d.ts +2 -2
  122. package/lib/common/emulator.js +45 -32
  123. package/lib/common/emulator.js.map +1 -1
  124. package/lib/common/enums.d.ts +0 -4
  125. package/lib/common/enums.js +1 -6
  126. package/lib/common/enums.js.map +1 -1
  127. package/lib/common/envs.js +16 -5
  128. package/lib/common/envs.js.map +1 -1
  129. package/lib/common/hash.d.ts +1 -0
  130. package/lib/common/hash.js +8 -3
  131. package/lib/common/hash.js.map +1 -1
  132. package/lib/common/http.d.ts +5 -2
  133. package/lib/common/http.js +65 -23
  134. package/lib/common/http.js.map +1 -1
  135. package/lib/common/importmap.d.ts +2 -0
  136. package/lib/common/importmap.js +202 -0
  137. package/lib/common/importmap.js.map +1 -0
  138. package/lib/common/index.d.ts +10 -0
  139. package/lib/common/index.js +15 -1
  140. package/lib/common/index.js.map +1 -1
  141. package/lib/common/info.d.ts +5 -0
  142. package/lib/common/info.js +9 -2
  143. package/lib/common/info.js.map +1 -1
  144. package/lib/common/injectors.d.ts +36 -8
  145. package/lib/common/injectors.js +46 -19
  146. package/lib/common/injectors.js.map +1 -1
  147. package/lib/common/inspect.d.ts +5 -3
  148. package/lib/common/inspect.js +15 -15
  149. package/lib/common/inspect.js.map +1 -1
  150. package/lib/common/interactive.d.ts +9 -0
  151. package/lib/common/interactive.js +60 -1
  152. package/lib/common/interactive.js.map +1 -1
  153. package/lib/common/io.d.ts +9 -3
  154. package/lib/common/io.js +219 -116
  155. package/lib/common/io.js.map +1 -1
  156. package/lib/common/language.d.ts +9 -6
  157. package/lib/common/language.js +68 -12
  158. package/lib/common/language.js.map +1 -1
  159. package/lib/common/log.d.ts +5 -3
  160. package/lib/common/log.js +34 -48
  161. package/lib/common/log.js.map +1 -1
  162. package/lib/common/npm.d.ts +17 -16
  163. package/lib/common/npm.js +262 -158
  164. package/lib/common/npm.js.map +1 -1
  165. package/lib/common/pack.js +47 -26
  166. package/lib/common/pack.js.map +1 -1
  167. package/lib/common/package.d.ts +43 -20
  168. package/lib/common/package.js +377 -213
  169. package/lib/common/package.js.map +1 -1
  170. package/lib/common/parallel.d.ts +1 -0
  171. package/lib/common/parallel.js +29 -0
  172. package/lib/common/parallel.js.map +1 -0
  173. package/lib/common/patcher.js +20 -20
  174. package/lib/common/patcher.js.map +1 -1
  175. package/lib/common/platform.d.ts +13 -0
  176. package/lib/common/platform.js +29 -0
  177. package/lib/common/platform.js.map +1 -0
  178. package/lib/common/port.d.ts +1 -0
  179. package/lib/common/port.js +14 -4
  180. package/lib/common/port.js.map +1 -1
  181. package/lib/common/rules.js +4 -4
  182. package/lib/common/rules.js.map +1 -1
  183. package/lib/common/scaffold.d.ts +18 -4
  184. package/lib/common/scaffold.js +59 -36
  185. package/lib/common/scaffold.js.map +1 -1
  186. package/lib/common/scripts.js +8 -8
  187. package/lib/common/scripts.js.map +1 -1
  188. package/lib/common/shell.d.ts +2 -0
  189. package/lib/common/shell.js +33 -0
  190. package/lib/common/shell.js.map +1 -0
  191. package/lib/common/spec.d.ts +29 -0
  192. package/lib/common/spec.js +69 -0
  193. package/lib/common/spec.js.map +1 -0
  194. package/lib/common/template.d.ts +1 -2
  195. package/lib/common/template.js +23 -22
  196. package/lib/common/template.js.map +1 -1
  197. package/lib/common/url.d.ts +1 -0
  198. package/lib/common/url.js +17 -0
  199. package/lib/common/url.js.map +1 -0
  200. package/lib/common/utils.d.ts +1 -0
  201. package/lib/common/utils.js +8 -0
  202. package/lib/common/utils.js.map +1 -0
  203. package/lib/common/version.d.ts +2 -0
  204. package/lib/common/version.js +130 -0
  205. package/lib/common/version.js.map +1 -0
  206. package/lib/common/watcher.d.ts +13 -0
  207. package/lib/common/watcher.js +78 -0
  208. package/lib/common/watcher.js.map +1 -0
  209. package/lib/external/index.js +59413 -57862
  210. package/lib/helpers.d.ts +6 -6
  211. package/lib/helpers.js +10 -25
  212. package/lib/helpers.js.map +1 -1
  213. package/lib/index.js +5 -1
  214. package/lib/index.js.map +1 -1
  215. package/lib/inject.js +2 -2
  216. package/lib/inject.js.map +1 -1
  217. package/lib/injectors/pilet-injector.d.ts +75 -0
  218. package/lib/injectors/pilet-injector.js +246 -0
  219. package/lib/injectors/pilet-injector.js.map +1 -0
  220. package/lib/injectors/{piral.d.ts → piral-injector.d.ts} +10 -2
  221. package/lib/injectors/piral-injector.js +97 -0
  222. package/lib/injectors/piral-injector.js.map +1 -0
  223. package/lib/messages.d.ts +567 -47
  224. package/lib/messages.js +638 -51
  225. package/lib/messages.js.map +1 -1
  226. package/lib/pb-cli.js +1 -1
  227. package/lib/pb-cli.js.map +1 -1
  228. package/lib/pilet-cli.js +1 -1
  229. package/lib/pilet-cli.js.map +1 -1
  230. package/lib/piral-cli.js +1 -1
  231. package/lib/piral-cli.js.map +1 -1
  232. package/lib/platforms/node.d.ts +8 -0
  233. package/lib/platforms/node.js +30 -0
  234. package/lib/platforms/node.js.map +1 -0
  235. package/lib/platforms/web.d.ts +8 -0
  236. package/lib/platforms/web.js +120 -0
  237. package/lib/platforms/web.js.map +1 -0
  238. package/lib/plugin.js +36 -11
  239. package/lib/plugin.js.map +1 -1
  240. package/lib/questionnaire.d.ts +1 -1
  241. package/lib/questionnaire.js +9 -4
  242. package/lib/questionnaire.js.map +1 -1
  243. package/lib/release.d.ts +1 -1
  244. package/lib/release.js +38 -6
  245. package/lib/release.js.map +1 -1
  246. package/lib/resolvers.js +13 -13
  247. package/lib/resolvers.js.map +1 -1
  248. package/lib/rules/index.js +8 -8
  249. package/lib/rules/index.js.map +1 -1
  250. package/lib/rules/pilet-has-externals-as-peers.d.ts +1 -1
  251. package/lib/rules/pilet-has-externals-as-peers.js +9 -7
  252. package/lib/rules/pilet-has-externals-as-peers.js.map +1 -1
  253. package/lib/rules/pilet-has-no-self-reference.d.ts +1 -1
  254. package/lib/rules/pilet-has-no-self-reference.js +2 -2
  255. package/lib/rules/pilet-has-no-self-reference.js.map +1 -1
  256. package/lib/rules/pilet-has-no-third-party-dependency.d.ts +1 -1
  257. package/lib/rules/pilet-stays-small.d.ts +1 -1
  258. package/lib/rules/pilet-stays-small.js +4 -4
  259. package/lib/rules/pilet-stays-small.js.map +1 -1
  260. package/lib/rules/pilet-uses-latest-piral.d.ts +1 -1
  261. package/lib/rules/pilet-uses-latest-piral.js +18 -9
  262. package/lib/rules/pilet-uses-latest-piral.js.map +1 -1
  263. package/lib/rules/piral-depends-on-piral.d.ts +1 -1
  264. package/lib/rules/piral-entry-ends-with-html.d.ts +1 -1
  265. package/lib/rules/piral-entry-ends-with-html.js +1 -1
  266. package/lib/rules/piral-entry-ends-with-html.js.map +1 -1
  267. package/lib/rules/piral-has-valid-devDependencies.d.ts +1 -1
  268. package/lib/rules/piral-has-valid-externals.d.ts +1 -1
  269. package/lib/rules/piral-has-valid-externals.js +10 -24
  270. package/lib/rules/piral-has-valid-externals.js.map +1 -1
  271. package/lib/rules/piral-has-valid-files.d.ts +1 -1
  272. package/lib/rules/piral-has-valid-files.js +5 -5
  273. package/lib/rules/piral-has-valid-files.js.map +1 -1
  274. package/lib/rules/piral-has-valid-scripts.d.ts +1 -1
  275. package/lib/runner.js +1 -1
  276. package/lib/runner.js.map +1 -1
  277. package/lib/select.js +6 -6
  278. package/lib/select.js.map +1 -1
  279. package/lib/types/common.d.ts +88 -8
  280. package/lib/types/common.js.map +1 -1
  281. package/lib/types/index.js +5 -1
  282. package/lib/types/index.js.map +1 -1
  283. package/lib/types/internal.d.ts +12 -13
  284. package/lib/types/public.d.ts +89 -23
  285. package/package.json +19 -16
  286. package/src/apps/add-piral-instance-pilet.ts +98 -0
  287. package/src/apps/build-pilet.ts +286 -38
  288. package/src/apps/build-piral.test.ts +20 -7
  289. package/src/apps/build-piral.ts +90 -39
  290. package/src/apps/debug-pilet.ts +229 -123
  291. package/src/apps/debug-piral.ts +121 -68
  292. package/src/apps/declaration-piral.ts +4 -2
  293. package/src/apps/index.ts +3 -0
  294. package/src/apps/new-pilet.test.ts +28 -11
  295. package/src/apps/new-pilet.ts +60 -48
  296. package/src/apps/new-piral.test.ts +25 -13
  297. package/src/apps/new-piral.ts +43 -19
  298. package/src/apps/pack-pilet.test.ts +2 -2
  299. package/src/apps/pack-pilet.ts +12 -10
  300. package/src/apps/publish-pilet.ts +148 -43
  301. package/src/apps/publish-piral.ts +38 -11
  302. package/src/apps/remove-piral-instance-pilet.ts +92 -0
  303. package/src/apps/run-emulator-piral.ts +154 -0
  304. package/src/apps/upgrade-pilet.ts +37 -31
  305. package/src/apps/upgrade-piral.ts +9 -7
  306. package/src/apps/validate-pilet.ts +30 -22
  307. package/src/apps/validate-piral.ts +5 -2
  308. package/src/build/bundler-calls.ts +133 -0
  309. package/src/build/run-build-pilet.ts +91 -0
  310. package/src/build/run-build-piral.ts +93 -0
  311. package/src/build/run-debug-mono-piral.ts +86 -0
  312. package/src/build/run-debug-pilet.ts +116 -0
  313. package/src/build/run-debug-piral.ts +105 -0
  314. package/src/bundler.test.ts +86 -68
  315. package/src/bundler.ts +74 -19
  316. package/src/cli.ts +6 -2
  317. package/src/commands.ts +273 -44
  318. package/src/common/archive.test.ts +51 -45
  319. package/src/common/archive.ts +28 -1
  320. package/src/common/browser.test.ts +20 -10
  321. package/src/common/browser.ts +13 -6
  322. package/src/common/clients/index.ts +41 -0
  323. package/src/common/clients/lerna.ts +85 -1
  324. package/src/common/clients/npm.ts +56 -14
  325. package/src/common/clients/pnp.ts +84 -0
  326. package/src/common/clients/pnpm.ts +45 -1
  327. package/src/common/clients/rush.ts +118 -0
  328. package/src/common/clients/yarn.ts +49 -3
  329. package/src/common/compatibility.ts +8 -1
  330. package/src/common/config.ts +57 -22
  331. package/src/common/constants.ts +21 -3
  332. package/src/common/declaration.ts +124 -50
  333. package/src/common/emoji.ts +9 -0
  334. package/src/common/emulator.ts +43 -23
  335. package/src/common/enums.ts +0 -5
  336. package/src/common/envs.ts +15 -3
  337. package/src/common/hash.ts +5 -0
  338. package/src/common/http.test.ts +76 -64
  339. package/src/common/http.ts +88 -24
  340. package/src/common/importmap.ts +242 -0
  341. package/src/common/index.ts +10 -0
  342. package/src/common/info.ts +9 -1
  343. package/src/common/injectors.ts +49 -22
  344. package/src/common/inspect.ts +13 -14
  345. package/src/common/interactive.test.ts +6 -0
  346. package/src/common/interactive.ts +69 -1
  347. package/src/common/io.ts +199 -82
  348. package/src/common/language.ts +87 -10
  349. package/src/common/log.ts +32 -46
  350. package/src/common/npm.test.ts +187 -166
  351. package/src/common/npm.ts +263 -119
  352. package/src/common/pack.test.ts +11 -13
  353. package/src/common/pack.ts +60 -21
  354. package/src/common/package.test.ts +59 -49
  355. package/src/common/package.ts +406 -167
  356. package/src/common/parallel.test.ts +28 -0
  357. package/src/common/parallel.ts +21 -0
  358. package/src/common/platform.ts +31 -0
  359. package/src/common/port.test.ts +4 -1
  360. package/src/common/port.ts +10 -0
  361. package/src/common/rules.test.ts +3 -3
  362. package/src/common/scaffold.ts +69 -41
  363. package/src/common/scripts.ts +5 -4
  364. package/src/common/shell.ts +34 -0
  365. package/src/common/spec.ts +69 -0
  366. package/src/common/template.ts +20 -18
  367. package/src/common/url.test.ts +28 -0
  368. package/src/common/url.ts +15 -0
  369. package/src/common/utils.ts +3 -0
  370. package/src/common/version.test.ts +233 -0
  371. package/src/common/version.ts +142 -0
  372. package/src/common/watcher.ts +89 -0
  373. package/src/external/index.test.ts +2 -2
  374. package/src/external/index.ts +7 -3
  375. package/src/external/resolve.ts +29 -0
  376. package/src/helpers.test.ts +2 -22
  377. package/src/helpers.ts +21 -30
  378. package/src/injectors/{pilet.test.ts → pilet-injector.test.ts} +13 -4
  379. package/src/injectors/pilet-injector.ts +346 -0
  380. package/src/injectors/{piral.test.ts → piral-injector.test.ts} +14 -5
  381. package/src/injectors/piral-injector.ts +130 -0
  382. package/src/messages.ts +649 -63
  383. package/src/platforms/node.ts +16 -0
  384. package/src/platforms/web.ts +148 -0
  385. package/src/plugin.ts +34 -5
  386. package/src/questionnaire.ts +17 -3
  387. package/src/release.ts +47 -5
  388. package/src/rules/index.ts +1 -1
  389. package/src/rules/pilet-has-externals-as-peers.test.ts +3 -2
  390. package/src/rules/pilet-has-externals-as-peers.ts +9 -7
  391. package/src/rules/pilet-has-no-self-reference.ts +1 -1
  392. package/src/rules/pilet-stays-small.ts +1 -1
  393. package/src/rules/pilet-uses-latest-piral.ts +22 -12
  394. package/src/rules/piral-has-valid-externals.ts +10 -29
  395. package/src/types/common.ts +99 -9
  396. package/src/types/internal.ts +14 -14
  397. package/src/types/public.ts +93 -27
  398. package/lib/external/child.js +0 -144
  399. package/lib/external/classes.trie +0 -0
  400. package/lib/external/xdg-open +0 -1066
  401. package/lib/injectors/pilet.d.ts +0 -47
  402. package/lib/injectors/pilet.js +0 -187
  403. package/lib/injectors/pilet.js.map +0 -1
  404. package/lib/injectors/piral.js +0 -62
  405. package/lib/injectors/piral.js.map +0 -1
  406. package/src/injectors/pilet.ts +0 -219
  407. package/src/injectors/piral.ts +0 -76
  408. package/templates/piral-index.js.ejs +0 -16
@@ -6,50 +6,63 @@ import {
6
6
  callPiralDebug,
7
7
  callDebugPiralFromMonoRepo,
8
8
  } from './bundler';
9
+ import { callDynamic, callStatic } from './build/bundler-calls';
10
+ import * as common from './common';
9
11
 
10
- let common: any;
11
- let defaults = {
12
+ const defaults = {
12
13
  bundler: false,
13
14
  };
14
15
 
16
+ jest.mock('./build/bundler-calls.ts', () => ({
17
+ callDynamic: jest.fn(() =>
18
+ Promise.resolve({
19
+ bundle: {},
20
+ }),
21
+ ),
22
+ callStatic: jest.fn(() =>
23
+ Promise.resolve({
24
+ bundle: {},
25
+ }),
26
+ ),
27
+ }));
28
+
15
29
  jest.mock('./inject', () => ({
16
30
  inject() {
17
31
  if (defaults.bundler) {
18
32
  setBundler({
19
33
  name: 'default',
20
34
  actions: {
21
- buildPilet: { run: jest.fn(() => Promise.resolve({})) },
22
- debugPilet: { run: jest.fn(() => Promise.resolve({})) },
23
- buildPiral: { run: jest.fn(() => Promise.resolve({})) },
24
- debugPiral: { run: jest.fn(() => Promise.resolve({})) },
25
- watchPiral: { run: jest.fn(() => Promise.resolve({})) },
35
+ buildPilet: { path: '' },
36
+ debugPilet: { path: '' },
37
+ buildPiral: { path: '' },
38
+ debugPiral: { path: '' },
39
+ watchPiral: { path: '' },
26
40
  } as any,
27
41
  });
28
42
  }
29
43
  },
30
44
  }));
31
45
 
32
- jest.mock(
33
- './common',
34
- () =>
35
- (common = {
36
- config: {
37
- bundler: 'parcel',
38
- },
39
- cliVersion: '1.0.0',
40
- installPackage: jest.fn(),
41
- fail(msg) {
42
- throw new Error(msg);
43
- },
44
- progress() {},
45
- log() {},
46
- determineNpmClient() {
47
- return 'npm';
48
- },
49
- patchModules: jest.fn(),
50
- logReset() {},
51
- }),
52
- );
46
+ jest.mock('./common', () => ({
47
+ config: {
48
+ bundler: 'parcel',
49
+ },
50
+ promptSelect(msg, choices, defval) {
51
+ return Promise.resolve(defval);
52
+ },
53
+ compatVersion: '1',
54
+ installNpmPackage: jest.fn(),
55
+ fail(msg) {
56
+ throw new Error(msg);
57
+ },
58
+ progress() {},
59
+ log() {},
60
+ determineNpmClient() {
61
+ return 'npm';
62
+ },
63
+ patchModules: jest.fn(),
64
+ logReset() {},
65
+ }));
53
66
 
54
67
  describe('Piral CLI Bundler Module', () => {
55
68
  it('fails if no default bundler can be installed, but required', async () => {
@@ -64,11 +77,11 @@ describe('Piral CLI Bundler Module', () => {
64
77
 
65
78
  it('setting the bundler can resolve it properly for call pilet build', async () => {
66
79
  const actions = {
67
- buildPilet: { run: jest.fn(() => Promise.resolve({})) },
68
- debugPilet: { run: jest.fn(() => Promise.resolve({})) },
69
- buildPiral: { run: jest.fn(() => Promise.resolve({})) },
70
- debugPiral: { run: jest.fn(() => Promise.resolve({})) },
71
- watchPiral: { run: jest.fn(() => Promise.resolve({})) },
80
+ buildPilet: { path: '1' },
81
+ debugPilet: { path: '2' },
82
+ buildPiral: { path: '3' },
83
+ debugPiral: { path: '4' },
84
+ watchPiral: { path: '5' },
72
85
  };
73
86
 
74
87
  setBundler({
@@ -76,17 +89,18 @@ describe('Piral CLI Bundler Module', () => {
76
89
  actions: actions as any,
77
90
  });
78
91
 
79
- await callPiletBuild({ root: undefined } as any, 'foo1');
80
- expect(actions.buildPilet.run).toHaveBeenCalled();
92
+ const args = { root: undefined };
93
+ await callPiletBuild(args as any, 'foo1');
94
+ expect(callStatic).toHaveBeenCalledWith('build-pilet', '1', args);
81
95
  });
82
96
 
83
97
  it('setting the bundler with optimize modules calls optimize modules', async () => {
84
98
  const actions = {
85
- buildPilet: { run: jest.fn(() => Promise.resolve({})) },
86
- debugPilet: { run: jest.fn(() => Promise.resolve({})) },
87
- buildPiral: { run: jest.fn(() => Promise.resolve({})) },
88
- debugPiral: { run: jest.fn(() => Promise.resolve({})) },
89
- watchPiral: { run: jest.fn(() => Promise.resolve({})) },
99
+ buildPilet: { path: '' },
100
+ debugPilet: { path: '' },
101
+ buildPiral: { path: '' },
102
+ debugPiral: { path: '' },
103
+ watchPiral: { path: '' },
90
104
  };
91
105
 
92
106
  setBundler({
@@ -105,11 +119,11 @@ describe('Piral CLI Bundler Module', () => {
105
119
 
106
120
  it('setting the bundler can resolve it properly for call piral build', async () => {
107
121
  const actions = {
108
- buildPilet: { run: jest.fn(() => Promise.resolve({})) },
109
- debugPilet: { run: jest.fn(() => Promise.resolve({})) },
110
- buildPiral: { run: jest.fn(() => Promise.resolve({})) },
111
- debugPiral: { run: jest.fn(() => Promise.resolve({})) },
112
- watchPiral: { run: jest.fn(() => Promise.resolve({})) },
122
+ buildPilet: { path: '1' },
123
+ debugPilet: { path: '2' },
124
+ buildPiral: { path: '3' },
125
+ debugPiral: { path: '4' },
126
+ watchPiral: { path: '5' },
113
127
  };
114
128
 
115
129
  setBundler({
@@ -117,17 +131,18 @@ describe('Piral CLI Bundler Module', () => {
117
131
  actions: actions as any,
118
132
  });
119
133
 
120
- await callPiralBuild({ root: undefined } as any, 'foo2');
121
- expect(actions.buildPiral.run).toHaveBeenCalled();
134
+ const args = { root: undefined };
135
+ await callPiralBuild(args as any, 'foo2');
136
+ expect(callStatic).toHaveBeenCalledWith('build-piral', '3', args);
122
137
  });
123
138
 
124
139
  it('setting the bundler can resolve it properly for call pilet debug', async () => {
125
140
  const actions = {
126
- buildPilet: { run: jest.fn(() => Promise.resolve({})) },
127
- debugPilet: { run: jest.fn(() => Promise.resolve({})) },
128
- buildPiral: { run: jest.fn(() => Promise.resolve({})) },
129
- debugPiral: { run: jest.fn(() => Promise.resolve({})) },
130
- watchPiral: { run: jest.fn(() => Promise.resolve({})) },
141
+ buildPilet: { path: '0' },
142
+ debugPilet: { path: '1' },
143
+ buildPiral: { path: '2' },
144
+ debugPiral: { path: '3' },
145
+ watchPiral: { path: '4' },
131
146
  };
132
147
 
133
148
  setBundler({
@@ -135,17 +150,18 @@ describe('Piral CLI Bundler Module', () => {
135
150
  actions: actions as any,
136
151
  });
137
152
 
138
- await callPiletDebug({ root: undefined } as any, 'foo3');
139
- expect(actions.debugPilet.run).toHaveBeenCalled();
153
+ const args = { root: undefined };
154
+ await callPiletDebug(args as any, 'foo3');
155
+ expect(callDynamic).toHaveBeenCalledWith('debug-pilet', '1', args);
140
156
  });
141
157
 
142
158
  it('setting the bundler can resolve it properly for call piral debug', async () => {
143
159
  const actions = {
144
- buildPilet: { run: jest.fn(() => Promise.resolve({})) },
145
- debugPilet: { run: jest.fn(() => Promise.resolve({})) },
146
- buildPiral: { run: jest.fn(() => Promise.resolve({})) },
147
- debugPiral: { run: jest.fn(() => Promise.resolve({})) },
148
- watchPiral: { run: jest.fn(() => Promise.resolve({})) },
160
+ buildPilet: { path: '7' },
161
+ debugPilet: { path: '8' },
162
+ buildPiral: { path: '9' },
163
+ debugPiral: { path: '10' },
164
+ watchPiral: { path: '11' },
149
165
  };
150
166
 
151
167
  setBundler({
@@ -153,17 +169,18 @@ describe('Piral CLI Bundler Module', () => {
153
169
  actions: actions as any,
154
170
  });
155
171
 
156
- await callPiralDebug({ root: undefined } as any, 'foo4');
157
- expect(actions.debugPiral.run).toHaveBeenCalled();
172
+ const args = { root: undefined };
173
+ await callPiralDebug(args as any, 'foo4');
174
+ expect(callDynamic).toHaveBeenCalledWith('debug-piral', '10', args);
158
175
  });
159
176
 
160
177
  it('setting the bundler can resolve it properly for call piral watch', async () => {
161
178
  const actions = {
162
- buildPilet: { run: jest.fn(() => Promise.resolve({})) },
163
- debugPilet: { run: jest.fn(() => Promise.resolve({})) },
164
- buildPiral: { run: jest.fn(() => Promise.resolve({})) },
165
- debugPiral: { run: jest.fn(() => Promise.resolve({})) },
166
- watchPiral: { run: jest.fn(() => Promise.resolve({})) },
179
+ buildPilet: { path: '3' },
180
+ debugPilet: { path: '4' },
181
+ buildPiral: { path: '5' },
182
+ debugPiral: { path: '6' },
183
+ watchPiral: { path: '7' },
167
184
  };
168
185
 
169
186
  setBundler({
@@ -171,8 +188,9 @@ describe('Piral CLI Bundler Module', () => {
171
188
  actions: actions as any,
172
189
  });
173
190
 
174
- await callDebugPiralFromMonoRepo({ root: undefined } as any, 'foo5');
175
- expect(actions.watchPiral.run).toHaveBeenCalled();
191
+ const args = { root: undefined };
192
+ await callDebugPiralFromMonoRepo(args as any, 'foo5');
193
+ expect(callStatic).toHaveBeenCalledWith('debug-mono-piral', '7', args);
176
194
  });
177
195
 
178
196
  it('using a non-available bundler should fail', () => {
package/src/bundler.ts CHANGED
@@ -1,14 +1,18 @@
1
+ import { callDynamic, callStatic } from './build/bundler-calls';
1
2
  import { availableBundlers } from './helpers';
3
+ import { isInteractive } from './external';
2
4
  import {
3
- installPackage,
4
- cliVersion,
5
+ installNpmPackage,
6
+ compatVersion,
5
7
  fail,
6
8
  progress,
7
9
  log,
8
10
  determineNpmClient,
9
11
  patchModules,
12
+ bundlerNames,
10
13
  logReset,
11
14
  config,
15
+ promptSelect,
12
16
  } from './common';
13
17
  import {
14
18
  Bundler,
@@ -20,6 +24,7 @@ import {
20
24
  DebugPiletParameters,
21
25
  BundlerDefinition,
22
26
  BaseBundleParameters,
27
+ BaseBundlerDefinition,
23
28
  } from './types';
24
29
 
25
30
  export interface QualifiedBundler {
@@ -29,15 +34,27 @@ export interface QualifiedBundler {
29
34
 
30
35
  const bundlers: Array<QualifiedBundler> = [];
31
36
 
37
+ async function getBundlerToInstall() {
38
+ const selectedBundler = config.bundler || 'webpack5';
39
+
40
+ if (isInteractive()) {
41
+ return await promptSelect('No bundler found. Which one do you want to install?', bundlerNames, selectedBundler);
42
+ }
43
+
44
+ log('bundlerNotInstalled_0176');
45
+ return selectedBundler;
46
+ }
47
+
32
48
  async function installDefaultBundler(root: string) {
33
- const selectedBundler = config.bundler || 'webpack';
34
- log('generalDebug_0003', `Installation of default bundler for "${selectedBundler}".`);
49
+ const selectedBundler = await getBundlerToInstall();
50
+ log('generalDebug_0003', `Installation of bundler "${selectedBundler}".`);
35
51
  const selectedPackage = `piral-cli-${selectedBundler}`;
36
- log('generalDebug_0003', `Determining NPM client at "${root}" ...`);
52
+ log('generalDebug_0003', `Determining npm client at "${root}" ...`);
37
53
  const client = await determineNpmClient(root);
38
- log('generalDebug_0003', `Prepare to install ${selectedPackage}@${cliVersion} using "${client}" into "${root}".`);
54
+ const packageId = `${selectedPackage}@^${compatVersion}`;
55
+ log('generalDebug_0003', `Prepare to install ${packageId} using "${client}" into "${root}".`);
39
56
  progress(`Installing ${selectedPackage} ...`);
40
- await installPackage(client, `${selectedPackage}@${cliVersion}`, root, '--save-dev');
57
+ await installNpmPackage(client, packageId, root, '--save-dev', '--save-exact');
41
58
  log('generalDebug_0003', `Installed bundler from "${selectedPackage}".`);
42
59
 
43
60
  require('./inject').inject(selectedPackage);
@@ -76,12 +93,18 @@ async function findBundler(root: string, bundlerName?: string) {
76
93
  return defaultBundler;
77
94
  }
78
95
 
79
- async function prepareModules(args: BaseBundleParameters) {
96
+ async function prepareArgs<T extends BaseBundleParameters>(bundler: BaseBundlerDefinition<T>, args: T): Promise<T> {
80
97
  if (args.optimizeModules) {
81
98
  progress('Preparing modules ...');
82
99
  await patchModules(args.root, args.ignored);
83
100
  logReset();
84
101
  }
102
+
103
+ if (bundler.prepare) {
104
+ return await bundler.prepare(args);
105
+ }
106
+
107
+ return args;
85
108
  }
86
109
 
87
110
  export function setBundler(bundler: QualifiedBundler) {
@@ -94,26 +117,52 @@ export function setBundler(bundler: QualifiedBundler) {
94
117
 
95
118
  export async function callPiralDebug(args: DebugPiralParameters, bundlerName?: string): Promise<Bundler> {
96
119
  const bundler = await findBundler(args.root, bundlerName);
97
- await prepareModules(args);
98
- return await bundler.actions.debugPiral.run(args).catch((err) => fail('bundlingFailed_0174', err));
120
+
121
+ try {
122
+ const action = bundler.actions.debugPiral;
123
+ const params = await prepareArgs(action, args);
124
+ return await callDynamic('debug-piral', action.path, params);
125
+ } catch (err) {
126
+ fail('bundlingFailed_0174', err);
127
+ }
99
128
  }
100
129
 
101
130
  export async function callPiletDebug(args: DebugPiletParameters, bundlerName?: string): Promise<Bundler> {
102
131
  const bundler = await findBundler(args.root, bundlerName);
103
- await prepareModules(args);
104
- return await bundler.actions.debugPilet.run(args).catch((err) => fail('bundlingFailed_0174', err));
132
+
133
+ try {
134
+ const action = bundler.actions.debugPilet;
135
+ const params = await prepareArgs(action, args);
136
+ return await callDynamic('debug-pilet', action.path, params);
137
+ } catch (err) {
138
+ fail('bundlingFailed_0174', err);
139
+ }
105
140
  }
106
141
 
107
142
  export async function callPiralBuild(args: BuildPiralParameters, bundlerName?: string): Promise<BundleDetails> {
108
143
  const bundler = await findBundler(args.root, bundlerName);
109
- await prepareModules(args);
110
- return await bundler.actions.buildPiral.run(args).catch((err) => fail('bundlingFailed_0174', err));
144
+
145
+ try {
146
+ const action = bundler.actions.buildPiral;
147
+ const params = await prepareArgs(action, args);
148
+ const instance = await callStatic('build-piral', action.path, params);
149
+ return instance.bundle;
150
+ } catch (err) {
151
+ fail('bundlingFailed_0174', err);
152
+ }
111
153
  }
112
154
 
113
155
  export async function callPiletBuild(args: BuildPiletParameters, bundlerName?: string): Promise<BundleDetails> {
114
156
  const bundler = await findBundler(args.root, bundlerName);
115
- await prepareModules(args);
116
- return await bundler.actions.buildPilet.run(args).catch((err) => fail('bundlingFailed_0174', err));
157
+
158
+ try {
159
+ const action = bundler.actions.buildPilet;
160
+ const params = await prepareArgs(action, args);
161
+ const instance = await callStatic('build-pilet', action.path, params);
162
+ return instance.bundle;
163
+ } catch (err) {
164
+ fail('bundlingFailed_0174', err);
165
+ }
117
166
  }
118
167
 
119
168
  export async function callDebugPiralFromMonoRepo(
@@ -121,7 +170,13 @@ export async function callDebugPiralFromMonoRepo(
121
170
  bundlerName?: string,
122
171
  ): Promise<BundleDetails> {
123
172
  const bundler = await findBundler(args.root, bundlerName);
124
- await prepareModules(args);
125
- const { bundle } = await bundler.actions.watchPiral.run(args).catch((err) => fail('bundlingFailed_0174', err));
126
- return bundle;
173
+
174
+ try {
175
+ const action = bundler.actions.watchPiral;
176
+ const params = await prepareArgs(action, args);
177
+ const instance = await callStatic('debug-mono-piral', action.path, params);
178
+ return instance.bundle;
179
+ } catch (err) {
180
+ fail('bundlingFailed_0174', err);
181
+ }
127
182
  }
package/src/cli.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as yargs from 'yargs';
2
2
  import { detailed } from 'yargs-parser';
3
+ import { caterpillerIcon, zapIcon, butterflyIcon, cliName, cliVersion } from './common';
3
4
  import { runQuestionnaireFor } from './questionnaire';
4
5
  import { ToolCommand } from './types';
5
6
 
@@ -42,11 +43,13 @@ export function setupCli(commands: Array<ToolCommand<any>>) {
42
43
  }
43
44
  };
44
45
 
46
+ console.log(`${butterflyIcon} ${cliName} v${cliVersion}`);
47
+
45
48
  return runCommand().then(
46
49
  () => process.exit(0),
47
50
  (err) => {
48
51
  err && !err.logged && console.error(err.message);
49
- console.log('Codes Reference: https://docs.piral.io/code/search');
52
+ console.log(`${caterpillerIcon} Find detailed descriptions at https://docs.piral.io/code/search`);
50
53
  process.exit(1);
51
54
  },
52
55
  );
@@ -54,5 +57,6 @@ export function setupCli(commands: Array<ToolCommand<any>>) {
54
57
  );
55
58
  }
56
59
 
57
- argv.epilog('For more information, check out the documentation at https://docs.piral.io.').help().strict().argv;
60
+ argv.epilog(`${zapIcon} For more information, check out the documentation at https://docs.piral.io`).help().strict()
61
+ .argv;
58
62
  }