@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 mergeFiles = require('merge-files');
2
- const { orderTables, customerTables } = require('../../magento-tables');
3
- const { execAsyncSpawn } = require('../../../../util/exec-async-command');
4
- const databaseDumpCommandWithOptions = require('./database-dump-command');
5
- const KnownError = require('../../../../errors/known-error');
1
+ const mergeFiles = require('merge-files')
2
+ const { orderTables, customerTables } = require('../../magento-tables')
3
+ const { execAsyncSpawn } = require('../../../../util/exec-async-command')
4
+ const databaseDumpCommandWithOptions = require('./database-dump-command')
5
+ const KnownError = require('../../../../errors/known-error')
6
6
  /**
7
- * @type {() => import('listr2').ListrTask<import('../../../../../typings/context').ListrContext & { ssh: import('node-ssh').NodeSSH }>}
7
+ * @returns {import('listr2').ListrTask<import('../../../../../typings/context').ListrContext & { ssh: import('node-ssh').NodeSSH }>}
8
8
  */
9
9
  const regularSSHServer = () => ({
10
10
  task: async (ctx, task) => {
@@ -14,8 +14,8 @@ const regularSSHServer = () => ({
14
14
  makeRemoteDumps,
15
15
  withCustomersData,
16
16
  noCompress
17
- } = ctx;
18
- const sshConnectString = remoteDbUrl.href.replace(/ssh:\/\//i, '');
17
+ } = ctx
18
+ const sshConnectString = remoteDbUrl.href.replace(/ssh:\/\//i, '')
19
19
  if (makeRemoteDumps) {
20
20
  /**
21
21
  * @type {string}
@@ -28,101 +28,99 @@ Do not enter "--result-file" option, we need to control that part.
28
28
  (documentation reference available here: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)
29
29
  `,
30
30
  initial: databaseDumpCommandWithOptions.join(' ')
31
- });
31
+ })
32
32
 
33
33
  if (dumpCommand.includes('--result-file')) {
34
- throw new KnownError('--result-file option is not allowed in user input command');
34
+ throw new KnownError(
35
+ '--result-file option is not allowed in user input command'
36
+ )
35
37
  }
36
38
 
37
39
  if (!withCustomersData) {
38
- task.output = 'Making remote database dump files without customers data...';
40
+ task.output =
41
+ 'Making remote database dump files without customers data...'
39
42
 
40
43
  const ignoredOrderAndCustomerTables = [
41
44
  ...orderTables,
42
45
  ...customerTables
43
- ].map((table) => `--ignore-table=magento.${table}`).join(' ');
46
+ ]
47
+ .map((table) => `--ignore-table=magento.${table}`)
48
+ .join(' ')
44
49
 
45
50
  const includedOrdersAndCustomerTables = [
46
51
  ...orderTables,
47
52
  ...customerTables
48
- ].join(' ');
53
+ ].join(' ')
49
54
 
50
55
  /**
51
56
  * create dump without customers and orders
52
57
  */
53
58
  await ssh.execCommand(
54
- `${dumpCommand} ${ ignoredOrderAndCustomerTables } --result-file=dump-0.sql`
55
- );
59
+ `${dumpCommand} ${ignoredOrderAndCustomerTables} --result-file=dump-0.sql`
60
+ )
56
61
 
57
62
  await ssh.execCommand(
58
- `${dumpCommand} --no-data ${ includedOrdersAndCustomerTables } --result-file=dump-1.sql`
59
- );
63
+ `${dumpCommand} --no-data ${includedOrdersAndCustomerTables} --result-file=dump-1.sql`
64
+ )
60
65
  } else {
61
- task.output = 'Making remote database dump file with customers data...';
62
- await ssh.execCommand(
63
- `${dumpCommand} --result-file=dump.sql`
64
- );
66
+ task.output =
67
+ 'Making remote database dump file with customers data...'
68
+ await ssh.execCommand(`${dumpCommand} --result-file=dump.sql`)
65
69
  }
66
70
 
67
71
  if (!noCompress) {
68
- task.output = 'Compressing dump files...';
72
+ task.output = 'Compressing dump files...'
69
73
  if (!withCustomersData) {
70
74
  await ssh.execCommand(
71
75
  'tar -czvf dump.sql.gz ./dump-0.sql ./dump-1.sql'
72
- );
76
+ )
73
77
  } else {
74
- await ssh.execCommand(
75
- 'tar -czvf dump.sql.gz ./dump.sql'
76
- );
78
+ await ssh.execCommand('tar -czvf dump.sql.gz ./dump.sql')
77
79
  }
78
80
  }
79
81
  }
80
82
 
81
- const { stdout: remotePwd } = await ssh.execCommand('pwd');
83
+ const { stdout: remotePwd } = await ssh.execCommand('pwd')
82
84
 
83
- ssh.dispose();
85
+ ssh.dispose()
84
86
 
85
87
  if (!withCustomersData) {
86
- task.output = 'Downloading dump files...';
88
+ task.output = 'Downloading dump files...'
87
89
  if (noCompress) {
88
90
  await execAsyncSpawn(
89
91
  `scp ${sshConnectString}:${remotePwd}/dump-0.sql .`
90
- );
92
+ )
91
93
  await execAsyncSpawn(
92
94
  `scp ${sshConnectString}:${remotePwd}/dump-1.sql .`
93
- );
95
+ )
94
96
  } else {
95
97
  await execAsyncSpawn(
96
98
  `scp ${sshConnectString}:${remotePwd}/dump.sql.gz .`
97
- );
99
+ )
98
100
 
