@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,49 +1,50 @@
1
1
  /* eslint-disable max-len */
2
- const path = require('path');
3
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
4
- const { getProjectCreatedAt, getPrefix } = require('../../util/prefix');
2
+ const path = require('path')
3
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
4
+ const { getProjectCreatedAt, getPrefix } = require('../../util/prefix')
5
5
 
6
- const { version: packageVersion } = require('../../../package.json');
7
- const { getArchSync } = require('../../util/arch');
8
- const ConsoleBlock = require('../../util/console-block');
9
- const { getInstanceMetadata } = require('../../util/instance-metadata');
6
+ const { version: packageVersion } = require('../../../package.json')
7
+ const { getArchSync } = require('../../util/arch')
8
+ const ConsoleBlock = require('../../util/console-block')
9
+ const { getInstanceMetadata } = require('../../util/instance-metadata')
10
10
 
11
+ /**
12
+ * @param {any} str
13
+ * @returns {str is string}
14
+ */
11
15
  const isJSON = (str) => {
12
16
  try {
13
- const result = JSON.parse(str);
17
+ const result = JSON.parse(str)
14
18
  if (typeof result === 'object') {
15
- return true;
19
+ return true
16
20
  }
17
21
  } catch (e) {
18
22
  //
19
23
  }
20
24
 
21
- return false;
22
- };
25
+ return false
26
+ }
23
27
 
24
28
  /**
25
29
  * @param {string} port
26
30
  * @return {{ host: string, hostPort: string, containerPort: string }}
27
31
  */
28
32
  const parsePort = (port) => {
29
- const [host, hostPort, containerPort] = port.split(':');
33
+ const [host, hostPort, containerPort] = port.split(':')
30
34
 
31
35
  return {
32
36
  host,
33
37
  hostPort,
34
38
  containerPort
35
- };
36
- };
39
+ }
40
+ }
37
41
 
38
42
  /**
39
43
  * @param {import('../../../typings/context').ListrContext & { containers: ReturnType<Awaited<ReturnType<import('../../config/docker')>>['getContainers']> }} ctx
40
44
  */
