@scandipwa/magento-scripts 2.0.3 → 2.0.5

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 (347) hide show
  1. package/.eslintrc +6 -1
  2. package/exec.js +75 -39
  3. package/index.js +87 -46
  4. package/lib/commands/cleanup.js +18 -21
  5. package/lib/commands/cli.js +138 -73
  6. package/lib/commands/execute.js +5 -5
  7. package/lib/commands/import-db.js +21 -24
  8. package/lib/commands/link.js +17 -20
  9. package/lib/commands/logs.js +91 -91
  10. package/lib/commands/start.js +229 -191
  11. package/lib/commands/status.js +64 -50
  12. package/lib/commands/stop.js +14 -11
  13. package/lib/config/check-configuration-file.js +33 -28
  14. package/lib/config/cma-config.js +4 -4
  15. package/lib/config/config.js +40 -18
  16. package/lib/config/dependencies-for-platforms.js +33 -3
  17. package/lib/config/docker.js +259 -160
  18. package/lib/config/get-magento-version-config.js +45 -38
  19. package/lib/config/get-port-config.js +30 -44
  20. package/lib/config/get-project-configuration.js +8 -8
  21. package/lib/config/index.js +51 -42
  22. package/lib/config/magento/required-php-extensions/index.js +33 -19
  23. package/lib/config/magento/required-php-extensions/magento-2.3.js +2 -2
  24. package/lib/config/magento/required-php-extensions/magento-2.4.js +2 -2
  25. package/lib/config/magento-config.js +4 -4
  26. package/lib/config/php-config.js +8 -6
  27. package/lib/config/port-config.js +62 -43
  28. package/lib/config/save-config.js +6 -6
  29. package/lib/config/scandipwa-versions.js +2 -2
  30. package/lib/config/services/composer/versions/composer-1.js +2 -2
  31. package/lib/config/services/composer/versions/composer-2.js +2 -2
  32. package/lib/config/services/composer/versions/index.js +1 -1
  33. package/lib/config/services/elasticsearch/base-repo.js +1 -1
  34. package/lib/config/services/elasticsearch/default-es-env.js +4 -1
  35. package/lib/config/services/elasticsearch/versions/elasticsearch-6.8.js +17 -14
  36. package/lib/config/services/elasticsearch/versions/elasticsearch-7.10.js +4 -4
  37. package/lib/config/services/elasticsearch/versions/elasticsearch-7.12.js +4 -4
  38. package/lib/config/services/elasticsearch/versions/elasticsearch-7.16.js +4 -4
  39. package/lib/config/services/elasticsearch/versions/elasticsearch-7.17.js +4 -4
  40. package/lib/config/services/elasticsearch/versions/elasticsearch-7.6.js +4 -4
  41. package/lib/config/services/elasticsearch/versions/elasticsearch-7.7.js +4 -4
  42. package/lib/config/services/elasticsearch/versions/elasticsearch-7.9.js +4 -4
  43. package/lib/config/services/elasticsearch/versions/index.js +9 -9
  44. package/lib/config/services/maildev/index.js +5 -2
  45. package/lib/config/services/mariadb/versions/index.js +1 -1
  46. package/lib/config/services/mariadb/versions/mariadb-10.2.js +5 -4
  47. package/lib/config/services/mariadb/versions/mariadb-10.3.js +5 -4
  48. package/lib/config/services/mariadb/versions/mariadb-10.4.js +5 -4
  49. package/lib/config/services/nginx/versions/index.js +1 -1
  50. package/lib/config/services/nginx/versions/nginx-1.18.js +5 -4
  51. package/lib/config/services/php/base-repo.js +1 -1
  52. package/lib/config/services/php/extensions/apcu.js +3 -3
  53. package/lib/config/services/php/extensions/bcmath.js +2 -2
  54. package/lib/config/services/php/extensions/curl.js +3 -6
  55. package/lib/config/services/php/extensions/gd.js +4 -3
  56. package/lib/config/services/php/extensions/index.js +9 -8
  57. package/lib/config/services/php/extensions/intl.js +3 -5
  58. package/lib/config/services/php/extensions/opcache.js +3 -5
  59. package/lib/config/services/php/extensions/pdo_mysql.js +2 -2
  60. package/lib/config/services/php/extensions/soap.js +3 -5
  61. package/lib/config/services/php/extensions/sodium.js +3 -5
  62. package/lib/config/services/php/extensions/xdebug.js +5 -3
  63. package/lib/config/services/php/extensions/xsl.js +3 -5
  64. package/lib/config/services/php/extensions/zip.js +3 -5
  65. package/lib/config/services/php/versions/index.js +1 -1
  66. package/lib/config/services/php/versions/php-7.2.js +13 -9
  67. package/lib/config/services/php/versions/php-7.3.js +13 -9
  68. package/lib/config/services/php/versions/php-7.4.js +13 -9
  69. package/lib/config/services/php/versions/php-8.1.js +13 -9
  70. package/lib/config/services/redis/index.js +1 -1
  71. package/lib/config/services/redis/redis-5.0.js +2 -2
  72. package/lib/config/services/redis/redis-6.0.js +2 -2
  73. package/lib/config/services/redis/redis-6.2.js +2 -2
  74. package/lib/config/services/ssl-terminator/index.js +6 -5
  75. package/lib/config/services/varnish/index.js +1 -1
  76. package/lib/config/services/varnish/varnish-6-0.js +7 -5
  77. package/lib/config/services/varnish/varnish-6-6.js +7 -5
  78. package/lib/config/services/varnish/varnish-7-0.js +7 -5
  79. package/lib/config/system-config.js +55 -32
  80. package/lib/config/templates/mariadb.template.cnf +8 -0
  81. package/lib/config/versions/index.js +48 -27
  82. package/lib/config/versions/magento-2.2.10.js +22 -15
  83. package/lib/config/versions/magento-2.3.0.js +22 -15
  84. package/lib/config/versions/magento-2.3.1.js +22 -15
  85. package/lib/config/versions/magento-2.3.2-p1.js +22 -15
  86. package/lib/config/versions/magento-2.3.2-p2.js +22 -15
  87. package/lib/config/versions/magento-2.3.2.js +22 -15
  88. package/lib/config/versions/magento-2.3.3-p1.js +22 -15
  89. package/lib/config/versions/magento-2.3.3.js +22 -15
  90. package/lib/config/versions/magento-2.3.4-p1.js +22 -15
  91. package/lib/config/versions/magento-2.3.4-p2.js +22 -15
  92. package/lib/config/versions/magento-2.3.4.js +22 -15
  93. package/lib/config/versions/magento-2.3.5-p1.js +22 -15
  94. package/lib/config/versions/magento-2.3.5-p2.js +22 -15
  95. package/lib/config/versions/magento-2.3.5.js +27 -15
  96. package/lib/config/versions/magento-2.3.6-p1.js +22 -15
  97. package/lib/config/versions/magento-2.3.6.js +22 -15
  98. package/lib/config/versions/magento-2.3.7-p1.js +22 -15
  99. package/lib/config/versions/magento-2.3.7-p2.js +22 -15
  100. package/lib/config/versions/magento-2.3.7-p3.js +22 -15
  101. package/lib/config/versions/magento-2.3.7-p4.js +22 -15
  102. package/lib/config/versions/magento-2.3.7.js +22 -15
  103. package/lib/config/versions/magento-2.4.0-p1.js +22 -15
  104. package/lib/config/versions/magento-2.4.0.js +22 -15
  105. package/lib/config/versions/magento-2.4.1-p1.js +23 -16
  106. package/lib/config/versions/magento-2.4.1.js +23 -16
  107. package/lib/config/versions/magento-2.4.2-p1.js +23 -16
  108. package/lib/config/versions/magento-2.4.2-p2.js +23 -16
  109. package/lib/config/versions/magento-2.4.2.js +23 -16
  110. package/lib/config/versions/magento-2.4.3-p1.js +23 -16
  111. package/lib/config/versions/magento-2.4.3-p2.js +23 -16
  112. package/lib/config/versions/magento-2.4.3-p3.js +23 -16
  113. package/lib/config/versions/magento-2.4.3.js +23 -16
  114. package/lib/config/versions/magento-2.4.4-p1.js +23 -16
  115. package/lib/config/versions/magento-2.4.4-p2.js +23 -16
  116. package/lib/config/versions/magento-2.4.4.js +23 -16
  117. package/lib/config/versions/magento-2.4.5-p1.js +23 -16
  118. package/lib/config/versions/magento-2.4.5.js +23 -17
  119. package/lib/config/xml-parser.js +21 -20
  120. package/lib/errors/known-error.js +8 -6
  121. package/lib/errors/unknown-error.js +8 -6
  122. package/lib/tasks/cache/create-cache-folder.js +10 -10
  123. package/lib/tasks/cache/index.js +1 -1
  124. package/lib/tasks/cache/remove-cache-folder.js +9 -9
  125. package/lib/tasks/cleanup.js +22 -24
  126. package/lib/tasks/cli/create-bashrc-config.js +19 -11
  127. package/lib/tasks/cli/index.js +10 -13
  128. package/lib/tasks/composer/index.js +20 -15
  129. package/lib/tasks/composer/local-auth-json.js +32 -18
  130. package/lib/tasks/database/connect-to-database.js +71 -51
  131. package/lib/tasks/database/create-magento-database.js +7 -7
  132. package/lib/tasks/database/create-magento-user.js +33 -20
  133. package/lib/tasks/database/default-magento-database.js +1 -1
  134. package/lib/tasks/database/default-magento-user.js +2 -2
  135. package/lib/tasks/database/dump-theme-config.js +16 -12
  136. package/lib/tasks/database/fix-db.js +62 -52
  137. package/lib/tasks/database/import-dump-to-database.js +122 -85
  138. package/lib/tasks/database/import-remote-db/index.js +16 -18
  139. package/lib/tasks/database/import-remote-db/ssh/database-dump-command.js +2 -2
  140. package/lib/tasks/database/import-remote-db/ssh/index.js +34 -35
  141. package/lib/tasks/database/import-remote-db/ssh/readymage.js +41 -38
  142. package/lib/tasks/database/import-remote-db/ssh/regular-server.js +44 -46
  143. package/lib/tasks/database/index.js +1 -1
  144. package/lib/tasks/database/magento-tables.js +3 -3
  145. package/lib/tasks/database/restore-theme-config.js +26 -19
  146. package/lib/tasks/docker/api.d.ts +1 -1
  147. package/lib/tasks/docker/api.js +31 -33
  148. package/lib/tasks/docker/containers/container-api.d.ts +49 -14
  149. package/lib/tasks/docker/containers/container-api.js +112 -83
  150. package/lib/tasks/docker/containers/index.js +3 -3
  151. package/lib/tasks/docker/containers/tasks.js +171 -99
  152. package/lib/tasks/docker/convert-composer-home-to-composer-cache-volume.js +34 -25
  153. package/lib/tasks/docker/convert-legacy-volumes.js +91 -55
  154. package/lib/tasks/docker/convert-mysql-to-mariadb.js +178 -147
  155. package/lib/tasks/docker/image/image-api.d.ts +2 -3
  156. package/lib/tasks/docker/image/image-api.js +41 -34
  157. package/lib/tasks/docker/image/index.js +2 -2
  158. package/lib/tasks/docker/index.js +26 -21
  159. package/lib/tasks/docker/network/index.js +3 -3
  160. package/lib/tasks/docker/network/network-api.d.ts +11 -8
  161. package/lib/tasks/docker/network/network-api.js +53 -61
  162. package/lib/tasks/docker/network/tasks.js +41 -31
  163. package/lib/tasks/docker/project-image-builder.js +175 -92
  164. package/lib/tasks/docker/system/index.js +2 -2
  165. package/lib/tasks/docker/system/system-api.d.ts +2 -2
  166. package/lib/tasks/docker/system/system-api.js +16 -19
  167. package/lib/tasks/docker/volume/index.js +3 -3
  168. package/lib/tasks/docker/volume/tasks.js +63 -46
  169. package/lib/tasks/docker/volume/volume-api.d.ts +8 -5
  170. package/lib/tasks/docker/volume/volume-api.js +59 -76
  171. package/lib/tasks/execute.js +91 -55
  172. package/lib/tasks/file-system/create-mariadb-config.js +26 -11
  173. package/lib/tasks/file-system/create-nginx-config.js +18 -19
  174. package/lib/tasks/file-system/create-php-config.js +12 -8
  175. package/lib/tasks/file-system/create-php-debug-config.js +23 -18
  176. package/lib/tasks/file-system/create-php-fpm-config.js +14 -9
  177. package/lib/tasks/file-system/create-phpstorm-config/database-config.js +144 -112
  178. package/lib/tasks/file-system/create-phpstorm-config/eslint-config.js +69 -45
  179. package/lib/tasks/file-system/create-phpstorm-config/exclude-folder-config.js +69 -70
  180. package/lib/tasks/file-system/create-phpstorm-config/index.js +28 -24
  181. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/coding-standard-config.js +9 -9
  182. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/config.js +23 -23
  183. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/custom-ruleset-path-config.js +22 -19
  184. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/default-properties-config.js +26 -16
  185. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/eslint-inspection-config.js +14 -15
  186. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/index.js +43 -34
  187. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/inspection-tools-config.js +14 -6
  188. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/magento-coding-standard-config.js +9 -9
  189. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/mess-detector-validation-inspection-config.js +53 -47
  190. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/paths.js +41 -12
  191. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/php-cs-fixer-validation-inspection-config.js +33 -30
  192. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/php-cs-validation-inspection-config.js +35 -38
  193. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/stylelint-inspection-config.js +14 -15
  194. package/lib/tasks/file-system/create-phpstorm-config/keys.js +10 -10
  195. package/lib/tasks/file-system/create-phpstorm-config/php-config/index.js +33 -25
  196. package/lib/tasks/file-system/create-phpstorm-config/php-config/mess-detector-config.js +28 -25
  197. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-code-sniffer-config.js +53 -32
  198. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-config.js +7 -7
  199. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-cs-fixer-config.js +37 -27
  200. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-interpreters-config.js +53 -31
  201. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-project-shared-configuration-config.js +42 -30
  202. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/index.js +33 -20
  203. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/php-docker-settings-config.js +3 -3
  204. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/setup-php-docker-container-settings-config.js +27 -16
  205. package/lib/tasks/file-system/create-phpstorm-config/setup-xml-structure.js +14 -13
  206. package/lib/tasks/file-system/create-phpstorm-config/stylelint-config.js +52 -34
  207. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/composer-settings-config.js +41 -33
  208. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/format-setting-config.js +39 -27
  209. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/index.js +34 -30
  210. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/mess-detector-project-configuration-config.js +32 -22
  211. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-code-sniffer-project-configuration-config.js +32 -22
  212. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-cs-fixer-project-configuration-config.js +32 -22
  213. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-debug-general-config.js +42 -31
  214. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-server-config.js +45 -33
  215. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-stan-project-configuration-config.js.js +32 -22
  216. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-workspace-project-configuration-config.js +22 -19
  217. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/properties-component-config.js +35 -21
  218. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/psalm-project-configuration-config.js.js +31 -22
  219. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/run-manager-config.js +38 -28
  220. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/workspace-config.js +5 -5
  221. package/lib/tasks/file-system/create-phpstorm-config/xml-utils.js +3 -2
  222. package/lib/tasks/file-system/create-ssl-terminator-config.js +46 -34
  223. package/lib/tasks/file-system/create-varnish-config.js +20 -23
  224. package/lib/tasks/file-system/create-vscode-config.js +66 -49
  225. package/lib/tasks/file-system/index.js +29 -25
  226. package/lib/tasks/import-dump.js +54 -45
  227. package/lib/tasks/link.js +24 -23
  228. package/lib/tasks/magento/enable-magento-composer-plugins.js +213 -149
  229. package/lib/tasks/magento/index.js +1 -1
  230. package/lib/tasks/magento/install-magento-project.js +158 -97
  231. package/lib/tasks/magento/remove-magento.js +30 -24
  232. package/lib/tasks/magento/setup-magento/adjust-full-page-cache.js +27 -15
  233. package/lib/tasks/magento/setup-magento/configure-elasticsearch.js +23 -10
  234. package/lib/tasks/magento/setup-magento/create-admin.js +21 -13
  235. package/lib/tasks/magento/setup-magento/delete-admin-users.js +5 -5
  236. package/lib/tasks/magento/setup-magento/delete-customers.js +16 -10
  237. package/lib/tasks/magento/setup-magento/delete-orders.js +16 -10
  238. package/lib/tasks/magento/setup-magento/disable-2fa.js +11 -8
  239. package/lib/tasks/magento/setup-magento/disable-maintenance-mode.js +7 -7
  240. package/lib/tasks/magento/setup-magento/disable-page-builder.js +5 -4
  241. package/lib/tasks/magento/setup-magento/flush-redis-config.js +14 -8
  242. package/lib/tasks/magento/setup-magento/increase-admin-session-lifetime.js +21 -17
  243. package/lib/tasks/magento/setup-magento/index-products.js +4 -6
  244. package/lib/tasks/magento/setup-magento/index.js +54 -47
  245. package/lib/tasks/magento/setup-magento/install-magento.js +112 -79
  246. package/lib/tasks/magento/setup-magento/migrate-database.js +115 -96
  247. package/lib/tasks/magento/setup-magento/set-base-url.js +35 -21
  248. package/lib/tasks/magento/setup-magento/set-deployment-mode.js +15 -13
  249. package/lib/tasks/magento/setup-magento/set-mail-config.js +20 -14
  250. package/lib/tasks/magento/setup-magento/set-url-rewrite.js +13 -9
  251. package/lib/tasks/magento/setup-magento/upgrade-magento.js +30 -22
  252. package/lib/tasks/magento/setup-magento/urn-highlighter.js +11 -11
  253. package/lib/tasks/magento/setup-magento/varnish-config.js +42 -32
  254. package/lib/tasks/magento/setup-magento/waiting-for-redis.js +6 -8
  255. package/lib/tasks/magento/setup-magento/waiting-for-varnish.js +108 -65
  256. package/lib/tasks/magento/uninstall-magento.js +19 -16
  257. package/lib/tasks/php/php-container.d.ts +19 -0
  258. package/lib/tasks/php/php-container.js +50 -46
  259. package/lib/tasks/php/update-env-php.js +50 -30
  260. package/lib/tasks/project-config/index.js +12 -8
  261. package/lib/tasks/requirements/composer-credentials.js +215 -112
  262. package/lib/tasks/requirements/docker/context.js +49 -37
  263. package/lib/tasks/requirements/docker/index.js +123 -89
  264. package/lib/tasks/requirements/docker/install-on-mac.js +21 -14
  265. package/lib/tasks/requirements/docker/install.js +63 -52
  266. package/lib/tasks/requirements/docker/performance.js +39 -24
  267. package/lib/tasks/requirements/docker/permissions.js +27 -17
  268. package/lib/tasks/requirements/docker/running-status.js +79 -66
  269. package/lib/tasks/requirements/docker/version.js +15 -11
  270. package/lib/tasks/requirements/index.js +33 -29
  271. package/lib/tasks/requirements/node-version.js +8 -8
  272. package/lib/tasks/requirements/php-version.js +14 -11
  273. package/lib/tasks/requirements/platform.js +42 -26
  274. package/lib/tasks/requirements/rosetta.js +15 -12
  275. package/lib/tasks/start.js +172 -148
  276. package/lib/tasks/status/index.js +155 -88
  277. package/lib/tasks/stop.js +22 -18
  278. package/lib/tasks/theme/build-theme.js +50 -33
  279. package/lib/tasks/theme/install-theme.js +31 -18
  280. package/lib/tasks/theme/link-theme.js +27 -21
  281. package/lib/tasks/theme/retrieve-theme-data.js +24 -18
  282. package/lib/tasks/theme/setup-themes.js +87 -59
  283. package/lib/tasks/theme/symlink-theme.js +44 -22
  284. package/lib/util/CSA-theme.js +23 -21
  285. package/lib/util/analytics.js +130 -75
  286. package/lib/util/arch.js +22 -18
  287. package/lib/util/clean-object.js +15 -10
  288. package/lib/util/config-file-validator.js +74 -55
  289. package/lib/util/config-php-json.js +34 -16
  290. package/lib/util/connection-string.js +41 -27
  291. package/lib/util/console-block.js +112 -65
  292. package/lib/util/database.js +56 -33
  293. package/lib/util/deepmerge.d.ts +1 -1
  294. package/lib/util/deepmerge.js +19 -28
  295. package/lib/util/dockerfile-builder/build-instructions.js +159 -143
  296. package/lib/util/dockerfile-builder/index.js +47 -73
  297. package/lib/util/dockerfile-builder/types.d.ts +2 -1
  298. package/lib/util/download-file.js +28 -16
  299. package/lib/util/env-php-json.js +42 -16
  300. package/lib/util/exec-async-command.d.ts +9 -9
  301. package/lib/util/exec-async-command.js +82 -59
  302. package/lib/util/exec-async.d.ts +2 -0
  303. package/lib/util/exec-async.js +12 -5
  304. package/lib/util/execute-in-container.js +22 -27
  305. package/lib/util/execute-sudo-command.js +11 -15
  306. package/lib/util/get-brew-bin-path.js +27 -23
  307. package/lib/util/get-installed-magento-version.js +22 -16
  308. package/lib/util/get-jsonfile-data.js +14 -9
  309. package/lib/util/install-dependencies-task.js +53 -41
  310. package/lib/util/instance-metadata.js +44 -29
  311. package/lib/util/ip.js +16 -12
  312. package/lib/util/is-running-root.js +6 -3
  313. package/lib/util/is-wsl.js +10 -10
  314. package/lib/util/macos-version.js +12 -11
  315. package/lib/util/magento-task.js +14 -9
  316. package/lib/util/match-filesystem.js +22 -16
  317. package/lib/util/move-file.js +40 -25
  318. package/lib/util/nginx-logs-parser.js +50 -39
  319. package/lib/util/open-browser.js +10 -5
  320. package/lib/util/os-platform.js +40 -32
  321. package/lib/util/path-exists-sync.js +10 -6
  322. package/lib/util/path-exists.js +6 -6
  323. package/lib/util/php-task.js +11 -10
  324. package/lib/util/portscanner.js +97 -85
  325. package/lib/util/prefix.js +31 -22
  326. package/lib/util/resolve-configuration-with-overrides.js +30 -15
  327. package/lib/util/rmdir-safe.js +15 -11
  328. package/lib/util/run-composer.js +16 -16
  329. package/lib/util/run-container-image.js +9 -4
  330. package/lib/util/run-magento.js +16 -17
  331. package/lib/util/run-php.js +16 -21
  332. package/lib/util/safe-regex-extract.js +8 -12
  333. package/lib/util/set-config.js +24 -15
  334. package/lib/util/sleep.js +7 -2
  335. package/lib/util/systemctl.js +62 -44
  336. package/lib/util/wait-for-it.js +42 -33
  337. package/lib/util/wait-for-logs.js +42 -35
  338. package/lib/util/xdg-open-exists.js +19 -19
  339. package/package.json +7 -3
  340. package/tsconfig.json +24 -0
  341. package/typings/context.d.ts +76 -34
  342. package/typings/index.d.ts +54 -20
  343. package/typings/override.d.ts +14 -0
  344. package/typings/phpstorm.d.ts +19 -19
  345. package/.prettierrc +0 -3
  346. package/lib/util/get-php-for-phpbrew.js +0 -30
  347. package/lib/util/request.js +0 -0
