@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,46 +1,55 @@
1
- const net = require('net');
2
- const UnknownError = require('../errors/unknown-error');
3
- const sleep = require('./sleep');
1
+ const net = require('net')
2
+ const UnknownError = require('../errors/unknown-error')
3
+ const sleep = require('./sleep')
4
4
 
5
- const connectToHostPort = ({ host, port }) => new Promise((resolve, reject) => {
6
- const socket = net.createConnection({ host, port, timeout: 15 * 1000 });
5
+ /**
6
+ * @param {{ host: string, port: number}} param0
7
+ * @returns {Promise<void>}
8
+ */
9
+ const connectToHostPort = ({ host, port }) =>
10
+ new Promise((resolve, reject) => {
11
+ const socket = net.createConnection({ host, port, timeout: 15 * 1000 })
7
12
 
8
- socket.on('connect', () => {
9
- socket.end();
10
- resolve();
11
- });
12
- socket.on('error', (err) => {
13
- socket.end();
14
- reject(err);
15
- });
16
- socket.on('timeout', () => {
17
- socket.end();
18
- reject(new UnknownError('Connection timeout'));
19
- });
20
- });
13
+ socket.on('connect', () => {
14
+ socket.end()
15
+ resolve()
16
+ })
17
+ socket.on('error', (err) => {
18
+ socket.end()
19
+ reject(err)
20
+ })
21
+ socket.on('timeout', () => {
22
+ socket.end()
23
+ reject(new UnknownError('Connection timeout'))
24
+ })
25
+ })
21
26
 
22
- const waitForIt = async ({
23
- name, host, port, output
24
- }) => {
25
- const startTime = Date.now();
26
- let connected = false;
27
- output(`Waiting for ${name} at ${host}:${port}...`);
27
+ /**
28
+ * @param {{ name: string, host: string, port: number, output: (arg: string) => void }} param0
29
+ */
30
+ const waitForIt = async ({ name, host, port, output }) => {
31
+ const startTime = Date.now()
32
+ let connected = false
33
+ output(`Waiting for ${name} at ${host}:${port}...`)
28
34
  while (!connected) {
29
35
  try {
30
- // eslint-disable-next-line no-await-in-loop
31
36
  await Promise.race([
32
37
  sleep(300).then(() => {
33
- throw new UnknownError('Connection timeout');
38
+ throw new UnknownError('Connection timeout')
34
39
  }),
35
40
  connectToHostPort({ host, port })
36
- ]);
37
- connected = true;
38
- // eslint-disable-next-line no-empty
41
+ ])
42
+ connected = true
39
43
  } catch {}
40
44
  }
41
45
 
42
- const endTime = Date.now();
43
- output(`${name} at ${host}:${port} is available after ${((endTime - startTime) / 1000).toFixed(0)} seconds`, 3);
44
- };
46
+ const endTime = Date.now()
47
+ output(
48
+ `${name} at ${host}:${port} is available after ${(
49
+ (endTime - startTime) /
50
+ 1000
51
+ ).toFixed(0)} seconds`
52
+ )
53
+ }
45
54
 
46
- module.exports = waitForIt;
55
+ module.exports = waitForIt
@@ -1,41 +1,48 @@
1
- const { execAsyncSpawn } = require('./exec-async-command');
2
- const sleep = require('./sleep');
1
+ const { execAsyncSpawn } = require('./exec-async-command')
2
+ const sleep = require('./sleep')
3
3
 
