@scandipwa/magento-scripts 2.0.3 → 2.0.4

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 -157
  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 +3 -3
  47. package/lib/config/services/mariadb/versions/mariadb-10.3.js +3 -3
  48. package/lib/config/services/mariadb/versions/mariadb-10.4.js +3 -3
  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 +2 -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 +18 -10
  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 +40 -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 +14 -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 +63 -54
  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 +8 -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 +44 -19
  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,82 +1,89 @@
1
- const { allVersions, defaultConfiguration } = require('./versions');
2
- const getInstalledMagentoVersion = require('../util/get-installed-magento-version');
3
- const sleep = require('../util/sleep');
4
- const scandipwaMagentoVersionMapping = require('./scandipwa-versions');
1
+ const { allVersions, defaultConfiguration } = require('./versions')
2
+ const getInstalledMagentoVersion = require('../util/get-installed-magento-version')
3
+ const sleep = require('../util/sleep')
4
+ const scandipwaMagentoVersionMapping = require('./scandipwa-versions')
5
5
 
6
- const longestMagentoName = allVersions.map(({ name }) => name).reduce((acc, val) => (val.length > acc ? val.length : acc), 0);
6
+ const longestMagentoName = allVersions
7
+ .map(({ name }) => name)
8
+ .reduce((acc, val) => (val.length > acc ? val.length : acc), 0)
7
9
 
8
10
  const getMagentoVersionMessage = (version) => {
9
- const pureMagentoVersion = version.name.replace(/-p[0-9]+$/i, '');
11
+ const pureMagentoVersion = version.name.replace(/-p[0-9]+$/i, '')
10
12
  if (scandipwaMagentoVersionMapping[pureMagentoVersion]) {
11
- const padding = longestMagentoName - version.name.length;
12
- return `${ version.name }${ ' '.repeat(padding) } (Supported ScandiPWA version: ${ scandipwaMagentoVersionMapping[pureMagentoVersion] })`;
13
+ const padding = longestMagentoName - version.name.length
14
+ return `${version.name}${' '.repeat(
15
+ padding
16
+ )} (Supported ScandiPWA version: ${
17
+ scandipwaMagentoVersionMapping[pureMagentoVersion]
18
+ })`
13
19
  }
14
20
 
15
- return version.name;
16
- };
21
+ return version.name
22
+ }
17
23
 
18
24
  /**
19
- * @type {() => import('listr2').ListrTask<import('../../typings/context').ListrContext>}
25
+ * @returns {import('listr2').ListrTask<import('../../typings/context').ListrContext>}
20
26
  */
21
27
  const getMagentoVersion = () => ({
22
28
  // title: 'Loading Magento version',
23
29
  task: async (ctx, task) => {
24
- const { throwMagentoVersionMissing = false, projectPath = process.cwd() } = ctx;
25
- let { magentoVersion } = ctx;
30
+ const {
31
+ throwMagentoVersionMissing = false,
32
+ projectPath = process.cwd()
33
+ } = ctx
34
+ let { magentoVersion } = ctx
26
35
 
27
36
  if (!magentoVersion) {
28
- task.title = 'Loading Magento version';
37
+ task.title = 'Loading Magento version'
29
38
  try {
30
- magentoVersion = await getInstalledMagentoVersion(projectPath);
39
+ magentoVersion = await getInstalledMagentoVersion(projectPath)
31
40
  } catch (e) {
32
41
  if (throwMagentoVersionMissing) {
33
- throw e;
42
+ throw e
34
43
  }
35
44
  if (allVersions.length === 1) {
36
- const { magentoVersion: defaultMagentoVersion } = defaultConfiguration;
37
- magentoVersion = defaultMagentoVersion;
45
+ const { magentoVersion: defaultMagentoVersion } =
46
+ defaultConfiguration
47
+ magentoVersion = defaultMagentoVersion
38
48
  } else {
39
- let promptSkipper = false;
49
+ let promptSkipper = false
40
50
  const timer = async () => {
41
51
  for (let i = 5 * 60; i !== 0; i--) {
42
- // eslint-disable-next-line no-await-in-loop
43
- await sleep(1000);
52
+ await sleep(1000)
44
53
  if (promptSkipper) {
45
- return null;
54
+ return null
46
55
  }
47
- task.title = `Checking app config (${i} sec left...)`;
56
+ task.title = `Checking app config (${i} sec left...)`
48
57
  }
49
- task.cancelPrompt();
50
- return defaultConfiguration.magento;
51
- };
58
+ task.cancelPrompt()
59
+ return defaultConfiguration.magento
60
+ }
52
61
 
53
62
  magentoVersion = await Promise.race([
54
63
  task.prompt({
55
64
  type: 'Select',
56
65
  message: 'Choose Magento Version',
57
66
  name: 'magentoVersion',
58
- choices: allVersions.map((version) => (
59
- {
60
- name: version.name,
61
- message: getMagentoVersionMessage(version)
62
- }
63
- )),
67
+ choices: allVersions.map((version) => ({
68
+ name: version.name,
69
+ message: getMagentoVersionMessage(version)
70
+ })),
64
71
  initial: defaultConfiguration.name,
65
72
  scroll: true,
66
73
  limit: 7,
67
74
  footer: `(use arrow keys to select other magento versions, in total we support ${allVersions.length} versions)`
68
75
  }),
69
76
  timer()
70
- ]);
77
+ ])
71
78
 
72
- promptSkipper = true;
79
+ promptSkipper = true
73
80
  }
74
81
  }
75
- task.title = `Using Magento ${magentoVersion}`;
82
+ task.title = `Using Magento ${magentoVersion}`
76
83
  }
