@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,15 +1,23 @@
1
- const os = require('os');
2
- const { request } = require('smol-request');
3
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
4
- const generateUUID = require('@tilework/mosaic-dev-utils/uuid');
5
- const { getSystemConfigSync } = require('../config/system-config');
6
- const { getExternalIpAddress } = require('./ip');
7
- const pkg = require('../../package.json');
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+ const os = require('os')
3
+ const { request } = require('smol-request')
4
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
5
+ const generateUUID = require('@tilework/mosaic-dev-utils/uuid')
6
+ const { getSystemConfigSync } = require('../config/system-config')
7
+ const { getExternalIpAddress } = require('./ip')
8
+ const pkg = require('../../package.json')
9
+
10
+ const GA_TRACKING_ID = process.env.GA_TRACKING_ID || 'UA-127741417-8'
11
+ const UNKNOWN = 'unknown'
8
12
 
9
- const GA_TRACKING_ID = process.env.GA_TRACKING_ID || 'UA-127741417-8';
10
- const UNKNOWN = 'unknown';
11
-
12
- const anonymizeError = (text) => text.replace(new RegExp(`${os.homedir()}`, 'gi'), '/home/magento-scripts-user');
13
+ /**
14
+ * @param {string} text
15
+ */
16
+ const anonymizeError = (text) =>
17
+ text.replace(
18
+ new RegExp(`${os.homedir()}`, 'gi'),
19
+ '/home/magento-scripts-user'
20
+ )
13
21
 
14
22
  /**
15
23
  * Google Analytics Parameters
@@ -39,7 +47,7 @@ const anonymizeError = (text) => text.replace(new RegExp(`${os.homedir()}`, 'gi'
39
47
  * @property {String} [hit.type]
40
48
  * @property {Object} [exception]
41
49
  * @property {String} [exception.description]
42
- * @property {Boolean} [exception.fatal]
50
+ * @property {String} [exception.fatal]
43
51
  * @property {Object} [event]
44
52
  * @property {String} event.category
45
53
  * @property {String} event.action
@@ -101,77 +109,102 @@ const gaParametersMapping = {
101
109
  version: 'av',
102
110
  installedID: 'aiid'
103
111
  },
104
- customDimension: Array.from({ length: 200 }, (_, i) => i + 1).reduce((acc, val) => ({
105
- ...acc,
106
- [`customDimension${val}`]: `cd${val}`
107
- }), {})
108
- };
112
+ customDimension: Array.from({ length: 200 }, (_, i) => i + 1).reduce(
113
+ (acc, val) => ({
114
+ ...acc,
115
+ [`customDimension${val}`]: `cd${val}`
116
+ }),
117
+ {}
118
+ )
119
+ }
109
120
 
110
121
  const getAppData = () => ({
111
122
  name: pkg.name,
112
123
  version: pkg.version
113
- });
124
+ })
114
125
 
115
126
  /**
116
127
  * @param {GAParameters} parameters
117
128
  */
