@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,10 +1,10 @@
1
- const mysql2 = require('mysql2/promise');
2
- const UnknownError = require('../../errors/unknown-error');
3
- const { execAsyncSpawn } = require('../../util/exec-async-command');
4
- const sleep = require('../../util/sleep');
5
- const { createMagentoDatabase } = require('./create-magento-database');
6
- const { createMagentoUser } = require('./create-magento-user');
7
- const defaultMagentoUser = require('./default-magento-user');
1
+ const mysql2 = require('mysql2/promise')
2
+ const UnknownError = require('../../errors/unknown-error')
3
+ const { execAsyncSpawn } = require('../../util/exec-async-command')
4
+ const sleep = require('../../util/sleep')
5
+ const { createMagentoDatabase } = require('./create-magento-database')
6
+ const { createMagentoUser } = require('./create-magento-user')
7
+ const defaultMagentoUser = require('./default-magento-user')
8
8
 
9
9
  /**
10
10
  * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -12,37 +12,44 @@ const defaultMagentoUser = require('./default-magento-user');
12
12
  const waitForDatabaseInitialization = () => ({
13
13
  title: 'Waiting for Database to initialize',
14
14
  task: async (ctx, task) => {
15
- const { mariadb } = ctx.config.docker.getContainers();
15
+ const { mariadb } = ctx.config.docker.getContainers()
16
16
 
17
- let databaseReadyForConnections = false;
17
+ let databaseReadyForConnections = false
18
18
 
19
19
  while (!databaseReadyForConnections) {
20
- const databaseOutput = await execAsyncSpawn(`docker logs ${mariadb.name}`);
20
+ const databaseOutput = await execAsyncSpawn(
21
+ `docker logs ${mariadb.name}`
22
+ )
21
23
  if (databaseOutput.includes('ready for connections')) {
22
- databaseReadyForConnections = true;
23
- break;
24
+ databaseReadyForConnections = true
25
+ break
24
26
  } else if (databaseOutput.includes('Initializing database files')) {
25
27
  task.output = `${mariadb._} is initializing database files!
26
- Please wait, this will take some time and do not restart the ${mariadb._} container until initialization is finished!`;
28
+ Please wait, this will take some time and do not restart the ${mariadb._} container until initialization is finished!`
27
29
 
28
- let databaseFinishedInitialization = false;
30
+ let databaseFinishedInitialization = false
29
31
  while (!databaseFinishedInitialization) {
30
- const databaseOutput2 = await execAsyncSpawn(`docker logs ${mariadb.name}`);
31
- if (databaseOutput2.includes('init process done.') && !databaseFinishedInitialization) {
32
- databaseFinishedInitialization = true;
33
- break;
32
+ const databaseOutput2 = await execAsyncSpawn(
33
+ `docker logs ${mariadb.name}`
34
+ )
35
+ if (
36
+ databaseOutput2.includes('init process done.') &&
37
+ !databaseFinishedInitialization
38
+ ) {
39
+ databaseFinishedInitialization = true
40
+ break
34
41
  }
35
- await sleep(2000);
42
+ await sleep(2000)
36
43
  }
37
44
  }
38
45
 
39
- await sleep(2000);
46
+ await sleep(2000)
40
47
  }
41
48
  },
42
49
  options: {
43
50
  bottomBar: 10
44
51
  }
45
- });
52
+ })
46
53
 
47
54
  /**
48
55
  * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -50,14 +57,17 @@ Please wait, this will take some time and do not restart the ${mariadb._} contai
50
57
  const gettingDatabaseConnection = () => ({
51
58
  title: 'Getting Database connection',
52
59
  task: async (ctx, task) => {
53
- const { config: { docker }, ports } = ctx;
54
- const { mariadb } = docker.getContainers(ctx.ports);
55
- let tries = 0;
56
- const maxTries = 20;
57
- const errors = [];
60
+ const {
61
+ config: { docker },
62
+ ports
63
+ } = ctx
64
+ const { mariadb } = docker.getContainers(ctx.ports)
65
+ let tries = 0
66
+ const maxTries = 20
67
+ const errors = []
58
68
 
59
69
  while (tries < maxTries) {
60
- tries++;
70
+ tries++
61
71
  try {
62
72
  const connection = await mysql2.createConnection({
63
73
  host: '127.0.0.1',
@@ -65,23 +75,29 @@ const gettingDatabaseConnection = () => ({
65
75
  user: defaultMagentoUser.user,
66
76
  password: defaultMagentoUser.password,
67
77
  database: 'magento'
68
- });
78
+ })
69
79
 
70
- ctx.databaseConnection = connection;
71
- break;
80
+ ctx.databaseConnection = connection
81
+ break
72
82
  } catch (e) {
73
- errors.push(e);
83
+ errors.push(e)
74
84
  }
75
- await sleep(1000);
85
+ await sleep(1000)
76
86
  }
77
87
 
78
88
  if (tries === maxTries) {
79
- throw new UnknownError(`Unable to connect to ${ mariadb._ } server. Check your server configuration!\n\n${ errors.join(' ') }`);
89
+ throw new UnknownError(
90
+ `Unable to connect to ${
91
+ mariadb._
92
+ } server. Check your server configuration!\n\n${errors.join(
93
+ ' '
94
+ )}`
95
+ )
80
96
  }
81
97
 
82
- task.title = `${ mariadb._ } server connected!`;
98
+ task.title = `${mariadb._} server connected!`
83
99
  }
84
- });
100
+ })
85
101
 
86
102
  /**
87
103
  * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -90,9 +106,9 @@ const terminatingExistingConnection = () => ({
90
106
  title: 'Terminating existing Database connection',
91
107
  skip: (ctx) => !ctx.databaseConnection,
92
108
  task: (ctx) => {
93
- ctx.databaseConnection.destroy();
109
+ ctx.databaseConnection.destroy()
94
110
  }
95
- });
111
+ })
96
112
 
97
113
  /**
98
114
  * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -100,21 +116,25 @@ const terminatingExistingConnection = () => ({
100
116
  const connectToDatabase = () => ({
101
117
  title: 'Connecting to Database server',
102
118
  skip: (ctx) => ctx.skipSetup,
103
- task: (ctx, task) => task.newListr([
104
- waitForDatabaseInitialization(),
105
- createMagentoDatabase(),
106
- createMagentoUser(),
107
- terminatingExistingConnection(),
108
- gettingDatabaseConnection()
109
- ], {
110
- concurrent: false,
111
- rendererOptions: {
112
- collapse: true
113
- }
114
- }),
119
+ task: (ctx, task) =>
120
+ task.newListr(
121
+ [
122
+ waitForDatabaseInitialization(),
123
+ createMagentoDatabase(),
124
+ createMagentoUser(),
125
+ terminatingExistingConnection(),
126
+ gettingDatabaseConnection()
127
+ ],
128
+ {
129
+ concurrent: false,
130
+ rendererOptions: {
131
+ collapse: true
132
+ }
133
+ }
134
+ ),
115
135
  options: {
116
136
  bottomBar: 10
117
137
  }
118
- });
138
+ })
119
139
 
120
- module.exports = connectToDatabase;
140
+ module.exports = connectToDatabase
@@ -1,4 +1,4 @@
1
- const { containerApi } = require('../docker/containers');
1
+ const { containerApi } = require('../docker/containers')
2
2
 
3
3
  /**
4
4
  * Will create database 'magento' in MariaDB if it does not exist for some reason
@@ -7,15 +7,15 @@ const { containerApi } = require('../docker/containers');
7
7
  const createMagentoDatabase = () => ({
8
8
  title: 'Creating Magento database',
9
9
  task: async (ctx, task) => {
10
- const { mariadb } = ctx.config.docker.getContainers();
11
- task.title = `Creating Magento database in ${ mariadb._ }`;
10
+ const { mariadb } = ctx.config.docker.getContainers()
11
+ task.title = `Creating Magento database in ${mariadb._}`
12
12
  await containerApi.exec(
13
- `mysql -uroot -p${ mariadb.env.MARIADB_ROOT_PASSWORD } -h 127.0.0.1 -e "CREATE DATABASE IF NOT EXISTS magento;"`,
13
+ `mysql -uroot -p${mariadb.env.MARIADB_ROOT_PASSWORD} -h 127.0.0.1 -e "CREATE DATABASE IF NOT EXISTS magento;"`,
14
14
  mariadb.name
15
- );
15
+ )
16
16
  }
17
- });
17
+ })
18
18
 
19
19
  module.exports = {
20
20
  createMagentoDatabase
21
- };
21
+ }
@@ -1,5 +1,5 @@
1
- const mysql2 = require('mysql2/promise');
2
- const defaultMagentoUser = require('./default-magento-user');
1
+ const mysql2 = require('mysql2/promise')
2
+ const defaultMagentoUser = require('./default-magento-user')
3
3
 
4
4
  /**
5
5
  * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -7,44 +7,57 @@ const defaultMagentoUser = require('./default-magento-user');
7
7
  const createMagentoUser = () => ({
8
8
  title: 'Creating Magento user',
9
9
  task: async (ctx, task) => {
10
- const { mariadb } = ctx.config.docker.getContainers();
10
+ const { mariadb } = ctx.config.docker.getContainers()
11
11
  const connection = await mysql2.createConnection({
12
12
  host: '127.0.0.1',
13
13
  port: ctx.ports.mariadb,
14
14
  user: 'root',
15
15
  password: mariadb.env.MARIADB_ROOT_PASSWORD
16
- });
16
+ })
17
17
 
18
- const result = await connection.query('select Host, User from mysql.user;');
18
+ const result = await connection.query(
19
+ 'select Host, User from mysql.user;'
20
+ )
19
21
 
20
22
  if (result.length === 0) {
21
- task.skip();
22
- return;
23
+ task.skip()
24
+ return
23
25
  }
24
26
 
25
- const [users] = result;
27
+ const [users] = result
26
28
 
27
- if (users.some((user) => user.User === defaultMagentoUser.user && user.Host === '%')) {
28
- task.skip();
29
- return;
29
+ if (
30
+ users.some(
31
+ (user) =>
32
+ user.User === defaultMagentoUser.user && user.Host === '%'
33
+ )
34
+ ) {
35
+ task.skip()
36
+ return
30
37
  }
31
38
 
32
39
  if (users.some((user) => user.User === defaultMagentoUser.user)) {
33
- const magentoUser = users.find((user) => user.User === defaultMagentoUser.user);
40
+ const magentoUser = users.find(
41
+ (user) => user.User === defaultMagentoUser.user
42
+ )
34
43
 
35
- await connection.query(`DROP USER '${ magentoUser.User }'@'${ magentoUser.Host }'`);
44
+ await connection.query(
45
+ `DROP USER '${magentoUser.User}'@'${magentoUser.Host}'`
46
+ )
36
47
  }
37
48
 
38
49
  await connection.query(
39
- `CREATE USER '${ defaultMagentoUser.user }'@'${ defaultMagentoUser.host }' IDENTIFIED BY '${ defaultMagentoUser.password }';`
40
- );
41
- await connection.query(`GRANT ALL PRIVILEGES ON *.* TO '${ defaultMagentoUser.user }'@'${ defaultMagentoUser.host }' WITH GRANT OPTION;`);
42
- await connection.query('FLUSH PRIVILEGES;');
50
+ `CREATE USER '${defaultMagentoUser.user}'@'${defaultMagentoUser.host}' IDENTIFIED BY '${defaultMagentoUser.password}';`
51
+ )
52
+ await connection.query(
53
+ `GRANT ALL PRIVILEGES ON *.* TO '${defaultMagentoUser.user}'@'${defaultMagentoUser.host}' WITH GRANT OPTION;`
54
+ )
55
+ await connection.query('FLUSH PRIVILEGES;')
43
56
 
44
- await connection.destroy();
57
+ await connection.destroy()
45
58
  }
46
- });
59
+ })
47
60
 
48
61
  module.exports = {
49
62
  createMagentoUser
50
- };
63
+ }
@@ -1,3 +1,3 @@
1
1
  module.exports = {
2
2
  defaultMagentoDatabase: 'magento'
3
- };
3
+ }
@@ -2,6 +2,6 @@ const defaultMagentoUser = {
2
2
  user: 'magento',
3
3
  password: 'magento',
4
4
  host: '%'
5
- };
5
+ }
6
6
 
7
- module.exports = defaultMagentoUser;
7
+ module.exports = defaultMagentoUser
@@ -1,41 +1,45 @@
1
- const { isTableExists } = require('../../util/database');
1
+ const { isTableExists } = require('../../util/database')
2
2
 
3
3
  /**
4
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
4
+ * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
5
5
  */