4
- // eslint-disable-next-line no-async-promise-executor
5
- const waitForLogs = ({ containerName, timeout = 30 * 1000, matchText }) => new Promise(async (resolve, reject) => {
6
- let matched = false;
7
- let timeoutExceeded = false;
8
- await Promise.race([
9
- (async () => {
10
- while (!timeoutExceeded && !matched) {
11
- // eslint-disable-next-line no-await-in-loop
12
- const { result } = await execAsyncSpawn(`docker logs ${containerName}`, {
13
- withCode: true
14
- });
4
+ /**
5
+ * @param {{ containerName: string, timeout?: number, matchText: string }} param0
6
+ * @returns {Promise<void>}
7
+ */
8
+ const waitForLogs = ({ containerName, timeout = 30 * 1000, matchText }) =>
9
+ // eslint-disable-next-line no-async-promise-executor
10
+ new Promise(async (resolve, reject) => {
11
+ let matched = false
12
+ let timeoutExceeded = false
13
+ await Promise.race([
14
+ (async () => {
15
+ // eslint-disable-next-line no-unmodified-loop-condition
16
+ while (!timeoutExceeded && !matched) {
17
+ const { result } = await execAsyncSpawn(
18
+ `docker logs ${containerName}`,
19
+ {
20
+ withCode: true
21
+ }
22
+ )
15
23
 
16
- if (matched) {
17
- return;
18
- }
19
- // eslint-disable-next-line no-loop-func
20
- result.split('\n').forEach((line) => {
21
- if (line.includes(matchText)) {
22
- matched = true;
23
- resolve();
24
+ if (matched) {
25
+ return
24
26
  }
25
- });
26
27
 
27
- // eslint-disable-next-line no-await-in-loop
28
- await sleep(500);
29
- }
30
- })(),
31
- sleep(timeout).then(() => {
32
- timeoutExceeded = true;
33
- })
34
- ]);
28
+ result.split('\n').forEach((line) => {
29
+ if (line.includes(matchText)) {
30
+ matched = true
31
+ resolve()
32
+ }
33
+ })
34
+
35
+ await sleep(500)
36
+ }
37
+ })(),
38
+ sleep(timeout).then(() => {
39
+ timeoutExceeded = true
40
+ })
41
+ ])
35
42
 
36
- if (timeoutExceeded) {
37
- reject(new Error('Timeout exception'));
38
- }
39
- });
43
+ if (timeoutExceeded) {
44
+ reject(new Error('Timeout exception'))
45
+ }
46
+ })
40
47
 
41
- module.exports = waitForLogs;
48
+ module.exports = waitForLogs
@@ -1,27 +1,27 @@
1
- const fs = require('fs');
2
- const pathExists = require('./path-exists');
1
+ const fs = require('fs')
2
+ const pathExists = require('./path-exists')
3
3
 
4
4
  const checkForXDGOpen = async () => {
5
- const pathParts = process.env.PATH.split(':');
5
+ const pathParts = process.env.PATH.split(':')
6
6
 
7
7
  const results = await Promise.all(
8
- pathParts.map(
9
- async (pathPart) => {
10
- if (!await pathExists(pathPart)) {
11
- return false;
12
- }
8
+ pathParts.map(async (pathPart) => {
9
+ if (!(await pathExists(pathPart))) {
10
+ return false
11
+ }
13
12
 
14
- const files = await fs.promises.readdir(pathPart, {
15
- encoding: 'utf-8',
16
- withFileTypes: true
17
- });
13
+ const files = await fs.promises.readdir(pathPart, {
14
+ encoding: 'utf-8',
15
+ withFileTypes: true
16
+ })
18
17
 
19
- return files.some((file) => file.isFile() && file.name === 'xdg-open');
20
- }
21
- )
22
- );
18
+ return files.some(
19
+ (file) => file.isFile() && file.name === 'xdg-open'
20
+ )
21
+ })
22
+ )
23
23
 
24
- return results.includes(true);
25
- };
24
+ return results.includes(true)
25
+ }
26
26
 
27
- module.exports = checkForXDGOpen;
27
+ module.exports = checkForXDGOpen
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Scripts and configuration used by CMA.",
4
4
  "homepage": "https://docs.create-magento-app.com/",
5
5
  "repository": "github:scandipwa/create-magento-app",
6
- "version": "2.0.3",
6
+ "version": "2.0.4",
7
7
  "main": "./index.js",
8
8
  "types": "./typings/index.d.ts",
9
9
  "license": "OSL-3.0",
@@ -23,7 +23,8 @@
23
23
  "arm64"
24
24
  ],
25
25
  "dependencies": {
26
- "@scandipwa/scandipwa-dev-utils": "0.1.13",
26
+ "@scandipwa/scandipwa-dev-utils": "0.1.16",
27
+ "@tilework/mosaic-dev-utils": "^0.2.3",
27
28
  "conf": "10.1.2",
28
29
  "enquirer": "2.3.6",
29
30
  "eta": "1.12.3",
@@ -54,5 +55,8 @@
54
55
  "mysql",
55
56
  "scandipwa"
56
57
  ],
57
- "gitHead": "21913f16c2eb9b18f7e35d0e19df0c30373044fc"
58
+ "devDependencies": {
59
+ "@types/yargs": "^17.0.13"
60
+ },
61
+ "gitHead": "0938871489021e7a165a42b24d45775107a32870"
58
62
  }