118
129
  const collectAnalyticsParameters = (parameters) => {
119
- const parsedParameters = {};
130
+ /**
131
+ * @type {Record<string, string>}
132
+ */
133
+ const parsedParameters = {}
120
134
 
121
- for (const [firstLevelKey, firstLevelValue] of Object.entries(gaParametersMapping)) {
135
+ for (const entry of Object.entries(gaParametersMapping)) {
136
+ /**
137
+ * @type {[keyof GAParameters, GAParameters[keyof GAParameters]]}
138
+ */
139
+ const [firstLevelKey, firstLevelValue] = entry
140
+ const firstLevelParameter = parameters[firstLevelKey]
122
141
  if (typeof firstLevelValue === 'object' && firstLevelValue !== null) {
123
- for (const [secondLevelKey, secondLevelValue] of Object.entries(firstLevelValue)) {
124
- if (parameters[firstLevelKey] && parameters[firstLevelKey][secondLevelKey]) {
125
- parsedParameters[secondLevelValue] = parameters[firstLevelKey][secondLevelKey];
142
+ for (const [secondLevelKey, secondLevelValue] of Object.entries(
143
+ firstLevelValue
144
+ )) {
145
+ if (
146
+ firstLevelParameter &&
147
+ firstLevelParameter[secondLevelKey]
148
+ ) {
149
+ parsedParameters[secondLevelValue] =
150
+ firstLevelParameter[secondLevelKey]
126
151
  }
127
152
  }
128
- } else if (parameters[firstLevelKey]) {
129
- parsedParameters[firstLevelValue] = parameters[firstLevelKey];
153
+ } else if (firstLevelParameter) {
154
+ parsedParameters[firstLevelValue] = firstLevelParameter
130
155
  }
131
156
  }
132
157
 
133
- return parsedParameters;
134
- };
158
+ return parsedParameters
159
+ }
135
160
 
136
161
  class Analytics {
137
162
  constructor() {
138
- this.isGaDisabled = this.getIsGaDisabled();
139
- this.gaTrackingId = GA_TRACKING_ID;
140
- this.clientIdentifier = UNKNOWN;
141
- this.currentUrl = UNKNOWN;
142
- this.lang = UNKNOWN;
163
+ this.isGaDisabled = this.getIsGaDisabled()
164
+ this.gaTrackingId = GA_TRACKING_ID
165
+ this.clientIdentifier = UNKNOWN
166
+ this.currentUrl = UNKNOWN
167
+ this.lang = UNKNOWN
143
168
 
144
169
  try {
145
- this.setClientIdentifier(
146
- generateUUID()
147
- );
170
+ this.setClientIdentifier(generateUUID())
148
171
  } catch (e) {
149
- this.setClientIdentifier(
150
- Date.now()
151
- );
172
+ this.setClientIdentifier(`${Date.now()}`)
152
173
  }
153
174
  }
154
175
 
176
+ /**
177
+ * @param {string} lang
178
+ */
155
179
  setLang(lang) {
156
- this.lang = lang;
180
+ this.lang = lang
157
181
  }
158
182
 
183
+ /**
184
+ * @param {string} currentUrl
185
+ */
159
186
  setCurrentUrl(currentUrl) {
160
- this.currentUrl = currentUrl;
187
+ this.currentUrl = currentUrl
161
188
  }
162
189
 
190
+ /**
191
+ * @param {string} id
192
+ */
163
193
  setClientIdentifier(id) {
164
- this.clientIdentifier = id;
194
+ this.clientIdentifier = id
165
195
  }
166
196
 
197
+ /**
198
+ * @param {string} id
199
+ */
167
200
  setGaTrackingId(id) {
168
- this.gaTrackingId = id;
201
+ this.gaTrackingId = id
169
202
  }
170
203
 
171
204
  getIsGaDisabled() {
172
- const { analytics } = getSystemConfigSync({ validate: false });
205
+ const { analytics } = getSystemConfigSync({ validate: false })
173
206
 
174
- return !analytics;
207
+ return !analytics
175
208
  }
176
209
 
177
210
  /**
@@ -180,7 +213,7 @@ class Analytics {
180
213
  async _collect(data) {
181
214
  if (this.isGaDisabled) {
182
215
  // skip GA
183
- return;
216
+ return
184
217
  }
185
218
 
186
219
  /**
@@ -194,12 +227,12 @@ class Analytics {
194
227
  clientID: this.clientIdentifier
195
228
  },
196
229
  app: getAppData()
197
- };
230
+ }
198
231
 
199
232
  try {
200
- analyticsParameters.systemInfo = {
233
+ analyticsParameters.session = {
201
234
  ipOverride: await getExternalIpAddress()
202
- };
235
+ }
203
236
  } catch (e) {
204
237
  // Do nothing
205
238
  }
@@ -208,57 +241,58 @@ class Analytics {
208
241
  // get system language here
209
242
  analyticsParameters.systemInfo = {
210
243
  userLanguage: this.lang
211
- };
244
+ }
212
245
  }
213
246
 
214
247
  if (this.currentUrl !== UNKNOWN) {
215
- const {
216
- hostname,
217
- pathname
218
- } = new URL(this.currentUrl);
248
+ const { hostname, pathname } = new URL(this.currentUrl)
219
249
 
220
250
  analyticsParameters.contentInformation = {
221
251
  documentLocationUrl: this.currentUrl,
222
252
  documentPath: pathname,
223
253
  documentHostName: hostname
224
- };
254
+ }
225
255
  }
226
256
 
227
- const params = new URLSearchParams(collectAnalyticsParameters(analyticsParameters)).toString();
257
+ const params = new URLSearchParams(
258
+ collectAnalyticsParameters(analyticsParameters)
259
+ ).toString()
228
260
 
229
261
  try {
230
262
  if (!process.env.GA_DEBUG) {
231
263
  await request(
232
- `https://www.google-analytics.com/collect?${ params }`,
264
+ `https://www.google-analytics.com/collect?${params}`,
233
265
  {
234
266
  headers: { 'User-Agent': 'Google-Cloud-Functions' },
235
267
  responseType: 'headers'
236
268
  }
237
- );
269
+ )
238
270
 
239
- return;
271
+ return
240
272
  }
241
273
 
242
274
  const { data: jsonResponse } = await request(
243
- `https://www.google-analytics.com/debug/collect?${ params }`,
275
+ `https://www.google-analytics.com/debug/collect?${params}`,
244
276
  {
245
277
  headers: { 'User-Agent': 'Google-Cloud-Functions' },
246
278
  responseType: 'json'
247
279
  }
248
- );
280
+ )
249
281
 
250
- logger.log(analyticsParameters);
251
- logger.log(JSON.stringify(jsonResponse, null, 2));
252
-
253
- // eslint-disable-next-line no-empty
282
+ logger.log(analyticsParameters)
283
+ logger.log(JSON.stringify(jsonResponse, null, 2))
254
284
  } catch (e) {
255
- console.log('Failed to report telemetry data');
285
+ console.log('Failed to report telemetry data')
256
286
  if (process.env.GA_DEBUG) {
257
- logger.error(e);
287
+ logger.error(e)
258
288
  }
259
289
  }
260
290
  }
261
291
 
292
+ /**
293
+ * @param {string | Error} error
294
+ * @param {boolean} isFatal
295
+ */
262
296
  trackError(error, isFatal = true) {
263
297
  // return; // nothing
264
298
  return this._collect({
@@ -266,11 +300,19 @@ class Analytics {
266
300
  type: 'exception'
267
301
  },
268
302
  exception: {
269
- description: anonymizeError(typeof error === 'string' ? error : error.message),
303
+ description: anonymizeError(
304
+ typeof error === 'string' ? error : error.message
305
+ ),
306
+ // @ts-ignore
270
307
  fatal: isFatal
271
308
  }
272
- });
309
+ })
273
310
  }
311
+ /**
312
+ * @param {string} label
313
+ * @param {number} time
314
+ * @param {string} category
315
+ */
274
316
 
275
317
  trackTiming(label, time, category = UNKNOWN) {
276
318
  return this._collect({
@@ -281,20 +323,29 @@ class Analytics {
281
323
  userTimingCategory: category,
282
324
  userTimingVariableName: label,
283
325
  userTimingLabel: this.currentUrl,
326
+ // @ts-ignore
284
327
  userTimingTime: Math.round(time)
285
328
  }
286
- });
329
+ })
287
330
  }
