@scandipwa/magento-scripts 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/.eslintrc +6 -1
  2. package/exec.js +75 -39
  3. package/index.js +87 -46
  4. package/lib/commands/cleanup.js +18 -21
  5. package/lib/commands/cli.js +138 -73
  6. package/lib/commands/execute.js +5 -5
  7. package/lib/commands/import-db.js +21 -24
  8. package/lib/commands/link.js +17 -20
  9. package/lib/commands/logs.js +91 -91
  10. package/lib/commands/start.js +229 -191
  11. package/lib/commands/status.js +64 -50
  12. package/lib/commands/stop.js +14 -11
  13. package/lib/config/check-configuration-file.js +33 -28
  14. package/lib/config/cma-config.js +4 -4
  15. package/lib/config/config.js +40 -18
  16. package/lib/config/dependencies-for-platforms.js +33 -3
  17. package/lib/config/docker.js +259 -157
  18. package/lib/config/get-magento-version-config.js +45 -38
  19. package/lib/config/get-port-config.js +30 -44
  20. package/lib/config/get-project-configuration.js +8 -8
  21. package/lib/config/index.js +51 -42
  22. package/lib/config/magento/required-php-extensions/index.js +33 -19
  23. package/lib/config/magento/required-php-extensions/magento-2.3.js +2 -2
  24. package/lib/config/magento/required-php-extensions/magento-2.4.js +2 -2
  25. package/lib/config/magento-config.js +4 -4
  26. package/lib/config/php-config.js +8 -6
  27. package/lib/config/port-config.js +62 -43
  28. package/lib/config/save-config.js +6 -6
  29. package/lib/config/scandipwa-versions.js +2 -2
  30. package/lib/config/services/composer/versions/composer-1.js +2 -2
  31. package/lib/config/services/composer/versions/composer-2.js +2 -2
  32. package/lib/config/services/composer/versions/index.js +1 -1
  33. package/lib/config/services/elasticsearch/base-repo.js +1 -1
  34. package/lib/config/services/elasticsearch/default-es-env.js +4 -1
  35. package/lib/config/services/elasticsearch/versions/elasticsearch-6.8.js +17 -14
  36. package/lib/config/services/elasticsearch/versions/elasticsearch-7.10.js +4 -4
  37. package/lib/config/services/elasticsearch/versions/elasticsearch-7.12.js +4 -4
  38. package/lib/config/services/elasticsearch/versions/elasticsearch-7.16.js +4 -4
  39. package/lib/config/services/elasticsearch/versions/elasticsearch-7.17.js +4 -4
  40. package/lib/config/services/elasticsearch/versions/elasticsearch-7.6.js +4 -4
  41. package/lib/config/services/elasticsearch/versions/elasticsearch-7.7.js +4 -4
  42. package/lib/config/services/elasticsearch/versions/elasticsearch-7.9.js +4 -4
  43. package/lib/config/services/elasticsearch/versions/index.js +9 -9
  44. package/lib/config/services/maildev/index.js +5 -2
  45. package/lib/config/services/mariadb/versions/index.js +1 -1
  46. package/lib/config/services/mariadb/versions/mariadb-10.2.js +3 -3
  47. package/lib/config/services/mariadb/versions/mariadb-10.3.js +3 -3
  48. package/lib/config/services/mariadb/versions/mariadb-10.4.js +3 -3
  49. package/lib/config/services/nginx/versions/index.js +1 -1
  50. package/lib/config/services/nginx/versions/nginx-1.18.js +5 -4
  51. package/lib/config/services/php/base-repo.js +1 -1
  52. package/lib/config/services/php/extensions/apcu.js +3 -3
  53. package/lib/config/services/php/extensions/bcmath.js +2 -2
  54. package/lib/config/services/php/extensions/curl.js +3 -6
  55. package/lib/config/services/php/extensions/gd.js +4 -3
  56. package/lib/config/services/php/extensions/index.js +9 -8
  57. package/lib/config/services/php/extensions/intl.js +3 -5
  58. package/lib/config/services/php/extensions/opcache.js +3 -5
  59. package/lib/config/services/php/extensions/pdo_mysql.js +2 -2
  60. package/lib/config/services/php/extensions/soap.js +3 -5
  61. package/lib/config/services/php/extensions/sodium.js +3 -5
  62. package/lib/config/services/php/extensions/xdebug.js +5 -3
  63. package/lib/config/services/php/extensions/xsl.js +3 -5
  64. package/lib/config/services/php/extensions/zip.js +3 -5
  65. package/lib/config/services/php/versions/index.js +1 -1
  66. package/lib/config/services/php/versions/php-7.2.js +13 -9
  67. package/lib/config/services/php/versions/php-7.3.js +13 -9
  68. package/lib/config/services/php/versions/php-7.4.js +13 -9
  69. package/lib/config/services/php/versions/php-8.1.js +13 -9
  70. package/lib/config/services/redis/index.js +1 -1
  71. package/lib/config/services/redis/redis-5.0.js +2 -2
  72. package/lib/config/services/redis/redis-6.0.js +2 -2
  73. package/lib/config/services/redis/redis-6.2.js +2 -2
  74. package/lib/config/services/ssl-terminator/index.js +6 -5
  75. package/lib/config/services/varnish/index.js +1 -1
  76. package/lib/config/services/varnish/varnish-6-0.js +7 -5
  77. package/lib/config/services/varnish/varnish-6-6.js +7 -5
  78. package/lib/config/services/varnish/varnish-7-0.js +7 -5
  79. package/lib/config/system-config.js +55 -32
  80. package/lib/config/templates/mariadb.template.cnf +2 -0
  81. package/lib/config/versions/index.js +48 -27
  82. package/lib/config/versions/magento-2.2.10.js +22 -15
  83. package/lib/config/versions/magento-2.3.0.js +22 -15
  84. package/lib/config/versions/magento-2.3.1.js +22 -15
  85. package/lib/config/versions/magento-2.3.2-p1.js +22 -15
  86. package/lib/config/versions/magento-2.3.2-p2.js +22 -15
  87. package/lib/config/versions/magento-2.3.2.js +22 -15
  88. package/lib/config/versions/magento-2.3.3-p1.js +22 -15
  89. package/lib/config/versions/magento-2.3.3.js +22 -15
  90. package/lib/config/versions/magento-2.3.4-p1.js +22 -15
  91. package/lib/config/versions/magento-2.3.4-p2.js +22 -15
  92. package/lib/config/versions/magento-2.3.4.js +22 -15
  93. package/lib/config/versions/magento-2.3.5-p1.js +22 -15
  94. package/lib/config/versions/magento-2.3.5-p2.js +22 -15
  95. package/lib/config/versions/magento-2.3.5.js +27 -15
  96. package/lib/config/versions/magento-2.3.6-p1.js +22 -15
  97. package/lib/config/versions/magento-2.3.6.js +22 -15
  98. package/lib/config/versions/magento-2.3.7-p1.js +22 -15
  99. package/lib/config/versions/magento-2.3.7-p2.js +22 -15
  100. package/lib/config/versions/magento-2.3.7-p3.js +22 -15
  101. package/lib/config/versions/magento-2.3.7-p4.js +22 -15
  102. package/lib/config/versions/magento-2.3.7.js +22 -15
  103. package/lib/config/versions/magento-2.4.0-p1.js +22 -15
  104. package/lib/config/versions/magento-2.4.0.js +22 -15
  105. package/lib/config/versions/magento-2.4.1-p1.js +23 -16
  106. package/lib/config/versions/magento-2.4.1.js +23 -16
  107. package/lib/config/versions/magento-2.4.2-p1.js +23 -16
  108. package/lib/config/versions/magento-2.4.2-p2.js +23 -16
  109. package/lib/config/versions/magento-2.4.2.js +23 -16
  110. package/lib/config/versions/magento-2.4.3-p1.js +23 -16
  111. package/lib/config/versions/magento-2.4.3-p2.js +23 -16
  112. package/lib/config/versions/magento-2.4.3-p3.js +23 -16
  113. package/lib/config/versions/magento-2.4.3.js +23 -16
  114. package/lib/config/versions/magento-2.4.4-p1.js +23 -16
  115. package/lib/config/versions/magento-2.4.4-p2.js +23 -16
  116. package/lib/config/versions/magento-2.4.4.js +23 -16
  117. package/lib/config/versions/magento-2.4.5-p1.js +23 -16
  118. package/lib/config/versions/magento-2.4.5.js +23 -17
  119. package/lib/config/xml-parser.js +21 -20
  120. package/lib/errors/known-error.js +8 -6
  121. package/lib/errors/unknown-error.js +8 -6
  122. package/lib/tasks/cache/create-cache-folder.js +10 -10
  123. package/lib/tasks/cache/index.js +1 -1
  124. package/lib/tasks/cache/remove-cache-folder.js +9 -9
  125. package/lib/tasks/cleanup.js +22 -24
  126. package/lib/tasks/cli/create-bashrc-config.js +19 -11
  127. package/lib/tasks/cli/index.js +10 -13
  128. package/lib/tasks/composer/index.js +20 -15
  129. package/lib/tasks/composer/local-auth-json.js +32 -18
  130. package/lib/tasks/database/connect-to-database.js +71 -51
  131. package/lib/tasks/database/create-magento-database.js +7 -7
  132. package/lib/tasks/database/create-magento-user.js +33 -20
  133. package/lib/tasks/database/default-magento-database.js +1 -1
  134. package/lib/tasks/database/default-magento-user.js +2 -2
  135. package/lib/tasks/database/dump-theme-config.js +16 -12
  136. package/lib/tasks/database/fix-db.js +62 -52
  137. package/lib/tasks/database/import-dump-to-database.js +122 -85
  138. package/lib/tasks/database/import-remote-db/index.js +16 -18
  139. package/lib/tasks/database/import-remote-db/ssh/database-dump-command.js +2 -2
  140. package/lib/tasks/database/import-remote-db/ssh/index.js +34 -35
  141. package/lib/tasks/database/import-remote-db/ssh/readymage.js +41 -38
  142. package/lib/tasks/database/import-remote-db/ssh/regular-server.js +44 -46
  143. package/lib/tasks/database/index.js +1 -1
  144. package/lib/tasks/database/magento-tables.js +3 -3
  145. package/lib/tasks/database/restore-theme-config.js +26 -19
  146. package/lib/tasks/docker/api.d.ts +1 -1
  147. package/lib/tasks/docker/api.js +31 -33
  148. package/lib/tasks/docker/containers/container-api.d.ts +49 -14
  149. package/lib/tasks/docker/containers/container-api.js +112 -83
  150. package/lib/tasks/docker/containers/index.js +3 -3
  151. package/lib/tasks/docker/containers/tasks.js +171 -99
  152. package/lib/tasks/docker/convert-composer-home-to-composer-cache-volume.js +34 -25
  153. package/lib/tasks/docker/convert-legacy-volumes.js +91 -55
  154. package/lib/tasks/docker/convert-mysql-to-mariadb.js +178 -147
  155. package/lib/tasks/docker/image/image-api.d.ts +2 -3
  156. package/lib/tasks/docker/image/image-api.js +41 -34
  157. package/lib/tasks/docker/image/index.js +2 -2
  158. package/lib/tasks/docker/index.js +26 -21
  159. package/lib/tasks/docker/network/index.js +3 -3
  160. package/lib/tasks/docker/network/network-api.d.ts +11 -8
  161. package/lib/tasks/docker/network/network-api.js +53 -61
  162. package/lib/tasks/docker/network/tasks.js +41 -31
  163. package/lib/tasks/docker/project-image-builder.js +175 -92
  164. package/lib/tasks/docker/system/index.js +2 -2
  165. package/lib/tasks/docker/system/system-api.d.ts +2 -2
  166. package/lib/tasks/docker/system/system-api.js +16 -19
  167. package/lib/tasks/docker/volume/index.js +3 -3
  168. package/lib/tasks/docker/volume/tasks.js +63 -46
  169. package/lib/tasks/docker/volume/volume-api.d.ts +8 -5
  170. package/lib/tasks/docker/volume/volume-api.js +59 -76
  171. package/lib/tasks/execute.js +91 -55
  172. package/lib/tasks/file-system/create-mariadb-config.js +18 -10
  173. package/lib/tasks/file-system/create-nginx-config.js +18 -19
  174. package/lib/tasks/file-system/create-php-config.js +12 -8
  175. package/lib/tasks/file-system/create-php-debug-config.js +23 -18
  176. package/lib/tasks/file-system/create-php-fpm-config.js +14 -9
  177. package/lib/tasks/file-system/create-phpstorm-config/database-config.js +144 -112
  178. package/lib/tasks/file-system/create-phpstorm-config/eslint-config.js +69 -45
  179. package/lib/tasks/file-system/create-phpstorm-config/exclude-folder-config.js +69 -70
  180. package/lib/tasks/file-system/create-phpstorm-config/index.js +28 -24
  181. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/coding-standard-config.js +9 -9
  182. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/config.js +23 -23
  183. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/custom-ruleset-path-config.js +22 -19
  184. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/default-properties-config.js +26 -16
  185. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/eslint-inspection-config.js +14 -15
  186. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/index.js +43 -34
  187. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/inspection-tools-config.js +14 -6
  188. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/magento-coding-standard-config.js +9 -9
  189. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/mess-detector-validation-inspection-config.js +53 -47
  190. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/paths.js +41 -12
  191. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/php-cs-fixer-validation-inspection-config.js +33 -30
  192. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/php-cs-validation-inspection-config.js +35 -38
  193. package/lib/tasks/file-system/create-phpstorm-config/inspection-tools-config/stylelint-inspection-config.js +14 -15
  194. package/lib/tasks/file-system/create-phpstorm-config/keys.js +10 -10
  195. package/lib/tasks/file-system/create-phpstorm-config/php-config/index.js +33 -25
  196. package/lib/tasks/file-system/create-phpstorm-config/php-config/mess-detector-config.js +28 -25
  197. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-code-sniffer-config.js +53 -32
  198. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-config.js +7 -7
  199. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-cs-fixer-config.js +37 -27
  200. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-interpreters-config.js +53 -31
  201. package/lib/tasks/file-system/create-phpstorm-config/php-config/php-project-shared-configuration-config.js +42 -30
  202. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/index.js +33 -20
  203. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/php-docker-settings-config.js +3 -3
  204. package/lib/tasks/file-system/create-phpstorm-config/php-docker-settings-config/setup-php-docker-container-settings-config.js +27 -16
  205. package/lib/tasks/file-system/create-phpstorm-config/setup-xml-structure.js +14 -13
  206. package/lib/tasks/file-system/create-phpstorm-config/stylelint-config.js +52 -34
  207. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/composer-settings-config.js +41 -33
  208. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/format-setting-config.js +39 -27
  209. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/index.js +34 -30
  210. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/mess-detector-project-configuration-config.js +32 -22
  211. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-code-sniffer-project-configuration-config.js +32 -22
  212. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-cs-fixer-project-configuration-config.js +32 -22
  213. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-debug-general-config.js +42 -31
  214. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-server-config.js +45 -33
  215. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-stan-project-configuration-config.js.js +32 -22
  216. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/php-workspace-project-configuration-config.js +22 -19
  217. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/properties-component-config.js +35 -21
  218. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/psalm-project-configuration-config.js.js +31 -22
  219. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/run-manager-config.js +38 -28
  220. package/lib/tasks/file-system/create-phpstorm-config/workspace-config/workspace-config.js +5 -5
  221. package/lib/tasks/file-system/create-phpstorm-config/xml-utils.js +3 -2
  222. package/lib/tasks/file-system/create-ssl-terminator-config.js +46 -34
  223. package/lib/tasks/file-system/create-varnish-config.js +20 -23
  224. package/lib/tasks/file-system/create-vscode-config.js +66 -49
  225. package/lib/tasks/file-system/index.js +29 -25
  226. package/lib/tasks/import-dump.js +54 -45
  227. package/lib/tasks/link.js +24 -23
  228. package/lib/tasks/magento/enable-magento-composer-plugins.js +213 -149
  229. package/lib/tasks/magento/index.js +1 -1
  230. package/lib/tasks/magento/install-magento-project.js +158 -97
  231. package/lib/tasks/magento/remove-magento.js +30 -24
  232. package/lib/tasks/magento/setup-magento/adjust-full-page-cache.js +27 -15
  233. package/lib/tasks/magento/setup-magento/configure-elasticsearch.js +23 -10
  234. package/lib/tasks/magento/setup-magento/create-admin.js +21 -13
  235. package/lib/tasks/magento/setup-magento/delete-admin-users.js +5 -5
  236. package/lib/tasks/magento/setup-magento/delete-customers.js +16 -10
  237. package/lib/tasks/magento/setup-magento/delete-orders.js +16 -10
  238. package/lib/tasks/magento/setup-magento/disable-2fa.js +11 -8
  239. package/lib/tasks/magento/setup-magento/disable-maintenance-mode.js +7 -7
  240. package/lib/tasks/magento/setup-magento/disable-page-builder.js +5 -4
  241. package/lib/tasks/magento/setup-magento/flush-redis-config.js +14 -8
  242. package/lib/tasks/magento/setup-magento/increase-admin-session-lifetime.js +21 -17
  243. package/lib/tasks/magento/setup-magento/index-products.js +4 -6
  244. package/lib/tasks/magento/setup-magento/index.js +54 -47
  245. package/lib/tasks/magento/setup-magento/install-magento.js +112 -79
  246. package/lib/tasks/magento/setup-magento/migrate-database.js +115 -96
  247. package/lib/tasks/magento/setup-magento/set-base-url.js +35 -21
  248. package/lib/tasks/magento/setup-magento/set-deployment-mode.js +15 -13
  249. package/lib/tasks/magento/setup-magento/set-mail-config.js +20 -14
  250. package/lib/tasks/magento/setup-magento/set-url-rewrite.js +13 -9
  251. package/lib/tasks/magento/setup-magento/upgrade-magento.js +30 -22
  252. package/lib/tasks/magento/setup-magento/urn-highlighter.js +11 -11
  253. package/lib/tasks/magento/setup-magento/varnish-config.js +42 -32
  254. package/lib/tasks/magento/setup-magento/waiting-for-redis.js +6 -8
  255. package/lib/tasks/magento/setup-magento/waiting-for-varnish.js +108 -65
  256. package/lib/tasks/magento/uninstall-magento.js +19 -16
  257. package/lib/tasks/php/php-container.d.ts +19 -0
  258. package/lib/tasks/php/php-container.js +50 -46
  259. package/lib/tasks/php/update-env-php.js +50 -30
  260. package/lib/tasks/project-config/index.js +12 -8
  261. package/lib/tasks/requirements/composer-credentials.js +215 -112
  262. package/lib/tasks/requirements/docker/context.js +49 -37
  263. package/lib/tasks/requirements/docker/index.js +123 -89
  264. package/lib/tasks/requirements/docker/install-on-mac.js +21 -14
  265. package/lib/tasks/requirements/docker/install.js +63 -52
  266. package/lib/tasks/requirements/docker/performance.js +40 -24
  267. package/lib/tasks/requirements/docker/permissions.js +27 -17
  268. package/lib/tasks/requirements/docker/running-status.js +79 -66
  269. package/lib/tasks/requirements/docker/version.js +14 -11
  270. package/lib/tasks/requirements/index.js +33 -29
  271. package/lib/tasks/requirements/node-version.js +8 -8
  272. package/lib/tasks/requirements/php-version.js +14 -11
  273. package/lib/tasks/requirements/platform.js +42 -26
  274. package/lib/tasks/requirements/rosetta.js +15 -12
  275. package/lib/tasks/start.js +172 -148
  276. package/lib/tasks/status/index.js +155 -88
  277. package/lib/tasks/stop.js +22 -18
  278. package/lib/tasks/theme/build-theme.js +50 -33
  279. package/lib/tasks/theme/install-theme.js +31 -18
  280. package/lib/tasks/theme/link-theme.js +27 -21
  281. package/lib/tasks/theme/retrieve-theme-data.js +24 -18
  282. package/lib/tasks/theme/setup-themes.js +87 -59
  283. package/lib/tasks/theme/symlink-theme.js +44 -22
  284. package/lib/util/CSA-theme.js +23 -21
  285. package/lib/util/analytics.js +130 -75
  286. package/lib/util/arch.js +22 -18
  287. package/lib/util/clean-object.js +15 -10
  288. package/lib/util/config-file-validator.js +63 -54
  289. package/lib/util/config-php-json.js +34 -16
  290. package/lib/util/connection-string.js +41 -27
  291. package/lib/util/console-block.js +112 -65
  292. package/lib/util/database.js +56 -33
  293. package/lib/util/deepmerge.d.ts +1 -1
  294. package/lib/util/deepmerge.js +19 -28
  295. package/lib/util/dockerfile-builder/build-instructions.js +159 -143
  296. package/lib/util/dockerfile-builder/index.js +47 -73
  297. package/lib/util/dockerfile-builder/types.d.ts +2 -1
  298. package/lib/util/download-file.js +28 -16
  299. package/lib/util/env-php-json.js +42 -16
  300. package/lib/util/exec-async-command.d.ts +9 -9
  301. package/lib/util/exec-async-command.js +82 -59
  302. package/lib/util/exec-async.d.ts +2 -0
  303. package/lib/util/exec-async.js +12 -5
  304. package/lib/util/execute-in-container.js +22 -27
  305. package/lib/util/execute-sudo-command.js +11 -15
  306. package/lib/util/get-brew-bin-path.js +27 -23
  307. package/lib/util/get-installed-magento-version.js +22 -16
  308. package/lib/util/get-jsonfile-data.js +14 -9
  309. package/lib/util/install-dependencies-task.js +53 -41
  310. package/lib/util/instance-metadata.js +44 -29
  311. package/lib/util/ip.js +16 -12
  312. package/lib/util/is-running-root.js +6 -3
  313. package/lib/util/is-wsl.js +10 -10
  314. package/lib/util/macos-version.js +12 -11
  315. package/lib/util/magento-task.js +14 -9
  316. package/lib/util/match-filesystem.js +22 -16
  317. package/lib/util/move-file.js +40 -25
  318. package/lib/util/nginx-logs-parser.js +50 -39
  319. package/lib/util/open-browser.js +8 -5
  320. package/lib/util/os-platform.js +40 -32
  321. package/lib/util/path-exists-sync.js +10 -6
  322. package/lib/util/path-exists.js +6 -6
  323. package/lib/util/php-task.js +11 -10
  324. package/lib/util/portscanner.js +97 -85
  325. package/lib/util/prefix.js +31 -22
  326. package/lib/util/resolve-configuration-with-overrides.js +30 -15
  327. package/lib/util/rmdir-safe.js +15 -11
  328. package/lib/util/run-composer.js +16 -16
  329. package/lib/util/run-container-image.js +9 -4
  330. package/lib/util/run-magento.js +16 -17
  331. package/lib/util/run-php.js +16 -21
  332. package/lib/util/safe-regex-extract.js +8 -12
  333. package/lib/util/set-config.js +24 -15
  334. package/lib/util/sleep.js +7 -2
  335. package/lib/util/systemctl.js +62 -44
  336. package/lib/util/wait-for-it.js +42 -33
  337. package/lib/util/wait-for-logs.js +42 -35
  338. package/lib/util/xdg-open-exists.js +19 -19
  339. package/package.json +7 -3
  340. package/tsconfig.json +24 -0
  341. package/typings/context.d.ts +76 -34
  342. package/typings/index.d.ts +44 -19
  343. package/typings/override.d.ts +14 -0
  344. package/typings/phpstorm.d.ts +19 -19
  345. package/.prettierrc +0 -3
  346. package/lib/util/get-php-for-phpbrew.js +0 -30
  347. package/lib/util/request.js +0 -0