41
45
  const prettyStatus = async (ctx) => {
42
46
  const {
43
- config: {
44
- baseConfig,
45
- projectConfig
46
- },
47
+ config: { baseConfig, projectConfig },
47
48
  magentoVersion,
48
49
  dockerVersion,
49
50
  platform,
@@ -51,23 +52,35 @@ const prettyStatus = async (ctx) => {
51
52
  containers,
52
53
  composerVersion,
53
54
  systemDFData
54
- } = ctx;
55
- const projectCreatedAt = getProjectCreatedAt();
55
+ } = ctx
56
+ const projectCreatedAt = getProjectCreatedAt()
56
57
 
57
- const prefix = getPrefix();
58
+ const prefix = getPrefix()
58
59
 
59
- const { name: folderName } = path.parse(process.cwd());
60
+ const { name: folderName } = path.parse(process.cwd())
60
61
 
61
- const block = new ConsoleBlock();
62
+ const block = new ConsoleBlock()
62
63
 
63
64
  block
64
- .addHeader(`magento-scripts version: ${ logger.style.link(packageVersion) }`)
65
+ .addHeader(
66
+ `magento-scripts version: ${logger.style.link(packageVersion)}`
67
+ )
65
68
  .addEmptyLine()
66
- .addLine(`Project: ${logger.style.file(baseConfig.prefix)} ${prefix === folderName ? '(without prefix)' : '(with prefix)'} (with php container)${ projectConfig.debug ? ' (with debugging)' : '' }`)
67
- .addLine(`Project location: ${logger.style.link(process.cwd())}`);
69
+ .addLine(
70
+ `Project: ${logger.style.file(baseConfig.prefix)} ${
71
+ prefix === folderName ? '(without prefix)' : '(with prefix)'
72
+ } (with php container)${
73
+ projectConfig.debug ? ' (with debugging)' : ''
74
+ }`
75
+ )
76
+ .addLine(`Project location: ${logger.style.link(process.cwd())}`)
68
77
 
69
78
  if (projectCreatedAt) {
70
- block.addLine(`Project created: ${logger.style.link(projectCreatedAt.toDateString())} at ${logger.style.link(projectCreatedAt.toTimeString())}`);
79
+ block.addLine(
80
+ `Project created: ${logger.style.link(
81
+ projectCreatedAt.toDateString()
82
+ )} at ${logger.style.link(projectCreatedAt.toTimeString())}`
83
+ )
71
84
  }
72
85
 
73
86
  block
@@ -79,125 +92,179 @@ const prettyStatus = async (ctx) => {
79
92
  .addLine(`Platform version: ${logger.style.file(platformVersion)}`)
80
93
  .addLine(`Platform architecture: ${logger.style.file(getArchSync())}`)
81
94
  .addEmptyLine()
82
- .addSeparator('Docker containers status');
95
+ .addSeparator('Docker containers status')
83
96
 
84
97
  Object.values(containers).forEach((container) => {
85
98
  block
86
99
  .addEmptyLine()
87
100
  .addLine(`> ${logger.style.misc(container._)}`)
88
- .addEmptyLine();
101
+ .addEmptyLine()
89
102
 
90
- let containerStatus;
103
+ let containerStatus
91
104
 
92
- if (container.status && container.status.State && container.status.State.Health) {
93
- containerStatus = `✓ ${ logger.style.file(container.status.State.Health.Status) } and ${ logger.style.file('running') }`;
105
+ if (
106
+ container.status &&
107
+ container.status.State &&
108
+ container.status.State.Health
109
+ ) {
110
+ containerStatus = `✓ ${logger.style.file(
111
+ container.status.State.Health.Status
112
+ )} and ${logger.style.file('running')}`
94
113
  } else if (container.status && container.status.State) {
95
- containerStatus = logger.style.file(container.status.State.Status);
114
+ containerStatus = logger.style.file(container.status.State.Status)
96
115
  } else {
97
- containerStatus = '✖ Not running';
116
+ containerStatus = '✖ Not running'
98
117
  }
99
118
 
100
119
  block
101
120
  .addLine(`Status: ${containerStatus}`)
102
- .addLine(`Name: ${logger.style.misc(container.name)}`);
103
-
104
- if (container.status && container.status.Config && container.status.Config.Image) {
105
- block.addLine(`Image: ${logger.style.file(container.status.Config.Image)}`);
121
+ .addLine(`Name: ${logger.style.misc(container.name)}`)
122
+
123
+ if (
124
+ container.status &&
125
+ container.status.Config &&
126
+ container.status.Config.Image
127
+ ) {
128
+ block.addLine(
129
+ `Image: ${logger.style.file(container.status.Config.Image)}`
130
+ )
106
131
  } else {
107
- block.addLine(`Image: ${logger.style.file(container.image)}`);
132
+ block.addLine(`Image: ${logger.style.file(container.image)}`)
108
133
  }
109
134
 
110
- block.addLine(`Network: ${logger.style.link(container.network)}`);
135
+ block.addLine(`Network: ${logger.style.link(container.network)}`)
111
136
 
112
- if (!containerStatus.includes('Not running') && container.forwardedPorts && container.forwardedPorts.length > 0) {
113
- block.addLine('Port forwarding:');
137
+ if (
138
+ !containerStatus.includes('Not running') &&
139
+ container.forwardedPorts &&
140
+ container.forwardedPorts.length > 0
141
+ ) {
142
+ block.addLine('Port forwarding:')
114
143
  container.forwardedPorts.forEach((port) => {
115
- const { host, hostPort, containerPort } = parsePort(port);
144
+ const { host, hostPort, containerPort } = parsePort(port)
116
145
  if (container.network !== 'host') {
117
- block.addLine(`${' '.repeat(3)} ${logger.style.link(`${host}:${hostPort}`)} -> ${logger.style.file(containerPort)} (${logger.style.link('host')} -> ${logger.style.file('container')})`);
146
+ block.addLine(
147
+ `${' '.repeat(3)} ${logger.style.link(
148
+ `${host}:${hostPort}`
149
+ )} -> ${logger.style.file(
150
+ containerPort
151
+ )} (${logger.style.link('host')} -> ${logger.style.file(
152
+ 'container'
153
+ )})`
154
+ )
118
155
  } else {
119
- block.addLine(`${' '.repeat(3)} ${logger.style.link(`Running on host network - ${host}:${hostPort}`)}`);
156
+ block.addLine(
157
+ `${' '.repeat(3)} ${logger.style.link(
158
+ `Running on host network - ${host}:${hostPort}`
159
+ )}`
160
+ )
120
161
  }
121
- });
162
+ })
122
163
  }
123
164
 
124
165
  if (container.env && Object.keys(container.env).length > 0) {
125
- block.addLine('Environment variables:');
166
+ block.addLine('Environment variables:')
126
167
  for (const [envName, envValue] of Object.entries(container.env)) {
127
168
  if (isJSON(envValue)) {
128
- const beautifyJSONLines = JSON.stringify(JSON.parse(envValue), null, 1).split('\n');
169
+ const beautifyJSONLines = JSON.stringify(
170
+ JSON.parse(envValue),
171
+ null,
172
+ 1
173
+ ).split('\n')
129
174
 
130
- block.addLine(`${' '.repeat(3)} ${logger.style.misc(envName)}=${logger.style.file(beautifyJSONLines.shift())}`);
175
+ block.addLine(
176
+ `${' '.repeat(3)} ${logger.style.misc(
177
+ envName
178
+ )}=${logger.style.file(beautifyJSONLines.shift())}`
179
+ )
131
180
 
132
- let currentOpeningBracket = 0;
181
+ let currentOpeningBracket = 0
133
182
 
134
183
  beautifyJSONLines.forEach((line) => {
135
- block.addLine(`${' '.repeat(2 + currentOpeningBracket)}${logger.style.file(line)}`);
136
- if (['{', '['].some((openingBracketVariant) => line.includes(openingBracketVariant))) {
137
- currentOpeningBracket++;
138
- } else if (['}', ']'].some((closingBracketVariant) => line.includes(closingBracketVariant))) {
139
- currentOpeningBracket--;
184
+ block.addLine(
185
+ `${' '.repeat(
186
+ 2 + currentOpeningBracket
187
+ )}${logger.style.file(line)}`
188
+ )
189
+ if (
190
+ ['{', '['].some((openingBracketVariant) =>
191
+ line.includes(openingBracketVariant)
192
+ )
193
+ ) {
194
+ currentOpeningBracket++
195
+ } else if (
196
+ ['}', ']'].some((closingBracketVariant) =>
197
+ line.includes(closingBracketVariant)
198
+ )
199
+ ) {
200
+ currentOpeningBracket--
140
201
  }
141
- });
202
+ })
142
203
  } else {
143
- block.addLine(`${' '.repeat(3)} ${logger.style.misc(envName)}=${logger.style.file(envValue)}`);
204
+ block.addLine(
205
+ `${' '.repeat(3)} ${logger.style.misc(
206
+ envName
207
+ )}=${logger.style.file(envValue)}`
208
+ )
144
209
  }
145
210
  }
146
211
  }
147
212
 
148
213
  if (container.description) {
149
- block.addLine('Description:');
214
+ block.addLine('Description:')
150
215
  container.description.split('\n').forEach((line) => {
151
- block.addLine(line);
152
- });
216
+ block.addLine(line)
217
+ })
153
218
  }
154
- });
219
+ })
155
220
 