288
331
 
289
332
  trackPageView() {
333
+ // @ts-ignore
290
334
  return this._collect({
291
335
  hit: {
292
336
  type: 'pageview'
293
337
  }
294
- });
338
+ })
295
339
  }
296
340
 
341
+ /**
342
+ * @param {*} action
343
+ * @param {*} label
344
+ * @param {*} value
345
+ * @param {*} category
346
+ */
297
347
  trackEvent(action, label, value, category = UNKNOWN) {
348
+ // @ts-ignore
298
349
  return this._collect({
299
350
  hit: {
300
351
  type: 'event'
@@ -305,16 +356,20 @@ class Analytics {
305
356
  label,
306
357
  value
307
358
  }
308
- });
359
+ })
309
360
  }
310
361
 
311
362
  printAboutAnalytics() {
312
363
  if (!this.isGaDisabled) {
313
- logger.log('We collect analytics data to make our products more stable and reliable!');
314
- logger.log('If you want to know more go here https://docs.scandipwa.com/about/data-analytics');
315
- logger.logN();
364
+ logger.log(
365
+ 'We collect analytics data to make our products more stable and reliable!'
366
+ )
367
+ logger.log(
368
+ 'If you want to know more go here https://docs.scandipwa.com/about/data-analytics'
369
+ )
370
+ logger.logN()
316
371
  }
317
372
  }