@@ -1,14 +1,14 @@
1
- const symlinkTheme = require('./symlink-theme');
2
- const installTheme = require('./install-theme');
3
- const adjustFullPageCache = require('../magento/setup-magento/adjust-full-page-cache');
4
- const disablePageBuilder = require('../magento/setup-magento/disable-page-builder');
5
- const buildTheme = require('./build-theme');
6
- const upgradeMagento = require('../magento/setup-magento/upgrade-magento');
7
- const updateEnvPHP = require('../php/update-env-php');
8
- const semver = require('semver');
1
+ const symlinkTheme = require('./symlink-theme')
2
+ const installTheme = require('./install-theme')
3
+ const adjustFullPageCache = require('../magento/setup-magento/adjust-full-page-cache')
4
+ const disablePageBuilder = require('../magento/setup-magento/disable-page-builder')
5
+ const buildTheme = require('./build-theme')
6
+ const upgradeMagento = require('../magento/setup-magento/upgrade-magento')
7
+ const updateEnvPHP = require('../php/update-env-php')
8
+ const semver = require('semver')
9
9
 
10
10
  /**
11
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
11
+ * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
12
12
  */
13
13
  const linkTheme = () => ({
14
14
  title: 'Linking theme',
@@ -19,21 +19,25 @@ const linkTheme = () => ({
19
19
  themePath,
20
20
  composerData,
21
21
  databaseConnection
22
- } = ctx;
22
+ } = ctx
23
23
  const {
24
24
  magento: { edition: magentoEdition },
25
25
  magentoVersion
26
- } = overridenConfiguration;
26
+ } = overridenConfiguration
27
27
 
28
- const isEnterprise = magentoEdition === 'enterprise';
29
- const isPageBuilderInstalled = isEnterprise && semver.satisfies(semver.coerce(magentoVersion), '^2.4');
28
+ const isEnterprise = magentoEdition === 'enterprise'
29
+ const isPageBuilderInstalled =
30
+ isEnterprise &&
31
+ semver.satisfies(semver.coerce(magentoVersion), '^2.4')
30
32
  const [queryResult] = await databaseConnection.query(`
31
33
  SELECT value AS isPagebuilderEnabled
32
34
  FROM core_config_data
33
35
  WHERE path = 'cms/pagebuilder/enabled'
34
- `);
36
+ `)
35
37
 
36
- const [{ isPagebuilderEnabled = 1 }] = queryResult.length ? queryResult : [{}];
38
+ const [{ isPagebuilderEnabled = 1 }] = queryResult.length
39
+ ? queryResult
40
+ : [{}]
37
41
 
38
42
  /**
39
43
  * @type {import('../../../typings/theme').Theme}
@@ -42,9 +46,9 @@ const linkTheme = () => ({
42
46
  themePath,
43
47
  absoluteThemePath,
44
48
  composerData
45
- };
49
+ }
46
50
 
47
- task.title = `Linking theme from ${themePath}`;
51
+ task.title = `Linking theme from ${themePath}`
48
52
 
49
53
  return task.newListr([
50
54
  symlinkTheme(theme),
@@ -52,13 +56,15 @@ const linkTheme = () => ({
52
56
  updateEnvPHP(),
53
57
  upgradeMagento(),
54
58
  adjustFullPageCache(),
55
- ...(isPageBuilderInstalled && Number(isPagebuilderEnabled) ? [disablePageBuilder()] : []),
59
+ ...(isPageBuilderInstalled && Number(isPagebuilderEnabled)
60
+ ? [disablePageBuilder()]
61
+ : []),
56
62
  buildTheme(theme)
57
- ]);
63
+ ])
58
64
  },
59
65
  options: {
60
66
  bottomBar: 5
61
67
  }
62
- });
68
+ })
63
69
 
64
- module.exports = linkTheme;
70
+ module.exports = linkTheme
@@ -1,8 +1,8 @@
1
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
2
- const path = require('path');
3
- const KnownError = require('../../errors/known-error');
4
- const getJsonfileData = require('../../util/get-jsonfile-data');
5
- const pathExists = require('../../util/path-exists');
1
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
2
+ const path = require('path')
3
+ const KnownError = require('../../errors/known-error')
4
+ const getJsonfileData = require('../../util/get-jsonfile-data')
5
+ const pathExists = require('../../util/path-exists')
6
6
 
7
7
  /**
8
8
  * @type {(themePath: string) => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -10,40 +10,46 @@ const pathExists = require('../../util/path-exists');
10
10
  const retrieveThemeData = (themePath) => ({
11
11
  title: 'Checking theme folder',
12
12
  task: async (ctx) => {
13
- let absoluteThemePath = path.resolve(themePath);
13
+ let absoluteThemePath = path.resolve(themePath)
14
14
 
15
15
  // validate if theme is located inside magento directory
16
16
  if (!absoluteThemePath.includes(process.cwd())) {
17
17
  throw new KnownError(`You are trying to link the theme from outside of your Magento project!
18
18
 
19
- This is not supported in ${ logger.style.command('magento-scripts') } version 2.
19
+ This is not supported in ${logger.style.command('magento-scripts')} version 2.
20
20
 
21
- Move your theme inside Magento project!`);
21
+ Move your theme inside Magento project!`)
22
22
  }