77
84
 
78
- ctx.magentoVersion = magentoVersion;
85
+ ctx.magentoVersion = magentoVersion
79
86
  }
80
- });
87
+ })
81
88
 
82
- module.exports = getMagentoVersion;
89
+ module.exports = getMagentoVersion
@@ -1,86 +1,72 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const { baseConfig } = require('.');
4
- const KnownError = require('../errors/known-error');
5
- const pathExists = require('../util/path-exists');
6
- const {
7
- getPort,
8
- getPortsConfig,
9
- defaultPorts
10
- } = require('./port-config');
1
+ const fs = require('fs')
2
+ const path = require('path')
3
+ const { baseConfig } = require('.')
4
+ const KnownError = require('../errors/known-error')
5
+ const pathExists = require('../util/path-exists')
6
+ const { getPort, getPortsConfig, defaultPorts } = require('./port-config')
11
7
 
12
- const portConfigPath = path.join(baseConfig.cacheDir, 'port-config.json');
8
+ const portConfigPath = path.join(baseConfig.cacheDir, 'port-config.json')
13
9
 
14
10
  /**
15
11
  * Get available ports on the system
16
- * @type {() => import('listr2').ListrTask<import('../../typings/context').ListrContext>}
12
+ * @returns {import('listr2').ListrTask<import('../../typings/context').ListrContext>}
17
13
  */
18
14
  const getAvailablePorts = () => ({
19
15
  title: 'Getting available ports',
20
16
  task: async (ctx) => {
21
- let ports = { ...defaultPorts };
17
+ let ports = { ...defaultPorts }
22
18
 
23
19
  if (await pathExists(portConfigPath)) {
24
20
  ports = JSON.parse(
25
- await fs.promises.readFile(
26
- portConfigPath,
27
- 'utf-8'
28
- )
29
- );
21
+ await fs.promises.readFile(portConfigPath, 'utf-8')
22
+ )
30
23
  if (!ports.sslTerminator) {
31
- ports.sslTerminator = ports.app;
32
- ports.app = defaultPorts.app;
24
+ ports.sslTerminator = ports.app
25
+ ports.app = defaultPorts.app
33
26
  }
34
27
  }
35
28
  const {
36
- systemConfiguration: {
37
- useNonOverlappingPorts
38
- }
39
- } = ctx;
29
+ systemConfiguration: { useNonOverlappingPorts }
30
+ } = ctx
40
31
  const availablePorts = await getPortsConfig(ports, {
41
32
  useNonOverlappingPorts
42
- });
33
+ })
43
34
 
44
35
  if (ctx.port) {
45
- const isPortAvailable = (await getPort(ctx.port)) === ctx.port;
36
+ const isPortAvailable = (await getPort(ctx.port)) === ctx.port
46
37
  if (!isPortAvailable) {
47
- throw new KnownError(`Port ${ctx.port} is not available`);
38
+ throw new KnownError(`Port ${ctx.port} is not available`)
48
39
  } else {
49
- availablePorts.sslTerminator = ctx.port;
40
+ availablePorts.sslTerminator = ctx.port
50
41
  }
51
42
  }
52
43
 
53
- // eslint-disable-next-line no-param-reassign
54
- ctx.ports = availablePorts;
44
+ ctx.ports = availablePorts
55
45
  }
56
- });
46
+ })
57
47
 
58
48
  /**
59
- * @type {() => import('listr2').ListrTask<import('../../typings/context').ListrContext>}
49
+ * @returns {import('listr2').ListrTask<import('../../typings/context').ListrContext>}
60
50
  */