6
6
  const dumpThemeConfig = () => ({
7
7
  title: 'Dumping themes and theme configuration',
8
8
  task: async (ctx, task) => {
9
- const { databaseConnection } = ctx;
9
+ const { databaseConnection } = ctx
10
10
  if (await isTableExists('magento', 'theme', ctx)) {
11
- const [themes] = await databaseConnection.query('select * from theme;');
11
+ const [themes] = await databaseConnection.query(
12
+ 'select * from theme;'
13
+ )
12
14
  if (themes.length === 0) {
13
15
  ctx.themeDump = {
14
16
  themes: [],
15
17
  themeIdConfig: undefined // we don't have a config saved
16
- };
18
+ }
17
19
  }
18
20
 
19
21
  if (await isTableExists('magento', 'core_config_data', ctx)) {
20
- const [themeIdConfig] = await databaseConnection.query('select * from core_config_data where path = \'design/theme/theme_id\';');
22
+ const [themeIdConfig] = await databaseConnection.query(
23
+ "select * from core_config_data where path = 'design/theme/theme_id';"
24
+ )
21
25
  if (themeIdConfig.length !== 0) {
22
26
  ctx.themeDump = {
23
27
  themes,
24
28
  themeIdConfig: themeIdConfig[0]
25
- };
29
+ }
26
30
 
27
- return;
31
+ return
28
32
  }
29
33
  }
30
34
  } else {
31
- task.skip();
35
+ task.skip()
32
36
  }
33
37
 
34
38
  ctx.themeDump = {
35
39
  themes: [],
36
40
  themeIdConfig: undefined // we don't have a config saved
37
- };
41
+ }
38
42
  }
