@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,30 +1,25 @@
1
- const { buildInstructions } = require('./build-instructions');
1
+ const { buildInstructions } = require('./build-instructions')
2
2
 
3
3
  class DockerFileBuilder {
4
4
  /**
5
5
  * @type {import('./types').DockerfileInstruction[]}
6
6
  */
7
- instructions = [];
7
+ instructions = []
8
8
 
9
9
  /**
10
10
  * @param {Omit<import('./types').FromInstruction, 'type'>} param0
11
11
  * @returns {this}
12
12
  */
13
- from({
14
- image,
15
- tag = 'latest',
16
- platform,
17
- name
18
- }) {
13
+ from({ image, tag = 'latest', platform, name }) {
19
14
  this.instructions.push({
20
15
  type: 'FROM',
21
16
  image,
22
17
  tag,
23
18
  platform,
24
19
  name
25
- });
20
+ })
26
21
 
27
- return this;
22
+ return this
28
23
  }
29
24
 
30
25
  /**
@@ -34,9 +29,9 @@ class DockerFileBuilder {
34
29
  this.instructions.push({
35
30
  type: 'RUN',
36
31
  command
37
- });
32
+ })
38
33
 
39
- return this;
34
+ return this
40
35
  }
41
36
 
42
37
  /**
@@ -46,9 +41,9 @@ class DockerFileBuilder {
46
41
  this.instructions.push({
47
42
  type: 'CMD',
48
43
  command
49
- });
44
+ })
50
45
 
51
- return this;
46
+ return this
52
47
  }
53
48
 
54
49
  /**
@@ -58,25 +53,22 @@ class DockerFileBuilder {
58
53
  this.instructions.push({
59
54
  type: 'LABEL',
60
55
  labels
61
- });
56
+ })
62
57
 
63
- return this;
58
+ return this
64
59
  }
65
60
 
66
61
  /**
67
62
  * @param {Omit<import('./types').ExposeInstruction, 'type'>} param0
68
63
  */
69
- expose({
70
- port,
71
- protocol
72
- }) {
64
+ expose({ port, protocol }) {
73
65
  this.instructions.push({
74
66
  type: 'EXPOSE',
75
67
  port,
76
68
  protocol
77
- });
69
+ })
78
70
 
79
- return this;
71
+ return this
80
72
  }
81
73
 
82
74
  /**
@@ -88,48 +80,39 @@ class DockerFileBuilder {
88
80
  type: 'ENV',
89
81
  name,
90
82
  value
91
- });
92
- });
83
+ })
84
+ })
93
85
 
94
- return this;
86
+ return this
95
87
  }
96
88
 
97
89
  /**
98
90
  * @param {Omit<import('./types').AddInstruction, 'type'>} param0
99
91
  */
100
- add({
101
- src,
102
- dest,
103
- chown
104
- }) {
92
+ add({ src, dest, chown }) {
105
93
  this.instructions.push({
106
94
  type: 'ADD',
107
95
  src,
108
96
  dest,
109
97
  chown
110
- });
98
+ })
111
99
 
112
- return this;
100
+ return this
113
101
  }
114
102
 
115
103
  /**
116
104
  * @param {Omit<import('./types').CopyInstruction, 'type'>} param0
117
105
  */
118
- copy({
119
- src,
120
- dest,
121
- chown,
122
- from
123
- }) {
106
+ copy({ src, dest, chown, from }) {
124
107
  this.instructions.push({
125
108
  type: 'COPY',
126
109
  src,
127
110
  dest,
128
111
  chown,
129
112
  from
130
- });
113
+ })
131
114
 
132
- return this;
115
+ return this
133
116
  }
134
117
 