156
- block
157
- .addSeparator('Docker volume data')
158
- .addEmptyLine();
221
+ block.addSeparator('Docker volume data').addEmptyLine()
159
222
 
160
- const { volumes } = ctx.config.docker;
223
+ const { volumes } = ctx.config.docker
161
224
 
162
225
  Object.values(volumes)
163
226
  .map((volume) => {
164
- volume.volumeData = systemDFData.Volumes
165
- .find((v) => v.Name === volume.name);
227
+ volume.volumeData = systemDFData.Volumes.find(
228
+ (v) => v.Name === volume.name
229
+ )
166
230
 
167
- return volume;
231
+ return volume
168
232
  })
169
233
  .forEach((v) => {
170
- block
171
- .addLine(`> ${logger.style.misc(v.name)}`);
234
+ block.addLine(`> ${logger.style.misc(v.name)}`)
172
235
  if (v.volumeData) {
173
- block.addLine(`Size: ${logger.style.code(v.volumeData.Size)}`);
236
+ block.addLine(`Size: ${logger.style.code(v.volumeData.Size)}`)
174
237
  }
175
238
 
176
239
  if (ctx.isDockerDesktop && v.opt && v.opt.device) {
177
- block.addLine(`Mountpoint: ${logger.style.file(v.opt.device.replace(process.cwd(), '<project location>'))}`);
240
+ block.addLine(
241
+ `Mountpoint: ${logger.style.file(
242
+ v.opt.device.replace(
243
+ process.cwd(),
244
+ '<project location>'
245
+ )
246
+ )}`
247
+ )
178
248
  }
179
- });
249
+ })
180
250
 