99
- task.output = 'Extracting dump files...';
101
+ task.output = 'Extracting dump files...'
100
102
 
101
- await execAsyncSpawn(
102
- 'tar -xf ./dump.sql.gz'
103
- );
103
+ await execAsyncSpawn('tar -xf ./dump.sql.gz')
104
104
  }
105
105
 
106
- await mergeFiles(['./dump-0.sql', './dump-1.sql'], './dump.sql');
106
+ await mergeFiles(['./dump-0.sql', './dump-1.sql'], './dump.sql')
107
107
  } else {
108
- task.output = 'Downloading dump file...';
108
+ task.output = 'Downloading dump file...'
109
109
  if (noCompress) {
110
110
  await execAsyncSpawn(
111
111
  `scp ${sshConnectString}:${remotePwd}/dump.sql .`
112
- );
112
+ )
113
113
  } else {
114
114
  await execAsyncSpawn(
115
115
  `scp ${sshConnectString}:${remotePwd}/dump.sql.gz .`
116
- );
116
+ )
117
117
 
118
- task.output = 'Extracting dump file...';
118
+ task.output = 'Extracting dump file...'
119
119
 
120
- await execAsyncSpawn(
121
- 'tar -xf ./dump.sql.gz'
122
- );
120
+ await execAsyncSpawn('tar -xf ./dump.sql.gz')
123
121
  }
124
122
  }
125
123
  }
126
- });
124
+ })
127
125
 
128
- module.exports = regularSSHServer;
126
+ module.exports = regularSSHServer
@@ -4,4 +4,4 @@ module.exports = {
4
4
  fixDB: require('./fix-db'),
5
5
  dumpThemeConfig: require('./dump-theme-config'),
6
6
  restoreThemeConfig: require('./restore-theme-config')
7
- };
7
+ }
@@ -44,7 +44,7 @@ const orderTables = [
44
44
  'sales_shipping_aggregated_order',
45
45
  'tax_order_aggregated_created',
46
46
  'tax_order_aggregated_updated'
47
- ];
47
+ ]
48
48
 
49
49
  const customerTables = [
50
50
  'customer_address_entity',
@@ -72,9 +72,9 @@ const customerTables = [
72
72
  'review_entity_summary',
73
73
  'review_store',
74
74
  'report_event'
75
- ];
75
+ ]
76
76
 