@@ -1,44 +1,53 @@
1
- const path = require('path');
2
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
3
- const { Listr } = require('listr2');
4
- const { start } = require('../tasks/start');
5
- const pathExists = require('../util/path-exists');
6
- const { baseConfig } = require('../config');
7
- const googleAnalytics = require('../util/analytics');
8
- const systeminformation = require('systeminformation');
9
- const { getCSAThemes } = require('../util/CSA-theme');
10
- const shouldUseYarn = require('@scandipwa/scandipwa-dev-utils/should-use-yarn');
11
- const ConsoleBlock = require('../util/console-block');
12
- const { getInstanceMetadata } = require('../util/instance-metadata');
13
- const UnknownError = require('../errors/unknown-error');
14
- const KnownError = require('../errors/known-error');
15
-
16
- const cmaGaTrackingId = 'UA-127741417-7';
17
-
18
- googleAnalytics.setGaTrackingId(cmaGaTrackingId);
1
+ const path = require('path')
2
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
3
+ const { Listr } = require('listr2')
4
+ const { start } = require('../tasks/start')
5
+ const pathExists = require('../util/path-exists')
6
+ const { baseConfig } = require('../config')
7
+ const googleAnalytics = require('../util/analytics')
8
+ const systeminformation = require('systeminformation')
9
+ const { getCSAThemes } = require('../util/CSA-theme')
10
+ const shouldUseYarn = require('@scandipwa/scandipwa-dev-utils/should-use-yarn')
11
+ const ConsoleBlock = require('../util/console-block')
12
+ const { getInstanceMetadata } = require('../util/instance-metadata')
13
+ const UnknownError = require('../errors/unknown-error')
14
+ const KnownError = require('../errors/known-error')
19
15
 