135
118
  /**
@@ -139,9 +122,9 @@ class DockerFileBuilder {
139
122
  this.instructions.push({
140
123
  type: 'ENTRYPOINT',
141
124
  command
142
- });
125
+ })
143
126
 
144
- return this;
127
+ return this
145
128
  }
146
129
 
147
130
  /**
@@ -151,9 +134,9 @@ class DockerFileBuilder {
151
134
  this.instructions.push({
152
135
  type: 'VOLUME',
153
136
  volume
154
- });
137
+ })
155
138
 
156
- return this;
139
+ return this
157
140
  }
158
141
 
159
142
  /**
@@ -163,9 +146,9 @@ class DockerFileBuilder {
163
146
  this.instructions.push({
164
147
  type: 'USER',
165
148
  user
166
- });
149
+ })
167
150
 
168
- return this;
151
+ return this
169
152
  }
170
153
 
171
154
  /**
@@ -175,25 +158,22 @@ class DockerFileBuilder {
175
158
  this.instructions.push({
176
159
  type: 'WORKDIR',
177
160
  workdir
178
- });
161
+ })
179
162
 
180
- return this;
163
+ return this
181
164
  }
182
165
 
183
166
  /**
184
167
  * @param {Omit<import('./types').ArgInstruction, 'type'>} param0
185
168
  */
186
- arg({
187
- name,
188
- defaultValue
189
- }) {
169
+ arg({ name, defaultValue }) {
190
170
  this.instructions.push({
191
171
  type: 'ARG',
192
172
  name,
193
173
  defaultValue
194
- });
174
+ })
195
175
 
196
- return this;
176
+ return this
197
177
  }
198
178
 
199
179
  /**
@@ -203,9 +183,9 @@ class DockerFileBuilder {
203
183
  this.instructions.push({
204
184
  type: 'ONBUILD',
205
185
  instruction
206
- });
186
+ })
207
187
 
208
- return this;
188
+ return this
209
189
  }
210
190
 
211
191
  /**
@@ -215,21 +195,15 @@ class DockerFileBuilder {
215
195
  this.instructions.push({
216
196
  type: 'STOPSIGNAL',
217
197
  signal
218
- });
198
+ })
219
199
 
220
- return this;
200
+ return this
221
201
  }
222
202
 
223
203
  /**
224
204
  * @param {Omit<import('./types').HealthCheckInstruction, 'type'>} param0
225
205
  */
226
- healthCheck({
227
- command,
228
- interval,
229
- timeout,
230
- startPeriod,
231
- retries
232
- }) {
206
+ healthCheck({ command, interval, timeout, startPeriod, retries }) {
233
207
  this.instructions.push({
234
208
  type: 'HEALTHCHECK',
235
209
  command,
@@ -237,9 +211,9 @@ class DockerFileBuilder {
237
211
  retries,
238
212
  startPeriod,
239
213
  timeout
240
- });
214
+ })
241
215
 
242
- return this;
216
+ return this
243
217
  }
244
218
 
245
219
  /**
@@ -249,9 +223,9 @@ class DockerFileBuilder {
249
223
  this.instructions.push({
250
224
  type: 'SHELL',
251
225
  exec
252
- });
226
+ })
253
227
 
254
- return this;
228
+ return this
255
229
  }
256
230
 
257
231
  /**
@@ -261,16 +235,16 @@ class DockerFileBuilder {
261
235
  this.instructions.push({
262
236
  type: 'COMMENT',
263
237
  comment
264
- });
238
+ })
265
239
 
266
- return this;
240
+ return this
267
241
  }
268
242
 
269
243
  build() {
270
- return buildInstructions(this.instructions);
244
+ return buildInstructions(this.instructions)
271
245
  }
272
246
  }
273
247
 
274
248
  module.exports = {
275
249
  DockerFileBuilder
276
- };
250
+ }
@@ -103,7 +103,8 @@ export interface CommentInstruction {
103
103
  comment: string
104
104
  }
105
105
 
106
- export type DockerfileInstruction = FromInstruction
106
+ export type DockerfileInstruction =
107
+ | FromInstruction
107
108
  | RunInstruction
108
109
  | CmdInstruction
109
110
  | LabelInstruction
@@ -1,21 +1,33 @@
1
- const https = require('https');
2
- const http = require('http');
3
- const fs = require('fs');
1
+ const https = require('https')
2
+ const http = require('http')
3
+ const fs = require('fs')
4
4
 
5
- const downloadFile = (url, { destination } = {}) => new Promise((resolve, reject) => {
6
- const client = url.startsWith('https') ? https : http;
5
+ /**
6
+ * @param {string} url
7
+ * @param {Object} param1
8
+ * @param {string} param1.destination
9
+ * @returns {Promise<void>}
10
+ */
11
+ const downloadFile = (url, { destination }) =>
12
+ new Promise((resolve, reject) => {
13
+ const client = url.startsWith('https') ? https : http
7
14
 
8
- const writeStream = fs.createWriteStream(destination, { encoding: 'utf-8' });
15
+ const writeStream = fs.createWriteStream(destination, {
16
+ encoding: 'utf-8'
17
+ })
9
18
 
10
- const onError = (err) => {
11
- reject(err);
12
- };
13
- const req = client.get(url, (res) => {
14
- res.pipe(writeStream);
15
- });
19
+ /**
20
+ * @param {Error} err
21
+ */
22
+ const onError = (err) => {
23
+ reject(err)
24
+ }
25
+ const req = client.get(url, (res) => {
26
+ res.pipe(writeStream)
27
+ })
16
28
 
17
- req.on('error', onError);
18
- req.once('close', resolve);
19
- });
29
+ req.on('error', onError)
30
+ req.once('close', resolve)
31
+ })
20
32
 