77
77
  module.exports = {
78
78
  customerTables,
79
79
  orderTables
80
- };
80
+ }
@@ -1,45 +1,52 @@
1
- const { updateTableValues } = require('../../util/database');
1
+ const { updateTableValues } = 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 restoreThemeConfig = () => ({
7
7
  title: 'Restoring themes and theme configuration',
8
8
  task: async (ctx, task) => {
9
- const { themeDump, databaseConnection } = ctx;
9
+ const { themeDump, databaseConnection } = ctx
10
10
 
11
- const { themeIdConfig, themes } = themeDump;
11
+ const { themeIdConfig, themes } = themeDump
12
12
 
13
13
  if (!themeIdConfig && themes.length === 0) {
14
- task.skip();
15
- return;
14
+ task.skip()
15
+ return
16
16
  }
17
17
 
18
18
  // restore theme config
19
19
  if (themeIdConfig) {
20
- await updateTableValues('core_config_data', [
21
- {
22
- path: themeIdConfig.path,
23
- value: themeIdConfig.value
24
- }
25
- ], { databaseConnection, task });
20
+ await updateTableValues(
21
+ 'core_config_data',
22
+ [
23
+ {
24
+ path: themeIdConfig.path,
25
+ value: themeIdConfig.value
26
+ }
27
+ ],
28
+ { databaseConnection, task }
29
+ )
26
30
  }
27
31
 
28
32
  if (themes.length === 0) {
29
- return;
33
+ return
30
34
  }
31
35
 
32
36
  // restore themes
33
- const themeKeys = Object.keys(themes[0]);
34
- await databaseConnection.query('delete from theme;');
37
+ const themeKeys = Object.keys(themes[0])
38
+ await databaseConnection.query('delete from theme;')
35
39
 
36
40
  for (const theme of themes) {
37
- await databaseConnection.query(`
41
+ await databaseConnection.query(
42
+ `
38
43
  insert into theme (${themeKeys.join(', ')})
39
44
  values (${themeKeys.map(() => '?').join(', ')})
40
- `, Object.values(theme));
45
+ `,
46
+ Object.values(theme)
47
+ )
41
48
  }
42
49
  }
43
- });
50
+ })
44
51
 
45
- module.exports = restoreThemeConfig;
52
+ module.exports = restoreThemeConfig
@@ -1,4 +1,4 @@
1
- import { ExecAsyncSpawnOptions } from '../../util/exec-async-command';
1
+ import { ExecAsyncSpawnOptions } from '../../util/exec-async-command'
2
2
 
3
3
  export interface DockerVersionOptions<T extends boolean = false> {
4
4
  format?: string
@@ -1,60 +1,58 @@
1
- const { execAsyncSpawn } = require('../../util/exec-async-command');
1
+ const { execAsyncSpawn } = require('../../util/exec-async-command')
2
2
 
3
3
  /**
4
4
  * @param {import('./api').DockerVersionOptions} options
5
5
  * @param {import('../../util/exec-async-command').ExecAsyncSpawnOptions} execOptions
6
6
  */
7
7
  const version = async (options, execOptions = {}) => {
8
- const {
9
- format,
10
- formatToJSON
11
- } = options;
12
-
13
- const formatArg = !formatToJSON && format
14
- ? `--format=${format}`
15
- : formatToJSON && '--format=\'{{json .}}\'';
16
- const args = [
17
- formatArg
18
- ].filter(Boolean).join(' ');
8
+ const { format, formatToJSON } = options
9
+
10
+ const formatArg =
11
+ !formatToJSON && format
12
+ ? `--format=${format}`
13
+ : formatToJSON && "--format='{{json .}}'"
14
+ const args = [formatArg].filter(Boolean).join(' ')
19
15
 
20
16
  if (formatToJSON) {
21
- const result = await execAsyncSpawn(`docker version ${args}`, execOptions);
22
- return JSON.parse(result);
17
+ const result = await execAsyncSpawn(
18
+ `docker version ${args}`,
19
+ execOptions
20
+ )
21
+ return JSON.parse(result)
23
22
  }
24
23
 
25
- return execAsyncSpawn(`docker version ${args}`, execOptions);
26
- };
24
+ return execAsyncSpawn(`docker version ${args}`, execOptions)
25
+ }
27
26
 