16
+ const cmaGaTrackingId = 'UA-127741417-7'
17
+
18
+ googleAnalytics.setGaTrackingId(cmaGaTrackingId)
19
+
20
+ /**
21
+ * @param {(import('listr2').ListrError | Error | import('../errors/known-error') | import('../errors/unknown-error') | string)[]} errors
22
+ */
20
23
  const reportErrors = async (errors) => {
21
24
  for (const error of errors) {
22
- const path = (error.path && ` Error path: ${error.path} `) || '';
25
+ const path = (error.path && ` Error path: ${error.path} `) || ''
23
26
  if (error instanceof UnknownError || error instanceof KnownError) {
24
- logger.error(error.message);
25
- logger.error(error.stack);
27
+ logger.error(error.message)
28
+ logger.error(error.stack)
26
29
  if (error instanceof UnknownError) {
27
- await googleAnalytics.trackError(`Unknown Error:${path}${error.stack}`);
30
+ await googleAnalytics.trackError(
31
+ `Unknown Error:${path}${error.stack}`
32
+ )
28
33
  } else {
29
- await googleAnalytics.trackError(`Known Error:${path}${error.message}`);
34
+ await googleAnalytics.trackError(
35
+ `Known Error:${path}${error.message}`
36
+ )
30
37
  }
31
38
  } else if (error instanceof Error) {
32
- logger.error(error.message);
33
- logger.error(error.stack);
34
- await googleAnalytics.trackError(`Regular Error:${path}${error.message}`);
39
+ logger.error(error.message)
40
+ logger.error(error.stack)
41
+ await googleAnalytics.trackError(
42
+ `Regular Error:${path}${error.message}`
43
+ )
35
44
  } else {
36
- logger.error(error);
37
- logger.error(error.stack);
38
- await googleAnalytics.trackError(`Non Error:${path}${error}`); // track non-errors throws
45
+ logger.error(error)
46
+ logger.error(error.stack)
47
+ await googleAnalytics.trackError(`Non Error:${path}${error}`) // track non-errors throws
39
48
  }
40
49
  }
41
- };
50
+ }
42
51
 