21
- module.exports = downloadFile;
33
+ module.exports = downloadFile
@@ -1,29 +1,55 @@
1
- const path = require('path');
2
- const UnknownError = require('../errors/unknown-error');
3
- const { runPHPContainerCommand } = require('../tasks/php/php-container');
4
- const pathExists = require('./path-exists');
1
+ const path = require('path')
2
+ const UnknownError = require('../errors/unknown-error')
3
+ const { runPHPContainerCommand } = require('../tasks/php/php-container')
4
+ const pathExists = require('./path-exists')
5
+
6
+ /**
7
+ * @typedef EnvPHPData
8
+ *
9
+ * @prop {Record<string, number>} cache_types
10
+ * @prop {{ key: string }} crypt
11
+ */
5
12
 
6
13
  /**
7
14
  * @param {import('../../typings/context').ListrContext} ctx
15
+ * @returns {Promise<EnvPHPData | null>}
8
16
  */
9
17
  const envPhpToJson = async (ctx) => {
10
- const envPhpOnSystemPath = path.join(ctx.config.baseConfig.magentoDir, 'app', 'etc', 'env.php');
11
- const envPhpInContainerPath = path.join(ctx.config.baseConfig.containerMagentoDir, 'app', 'etc', 'env.php');
12
- if (!await pathExists(envPhpOnSystemPath)) {
13
- return null;
18
+ const envPhpOnSystemPath = path.join(
19
+ ctx.config.baseConfig.magentoDir,
20
+ 'app',
21
+ 'etc',
22
+ 'env.php'
23
+ )
24
+ const envPhpInContainerPath = path.join(
25
+ ctx.config.baseConfig.containerMagentoDir,
26
+ 'app',
27
+ 'etc',
28
+ 'env.php'
29
+ )
30
+ if (!(await pathExists(envPhpOnSystemPath))) {
31
+ return null
14
32
  }
15
- const { code, result } = await runPHPContainerCommand(ctx, `php -r "echo json_encode(require '${envPhpInContainerPath}');"`, {
16
- withCode: true
17
- });
33
+ const { code, result } = await runPHPContainerCommand(
34
+ ctx,
35
+ `php -r "echo json_encode(require '${envPhpInContainerPath}');"`,
36
+ {
37
+ withCode: true
38
+ }
39
+ )
18
40
 
19
41
  if (code !== 0) {
20
- throw new UnknownError(`Received non-zero code during converting app/etc/env.php to json:\n\n${result}`);
42
+ throw new UnknownError(
43
+ `Received non-zero code during converting app/etc/env.php to json:\n\n${result}`
44
+ )
21
45
  }
22
46
  try {
23
- return JSON.parse(result);
47
+ return JSON.parse(result)
24
48
  } catch (e) {
25
- throw new UnknownError(`Ooops! Something went wrong when trying to parse app/etc/env.php file!\n\n${e}\n\nFile result: ${result}`);
49
+ throw new UnknownError(
50
+ `Ooops! Something went wrong when trying to parse app/etc/env.php file!\n\n${e}\n\nFile result: ${result}`
51
+ )
26
52
  }
27
- };
53
+ }
28
54
 
29
- module.exports = envPhpToJson;
55
+ module.exports = envPhpToJson
@@ -1,7 +1,7 @@
1
- /* eslint-disable max-len */
2
- import { ListrTask } from 'listr2';
1
+ /* eslint-disable no-redeclare */
2
+ import { ListrTask } from 'listr2'
3
3
 