package/tsconfig.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "allowJs": true,
4
+ "checkJs": true,
5
+ "strict": true,
6
+ "forceConsistentCasingInFileNames": true,
7
+ "resolveJsonModule": true,
8
+ "skipLibCheck": true,
9
+ "module": "CommonJS",
10
+ "lib": ["ES2022"],
11
+ "target": "ES2022",
12
+ "moduleResolution": "Node",
13
+ "types": [
14
+ "./typings"
15
+ ]
16
+ },
17
+ "exclude": [
18
+ "**/node_modules",
19
+ "./lib/config/templates/**"
20
+ ],
21
+ "include": [
22
+ "./"
23
+ ]
24
+ }
@@ -1,16 +1,42 @@
1
- import mysql2 from 'mysql2';
1
+ import * as mysql2 from 'mysql2'
2
2
 
3
- import { ProjectConfig } from '../lib/config/config';
4
- import { DockerVersionResult } from '../lib/tasks/docker/api';
5
- import { CMAConfiguration, PHPExtensions } from './index';
6
- import { PHPStormConfig } from './phpstorm';
3
+ import { ProjectConfig } from '../lib/config/config'
4
+ import { DockerVersionResult } from '../lib/tasks/docker/api'
5
+ import { systemApi } from '../lib/tasks/docker/system'
6
+ import { CMAConfiguration, PHPExtensions } from './index'
7
+ import { PHPStormConfig } from './phpstorm'
7
8
 