23
23
 
24
24
  // check if path not relative
25
- if (!(await pathExists(path.join(absoluteThemePath, 'composer.json')))) {
25
+ if (
26
+ !(await pathExists(path.join(absoluteThemePath, 'composer.json')))
27
+ ) {
26
28
  // if composer.json is not found, then it's not correct path
27
29
  // and we need to test if it's absolute one
28
30
  if (await pathExists(path.join(themePath, 'composer.json'))) {
29
31
  // if so, use it as absolute path
30
- absoluteThemePath = themePath;
32
+ absoluteThemePath = themePath
31
33
  }
32
34
  } else {
33
35
  // path is relative, so we use it
34
- absoluteThemePath = themePath;
36
+ absoluteThemePath = themePath
35
37
  }
36
38
 
37
- const composerData = await getJsonfileData(path.join(absoluteThemePath, 'composer.json'));
39
+ const composerData = await getJsonfileData(
40
+ path.join(absoluteThemePath, 'composer.json')
41
+ )
38
42
 
39
43
  if (!composerData) {
40
- throw new KnownError(`composer.json file not found in "${themePath}"`);
44
+ throw new KnownError(
45
+ `composer.json file not found in "${themePath}"`
46
+ )
41
47
  }
42
48
 
43
- ctx.themePath = themePath;
44
- ctx.composerData = composerData;
45
- ctx.absoluteThemePath = absoluteThemePath;
49
+ ctx.themePath = themePath
50
+ ctx.composerData = composerData
51
+ ctx.absoluteThemePath = absoluteThemePath
46
52
  }