318
373
  }
319
374
 
320
- module.exports = new Analytics();
375
+ module.exports = new Analytics()
package/lib/util/arch.js CHANGED
@@ -1,52 +1,56 @@
1
- const macosVersion = require('macos-version');
2
- const { execSync } = require('child_process');
3
- const { execAsync } = require('./exec-async');
1
+ const macosVersion = require('macos-version')
2
+ const { execSync } = require('child_process')
3
+ const { execAsync } = require('./exec-async')
4
4
 
5
5
  /**
6
6
  * Get actual system arch
7
- * @returns {Promise<'arm64' | 'x64'>}
7
+ * @returns {Promise<NodeJS.Architecture>}
8
8
  */
9
9
  const getArch = async () => {
10
10
  if (macosVersion.isMacOS) {
11
11
  if (process.arch === 'arm64') {
12
- return 'arm64';
12
+ return 'arm64'
13
13
  }
14
14
 
15
- const result = (await execAsync('sysctl -in sysctl.proc_translated')).trim();
15
+ const result = (
16
+ await execAsync('sysctl -in sysctl.proc_translated')
17
+ ).trim()
16
18
 
17
19
  if (result === '1') {
18
- return 'arm64';
20
+ return 'arm64'
19
21
  }
20
22
 
21
- return 'x64';
23
+ return 'x64'
22
24
  }
23
25
 
24
- return process.arch;
25
- };
26
+ return process.arch
27
+ }
26
28
 
27
29
  /**
28
30
  * Get actual system arch synchronously
29
- * @returns {'arm64' | 'x64'}
31
+ * @returns {NodeJS.Architecture}
30
32
  */
31
33
  const getArchSync = () => {
32
34
  if (macosVersion.isMacOS) {
33
35
  if (process.arch === 'arm64') {
34
- return 'arm64';
36
+ return 'arm64'
35
37
  }
36
38
 
37
- const result = execSync('sysctl -in sysctl.proc_translated', { encoding: 'utf-8' }).trim();
39
+ const result = execSync('sysctl -in sysctl.proc_translated', {
40
+ encoding: 'utf-8'
41
+ }).trim()
38
42
 
39
43
  if (result === '1') {
40
- return 'arm64';
44
+ return 'arm64'
41
45
  }
42
46
 
43
- return 'x64';
47
+ return 'x64'
44
48
  }
45
49
 
46
- return process.arch;
47
- };
50
+ return process.arch
51
+ }
48
52
 
49
53
  module.exports = {
50
54
  getArch,
51
55
  getArchSync
52
- };
56
+ }
@@ -1,13 +1,18 @@
1
- function cleanObject(
2
- object,
3
- filterKeys
4
- ) {
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+ /**
3
+ * @type {<T extends { [key: string]: unknown }, K extends string[]>(object: T, filterKeys: K) => T}
4
+ */
5
+ function cleanObject(object, filterKeys) {
6
+ const init = {}
7
+
8
+ // @ts-ignore
5
9
  return Object.keys(object).reduce(
6
- (acc, key) => (filterKeys.includes(key)
7
- ? Object.assign(acc, { [key]: object[key] })
8
- : acc),
9
- {}
10
- );
10
+ (acc, key) =>
11
+ filterKeys.includes(key)
12
+ ? Object.assign(acc, { [key]: object[key] })
13
+ : acc,
14
+ init
15
+ )
11
16
  }
12
17
 
13
- module.exports = cleanObject;
18
+ module.exports = cleanObject