39
- });
43
+ })
40
44
 
41
- module.exports = dumpThemeConfig;
45
+ module.exports = dumpThemeConfig
@@ -1,72 +1,82 @@
1
- const configureElasticsearch = require('../magento/setup-magento/configure-elasticsearch');
2
- const deleteAdminUsers = require('../magento/setup-magento/delete-admin-users');
3
- const deleteCustomers = require('../magento/setup-magento/delete-customers');
4
- const deleteOrders = require('../magento/setup-magento/delete-orders');
5
- const varnishConfigSetup = require('../magento/setup-magento/varnish-config');
1
+ const configureElasticsearch = require('../magento/setup-magento/configure-elasticsearch')
2
+ const deleteAdminUsers = require('../magento/setup-magento/delete-admin-users')
3
+ const deleteCustomers = require('../magento/setup-magento/delete-customers')
4
+ const deleteOrders = require('../magento/setup-magento/delete-orders')
5
+ const varnishConfigSetup = require('../magento/setup-magento/varnish-config')
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 enableForeignKeyCheck = () => ({
11
- task: ({ databaseConnection }) => databaseConnection.query('SET FOREIGN_KEY_CHECKS = 0;')
12
- });
11
+ task: ({ databaseConnection }) =>
12
+ databaseConnection.query('SET FOREIGN_KEY_CHECKS = 0;')
13
+ })
13
14
 