61
51
  const getCachedPorts = () => ({
62
52
  title: 'Getting cached ports',
63
53
  task: async (ctx) => {
64
- let ports;
54
+ let ports
65
55
 
66
56
  if (await pathExists(portConfigPath)) {
67
57
  ports = JSON.parse(
68
- await fs.promises.readFile(
69
- portConfigPath,
70
- 'utf-8'
71
- )
72
- );
73
- ctx.cachedPorts = { ...ports };
58
+ await fs.promises.readFile(portConfigPath, 'utf-8')
59
+ )
60
+ ctx.cachedPorts = { ...ports }
74
61
  } else {
75
- ports = { ...defaultPorts };
62
+ ports = { ...defaultPorts }
76
63
  }
77
64
 
78
- // eslint-disable-next-line no-param-reassign
79
- ctx.ports = ports;
65
+ ctx.ports = ports
80
66
  }
81
- });
67
+ })
82
68
 
83
69
  module.exports = {
84
70
  getAvailablePorts,
85
71
  getCachedPorts
86
- };
72
+ }
@@ -1,22 +1,22 @@
1
- const { getProjectConfig } = require('./config');
2
- const { getConfigFromMagentoVersion } = require('./index');
1
+ const { getProjectConfig } = require('./config')
2
+ const { getConfigFromMagentoVersion } = require('./index')
3
3
 
4
4
  /**
5
- * @type {() => import('listr2').ListrTask<import('../../typings/context').ListrContext>}
5
+ * @returns {import('listr2').ListrTask<import('../../typings/context').ListrContext>}
6
6
  */
7
7
  const getProjectConfiguration = () => ({
8
8
  title: 'Getting project configuration',
9
9
  task: async (ctx) => {
10
- const { magentoVersion } = ctx;
10
+ const { magentoVersion } = ctx
11
11
 
12
12
  if (typeof ctx.debug !== 'boolean') {
13
- ctx.debug = getProjectConfig().debug;
13
+ ctx.debug = getProjectConfig().debug
14
14
  }
15
15
 
16
16
  ctx.config = await getConfigFromMagentoVersion(ctx, {
17
17
  magentoVersion
18
- });
18
+ })
19
19
  }
20
- });
20
+ })
21
21
 
22
- module.exports = getProjectConfiguration;
22
+ module.exports = getProjectConfiguration
@@ -1,18 +1,15 @@
1
- const path = require('path');
2
- const getDockerConfig = require('./docker');
3
- const {
4
- getConfigurations,
5
- defaultConfiguration
6
- } = require('./versions');
7
- const getPhpConfig = require('./php-config');
8
- const { getMagentoConfig } = require('./magento-config');
9
- const resolveConfigurationWithOverrides = require('../util/resolve-configuration-with-overrides');
10
- const { getPrefix, folderName } = require('../util/prefix');
11
- const UnknownError = require('../errors/unknown-error');
12
- const { getProjectConfig } = require('./config');
1
+ const path = require('path')
2
+ const getDockerConfig = require('./docker')
3
+ const { getConfigurations, defaultConfiguration } = require('./versions')
4
+ const getPhpConfig = require('./php-config')
5
+ const { getMagentoConfig } = require('./magento-config')
6
+ const resolveConfigurationWithOverrides = require('../util/resolve-configuration-with-overrides')
7
+ const { getPrefix, folderName } = require('../util/prefix')
8
+ const UnknownError = require('../errors/unknown-error')
9
+ const { getProjectConfig } = require('./config')
13
10
 
14
- const platforms = ['linux', 'darwin'];
15
- const darwinMinimalVersion = '10.5';
11
+ const platforms = ['linux', 'darwin']
12
+ const darwinMinimalVersion = '10.5'
16
13
 
17
14
  /**
18
15
  * @returns {import('../../typings/context').ListrContext['config']['baseConfig']}
@@ -22,55 +19,67 @@ const getBaseConfig = (projectPath = process.cwd(), prefix = folderName) => ({
22
19
  magentoDir: projectPath,
23
20
  containerMagentoDir: projectPath,
24
21
  templateDir: path.join(__dirname, 'templates'),
25
- cacheDir: path.join(projectPath, 'node_modules', '.create-magento-app-cache')
26
- });
22
+ cacheDir: path.join(
23
+ projectPath,
24
+ 'node_modules',
25
+ '.create-magento-app-cache'
26
+ )
27
+ })
27
28
 
28
- const baseConfig = getBaseConfig();
29
+ const baseConfig = getBaseConfig()
29
30
 
30
31
  const magento = {
31
32
  binPath: path.join(baseConfig.magentoDir, 'bin', 'magento'),
32
- containerBinPath: path.join(baseConfig.containerMagentoDir, 'bin', 'magento')
33
- };
33
+ containerBinPath: path.join(
34
+ baseConfig.containerMagentoDir,
35
+ 'bin',
36
+ 'magento'
37
+ )
38
+ }
34
39
 
35
40
  module.exports = {
36
41
  /**
37
- * @param {import('../../typings/context')} ctx
42
+ * @param {import('../../typings/context').ListrContext} ctx
38
43
  * @param {Object} param1
39
- * @param {String} [param1.magentoVersion]
44
+ * @param {String} param1.magentoVersion
40
45
  * @param {String} [param1.projectPath]
41
46
  * @param {String} [param1.prefix]
42
47
  */