181
- const instanceMetadata = getInstanceMetadata(ctx);
251
+ const instanceMetadata = getInstanceMetadata(ctx)
182
252
 
183
- block
184
- .addEmptyLine()
185
- .addSeparator('Magento 2')
186
- .addEmptyLine();
253
+ block.addEmptyLine().addSeparator('Magento 2').addEmptyLine()
187
254
 
188
- block.addLine(logger.style.misc('Frontend'));
255
+ block.addLine(logger.style.misc('Frontend'))
189
256
  instanceMetadata.frontend.forEach(({ title, text }) => {
190
- block.addLine(` ${title}: ${text}`);
191
- });
257
+ block.addLine(` ${title}: ${text}`)
258
+ })
192
259
 
193
- block.addEmptyLine();
260
+ block.addEmptyLine()
194
261
 
195
- block.addLine(logger.style.misc('Admin'));
262
+ block.addLine(logger.style.misc('Admin'))
196
263
  instanceMetadata.admin.forEach(({ title, text }) => {
197
- block.addLine(` ${title}: ${text}`);
198
- });
264
+ block.addLine(` ${title}: ${text}`)
265
+ })
199
266
 
200
- block.log();
201
- };
267
+ block.log()
268
+ }
202
269
 
203
- module.exports = { prettyStatus };
270
+ module.exports = { prettyStatus }
package/lib/tasks/stop.js CHANGED
@@ -1,24 +1,28 @@
1
- const { stopServices } = require('./docker');
2
- const getMagentoVersionConfig = require('../config/get-magento-version-config');
3
- const getProjectConfiguration = require('../config/get-project-configuration');
4
- const checkConfigurationFile = require('../config/check-configuration-file');
5
- const getDockerVersion = require('./requirements/docker/version');
1
+ const { stopServices } = require('./docker')
2
+ const getMagentoVersionConfig = require('../config/get-magento-version-config')
3
+ const getProjectConfiguration = require('../config/get-project-configuration')
4
+ const checkConfigurationFile = require('../config/check-configuration-file')
5
+ const getDockerVersion = require('./requirements/docker/version')
6
6
 
7
7
  /**
8
- * @type {() => import('listr2').ListrTask<import('../../typings/context').ListrContext>}
8
+ * @returns {import('listr2').ListrTask<import('../../typings/context').ListrContext>}
9
9
  */