43
52
  /**
44
53
  * @param {import('yargs')} yargs
@@ -47,194 +56,223 @@ module.exports = (yargs) => {
47
56
  yargs.command(
48
57
  'start',
49
58
  'Deploy the application.',
50
- (yargs) => yargs
51
- .option('port', {
52
- alias: 'p',
53
- describe: 'Suggest a port for an application to run.',
54
- type: 'number',
55
- nargs: 1
56
- })
57
- .option('no-open', {
58
- alias: 'n',
59
- describe: 'Do not open browser after command finished',
60
- type: 'boolean',
61
- default: false
62
- })
63
- .option('debug', {
64
- alias: 'd',
65
- describe: 'Enable PHP xdebug.',
66
- type: 'boolean',
67
- default: false
68
- })
69
- .option('skip-setup', {
70
- alias: 's',
71
- describe: 'Skip Magento setup',
72
- type: 'boolean',
73
- default: false
74
- })
75
- .option('edition', {
76
- alias: 'e',
77
- describe: 'Magento Edition to install',
78
- type: 'string'
79
- })
80
- .option('recompile-php', {
81
- describe: 'Recompile PHP version used in the project',
82
- type: 'boolean'
83
- })
84
- .option('verbose', {
85
- alias: 'v',
86
- describe: 'Enable verbose logging',
87
- type: 'boolean',
88
- default: false
89
- })
90
- .option('pull-images', {
91
- describe: 'Pull Docker images',
92
- type: 'boolean',
93
- default: false
94
- })
95
- .option('reset-global-config', {
96
- describe: 'Reset global magento-scripts configuration',
97
- type: 'boolean',
98
- default: false
99
- }),
59
+ (yargs) =>
60
+ yargs
61
+ .option('port', {
62
+ alias: 'p',
63
+ describe: 'Suggest a port for an application to run.',
64
+ type: 'number',
65
+ nargs: 1
66
+ })
67
+ .option('no-open', {
68
+ alias: 'n',
69
+ describe: 'Do not open browser after command finished',
70
+ type: 'boolean',
71
+ default: false
72
+ })
73
+ .option('debug', {
74
+ alias: 'd',
75
+ describe: 'Enable PHP xdebug.',
76
+ type: 'boolean',
77
+ default: false
78
+ })
79
+ .option('skip-setup', {
80
+ alias: 's',
81
+ describe: 'Skip Magento setup',
82
+ type: 'boolean',
83
+ default: false
84
+ })
85
+ .option('edition', {
86
+ alias: 'e',
87
+ describe: 'Magento Edition to install',
88
+ type: 'string'
89
+ })
90
+ .option('recompile-php', {
91
+ describe: 'Recompile PHP version used in the project',
92
+ type: 'boolean'
93
+ })
94
+ .option('verbose', {
95
+ alias: 'v',
96
+ describe: 'Enable verbose logging',
97
+ type: 'boolean',
98
+ default: false
99
+ })
100
+ .option('', {
101
+ describe: 'Pull Docker images',
102
+ type: 'boolean',
103
+ default: false
104
+ })
105
+ .option('reset-global-config', {
106
+ describe: 'Reset global magento-scripts configuration',
107
+ type: 'boolean',
108
+ default: false
109
+ }),
100
110
  async (args = {}) => {
101
111
  /**
102
112
  * @type {Listr<import('../../typings/context').ListrContext>}
103
113
  */