47
- });
53
+ })
48
54
 
49
- module.exports = retrieveThemeData;
55
+ module.exports = retrieveThemeData
@@ -1,94 +1,122 @@
1
- const path = require('path');
2
- const getJsonfileData = require('../../util/get-jsonfile-data');
3
- const pathExists = require('../../util/path-exists');
4
- const symlinkTheme = require('./symlink-theme');
5
- const installTheme = require('./install-theme');
6
- const upgradeMagento = require('../magento/setup-magento/upgrade-magento');
7
- const buildTheme = require('./build-theme');
8
- const KnownError = require('../../errors/known-error');
1
+ const path = require('path')
2
+ const getJsonfileData = require('../../util/get-jsonfile-data')
3
+ const pathExists = require('../../util/path-exists')
4
+ const symlinkTheme = require('./symlink-theme')
5
+ const installTheme = require('./install-theme')
6
+ const upgradeMagento = require('../magento/setup-magento/upgrade-magento')
7
+ const buildTheme = require('./build-theme')
8
+ const KnownError = require('../../errors/known-error')
9
9
 
10
10
  /**
11
- * @type {() => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
11
+ * @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
12
12
  */
13
13
  const setupThemes = () => ({
14
14
  title: 'Setting up themes',
15
15
  task: async (ctx, task) => {
16
- const { config: { baseConfig } } = ctx;
17
- const composerData = await getJsonfileData(path.join(baseConfig.magentoDir, 'composer.json'));
16
+ const {
17
+ config: { baseConfig }
18
+ } = ctx
19
+ /**
20
+ * @type {{ require: Record<string, string>, repositories?: Record<string, { type: string, url: string }> | { type: string, url: string }[] } | null}
21
+ */
22
+ const composerData = await getJsonfileData(
23
+ path.join(baseConfig.magentoDir, 'composer.json')
24
+ )
18
25
 
19
- if (!composerData.repositories) {
20
- task.skip();
21
- return;
26
+ if (!composerData || !composerData.repositories) {
27
+ task.skip()
28
+ return
22
29
  }
23
30
 
24
31
  const composerLocalPaths = Array.isArray(composerData.repositories)
25
32
  ? composerData.repositories.filter((repo) => repo.type === 'path')
26
- : Object.values(composerData.repositories).filter((repo) => repo.type === 'path');
33
+ : Object.values(composerData.repositories).filter(
34
+ (repo) => repo.type === 'path'
35
+ )
27
36
 
28
37
  /**
29
38
  * @type {string[]}
30
39
  */
31
- const composerLocalPackagesPaths = [];
40
+ const composerLocalPackagesPaths = []
32
41
  for (const localPath of composerLocalPaths) {
33
42
  if (
34
- await pathExists(localPath.url)
35
- && await pathExists(path.join(process.cwd(), localPath.url, 'composer.json'))
36
- && await pathExists(path.join(process.cwd(), localPath.url, 'package.json'))
43
+ (await pathExists(localPath.url)) &&
44
+ (await pathExists(
45
+ path.join(process.cwd(), localPath.url, 'composer.json')
46
+ )) &&
47
+ (await pathExists(
48
+ path.join(process.cwd(), localPath.url, 'package.json')
49
+ ))
37
50
  ) {
38
- const localPathComposerData = await getJsonfileData(path.join(process.cwd(), localPath.url, 'composer.json'));
51
+ const localPathComposerData = await getJsonfileData(
52
+ path.join(process.cwd(), localPath.url, 'composer.json')
53
+ )
39
54
  if (composerData.require[localPathComposerData.name]) {
40
- composerLocalPackagesPaths.push(localPath.url);
55
+ composerLocalPackagesPaths.push(localPath.url)
41
56
  }
42
57
  }
43
58
  }
44
59
 
45
60
  if (composerLocalPackagesPaths.length === 0) {
46
- task.skip();
47
- return;
61
+ task.skip()
62
+ return
48
63
  }
49
64
 
50
- const themes = await Promise.all(composerLocalPackagesPaths.map(async (themePath) => {
51
- let absoluteThemePath = path.join(process.cwd(), themePath);
65
+ const themes = await Promise.all(
66
+ composerLocalPackagesPaths.map(async (themePath) => {
67
+ let absoluteThemePath = path.join(process.cwd(), themePath)
52
68
 
53
- // check if path not relative
54
- if (!(await pathExists(path.join(absoluteThemePath, 'composer.json')))) {
55
- // if composer.json is not found, then it's not correct path
56
- // and we need to test if it's absolute one
57
- if (await pathExists(path.join(themePath, 'composer.json'))) {
58
- // if so, use it as absolute path
59
- absoluteThemePath = themePath;
69
+ // check if path not relative
70
+ if (
71
+ !(await pathExists(
72
+ path.join(absoluteThemePath, 'composer.json')
73
+ ))
74
+ ) {
75
+ // if composer.json is not found, then it's not correct path
76
+ // and we need to test if it's absolute one
77
+ if (
78
+ await pathExists(path.join(themePath, 'composer.json'))
79
+ ) {
80
+ // if so, use it as absolute path
81
+ absoluteThemePath = themePath
82
+ }
83
+ } else {
84
+ // path is relative, so we use it
85
+ absoluteThemePath = themePath
60
86
  }
61
- } else {
62
- // path is relative, so we use it
63
- absoluteThemePath = themePath;
64
- }
65
87
 
66
- const composerData = await getJsonfileData(path.join(absoluteThemePath, 'composer.json'));
88
+ const composerData = await getJsonfileData(
89
+ path.join(absoluteThemePath, 'composer.json')
90
+ )
67
91
 
68
- if (!composerData) {
69
- throw new KnownError(`composer.json file not found in "${themePath}"`);
70
- }
92
+ if (!composerData) {
93
+ throw new KnownError(
94
+ `composer.json file not found in "${themePath}"`
95
+ )
96
+ }
71
97
 
72
- return {
73
- themePath,
74
- composerData,
75
- absoluteThemePath
76
- };
77
- }));
98
+ return {
99
+ themePath,
100
+ composerData,
101
+ absoluteThemePath
102
+ }
103
+ })
104
+ )
78
105
 
79
106
  return task.newListr(
80
- themes.map((theme) => ({
81
- title: `Theme from "${theme.themePath}"`,
82
- task: (subCtx, subTask) => subTask.newListr([
83
- symlinkTheme(theme),
84
- installTheme(theme),
85
- buildTheme(theme)
86
- ])
87
- })).concat([
88
- upgradeMagento()
89
- ])
90
- );
107
+ themes
108
+ .map((theme) => ({
109
+ title: `Theme from "${theme.themePath}"`,
110
+ task: (subCtx, subTask) =>
111
+ subTask.newListr([
112
+ symlinkTheme(theme),
113
+ installTheme(theme),
114
+ buildTheme(theme)
115
+ ])
116
+ }))
117
+ .concat([upgradeMagento()])
118
+ )
91
119
  }
92
- });
120
+ })
93
121
 