28
27
  /**
29
28
  * @param {import('./api').DockerContextOptions} options
30
29
  * @param {import('../../util/exec-async-command').ExecAsyncSpawnOptions} execOptions
31
30
  */
32
31
  const context = async (options, execOptions = {}) => {
33
- const {
34
- format,
35
- formatToJSON
36
- } = options;
37
-
38
- const formatArg = !formatToJSON && format
39
- ? `--format=${format}`
40
- : formatToJSON && '--format=\'{{json .}}\'';
41
- const args = [
42
- formatArg
43
- ].filter(Boolean).join(' ');
32
+ const { format, formatToJSON } = options
33
+
34
+ const formatArg =
35
+ !formatToJSON && format
36
+ ? `--format=${format}`
37
+ : formatToJSON && "--format='{{json .}}'"
38
+ const args = [formatArg].filter(Boolean).join(' ')
44
39
 
45
40
  if (formatToJSON) {
46
- const result = await execAsyncSpawn(`docker context ls ${args}`, execOptions);
41
+ const result = await execAsyncSpawn(
42
+ `docker context ls ${args}`,
43
+ execOptions
44
+ )
47
45
  if (result.startsWith('[')) {
48
- return JSON.parse(result);
46
+ return JSON.parse(result)
49
47
  }
50
48
 
51
- return JSON.parse(`[${result.split('\n').join(', ')}]`);
49
+ return JSON.parse(`[${result.split('\n').join(', ')}]`)
52
50
  }
53
51
 
54
- return execAsyncSpawn(`docker context ls ${args}`, execOptions);
55
- };
52
+ return execAsyncSpawn(`docker context ls ${args}`, execOptions)
53
+ }
56
54
 
57
55
  module.exports = {
58
56
  version,
59
57
  context
60
- };
58
+ }
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable max-len */
2
- import { ExecAsyncSpawnOptions } from '../../../util/exec-async-command';
2
+ import { ExecAsyncSpawnOptions } from '../../../util/exec-async-command'
3
3
 