4
- import { ListrContext } from '../../typings/context';
4
+ import { ListrContext } from '../../typings/context'
5
5
 
6
6
  interface ExecAsyncSpawnOptions<T extends boolean> {
7
7
  callback?: (result: string) => void
@@ -9,9 +9,9 @@ interface ExecAsyncSpawnOptions<T extends boolean> {
9
9
  logOutput?: boolean
10
10
  cwd?: string
11
11
  withCode?: T
12
+ env?: Record<string, string> & NodeJS.ProcessEnv
12
13
  // only for mac
13
14
  useRosetta2?: boolean
14
- env: NodeJS.ProcessEnv
15
15
  }
16
16
 
17
17
  /**
@@ -20,13 +20,13 @@ interface ExecAsyncSpawnOptions<T extends boolean> {
20
20
  export function execAsyncSpawn(
21
21
  command: string,
22
22
  options?: ExecAsyncSpawnOptions<false>
23
- ): Promise<string>;
24
- export function execAsyncSpawn (
23
+ ): Promise<string>
24
+ export function execAsyncSpawn(
25
25
  command: string,
26
26
  options?: ExecAsyncSpawnOptions<true>
27
- ): Promise<{ code: number, result: string }>;
27
+ ): Promise<{ code: number; result: string }>
28
28
 
29
- export function execCommandTask(
29
+ export function execCommandTask<T extends boolean>(
30
30
  command: string,
31
- options?: Omit<ExecAsyncSpawnOptions<false>, 'callback'>
31
+ options?: Omit<ExecAsyncSpawnOptions<T>, 'callback'>
32
32
  ): ListrTask<ListrContext>
@@ -1,18 +1,24 @@
1
- const os = require('os');
2
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
3
- const { spawn } = require('child_process');
4
- const { getArchSync } = require('./arch');
5
- const UnknownError = require('../errors/unknown-error');
1
+ const os = require('os')
2
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
3
+ const { spawn } = require('child_process')
4
+ const { getArchSync } = require('./arch')
5
+ const UnknownError = require('../errors/unknown-error')
6
6
 
7
- const execAsyncSpawn = (command, {
8
- callback = () => {},
9
- pipeInput,
10
- logOutput = false,
11
- cwd,
12
- withCode = false,
13
- useRosetta2 = false,
14
- env = process.env
15
- } = {}) => {
7
+ /**
8
+ * @type {typeof import('./exec-async-command')['execAsyncSpawn']}
9
+ */
10
+ const execAsyncSpawn = (
11
+ command,
12
+ {
13
+ callback,
14
+ pipeInput,
15
+ logOutput = false,
16
+ cwd,
17
+ withCode = false,
18
+ useRosetta2 = false,
19
+ env = process.env
20
+ } = {}
21
+ ) => {
16
22
  /**
17
23
  * @type {import('child_process').SpawnOptionsWithoutStdio}
18
24
  */
@@ -20,81 +26,98 @@ const execAsyncSpawn = (command, {
20
26
  stdio: pipeInput ? ['inherit', 'pipe', 'pipe'] : 'pipe',
21
27
  cwd,
22
28
  env
23
- };
29
+ }
24
30
 
25
31
  /**
26
32
  * @type {import('child_process').ChildProcessWithoutNullStreams}
27
33
  */
28
- let childProcess;
29
- if (useRosetta2 && os.platform() === 'darwin' && getArchSync() === 'arm64') {
34
+ let childProcess
35
+ if (
36
+ useRosetta2 &&
37
+ os.platform() === 'darwin' &&
38
+ getArchSync() === 'arm64'
39
+ ) {
30
40
  childProcess = spawn(
31
41
  'arch',
32
- // eslint-disable-next-line max-len
33
42
  ['-x86_64', 'bash', '-c', command],
34
43
  spawnOptions
35
- );
44
+ )
36
45
  } else {
37
- childProcess = spawn(
38
- 'bash',
39
- ['-c', command],
40
- spawnOptions
41
- );
46
+ childProcess = spawn('bash', ['-c', command], spawnOptions)
42
47
  }
43
48
 
44
49
  return new Promise((resolve, reject) => {
45
- const chunks = [];
50
+ /**
51
+ * @type {Buffer[]}
52
+ */
53
+ const chunks = []
46
54
 
47
55
  /**
48
56
  * @param {Buffer} chunk
49
57
  */
50
58
  const addChunk = (chunk) => {
51
- chunks.push(Buffer.from(chunk));
52
- const newData = chunk.toString('utf-8');
53
- newData.split('\n').map((str) => str.trim()).forEach((str) => {
54
- callback(str);
55
- });
59
+ chunks.push(Buffer.from(chunk))
60
+ const newData = chunk.toString('utf-8')
61
+ newData
62
+ .split('\n')
63
+ .map((str) => str.trim())
64
+ .forEach((str) => {
65
+ callback && callback(str)
66
+ })
56
67
  if (logOutput) {
57
- newData.split('\n').filter(Boolean).forEach((line) => {
58
- logger.log(line);
59
- });
68
+ newData
69
+ .split('\n')
70
+ .filter(Boolean)
71
+ .forEach((line) => {
72
+ logger.log(line)
73
+ })
60
74
  }
61
- };
75
+ }
62
76
 
63
- childProcess.stdout.on('data', addChunk);
64
- childProcess.stderr.on('data', addChunk);
77
+ childProcess.stdout.on('data', addChunk)
78
+ childProcess.stderr.on('data', addChunk)
65
79
 
66
80
  childProcess.on('error', (error) => {
67
- reject(error);
68
- });
81
+ reject(error)
82
+ })
69
83
  childProcess.on('close', (code) => {
70
- const result = Buffer.concat(chunks).toString('utf8').trim();
71
- if (withCode) {
72
- resolve({ code, result });
73
- return;
84
+ const result = Buffer.concat(chunks).toString('utf8').trim()
85
+ if (typeof code === 'number') {
86
+ if (withCode) {
87
+ resolve({ code, result })
88
+ return
89
+ }
90
+ if (code > 0) {
91
+ reject(new UnknownError(result))
92
+ return
93
+ }
74
94
  }
75
- if (code > 0) {
76
- reject(new UnknownError(result));
77
- } else {
78
- resolve(result);
79
- }
80
- });
81
- });
82
- };
83
95
 