10
10
  const stop = () => ({
11
11
  title: 'Stopping project',
12
- task: async (ctx, task) => task.newListr([
13
- getDockerVersion(),
14
- getMagentoVersionConfig(),
15
- checkConfigurationFile(),
16
- getProjectConfiguration(),
17
- stopServices()
18
- ], {
19
- concurrent: false,
20
- exitOnError: true
21
- })
22
- });
12
+ task: async (ctx, task) =>
13
+ task.newListr(
14
+ [
15
+ getDockerVersion(),
16
+ getMagentoVersionConfig(),
17
+ checkConfigurationFile(),
18
+ getProjectConfiguration(),
19
+ stopServices()
20
+ ],
21
+ {
22
+ concurrent: false,
23
+ exitOnError: true
24
+ }
25
+ )
26
+ })
23
27
 
24
- module.exports = stop;
28
+ module.exports = stop
@@ -1,9 +1,9 @@
1
- const path = require('path');
2
- const pathExists = require('../../util/path-exists');
3
- const { execAsyncSpawn } = require('../../util/exec-async-command');
4
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
5
- const matchFilesystem = require('../../util/match-filesystem');
6
- const UnknownError = require('../../errors/unknown-error');
1
+ const path = require('path')
2
+ const pathExists = require('../../util/path-exists')
3
+ const { execAsyncSpawn } = require('../../util/exec-async-command')
4
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
5
+ const matchFilesystem = require('../../util/match-filesystem')
6
+ const UnknownError = require('../../errors/unknown-error')
7
7
 