14
15
  /**
15
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
16
+ * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
16
17
  */
17
18
  const disableForeignKeyCheck = () => ({
18
- task: ({ databaseConnection }) => databaseConnection.query('SET FOREIGN_KEY_CHECKS = 1;')
19
- });
19
+ task: ({ databaseConnection }) =>
20
+ databaseConnection.query('SET FOREIGN_KEY_CHECKS = 1;')
21
+ })
20
22
 
21
23
  /**
22
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
24
+ * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
23
25
  */
24
26
  const fixDB = () => ({
25
27
  title: 'Fixing database',
26
- task: async (ctx, task) => task.newListr([
27
- varnishConfigSetup(),
28
- configureElasticsearch(),
29
- {
30
- title: 'Deleting customers data',
31
- skip: ({ withCustomersData }) => withCustomersData,
32
- task: async (ctx, subTask) => {
33
- const deleteCustomerData = await subTask.prompt({
34
- type: 'Confirm',
35
- message: `Do you want to delete customers data (orders, customers and admin users) from this dump?
28
+ task: async (ctx, task) =>
29
+ task.newListr(
30
+ [
31
+ varnishConfigSetup(),
32
+ configureElasticsearch(),
33
+ {
34
+ title: 'Deleting customers data',
35
+ skip: ({ withCustomersData }) => withCustomersData,
36
+ task: async (ctx, subTask) => {
37
+ const deleteCustomerData = await subTask.prompt({
38
+ type: 'Confirm',
39
+ message: `Do you want to delete customers data (orders, customers and admin users) from this dump?
36
40
  This will reduce database size and remove possible interference for your setup.`
37
- });
41
+ })
38
42
 
39
- if (!deleteCustomerData) {
40
- subTask.skip();
41
- return;
42
- }
43
+ if (!deleteCustomerData) {
44
+ subTask.skip()
45
+ return
46
+ }
43
47
 
44
- return subTask.newListr([
45
- enableForeignKeyCheck(),
46
- {
47
- title: 'Deleting admin users, orders and customers...',
48
- task: (ctx, subSubTask) => subSubTask.newListr([
49
- deleteAdminUsers(),
50
- deleteOrders(),
51
- deleteCustomers()
52
- ], {
53
- concurrent: true
54
- }),
55
- rollback: disableForeignKeyCheck()
48
+ return subTask.newListr([
49
+ enableForeignKeyCheck(),
50
+ {
51
+ title: 'Deleting admin users, orders and customers...',
52
+ task: (ctx, subSubTask) =>
53
+ subSubTask.newListr(
54
+ [
55
+ deleteAdminUsers(),
56
+ deleteOrders(),
57
+ deleteCustomers()
58
+ ],
59
+ {
60
+ concurrent: true
61
+ }
62
+ ),
63
+ rollback: disableForeignKeyCheck()
64
+ },
65
+ disableForeignKeyCheck()
66
+ ])
56
67
  },
57
- disableForeignKeyCheck()
58
- ]);
59
- },
60
- options: {
68
+ options: {
69
+ rendererOptions: { collapse: false }
70
+ }
71
+ }
72
+ ],
73
+ {
74
+ concurrent: false,
75
+ exitOnError: true,
76
+ ctx,
61
77
  rendererOptions: { collapse: false }
62
78
  }
63
- }
64
- ], {
65
- concurrent: false,
66
- exitOnError: true,
67
- ctx,
68
- rendererOptions: { collapse: false }
69
- })
70
- });
79
+ )
80
+ })
71
81
 
72
- module.exports = fixDB;
82
+ module.exports = fixDB