43
- async getConfigFromMagentoVersion(ctx, {
44
- magentoVersion,
45
- projectPath = process.cwd(),
46
- prefix = folderName
47
- }) {
48
- const newBaseConfig = getBaseConfig(projectPath, prefix);
49
- const configurations = getConfigurations(newBaseConfig);
48
+ async getConfigFromMagentoVersion(
49
+ ctx,
50
+ { magentoVersion, projectPath = process.cwd(), prefix = folderName }
51
+ ) {
52
+ const newBaseConfig = getBaseConfig(projectPath, prefix)
53
+ const configurations = getConfigurations(newBaseConfig)
50
54
  if (!configurations[magentoVersion]) {
51
- throw new UnknownError(`No config found for magento version ${magentoVersion}`);
55
+ throw new UnknownError(
56
+ `No config found for magento version ${magentoVersion}`
57
+ )
52
58
  }
53
- const projectConfig = getProjectConfig();
59
+ const projectConfig = getProjectConfig()
54
60
 
55
- const {
56
- overridenConfiguration,
57
- userConfiguration
58
- } = await resolveConfigurationWithOverrides(
59
- configurations[magentoVersion],
60
- newBaseConfig,
61
- projectPath
62
- );
61
+ const { overridenConfiguration, userConfiguration } =
62
+ await resolveConfigurationWithOverrides(
63
+ configurations[magentoVersion],
64
+ projectPath
65
+ )
63
66
 
64
67
  return {
65
68
  php: getPhpConfig(overridenConfiguration, newBaseConfig),
66
- docker: await getDockerConfig(ctx, overridenConfiguration, newBaseConfig),
67
- magentoConfiguration: getMagentoConfig(overridenConfiguration.magento),
69
+ docker: await getDockerConfig(
70
+ ctx,
71
+ overridenConfiguration,
72
+ newBaseConfig
73
+ ),
74
+ magentoConfiguration: getMagentoConfig(
75
+ overridenConfiguration.magento
76
+ ),
68
77
  baseConfig: newBaseConfig,
69
78
  overridenConfiguration,
70
79
  userConfiguration,
71
80
  nonOverridenConfiguration: configurations[magentoVersion],
72
81
  projectConfig
73
- };
82
+ }
74
83
  },
75
84
  baseConfig,
76
85
  getBaseConfig,
@@ -78,4 +87,4 @@ module.exports = {
78
87
  platforms,
79
88
  darwinMinimalVersion,
80
89
  defaultConfiguration
81
- };
90
+ }
@@ -1,29 +1,43 @@
1
- const magento23RequiredPHPExtensions = require('./magento-2.3');
2
- const magento24RequiredPHPExtensions = require('./magento-2.4');
1
+ const magento23RequiredPHPExtensions = require('./magento-2.3')
2
+ const magento24RequiredPHPExtensions = require('./magento-2.4')
3
3
 
4
- const { phpExtensionInstallationInstructions } = require('../../services/php/extensions');
4
+ const {
5
+ phpExtensionInstallationInstructions
6
+ } = require('../../services/php/extensions')
5
7
 
6
8
  /**
7
9
  * @param {string[]} requiredPHPExtensions
8
10
  * @returns {Record<string, import('../../../../typings/index').PHPExtensionInstallationInstruction>}
9
11
  */