94
- module.exports = setupThemes;
122
+ module.exports = setupThemes
@@ -1,7 +1,7 @@
1
- const path = require('path');
2
- const UnknownError = require('../../errors/unknown-error');
3
- const getJsonfileData = require('../../util/get-jsonfile-data');
4
- const runComposerCommand = require('../../util/run-composer');
1
+ const path = require('path')
2
+ const UnknownError = require('../../errors/unknown-error')
3
+ const getJsonfileData = require('../../util/get-jsonfile-data')
4
+ const runComposerCommand = require('../../util/run-composer')
5
5
 
6
6
  /**
7
7
  * @type {(theme: import('../../../typings/theme').Theme) => import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
@@ -9,38 +9,60 @@ const runComposerCommand = require('../../util/run-composer');
9
9
  const symlinkTheme = (theme) => ({
10
10
  title: 'Setting symbolic link for theme in composer.json',
11
11
  task: async (ctx, task) => {
12
- const { verbose = false } = ctx;
13
- const composerJsonData = await getJsonfileData(path.join(process.cwd(), 'composer.json'));
12
+ const { verbose = false } = ctx
13
+ /**
14
+ * @type {{ require: Record<string, string>, repositories?: Record<string, { type: string, url: string }> | { type: string, url: string }[] } | null}
15
+ */
16
+ const composerJsonData = await getJsonfileData(
17
+ path.join(process.cwd(), 'composer.json')
18
+ )
14
19
 