4
4
  export interface ContainerLsOptions<T extends boolean = false> {
5
5
  all?: boolean
@@ -28,8 +28,14 @@ export interface ContainerLsResult {
28
28
  Status: string
29
29
  }
30
30
 
31
- export function ls(options?: ContainerLsOptions, execOptions?: ExecAsyncSpawnOptions<false>): Promise<string>
32
- export function ls(options?: ContainerLsOptions<true>, execOptions?: ExecAsyncSpawnOptions<false>): Promise<ContainerLsResult[]>
31
+ export function ls(
32
+ options?: ContainerLsOptions,
33
+ execOptions?: ExecAsyncSpawnOptions<false>
34
+ ): Promise<string>
35
+ export function ls(
36
+ options?: ContainerLsOptions<true>,
37
+ execOptions?: ExecAsyncSpawnOptions<false>
38
+ ): Promise<ContainerLsResult[]>
33
39
 
34
40
  export interface ContainerExecOptions {
35
41
  /**
@@ -53,7 +59,12 @@ export interface ContainerExecOptions {
53
59
  tty?: boolean
54
60
  }
55
61
 
56
- export function exec(command: string, container: string, options?: ContainerExecOptions, execOptions?: ExecAsyncSpawnOptions<false>): Promise<string>
62
+ export function exec<T>(
63
+ command: string,
64
+ container: string,
65
+ options?: ContainerExecOptions,
66
+ execOptions?: ExecAsyncSpawnOptions<T>
67
+ ): Promise<string>
57
68
 
58
69
  export interface ContainerRunOptions {
59
70
  /**
@@ -74,7 +85,7 @@ export interface ContainerRunOptions {
74
85
  /**
75
86
  * Publish or expose port [docs](https://docs.docker.com/engine/reference/commandline/run/#publish-or-expose-port--p---expose)
76
87
  */
77
- ports?: number[]
88
+ ports?: string[]
78
89
 
79
90
  /**
80
91
  * Add bind mounts or volumes using the --mount flag [docs](https://docs.docker.com/engine/reference/commandline/run/#add-bind-mounts-or-volumes-using-the---mount-flag)
@@ -89,8 +100,8 @@ export interface ContainerRunOptions {
89
100
  /**
90
101
  * Set environment variables [docs](https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file)
91
102
  */
92
- env?: Record<string, string>
93
- image?: string
103
+ env?: Record<string, unknown>
104
+ image: string
94
105
  /**
95
106
  * Restart policies [docs](https://docs.docker.com/engine/reference/commandline/run/#restart-policies---restart)
96
107
  */
@@ -114,7 +125,12 @@ export interface ContainerRunOptions {
114
125
  /**
115
126
  * Container heathcheck properties
116
127
  */
117
- healthCheck?: Record<'cmd' | 'interval' | 'retries' | 'start-period' | 'timeout', string>
128
+ healthCheck?: Partial<
129
+ Record<
130
+ 'cmd' | 'interval' | 'retries' | 'start-period' | 'timeout',
131
+ string
132
+ >
133
+ >
118
134
 
119
135
  /**
120
136
  * Security options [docs](https://docs.docker.com/engine/reference/commandline/run/#optional-security-options---security-opt)
@@ -125,9 +141,16 @@ export interface ContainerRunOptions {
125
141
  * Username or UID (format: <name|uid>[:<group|gid>])
126
142
  */
127
143
  user?: string
144
+
145
+ network?: string
146
+
147
+ expose?: (string | number)[]
128
148
  }
129
149
 
130
- export function run(containerOptions: ContainerRunOptions, execOptions?: ExecAsyncSpawnOptions<false>): Promise<false>
150
+ export function run<T>(
151
+ containerOptions: ContainerRunOptions,
152
+ execOptions?: ExecAsyncSpawnOptions<T>
153
+ ): Promise<string>
131
154
 
132
155
  export function runCommand(options: ContainerRunOptions): string[]
133
156
 
@@ -142,8 +165,20 @@ export interface ContainerLogsOptions<T = never> {
142
165
  parser?: (line: string) => T
143
166
  }
144
167
 
145
- export function logs(options?: ContainerLogsOptions, execOptions?: ExecAsyncSpawnOptions<false>): Promise<string>
146
- export function logs<T>(options?: ContainerLogsOptions<T>, execOptions?: ExecAsyncSpawnOptions<false>): Promise<T[]>
147
-
148
- export function stop(containers: string[], execOptions: ExecAsyncSpawnOptions<false>): Promise<string>
149
- export function rm(containers: string[], execOptions: ExecAsyncSpawnOptions<false>): Promise<string>
168
+ export function logs(
169
+ options: ContainerLogsOptions,
170
+ execOptions?: ExecAsyncSpawnOptions<false>
171
+ ): Promise<string>
172
+ export function logs<T>(
173
+ options: ContainerLogsOptions<T>,
174
+ execOptions?: ExecAsyncSpawnOptions<false>
175
+ ): Promise<T[]>
176
+
177
+ export function stop(
178
+ containers: string[],
179
+ execOptions?: ExecAsyncSpawnOptions<false>
180
+ ): Promise<string>
181
+ export function rm(
182
+ containers: string[],
183
+ execOptions?: ExecAsyncSpawnOptions<false>
184
+ ): Promise<string>