10
- const mapMagentoRequiredExtensionsToInstructions = (requiredPHPExtensions) => requiredPHPExtensions.map((extensionName) => {
11
- if (phpExtensionInstallationInstructions[extensionName]) {
12
- return phpExtensionInstallationInstructions[extensionName];
13
- }
12
+ const mapMagentoRequiredExtensionsToInstructions = (requiredPHPExtensions) =>
13
+ requiredPHPExtensions
14
+ .map((extensionName) => {
15
+ if (phpExtensionInstallationInstructions[extensionName]) {
16
+ return phpExtensionInstallationInstructions[extensionName]
17
+ }
14
18
 
15
- for (const [extensionName, extensionData] of Object.entries(phpExtensionInstallationInstructions)) {
16
- if (extensionData.alternativeName && extensionData.alternativeName.includes(extensionName)) {
17
- return extensionData;
18
- }
19
- }
19
+ for (const [extensionName, extensionData] of Object.entries(
20
+ phpExtensionInstallationInstructions
21
+ )) {
22
+ if (
23
+ extensionData.alternativeName &&
24
+ extensionData.alternativeName.includes(extensionName)
25
+ ) {
26
+ return extensionData
27
+ }
28
+ }
20
29
 
21
- return {
22
- name: extensionName
23
- };
24
- }).reduce((acc, val) => ({ ...acc, [val.name]: val }), {});
30
+ return {
31
+ name: extensionName
32
+ }
33
+ })
34
+ .reduce((acc, val) => ({ ...acc, [val.name]: val }), {})
25
35
 
26
36
  module.exports = {
27
- magento23PHPExtensionList: mapMagentoRequiredExtensionsToInstructions(magento23RequiredPHPExtensions),
28
- magento24PHPExtensionList: mapMagentoRequiredExtensionsToInstructions(magento24RequiredPHPExtensions)
29
- };
37
+ magento23PHPExtensionList: mapMagentoRequiredExtensionsToInstructions(
38
+ magento23RequiredPHPExtensions
39
+ ),
40
+ magento24PHPExtensionList: mapMagentoRequiredExtensionsToInstructions(
41
+ magento24RequiredPHPExtensions
42
+ )
43
+ }
@@ -14,6 +14,6 @@ const magento23RequiredPHPExtensions = [
14
14
  'soap',
15
15
  'xsl',
16
16
  'zip'
17
- ];
17
+ ]
18
18
 
19
- module.exports = magento23RequiredPHPExtensions;
19
+ module.exports = magento23RequiredPHPExtensions
@@ -24,6 +24,6 @@ const magento24RequiredPHPExtensions = [
24
24
  'zip',
25
25
  'libxml',
26
26
  'openssl'
27
- ];
27
+ ]
28
28
 
29
- module.exports = magento24RequiredPHPExtensions;
29
+ module.exports = magento24RequiredPHPExtensions
@@ -1,4 +1,4 @@
1
- const { deepmerge } = require('../util/deepmerge');
1
+ const { deepmerge } = require('../util/deepmerge')
2
2
 
3
3
  /**
4
4
  * @type {import('../../typings/index').CMAConfiguration['magento']}
@@ -12,16 +12,16 @@ const defaultMagentoConfig = {
12
12
  adminuri: 'admin',
13
13
  mode: 'developer',
14
14
  edition: 'community'
15
- };
15
+ }
16
16
 
17
17
  /**
18
18
  *
19
19
  * @param {import('../../typings/index').CMAConfiguration['magento']} magento
20
20
  * @returns {import('../../typings/index').CMAConfiguration['magento']}
21
21
  */
22
- const getMagentoConfig = (magento) => deepmerge(defaultMagentoConfig, magento);
22
+ const getMagentoConfig = (magento) => deepmerge(defaultMagentoConfig, magento)
23
23
 
24
24
  module.exports = {
25
25
  defaultMagentoConfig,
26
26
  getMagentoConfig
27
- };
27
+ }
@@ -1,13 +1,15 @@
1
- const path = require('path');
1
+ const path = require('path')
2
2
 
3
3
  /**
4
4
  * @param {import('../../typings/context').ListrContext['config']['overridenConfiguration']} overridenConfiguration
5
5
  * @param {import('../../typings/context').ListrContext['config']['baseConfig']} baseConfig
6
6
  */
7
7
  module.exports = (overridenConfiguration, baseConfig) => {
8
- const { configuration: { php } } = overridenConfiguration;
8
+ const {
9
+ configuration: { php }
10
+ } = overridenConfiguration
9
11
 
10
- const { cacheDir } = baseConfig;
12
+ const { cacheDir } = baseConfig
11
13
 
12
14
  const phpConfiguration = {
13
15
  iniPath: path.join(cacheDir, 'php.ini'),
@@ -17,7 +19,7 @@ module.exports = (overridenConfiguration, baseConfig) => {
17
19
  fpmTemplatePath: php.fpmConfigTemplate,
18
20
  fpmConfPath: path.join(cacheDir, 'php-fpm.conf'),
19
21
  extensions: php.extensions
20
- };
22
+ }
21
23
 
22
- return phpConfiguration;
23
- };
24
+ return phpConfiguration
25
+ }