15
- if (!composerJsonData.repositories) {
16
- task.skip();
17
- return;
20
+ if (!composerJsonData || !composerJsonData.repositories) {
21
+ task.skip()
22
+ return
18
23
  }
19
24
 
25
+ /**
26
+ * @type {Record<string, { type: string, url: string }>}
27
+ */
28
+ const init = {}
20
29
  const repositories = Array.isArray(composerJsonData.repositories)
21
- ? composerJsonData.repositories.reduce((acc, repo, index) => ({ ...acc, [`${index}`]: repo }), {})
22
- : composerJsonData.repositories;
30
+ ? composerJsonData.repositories.reduce(
31
+ (acc, repo, index) => ({ ...acc, [`${index}`]: repo }),
32
+ init
33
+ )
34
+ : composerJsonData.repositories
23
35
 
24
- if (Object.values(repositories).some((value) => value.url === theme.themePath)) {
25
- task.skip();
26
- return;
36
+ if (
37
+ Object.values(repositories).some(
38
+ (value) => value.url === theme.themePath
39
+ )
40
+ ) {
41
+ task.skip()
42
+ return
27
43
  }
28
44
 
29
45
  try {
30
- await runComposerCommand(ctx, `config repo.scandipwa path ${theme.absoluteThemePath}`, {
31
- callback: !verbose ? undefined : (t) => {
32
- task.output = t;
46
+ await runComposerCommand(
47
+ ctx,
48
+ `config repo.scandipwa path ${theme.absoluteThemePath}`,
49
+ {
50
+ callback: !verbose
51
+ ? undefined
52
+ : (t) => {
53
+ task.output = t
54
+ }
33
55
  }
34
- });
56
+ )
35
57
  } catch (e) {
36
58
  throw new UnknownError(
37
59
  `Unexpected error while configuring theme symbolic link.
38
60
  See ERROR log above.\n\n${e}`
39
- );
61
+ )
40
62
  }
41
63
 
42
- ctx.isSetupUpgradeNeeded = true;
64
+ ctx.isSetupUpgradeNeeded = true
43
65
  }
44
- });
66
+ })
45
67
 