8
8
  /**
9
9
  * @type {(theme: import('../../../typings/theme').Theme) => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -11,51 +11,68 @@ const UnknownError = require('../../errors/unknown-error');
11
11
  const buildTheme = ({ themePath }) => ({
12
12
  title: `Building theme in ${themePath}`,
13
13
  task: async (ctx, task) => {
14
- const { verbose = false } = ctx;
14
+ const { verbose = false } = ctx
15
15
 
16
- if (!await pathExists(path.join(themePath, 'node_modules'))) {
17
- task.output = 'Installing theme dependencies';
18
- const commandToInstallDependencies = await pathExists(path.join(themePath, 'package-lock.json'))
16
+ if (!(await pathExists(path.join(themePath, 'node_modules')))) {
17
+ task.output = 'Installing theme dependencies'
18
+ const commandToInstallDependencies = (await pathExists(
19
+ path.join(themePath, 'package-lock.json')
20
+ ))
19
21
  ? 'npm ci'
20
- : 'npm i';
22
+ : 'npm i'
21
23
 
22
24
  try {
23
25
  await execAsyncSpawn(commandToInstallDependencies, {
24
26
  cwd: path.join(process.cwd(), themePath),
25
- callback: !verbose ? undefined : (t) => {
26
- task.output = t;
27
- }
28
- });
27
+ callback: !verbose
28
+ ? undefined
29
+ : (t) => {
30
+ task.output = t
31
+ }
32
+ })
29
33
  } catch (e) {
30
- throw new UnknownError(`We were unable to install theme dependencies in ${themePath} using ${logger.style.code(commandToInstallDependencies)} command!
31
- If you have ${logger.style.file('package-lock.json')} in theme directory make sure it's up to date with ${logger.style.file('package.json')} file content.`);
34
+ throw new UnknownError(`We were unable to install theme dependencies in ${themePath} using ${logger.style.code(
35
+ commandToInstallDependencies
36
+ )} command!
37
+ If you have ${logger.style.file(
38
+ 'package-lock.json'
39
+ )} in theme directory make sure it's up to date with ${logger.style.file(
40
+ 'package.json'
41
+ )} file content.`)
32
42
  }
33
43
  }
34
44
 
35
- const magentoThemeDirPath = path.join(themePath, 'magento', 'Magento_Theme');
36
- const isMagentoThemeDirMatching = await matchFilesystem(magentoThemeDirPath, {
37
- templates: true,
38
- web: [
39
- 'static'
40
- ]
41
- });
45
+ const magentoThemeDirPath = path.join(
46
+ themePath,
47
+ 'magento',
48
+ 'Magento_Theme'
49
+ )
50
+ const isMagentoThemeDirMatching = await matchFilesystem(
51
+ magentoThemeDirPath,
52
+ {
53
+ templates: true,
54
+ web: ['static']
55
+ }
56
+ )
42
57
 
43
58
  if (isMagentoThemeDirMatching) {
44
- task.skip();
45
- return;
59
+ task.skip()
60
+ return
46
61
  }
47
62
 
48
- task.output = 'Building theme...';
63
+ task.output = 'Building theme...'
49
64
  await execAsyncSpawn('BUILD_MODE=magento npm run build', {
50
65
  cwd: path.join(process.cwd(), themePath),
51
- callback: !verbose ? undefined : (t) => {
52
- task.output = t;
53
- }
54
- });
66
+ callback: !verbose
67
+ ? undefined
68
+ : (t) => {
69
+ task.output = t
70
+ }
71
+ })
55
72
  },
56
73
  options: {
57
74
  bottomBar: 10
58
75
  }
59
- });
76
+ })
60
77
 
61
- module.exports = buildTheme;
78
+ module.exports = buildTheme
@@ -1,7 +1,7 @@
1
- const path = require('path');
2
- const UnknownError = require('../../errors/unknown-error');
3
- const getJsonfileData = require('../../util/get-jsonfile-data');
4
- const runComposerCommand = require('../../util/run-composer');
1
+ const path = require('path')
2
+ const UnknownError = require('../../errors/unknown-error')
3
+ const getJsonfileData = require('../../util/get-jsonfile-data')
4
+ const runComposerCommand = require('../../util/run-composer')
5
5
 
6
6
  /**
7
7
  * @type {(theme: import('../../../typings/theme').Theme) => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -9,33 +9,46 @@ const runComposerCommand = require('../../util/run-composer');
9
9
  const installTheme = (theme) => ({
10
10
  title: 'Installing theme in composer.json',
11
11
  task: async (ctx, task) => {
12
- const { magentoVersion, verbose = false } = ctx;
13
- const composerJsonData = await getJsonfileData(path.join(process.cwd(), 'composer.json'));
12
+ const { verbose = false } = ctx
13
+ /**
14
+ * @type {{ require: Record<string, string> } | null}
15
+ */
16
+ const composerJsonData = await getJsonfileData(
17
+ path.join(process.cwd(), 'composer.json')
18
+ )
14
19
 
15
- if (composerJsonData.require[theme.composerData.name]) {
16
- task.skip();
17
- return;
20
+ if (
21
+ composerJsonData &&
22
+ composerJsonData.require[theme.composerData.name]
23
+ ) {
24
+ task.skip()
25
+ return
18
26
  }
19
27
 
20
28
  try {
21
- await runComposerCommand(ctx, `require ${theme.composerData.name}`, {
22
- magentoVersion,
23
- callback: !verbose ? undefined : (t) => {
24
- task.output = t;
29
+ await runComposerCommand(
30
+ ctx,
31
+ `require ${theme.composerData.name}`,
32
+ {
33
+ callback: !verbose
34
+ ? undefined
35
+ : (t) => {
36
+ task.output = t
37
+ }
25
38
  }
26
- });
39
+ )
27
40
  } catch (e) {
28
41
  throw new UnknownError(
29
42
  `Unexpected error while installing theme.
30
43
  See ERROR log below.\n\n${e}`
31
- );
44
+ )
32
45
  }
33
46
 
34
- ctx.isSetupUpgradeNeeded = true;
47
+ ctx.isSetupUpgradeNeeded = true
35
48
  },
36
49
  options: {
37
50
  bottomBar: 10
38
51
  }
39
- });
52
+ })
40
53
 
41
- module.exports = installTheme;
54
+ module.exports = installTheme