104
- const tasks = new Listr(
105
- start(), {
106
- exitOnError: true,
107
- ctx: args,
108
- concurrent: false,
109
- rendererOptions: {
110
- showErrorMessage: false,
111
- showTimer: true
112
- },
113
- collectErrors: 'minimal'
114
- }
115
- );
116
- const timeStamp = Date.now();
114
+ const tasks = new Listr(start(), {
115
+ exitOnError: true,
116
+ ctx: args,
117
+ concurrent: false,
118
+ rendererOptions: {
119
+ showErrorMessage: false,
120
+ showTimer: true
121
+ },
122
+ collectErrors: 'minimal'
123
+ })
124
+ const timeStamp = Date.now()
117
125
 
118
126
  if (args.debug) {
119
- logger.warn('You are running in debug mode. Magento setup will be slow.');
127
+ logger.warn(
128
+ 'You are running in debug mode. Magento setup will be slow.'
129
+ )
120
130
  }
121
- const legacyMagentoConfigExists = await pathExists(path.join(baseConfig.cacheDir, 'app-config.json'));
122
- const currentConfigExists = await pathExists(path.join(process.cwd(), 'cma.js'));
131
+ const legacyMagentoConfigExists = await pathExists(
132
+ path.join(baseConfig.cacheDir, 'app-config.json')
133
+ )
134
+ const currentConfigExists = await pathExists(
135
+ path.join(process.cwd(), 'cma.js')
136
+ )
123
137
  if (legacyMagentoConfigExists && !currentConfigExists) {
124
- logger.warn('Magento configuration from app-config.json will be moved to cma.js in your projects directory.');
138
+ logger.warn(
139
+ 'Magento configuration from app-config.json will be moved to cma.js in your projects directory.'
140
+ )
125
141
  }