46
- module.exports = symlinkTheme;
68
+ module.exports = symlinkTheme
@@ -1,36 +1,38 @@
1
- const path = require('path');
2
- const getJsonfileData = require('./get-jsonfile-data');
1
+ const path = require('path')
2
+ const getJsonfileData = require('./get-jsonfile-data')
3
3
 
4
4
  const getCSAThemes = async ({ cwd = process.cwd() } = {}) => {
5
- const composerData = await getJsonfileData(
6
- path.join(cwd, 'composer.json')
7
- );
5
+ const composerData = await getJsonfileData(path.join(cwd, 'composer.json'))
8
6
 
9
7
  if (!composerData || !composerData.repositories) {
10
- return [];
8
+ return []
11
9
  }
12
10
 
13
- const pathRepositories = Object.entries(composerData.repositories)
14
- .filter(([_, repoOptions]) => repoOptions.type === 'path');
11
+ const pathRepositories = Object.entries(composerData.repositories).filter(
12
+ ([_, repoOptions]) => repoOptions.type === 'path'
13
+ )
15
14
 
16
- const CSAThemes = (await Promise.all(
17
- pathRepositories
18
- .map(async ([_, repoOptions]) => {
19
- const pkg = (await getJsonfileData(path.join(cwd, repoOptions.url, 'package.json')) || {});
15
+ const CSAThemes = (
16
+ await Promise.all(
17
+ pathRepositories.map(async ([_, repoOptions]) => {
18
+ const pkg =
19
+ (await getJsonfileData(
20
+ path.join(cwd, repoOptions.url, 'package.json')
21
+ )) || {}
20
22
 
21
23
  return {
22
24
  themePath: repoOptions.url,
23
- isCSATheme: (
24
- (pkg.scandipwa && pkg.scandipwa.type === 'theme')
25
- || (pkg.mosaic && pkg.mosaic.type === 'theme')
26
- )
27
- };
25
+ isCSATheme:
26
+ (pkg.scandipwa && pkg.scandipwa.type === 'theme') ||
27
+ (pkg.mosaic && pkg.mosaic.type === 'theme')
28
+ }
28
29
  })
29
- )).filter(({ isCSATheme }) => isCSATheme);
30
+ )
31
+ ).filter(({ isCSATheme }) => isCSATheme)
30
32
 
31
- return CSAThemes;
32
- };
33
+ return CSAThemes
34
+ }
33
35
 
34
36
  module.exports = {
35
37
  getCSAThemes
36
- };
38
+ }