8
9
  export interface ListrContext {
10
+ noOpen?: boolean
11
+ skipSetup?: boolean
12
+ resetGlobalConfig?: boolean
13
+ withCustomersData?: boolean
14
+ force?: boolean
15
+ magentoFirstInstall?: boolean
16
+ encryptionKey?: string
17
+ pullImages?: boolean
18
+ throwMagentoVersionMissing: boolean
19
+ projectPath: string
20
+ systemDFData?: systemApi.SystemDFResult
21
+ debug: boolean
22
+ verbose: boolean
9
23
  magentoVersion: string
10
24
  composerVersion: string
11
25
  phpVersion: string
12
26
  port?: number
13
- ports?: {
27
+ ports: {
28
+ app: number
29
+ fpm: number
30
+ xdebug: number
31
+ mariadb: number
32
+ redis: number
33
+ elasticsearch: number
34
+ varnish: number
35
+ sslTerminator: number
36
+ maildevSMTP: number
37
+ maildevWeb: number
38
+ }
39
+ cachedPorts?: {
14
40
  app: number
15
41
  fpm: number
16
42
  xdebug: number
@@ -50,33 +76,39 @@ export interface ListrContext {
50
76
  network: {
51
77
  name: string
52
78
  }
53
- volumes: Record<'mariadb' | 'redis' | 'elasticsearch' | 'nginx' | 'appPub' | 'appSetup', {
54
- name: string
55
- opt?: {
56
- type: string
57
- device: string
58
- o: string
79
+ volumes: Record<string,
80
+ {
81
+ name: string,
82
+ driver?: string,
83
+ opt?: {
84
+ mode?: string,
85
+ device?: string,
86
+ o?: string,
87
+ type?: string
88
+ }
59
89
  }
60
- }>
61
- getContainers(): Record<'php' | 'sslTerminator' | 'nginx' | 'redis' | 'mariadb' | 'elasticsearch' | 'varnish', {
62
- _: string
63
- ports: string[]
64
- healthCheck: {
65
- cmd: string
90
+ >
91
+ getContainers(ports?: Record<string, number>): Record<string,
92
+ {
93
+ _: string
94
+ ports: string[]
95
+ healthCheck: {
96
+ cmd: string
97
+ }
98
+ env: Record<string, string>
99
+ mountVolumes: string[]
100
+ mounts: string[]
101
+ restart: string
102
+ securityOptions: string[]
103
+ network: string
104
+ image: string
105
+ debugImage?: string
106
+ remoteImages?: string[]
107
+ name: string
108
+ command: string
109
+ connectCommand: string[]
66
110
  }
67
- env: Record<string, string>
68
- mountVolumes: string[]
69
- mounts: string[]
70
- restart: string
71
- securityOptions: string[]
72
- network: string
73
- image: string
74
- debugImage?: string
75
- remoteImages?: string[]
76
- name: string
77
- command: string
78
- connectCommand: string[]
79
- }>
111
+ >
80
112
  }
81
113
  baseConfig: {
82
114
  prefix: string
@@ -85,11 +117,21 @@ export interface ListrContext {
85
117
  cacheDir: string
86
118
  containerMagentoDir: string
87
119
  }
88
- overridenConfiguration: Omit<CMAConfiguration, 'prefix' | 'useNonOverlappingPorts'>
89
- userConfiguration: Omit<CMAConfiguration, 'prefix' | 'useNonOverlappingPorts'>
90
- nonOverridenConfiguration: Omit<CMAConfiguration, 'prefix' | 'useNonOverlappingPorts'>
120
+ overridenConfiguration: Required<Omit<
121
+ CMAConfiguration,
122
+ 'useNonOverlappingPorts'
123
+ > & { magentoVersion: string }>
124
+ userConfiguration: Omit<
125
+ CMAConfiguration,
126
+ 'useNonOverlappingPorts'
127
+ >
128
+ nonOverridenConfiguration: Required<Omit<
129
+ CMAConfiguration,
130
+ 'useNonOverlappingPorts'
131
+ >>
91
132
  phpStorm: PHPStormConfig
92
133
  projectConfig: ProjectConfig
134
+ magentoConfiguration: CMAConfiguration['magento']
93
135
  }
94
136
  systemConfiguration: {
95
137
  analytics: boolean
@@ -1,4 +1,5 @@
1
- import { ListrContext } from './context';
1
+ import { ListrContext } from './context'
2
+ import './override'
2
3
 
3
4
  /* eslint-disable no-use-before-define */
4
5
  export interface ServiceWithImage {
@@ -7,7 +8,7 @@ export interface ServiceWithImage {
7
8
  *
8
9
  * @deprecated
9
10
  */
10
- version: string
11
+ version?: string
11
12
 
12
13
  /**
13
14
  * Service Docker image
@@ -84,14 +85,17 @@ export interface ComposerConfiguration {
84
85
  /**
85
86
  * Composer global plugins that will be added to Docker image
86
87
  */
87
- plugins: Record<string, {
88
- version?: string
89
- options?: string
90
- /**
91
- * Enable composer plugin
92
- */
93
- enabled?: boolean
94
- }>
88
+ plugins?: Record<
89
+ string,
90
+ {
91
+ version?: string
92
+ options?: string
93
+ /**
94
+ * Enable composer plugin
95
+ */
96
+ enabled?: boolean
97
+ }
98
+ >
95
99
  }
96
100
 
97
101
  export interface PHPExtensionInstallationInstruction {
@@ -117,9 +121,18 @@ export interface PHPExtensionInstallationInstruction {
117
121
  * pecl install xdebug && docker-php-ext-enable xdebug
118
122
  * ```
119
123
  */
120
- command: string |
121
- ((arg0: (Omit<PHPExtensionInstallationInstruction, 'command'> & { ctx: ListrContext})) => string) |
122
- ((arg0: (Omit<PHPExtensionInstallationInstruction, 'command'> & { ctx: ListrContext})) => Promise<string>)
124
+ command:
125
+ | string
126
+ | ((
127
+ arg0: Omit<PHPExtensionInstallationInstruction, 'command'> & {
128
+ ctx: ListrContext
129
+ }
130
+ ) => string)
131
+ | ((
132
+ arg0: Omit<PHPExtensionInstallationInstruction, 'command'> & {
133
+ ctx: ListrContext
134
+ }
135
+ ) => Promise<string>)
123
136
 
124
137
  /**
125
138
  * System dependencies required by the extension
@@ -144,12 +157,12 @@ export interface PHPConfiguration {
144
157
  /**
145
158
  * Base image with tag
146
159
  */
147
- baseImage?: string
160
+ baseImage: string
148
161
 
149
162
  /**
150
163
  * Image with XDebug enabled
151
164
  */
152
- debugImage?: string
165
+ debugImage: string
153
166
 
154
167
  /**
155
168
  * Configuration file template location
@@ -188,7 +201,7 @@ export interface SSLConfiguration {
188
201
  * @example
189
202
  * `./ssl_certificate.pem`
190
203
  */
191
- ssl_certificate: string
204
+ ssl_certificate?: string
192
205
 
193
206
  /**
194
207
  * SSL certificate key name
@@ -196,7 +209,7 @@ export interface SSLConfiguration {
196
209
  * @example
197
210
  * `./ssl_certificate-key.pem`
198
211
  */
199
- ssl_certificate_key: string
212
+ ssl_certificate_key?: string
200
213
  }
201
214
 
202
215
  export interface CMAConfiguration {
@@ -243,6 +256,18 @@ export interface CMAConfiguration {
243
256
  * SSL Terminator configuration
244
257
  */
245
258
  sslTerminator: SSLTerminatorConfiguration
259
+
260
+ /**
261
+ * MailDev configuration
262
+ */
263
+ maildev: ServiceWithImage
264
+
265
+ /**
266
+ * @deprecated MySQL configuration
267
+ */
268
+ mysql: {
269
+ version: string
270
+ }
246
271
  }
247
272
  /**
248
273
  * Magento configuration
@@ -285,7 +310,7 @@ export interface CMAConfiguration {
285
310
  /**
286
311
  * SSL Configuration
287
312
  */
288
- ssl: SSLConfiguration
313
+ ssl?: SSLConfiguration
289
314
 
290
315
  /**
291
316
  * Prefix config.
@@ -297,5 +322,5 @@ export interface CMAConfiguration {
297
322
  * interference between folders with similar names.
298
323
  * If prefix is set to `false` docker container and volume names will only include folder name **which is not safe and not recommended**.
299
324
  */
300
- prefix: boolean
325
+ prefix?: boolean
301
326
  }
@@ -0,0 +1,14 @@
1
+
2
+ declare namespace NodeJS {
3
+ export interface ProcessEnv {
4
+ PATH: string
5
+ COMPOSER_AUTH?: string
6
+ SHELL: string
7
+ }
8
+
9
+ export interface Process {
10
+ isFirstStart?: number
11
+ isOutOfDateVersion?: boolean
12
+ isOutOfDateVersionMessage?: string[]
13
+ }
14
+ }
@@ -1,33 +1,33 @@
1
1
  export interface PHPStormConfig {
2
2
  xdebug: {
3
- v2Port: string;
4
- v3Port: string;
5
- debugServerAddress: string;
6
- serverName: string;
7
- runManagerName: string;
8
- sessionId: string;
9
- path: string;
10
- templatePath: string;
3
+ v2Port: string
4
+ v3Port: string
5
+ debugServerAddress: string
6
+ serverName: string
7
+ runManagerName: string
8
+ sessionId: string
9
+ path: string
10
+ templatePath: string
11
11
  }
12
12
  php: {
13
- phpLanguageLevel: string;
14
- path: string;
15
- templatePath: string;
13
+ phpLanguageLevel: string
14
+ path: string
15
+ templatePath: string
16
16
  }
17
17
  database: {
18
- driver: string;
19
- dataSourceManagerName: string;
18
+ driver: string
19
+ dataSourceManagerName: string
20
20
  dataSourcesLocal: {
21
- path: string;
22
- templatePath: string;
21
+ path: string
22
+ templatePath: string
23
23
  }
24
24
  dataSources: {
25
- path: string;
26
- templatePath: string;
25
+ path: string
26
+ templatePath: string
27
27
  }
28
28
  }
29
29
  inspectionTools: {
30
- path: string;
31
- templatePath: string;
30
+ path: string
31
+ templatePath: string
32
32
  }
33
33
  }
package/.prettierrc DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "tabWidth": 4
3
- }
@@ -1,30 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const phpbrewConfig = require('../config/phpbrew');
4
- const pathExists = require('./path-exists');
5
-
6
- const getPHPForPHPBrewBin = async () => {
7
- if (!await pathExists(phpbrewConfig.phpPath)) {
8
- return '';
9
- }
10
-
11
- const buildedPHPs = await fs.promises.readdir(phpbrewConfig.phpPath, {
12
- encoding: 'utf-8',
13
- withFileTypes: true
14
- });
15
-
16
- const phpForPHPBrew = buildedPHPs.find((p) => p.isDirectory() && p.name.endsWith('phpbrew'));
17
-
18
- if (phpForPHPBrew) {
19
- const phpBinPath = path.join(phpbrewConfig.phpPath, phpForPHPBrew.name, 'bin');
20
- if (await pathExists(phpBinPath)) {
21
- return phpBinPath;
22
- }
23
- }
24
-
25
- return '';
26
- };
27
-
28
- module.exports = {
29
- getPHPForPHPBrewBin
30
- };
File without changes