126
142
 
143
+ /**
144
+ * @type {import('../../typings/context').ListrContext}
145
+ */
146
+ let ctx
147
+
127
148
  try {
128
- const ctx = await tasks.run();
149
+ ctx = await tasks.run()
150
+ } catch (e) {
151
+ await reportErrors([e])
152
+ process.exit(1)
153
+ }
154
+
155
+ const {
156
+ systemConfiguration: { analytics }
157
+ } = ctx
158
+
159
+ const instanceMetadata = getInstanceMetadata(ctx)
129
160
 
130
- const {
131
- systemConfiguration: { analytics }
132
- } = ctx;
161
+ const block = new ConsoleBlock()
162
+ block.addHeader('Magento 2').addEmptyLine()
133
163
 
134
- const instanceMetadata = getInstanceMetadata(ctx);
164
+ block.addLine(logger.style.misc('Frontend'))
165
+ instanceMetadata.frontend.forEach(({ title, text }) => {
166
+ block.addLine(` ${title}: ${text}`)
167
+ })
168
+
169
+ block.addEmptyLine()
170
+
171
+ block.addLine(logger.style.misc('Admin'))
172
+ instanceMetadata.admin.forEach(({ title, text }) => {
173
+ block.addLine(` ${title}: ${text}`)
174
+ })
175
+
176
+ block.addEmptyLine()
135
177
 