96
+ resolve(result)
97
+ })
98
+ })
99
+ }
100
+
101
+ /**
102
+ * @type {typeof import('./exec-async-command')['execCommandTask']}
103
+ */
84
104
  const execCommandTask = (command, options = {}) => ({
85
105
  title: `Running command "${command}"`,
86
- task: (ctx, task) => execAsyncSpawn(command, {
87
- callback: !ctx.verbose ? undefined : (t) => {
88
- task.output = t;
89
- },
90
- ...options
91
- }),
92
- option: {
106
+ task: (ctx, task) =>
107
+ execAsyncSpawn(command, {
108
+ callback: !ctx.verbose
109
+ ? undefined
110
+ : (t) => {
111
+ task.output = t
112
+ },
113
+ ...options
114
+ }),
115
+ options: {
93
116
  bottomBar: 10
94
117
  }
95
- });
118
+ })
96
119
 
97
120
  module.exports = {
98
121
  execAsyncSpawn,
99
122
  execCommandTask
100
- };
123
+ }
@@ -1,4 +1,6 @@
1
1
  /* eslint-disable max-len */
2
+ import { ExecOptions } from 'child_process'
3
+
2
4
  /**
3
5
  * Execute bash command
4
6
  * @param command Bash command
@@ -1,9 +1,16 @@
1
- const { exec } = require('child_process');
1
+ const { exec } = require('child_process')
2
2
 
3
- const execAsync = (command, options) => new Promise((resolve, reject) => {
4
- exec(command, options, (err, stdout) => (err ? reject(err) : resolve(stdout)));
5
- });
3
+ /**
4
+ * @param {string} command
5
+ * @param {{ encoding: 'buffer' | null; } & import('child_process').ExecOptions} options
6
+ */
7
+ const execAsync = (command, options) =>
8
+ new Promise((resolve, reject) => {
9
+ exec(command, options, (err, stdout) =>
10
+ err ? reject(err) : resolve(stdout)
11
+ )
12
+ })
6
13
 
7
14
  module.exports = {
8
15
  execAsync
9
- };
16
+ }