136
- const block = new ConsoleBlock();
178
+ block.addLine(logger.style.misc('MailDev'))
179
+ instanceMetadata.maildev.forEach(({ title, text }) => {
180
+ block.addLine(` ${title}: ${text}`)
181
+ })
182
+
183
+ const themes = await getCSAThemes()
184
+ if (themes.length > 0) {
185
+ const theme = themes[0]
137
186
  block
138
- .addHeader('Magento 2')
139
- .addEmptyLine();
140
-
141
- block.addLine(logger.style.misc('Frontend'));
142
- instanceMetadata.frontend.forEach(({ title, text }) => {
143
- block.addLine(` ${title}: ${text}`);
144
- });
145
-
146
- block.addEmptyLine();
147
-
148
- block.addLine(logger.style.misc('Admin'));
149
- instanceMetadata.admin.forEach(({ title, text }) => {
150
- block.addLine(` ${title}: ${text}`);
151
- });
152
-
153
- block.addEmptyLine();
154
-
155
- block.addLine(logger.style.misc('MailDev'));
156
- instanceMetadata.maildev.forEach(({ title, text }) => {
157
- block.addLine(` ${title}: ${text}`);
158
- });
159
-
160
- const themes = await getCSAThemes();
161
- if (themes.length > 0) {
162
- const theme = themes[0];
163
- block
164
- .addEmptyLine()
165
- .addSeparator('ScandiPWA')
166
- .addEmptyLine()
167
- .addLine('To run ScandiPWA theme in Magento mode, run the following command:')
168
- .addLine(`-> ${ logger.style.command(`cd ${ theme.themePath }`) }`)
169
- .addLine(`-> ${ logger.style.command(`BUILD_MODE=magento ${ shouldUseYarn() ? 'yarn start' : 'npm start' }`) }`);
170
- }
187
+ .addEmptyLine()
188
+ .addSeparator('ScandiPWA')
189
+ .addEmptyLine()
190
+ .addLine(
191
+ 'To run ScandiPWA theme in Magento mode, run the following command:'
192
+ )
193
+ .addLine(
194
+ `-> ${logger.style.command(`cd ${theme.themePath}`)}`
195
+ )
196
+ .addLine(
197
+ `-> ${logger.style.command(
198
+ `BUILD_MODE=magento ${
199
+ shouldUseYarn() ? 'yarn start' : 'npm start'
200
+ }`
201
+ )}`
202
+ )
203
+ }
171
204
 
172
- block.addEmptyLine();
205
+ block.addEmptyLine()
173
206
 
174
- if (process.isOutOfDateVersion) {
175
- block
176
- .addSeparator(logger.style.code('Warning'))
177
- .addEmptyLine();
178
- process.isOutOfDateVersionMessage.forEach((line) => {
179
- block.addLine(line);
180
- });
207
+ if (process.isOutOfDateVersion) {
208
+ block.addSeparator(logger.style.code('Warning')).addEmptyLine()
209
+ process.isOutOfDateVersionMessage.forEach((line) => {
210
+ block.addLine(line)
211
+ })
181
212
 
182
- block.addEmptyLine();
183
- }
213
+ block.addEmptyLine()
214
+ }
184
215
 
185
- block.log();
216
+ block.log()
186
217
 
187
- logger.note(
188
- `MariaDB credentials, containers status and project information available in ${logger.style.code('npm run status')} command.
189
- To access Magento CLI, Composer and PHP for this project use ${logger.style.code('npm run cli')} command.`
190
- );
191
- logger.log('');
218
+ logger.note(
219
+ `MariaDB credentials, containers status and project information available in ${logger.style.code(
220
+ 'npm run status'
221
+ )} command.
222
+ To access Magento CLI, Composer and PHP for this project use ${logger.style.code(
223
+ 'npm run cli'
224
+ )} command.`
225
+ )
226
+ logger.log('')
192
227
 
193
- if (tasks.err && tasks.err.length > 0) {
194
- logger.warn('During the start, we encountered some errors that have not impacted the start-up process!');
195
- logger.log('');
196
- for (const err of tasks.err) {
197
- logger.error(`Error path: ${err.path}\nError message: ${err.message}\n\nError stack: ${err.stack}`);
198
- }
228
+ if (tasks.err && tasks.err.length > 0) {
229
+ logger.warn(
230
+ 'During the start, we encountered some errors that have not impacted the start-up process!'
231
+ )
232
+ logger.log('')
233
+ for (const err of tasks.err) {
234
+ logger.error(
235
+ `Error path: ${err.path}\nError message: ${err.message}\n\nError stack: ${err.stack}`
236
+ )
199
237
  }
238
+ }
200
239
 
201
- if (!analytics) {
202
- process.exit(0);
203
- }
240
+ if (!analytics) {
241
+ process.exit(0)
242
+ }
204
243
 
205
- try {
206
- await googleAnalytics.trackTiming('CMA start time', Date.now() - timeStamp);
207
- if (!process.isFirstStart) {
208
- googleAnalytics.printAboutAnalytics();
209
- process.exit(0);
210
- }
211
-
212
- const { manufacturer, brand } = await systeminformation.cpu();
213
- const { platform, kernel } = await systeminformation.osInfo();
214
- const { total } = await systeminformation.mem();
215
-
216
- // Get ram amount in MB
217
- const totalRam = Math.round(total / 1024 / 1024);
218
- const paramInfo = `Platform: ${platform} ${kernel}, CPU model: ${manufacturer} ${brand}, RAM amount: ${totalRam}MB`;
219
-
220
- await googleAnalytics.trackEvent('Params', paramInfo, 0, 'OS');
221
- googleAnalytics.printAboutAnalytics();
222
- } catch (e) {
223
- await googleAnalytics.trackError(e.message || e);
244
+ try {
245
+ await googleAnalytics.trackTiming(
246
+ 'CMA start time',
247
+ Date.now() - timeStamp
248
+ )
249
+ if (!process.isFirstStart) {
250
+ googleAnalytics.printAboutAnalytics()
251
+ process.exit(0)
224
252
  }
225
253
 
226
- if (tasks.err && tasks.err.length > 0) {
227
- for (const err of tasks.err) {
228
- console.log(err);
229
- }
230
- await reportErrors(tasks.err);
231
- }
254
+ const { manufacturer, brand } = await systeminformation.cpu()
255
+ const { platform, kernel } = await systeminformation.osInfo()
256
+ const { total } = await systeminformation.mem()
232
257
 
233
- process.exit(0);
258
+ // Get ram amount in MB
259
+ const totalRam = Math.round(total / 1024 / 1024)
260
+ const paramInfo = `Platform: ${platform} ${kernel}, CPU model: ${manufacturer} ${brand}, RAM amount: ${totalRam}MB`
261
+
262
+ await googleAnalytics.trackEvent('Params', paramInfo, 0, 'OS')
263
+ googleAnalytics.printAboutAnalytics()
234
264
  } catch (e) {
235
- await reportErrors([e]);
236
- process.exit(1);
265
+ await googleAnalytics.trackError(e.message || e)
237
266
  }
267
+
268
+ if (tasks.err && tasks.err.length > 0) {
269
+ for (const err of tasks.err) {
270
+ console.log(err)
271
+ }
272
+ await reportErrors(tasks.err)
273
+ }
274
+
275
+ process.exit(0)
238
276
  }
239
- );
240
- };
277
+ )
278
+ }
@@ -1,59 +1,73 @@
1
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
2
- const { Listr } = require('listr2');
3
- const getMagentoVersionConfig = require('../config/get-magento-version-config');
4
- const { getCachedPorts } = require('../config/get-port-config');
1
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
2
+ const { Listr } = require('listr2')
3
+ const getMagentoVersionConfig = require('../config/get-magento-version-config')
4
+ const { getCachedPorts } = require('../config/get-port-config')
5
5
 
6
- const { prettyStatus } = require('../tasks/status');
7
- const { checkRequirements } = require('../tasks/requirements');
8
- const { statusContainers } = require('../tasks/docker/containers');
9
- const getProjectConfiguration = require('../config/get-project-configuration');
10
- const checkConfigurationFile = require('../config/check-configuration-file');
11
- const checkPHPVersion = require('../tasks/requirements/php-version');
12
- const { getComposerVersionTask } = require('../tasks/composer');
13
- const { systemApi } = require('../tasks/docker/system');
6
+ const { prettyStatus } = require('../tasks/status')
7
+ const { checkRequirements } = require('../tasks/requirements')
8
+ const { statusContainers } = require('../tasks/docker/containers')
9
+ const getProjectConfiguration = require('../config/get-project-configuration')
10
+ const checkConfigurationFile = require('../config/check-configuration-file')
11
+ const checkPHPVersion = require('../tasks/requirements/php-version')
12
+ const { getComposerVersionTask } = require('../tasks/composer')
13
+ const { systemApi } = require('../tasks/docker/system')
14
14
 
15
15
  /**
16
16
  * @param {import('yargs')} yargs
17
17
  */
18
18
  module.exports = (yargs) => {
19
- yargs.command('status', 'Show application status', () => {}, async (args) => {
20
- const tasks = new Listr([
21
- checkRequirements(),
22
- getMagentoVersionConfig(),
23
- checkConfigurationFile(),
24
- getProjectConfiguration(),
25
- getCachedPorts(),
26
- {
27
- task: (_ctx, task) => task.newListr([
28
- checkPHPVersion(),
29
- getComposerVersionTask(),
19
+ yargs.command(
20
+ 'status',
21
+ 'Show application status',
22
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
23
+ () => {},
24
+ async (args) => {
25
+ const tasks = new Listr(
26
+ [
27
+ checkRequirements(),
28
+ getMagentoVersionConfig(),
29
+ checkConfigurationFile(),
30
+ getProjectConfiguration(),
31
+ getCachedPorts(),
30
32
  {
31
- title: 'Retrieving Docker System data',
32
- task: async (ctx) => {
33
- ctx.systemDFData = await systemApi.df({
34
- formatToJSON: true,
35
- verbose: true
36
- });
37
- }
38
- }
39
- ], {
40
- concurrent: true
41
- })
42
- },
43
- statusContainers()
44
- ], {
45
- concurrent: false,
46
- exitOnError: true,
47
- ctx: { throwMagentoVersionMissing: true, ...args },
48
- rendererOptions: { collapse: false, clearOutput: true }
49
- });
33
+ task: (_ctx, task) =>
34
+ task.newListr(
35
+ [
36
+ checkPHPVersion(),
37
+ getComposerVersionTask(),
38
+ {
39
+ title: 'Retrieving Docker System data',
40
+ task: async (ctx) => {
41
+ ctx.systemDFData =
42
+ await systemApi.df({
43
+ formatToJSON: true,
44
+ verbose: true
45
+ })
46
+ }
47
+ }
48
+ ],
49
+ {
50
+ concurrent: true
51
+ }
52
+ )
53
+ },
54
+ statusContainers()
55
+ ],
56
+ {
57
+ concurrent: false,
58
+ exitOnError: true,
59
+ ctx: { throwMagentoVersionMissing: true, ...args },
60
+ rendererOptions: { collapse: false, clearOutput: true }
61
+ }
62
+ )
50
63
 
51
- try {
52
- await prettyStatus(await tasks.run());
53
- } catch (e) {
54
- logger.error(e.message || e);
55
- process.exit(1);
64
+ try {
65
+ await prettyStatus(await tasks.run())
66
+ } catch (e) {
67
+ logger.error(e.message || e)
68
+ process.exit(1)
69
+ }
70
+ process.exit(0)
56
71
  }
57
- process.exit(0);
58
- });
59
- };
72
+ )
73
+ }
@@ -1,14 +1,17 @@
1
- const { Listr } = require('listr2');
2
- const stop = require('../tasks/stop');
1
+ const { Listr } = require('listr2')
2
+ const stop = require('../tasks/stop')
3
3
 
4
4
  /**
5
5
  * @param {import('yargs')} yargs
6
6
  */
7
7
  module.exports = (yargs) => {
8
- yargs.command('stop', 'Stop the application.', () => {}, async () => {
9
- const tasks = new Listr(
10
- stop(),
11
- {
8
+ yargs.command(
9
+ 'stop',
10
+ 'Stop the application.',
11
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
12
+ () => {},
13
+ async () => {
14
+ const tasks = new Listr(stop(), {
12
15
  concurrent: false,
13
16
  exitOnError: true,
14
17
  rendererOptions: {
@@ -18,9 +21,9 @@ module.exports = (yargs) => {
18
21
  throwMagentoVersionMissing: true,
19
22
  projectPath: process.cwd()
20
23
  }
21
- }
22
- );
24
+ })
23
25
 
24
- await tasks.run();
25
- });
26
- };
26
+ await tasks.run()
27
+ }
28
+ )
29
+ }