@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,80 +1,90 @@
1
1
  /* eslint-disable no-param-reassign */
2
- const path = require('path');
3
- const { baseConfig } = require('../../../config');
4
- const { loadXmlFile, buildXmlFile } = require('../../../config/xml-parser');
5
- const UnknownError = require('../../../errors/unknown-error');
6
- const { connectionStringParser, connectionStringBuilder } = require('../../../util/connection-string');
7
- const pathExists = require('../../../util/path-exists');
8
- const setConfigFile = require('../../../util/set-config');
2
+ const path = require('path')
3
+ const { baseConfig } = require('../../../config')
4
+ const { loadXmlFile, buildXmlFile } = require('../../../config/xml-parser')
5
+ const UnknownError = require('../../../errors/unknown-error')
6
+ const {
7
+ connectionStringParser,
8
+ connectionStringBuilder
9
+ } = require('../../../util/connection-string')
10
+ const pathExists = require('../../../util/path-exists')
11
+ const setConfigFile = require('../../../util/set-config')
9
12
 
10
13
  const databaseConfiguration = {
11
14
  driver: 'mysql',
12
15
  dataSourceManagerName: 'mysql 8.0',
13
16
  dataSourcesLocal: {
14
17
  path: path.join(process.cwd(), '.idea', 'dataSources.local.xml'),
15
- templatePath: path.join(baseConfig.templateDir, 'dataSources.local.template.xml')
18
+ templatePath: path.join(
19
+ baseConfig.templateDir,
20
+ 'dataSources.local.template.xml'
21
+ )
16
22
  },
17
23
  dataSources: {
18
24
  path: path.join(process.cwd(), '.idea', 'dataSources.xml'),
19
- templatePath: path.join(baseConfig.templateDir, 'dataSources.template.xml')
25
+ templatePath: path.join(
26
+ baseConfig.templateDir,
27
+ 'dataSources.template.xml'
28
+ )
20
29
  }
21
- };
30
+ }
22
31
 
23
32
  /**
24
33
  * Get link to data-source field, create fields if necessary
25
34
  *
26
- * @param {Object} data
27
- * @param {Object} defaultData Default data structure that will be used if original data is missing
35
+ * @param {*} data
36
+ * @param {*} defaultData Default data structure that will be used if original data is missing
28
37
  */
29
38
  const getToDataSource = (data, defaultData) => {
30
39
  if (!data.project) {
31
- data.project = defaultData.project;
40
+ data.project = defaultData.project
32
41
  }
33
42
 
34
43
  if (!data.project.component) {
35
- data.project.component = defaultData.project.component;
44
+ data.project.component = defaultData.project.component
36
45
  }
37
46
 
38
47
  if (!data.project.component['data-source']) {
39
- data.project.component['data-source'] = defaultData.project.component['data-source'];
48
+ data.project.component['data-source'] =
49
+ defaultData.project.component['data-source']
40
50
  }
41
51
 
42
- return data.project.component['data-source'];
43
- };
52
+ return data.project.component['data-source']
53
+ }
44
54
  // const mariadbVersion = await ctx.databaseConnection.query('SHOW VARIABLES LIKE "%version%";');
45
55
  /**
46
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
56
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
47
57
  */
48
58
  const setupDataSourceLocalConfig = () => ({
49
59
  title: 'Set up datasource local configuration',
50
60
  task: async (ctx, task) => {
51
61
  if (await pathExists(databaseConfiguration.dataSourcesLocal.path)) {
52
- let hasChanges = false;
53
- const dataSourcesLocalData = await loadXmlFile(databaseConfiguration.dataSourcesLocal.path);
54
- const dataSource = getToDataSource(
55
- dataSourcesLocalData,
56
- {
57
- project: {
58
- '@_version': '4',
59
- component: {
60
- '@_name': 'dataSourceStorageLocal',
61
- '@_created-in': 'PS-212.5284.49',
62
- 'data-source': {
63
- '@_uuid': 'a2eadb3c-6fc9-4d85-b5f4-d8114906ce2f'
64
- }
62
+ let hasChanges = false
63
+ const dataSourcesLocalData = await loadXmlFile(
64
+ databaseConfiguration.dataSourcesLocal.path
65
+ )
66
+ const dataSource = getToDataSource(dataSourcesLocalData, {
67
+ project: {
68
+ '@_version': '4',
69
+ component: {
70
+ '@_name': 'dataSourceStorageLocal',
71
+ '@_created-in': 'PS-212.5284.49',
72
+ 'data-source': {
73
+ '@_uuid': 'a2eadb3c-6fc9-4d85-b5f4-d8114906ce2f'
65
74
  }
66
75
  }
67
76
  }
68
- );
77
+ })
69
78
 
70
79
  if (!dataSource['@_name']) {
71
- hasChanges = true;
72
- dataSource['@_name'] = databaseConfiguration.dataSourceManagerName;
80
+ hasChanges = true
81
+ dataSource['@_name'] =
82
+ databaseConfiguration.dataSourceManagerName
73
83
  }
74
84
 
75
85
  if (!dataSource['@_uuid']) {
76
- hasChanges = true;
77
- dataSource['@_uuid'] = 'a2eadb3c-6fc9-4d85-b5f4-d8114906ce2f';
86
+ hasChanges = true
87
+ dataSource['@_uuid'] = 'a2eadb3c-6fc9-4d85-b5f4-d8114906ce2f'
78
88
  }
79
89
 
80
90
  const defaultDatabaseInfoConfig = {
@@ -85,119 +95,134 @@ const setupDataSourceLocalConfig = () => ({
85
95
  '@_driver-version': '',
86
96
  '@_dbms': 'MYSQL',
87
97
  '@_exact-version': '0'
88
- };
98
+ }
89
99
  const isDatabaseInfoChangeNeeded = dataSource['database-info']
90
- ? Object.entries(defaultDatabaseInfoConfig)
91
- .some(([key]) => !(key in dataSource['database-info']))
92
- : true;
100
+ ? Object.entries(defaultDatabaseInfoConfig).some(
101
+ ([key]) => !(key in dataSource['database-info'])
102
+ )
103
+ : true
93
104
 
94
105
  if (isDatabaseInfoChangeNeeded) {
95
- hasChanges = true;
106
+ hasChanges = true
96
107
  if (!dataSource['database-info']) {
97
- dataSource['database-info'] = defaultDatabaseInfoConfig;
108
+ dataSource['database-info'] = defaultDatabaseInfoConfig
98
109
  } else {
99
- Object.entries(defaultDatabaseInfoConfig).forEach(([key, value]) => {
100
- if (!(key in dataSource['database-info'])) {
101
- dataSource['database-info'][key] = value;
110
+ Object.entries(defaultDatabaseInfoConfig).forEach(
111
+ ([key, value]) => {
112
+ if (!(key in dataSource['database-info'])) {
113
+ dataSource['database-info'][key] = value
114
+ }
115
+ // ^^^ only set missing properties, only ones should be in place
102
116
  }
103
- // ^^^ only set missing properties, only ones should be in place
104
- });
117
+ )
105
118
  }
106
119
  }
107
120
 
108
121
  const dataSourceDefaultData = {
109
122
  'secret-storage': 'master_key',
110
123
  'user-name': 'magento'
111
- };
124
+ }
112
125
 
113
126
  const isDataSourceDataChangeNeeded = dataSource
114
- ? Object.entries(dataSourceDefaultData)
115
- .some(([key, value]) => dataSource[key] !== value)
116
- : true;
127
+ ? Object.entries(dataSourceDefaultData).some(
128
+ ([key, value]) => dataSource[key] !== value
129
+ )
130
+ : true
117
131
 
118
132
  if (isDataSourceDataChangeNeeded) {
119
- hasChanges = true;
120
- Object.entries(dataSourceDefaultData).forEach(([key, value]) => {
121
- dataSource[key] = value;
122
- });
133
+ hasChanges = true
134
+ Object.entries(dataSourceDefaultData).forEach(
135
+ ([key, value]) => {
136
+ dataSource[key] = value
137
+ }
138
+ )
123
139
  }
124
140
 
125
141
  if (dataSource && dataSource['schema-mapping'] === undefined) {
126
- hasChanges = true;
127
- dataSource['schema-mapping'] = '';
142
+ hasChanges = true
143
+ dataSource['schema-mapping'] = ''
128
144
  }
129
145
 
130
146
  if (hasChanges) {
131
- await buildXmlFile(databaseConfiguration.dataSourcesLocal.path, dataSourcesLocalData);
147
+ await buildXmlFile(
148
+ databaseConfiguration.dataSourcesLocal.path,
149
+ dataSourcesLocalData
150
+ )
132
151
  } else {
133
- task.skip();
152
+ task.skip()
134
153
  }
135
154
  } else {
136
155
  try {
137
156
  await setConfigFile({
138
157
  configPathname: databaseConfiguration.dataSourcesLocal.path,
139
- template: databaseConfiguration.dataSourcesLocal.templatePath,
158
+ template:
159
+ databaseConfiguration.dataSourcesLocal.templatePath,
140
160
  overwrite: true,
141
161
  templateArgs: {
142
162
  databaseConfiguration
143
163
  }
144
- });
164
+ })
145
165
  } catch (e) {
146
- throw new UnknownError(`Unexpected error accrued during dataSources.local.xml config creation\n\n${e}`);
166
+ throw new UnknownError(
167
+ `Unexpected error accrued during dataSources.local.xml config creation\n\n${e}`
168
+ )
147
169
  }
148
170
  }
149
171
  }
150
- });
172
+ })
151
173
 
152
174
  /**
153
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
175
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
154
176
  */
155
177
  const setupDataSourceConfig = () => ({
156
178
  task: async (ctx, task) => {
157
179
  if (await pathExists(databaseConfiguration.dataSources.path)) {
158
- let hasChanges = false;
159
- const dataSourcesData = await loadXmlFile(databaseConfiguration.dataSources.path);
160
- const dataSource = getToDataSource(
161
- dataSourcesData,
162
- {
163
- project: {
164
- '@_version': '4',
165
- component: {
166
- '@_name': 'DataSourceManagerImpl',
167
- '@_format': 'xml',
168
- '@_multifile-model': true,
169
- 'data-source': {
170
- '@_source': 'LOCAL',
171
- '@_uuid': 'a2eadb3c-6fc9-4d85-b5f4-d8114906ce2f'
172
- }
180
+ let hasChanges = false
181
+ const dataSourcesData = await loadXmlFile(
182
+ databaseConfiguration.dataSources.path
183
+ )
184
+ const dataSource = getToDataSource(dataSourcesData, {
185
+ project: {
186
+ '@_version': '4',
187
+ component: {
188
+ '@_name': 'DataSourceManagerImpl',
189
+ '@_format': 'xml',
190
+ '@_multifile-model': true,
191
+ 'data-source': {
192
+ '@_source': 'LOCAL',
193
+ '@_uuid': 'a2eadb3c-6fc9-4d85-b5f4-d8114906ce2f'
173
194
  }
174
195
  }
175
196
  }
176
- );
197
+ })
177
198
 
178
199
  if (dataSource['jdbc-url']) {
179
- const parsedJDBC = dataSource['jdbc-url'].match(/jdbc:(\S+)/i);
200
+ const parsedJDBC = dataSource['jdbc-url'].match(/jdbc:(\S+)/i)
180
201
  if (parsedJDBC && parsedJDBC.length > 0) {
181
- const url = parsedJDBC[1];
182
- const parsedJDBCUrl = connectionStringParser(url);
202
+ const url = parsedJDBC[1]
203
+ const parsedJDBCUrl = connectionStringParser(url)
183
204
 
184
205
  if (/\S+:undefined/.test(parsedJDBCUrl.host)) {
185
- hasChanges = true;
186
- parsedJDBCUrl.host = parsedJDBCUrl.host.split(':').shift();
206
+ hasChanges = true
207
+ parsedJDBCUrl.host = parsedJDBCUrl.host
208
+ .split(':')
209
+ .shift()
187
210
  }
188
211
 
189
212
  if (parsedJDBCUrl.port !== `${ctx.ports.mariadb}`) {
190
- hasChanges = true;
191
- parsedJDBCUrl.port = `${ctx.ports.mariadb}`;
213
+ hasChanges = true
214
+ parsedJDBCUrl.port = `${ctx.ports.mariadb}`
192
215
 
193
- dataSource['jdbc-url'] = `jdbc:${connectionStringBuilder(parsedJDBCUrl)}`;
216
+ dataSource[
217
+ 'jdbc-url'
218
+ ] = `jdbc:${connectionStringBuilder(parsedJDBCUrl)}`
194
219
  }
195
220
  }
196
221
  }
197
222
 
198
223
  if (dataSource['@_uuid'] === undefined) {
199
- hasChanges = true;
200
- dataSource['@_uuid'] = 'a2eadb3c-6fc9-4d85-b5f4-d8114906ce2f';
224
+ hasChanges = true
225
+ dataSource['@_uuid'] = 'a2eadb3c-6fc9-4d85-b5f4-d8114906ce2f'
201
226
  }
202
227
 
203
228
  const expectedDataSourceData = {
@@ -208,30 +233,37 @@ const setupDataSourceConfig = () => ({
208
233
  'jdbc-url': `jdbc:mysql://localhost:${ctx.ports.mariadb}/magento`,
209
234
  'working-dir': '$ProjectFileDir$',
210
235
  '@_source': 'LOCAL'
211
- };
236
+ }
212
237
 
213
238
  const isDataSourceNeedChanges = dataSource
214
- ? Object.entries(expectedDataSourceData)
215
- .some(([key]) => !(key in dataSource))
216
- : true;
239
+ ? Object.entries(expectedDataSourceData).some(
240
+ ([key]) => !(key in dataSource)
241
+ )
242
+ : true
217
243
 
218
244
  if (isDataSourceNeedChanges) {
219
- hasChanges = true;
245
+ hasChanges = true
220
246
  if (!dataSource) {
221
- dataSourcesData.project.component['data-source'] = expectedDataSourceData;
247
+ dataSourcesData.project.component['data-source'] =
248
+ expectedDataSourceData
222
249
  } else {
223
- Object.entries(expectedDataSourceData).forEach(([key, value]) => {
224
- if (!(key in dataSource)) {
225
- dataSource[key] = value;
250
+ Object.entries(expectedDataSourceData).forEach(
251
+ ([key, value]) => {
252
+ if (!(key in dataSource)) {
253
+ dataSource[key] = value
254
+ }
226
255
  }
227
- });
256
+ )
228
257
  }
229
258
  }
230
259
 
231
260
  if (hasChanges) {
232
- await buildXmlFile(databaseConfiguration.dataSources.path, dataSourcesData);
261
+ await buildXmlFile(
262
+ databaseConfiguration.dataSources.path,
263
+ dataSourcesData
264
+ )
233
265
  } else {
234
- task.skip();
266
+ task.skip()
235
267
  }
236
268
  } else {
237
269
  try {
@@ -243,23 +275,23 @@ const setupDataSourceConfig = () => ({
243
275
  databaseConfiguration,
244
276
  jdbcUrl: `jdbc:mysql://localhost:${ctx.ports.mariadb}/magento`
245
277
  }
246
- });
278
+ })
247
279
  } catch (e) {
248
- throw new UnknownError(`Unexpected error accrued during dataSources.xml config creation\n\n${e}`);
280
+ throw new UnknownError(
281
+ `Unexpected error accrued during dataSources.xml config creation\n\n${e}`
282
+ )
249
283
  }
250
284
  }
251
285
  }
252
- });
286
+ })
253
287
 
254
288
  /**
255
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
289
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
256
290
  */
257
291
  const setupDatabaseConfig = () => ({
258
292
  title: 'Set up database configuration',
259
- task: (ctx, task) => task.newListr([
260
- setupDataSourceLocalConfig(),
261
- setupDataSourceConfig()
262
- ])
263
- });
293
+ task: (ctx, task) =>
294
+ task.newListr([setupDataSourceLocalConfig(), setupDataSourceConfig()])
295
+ })
264
296
 
265
- module.exports = setupDatabaseConfig;
297
+ module.exports = setupDatabaseConfig
@@ -1,13 +1,18 @@
1
- const path = require('path');
2
- const { loadXmlFile, buildXmlFile } = require('../../../config/xml-parser');
3
- const pathExists = require('../../../util/path-exists');
4
- const { valueKey, nameKey } = require('./keys');
5
- const { getCSAThemes } = require('../../../util/CSA-theme');
6
- const { formatPathForPHPStormConfig } = require('./xml-utils');
7
-
8
- const ESLINT_COMPONENT_NAME = 'EslintConfiguration';
9
-
10
- const pathToESLintConfig = path.join(process.cwd(), '.idea', 'jsLinters', 'eslint.xml');
1
+ const path = require('path')
2
+ const { loadXmlFile, buildXmlFile } = require('../../../config/xml-parser')
3
+ const pathExists = require('../../../util/path-exists')
4
+ const { valueKey, nameKey } = require('./keys')
5
+ const { getCSAThemes } = require('../../../util/CSA-theme')
6
+ const { formatPathForPHPStormConfig } = require('./xml-utils')
7
+
8
+ const ESLINT_COMPONENT_NAME = 'EslintConfiguration'
9
+
10
+ const pathToESLintConfig = path.join(
11
+ process.cwd(),
12
+ '.idea',
13
+ 'jsLinters',
14
+ 'eslint.xml'
15
+ )
11
16
 
12
17
  const defaultESLintComponentConfiguration = {
13
18
  [nameKey]: ESLINT_COMPONENT_NAME,
@@ -15,7 +20,7 @@ const defaultESLintComponentConfiguration = {
15
20
  [nameKey]: 'fix-on-save',
16
21
  [valueKey]: 'true'
17
22
  }
18
- };
23
+ }
19
24
 
20
25
  const esLintDefaultConfigurationData = {
21
26
  '?xml': {
@@ -26,91 +31,110 @@ const esLintDefaultConfigurationData = {
26
31
  '@_version': '4',
27
32
  component: defaultESLintComponentConfiguration
28
33
  }
29
- };
34
+ }
30
35
 
31
36
  const setupESlintConfig = async (esLintConfigurationData) => {
32
- let hasChanges = false;
33
- const themes = await getCSAThemes();
37
+ let hasChanges = false
38
+ const themes = await getCSAThemes()
34
39
 
35
40
  if (themes.length > 0) {
36
- const theme = themes[0];
41
+ const theme = themes[0]
37
42
  if (await pathExists(theme.themePath)) {
38
43
  if (esLintConfigurationData['work-dir-pattern'] === undefined) {
39
- hasChanges = true;
44
+ hasChanges = true
40
45
  esLintConfigurationData['work-dir-pattern'] = {
41
46
  [valueKey]: formatPathForPHPStormConfig(theme.themePath)
42
- };
47
+ }
43
48
  }
44
- const packageJsonPath = path.join(process.cwd(), theme.themePath, 'package.json');
49
+ const packageJsonPath = path.join(
50
+ process.cwd(),
51
+ theme.themePath,
52
+ 'package.json'
53
+ )
45
54
  if (await pathExists(packageJsonPath)) {
46
- if (esLintConfigurationData['custom-configuration-file'] === undefined) {
47
- hasChanges = true;
55
+ if (
56
+ esLintConfigurationData['custom-configuration-file'] ===
57
+ undefined
58
+ ) {
59
+ hasChanges = true
48
60
  esLintConfigurationData['custom-configuration-file'] = {
49
61
  '@_used': 'true',
50
62
  '@_path': formatPathForPHPStormConfig(packageJsonPath)
51
- };
63
+ }
52
64
  }
53
65
  }
54
66
  }
55
67
  }
56
68
 
57
- return hasChanges;
58
- };
69
+ return hasChanges
70
+ }
59
71
 
60
72
  /**
61
- * @type {() => import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
73
+ * @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
62
74
  */
63
75
  const setupESLintConfigTask = () => ({
64
76
  title: 'Set up ESLint configuration',
65
77
  task: async (ctx, task) => {
66
78
  if (await pathExists(pathToESLintConfig)) {
67
- let hasChanges = false;
68
- const esLintConfigurationData = await loadXmlFile(pathToESLintConfig);
79
+ let hasChanges = false
80
+ const esLintConfigurationData = await loadXmlFile(
81
+ pathToESLintConfig
82
+ )
69
83
 
70
84
  if (!esLintConfigurationData.project) {
71
85
  esLintConfigurationData.project = {
72
86
  ...esLintDefaultConfigurationData.project
73
- };
87
+ }
74
88
  }
75
89
 
76
90
  if (!esLintConfigurationData['?xml']) {
77
91
  esLintConfigurationData['?xml'] = {
78
92
  ...esLintDefaultConfigurationData['?xml']
79
- };
93
+ }
80
94
  }
81
95
 
82
- if (esLintConfigurationData.project.component && !Array.isArray(esLintConfigurationData.project.component)) {
83
- hasChanges = true;
84
- esLintConfigurationData.project.component = [esLintConfigurationData.project.component];
96
+ if (
97
+ esLintConfigurationData.project.component &&
98
+ !Array.isArray(esLintConfigurationData.project.component)
99
+ ) {
100
+ hasChanges = true
101
+ esLintConfigurationData.project.component = [
102
+ esLintConfigurationData.project.component
103
+ ]
85
104
  }
86
105
 
87
- const esLintConfigurationComponent = esLintConfigurationData.project.component.find(
88
- (config) => config[nameKey] === ESLINT_COMPONENT_NAME
89
- );
106
+ const esLintConfigurationComponent =
107
+ esLintConfigurationData.project.component.find(
108
+ (config) => config[nameKey] === ESLINT_COMPONENT_NAME
109
+ )
90
110
 
91
111
  if (!esLintConfigurationComponent) {
92
- hasChanges = true;
93
- esLintConfigurationData.project.component.push(defaultESLintComponentConfiguration);
112
+ hasChanges = true
113
+ esLintConfigurationData.project.component.push(
114
+ defaultESLintComponentConfiguration
115
+ )
94
116
  }
95
117
 
96
- const hasThemeEslintChanges = await setupESlintConfig(esLintConfigurationComponent);
118
+ const hasThemeEslintChanges = await setupESlintConfig(
119
+ esLintConfigurationComponent
120
+ )
97
121
  if (hasThemeEslintChanges) {
98
- hasChanges = hasThemeEslintChanges;
122
+ hasChanges = hasThemeEslintChanges
99
123
  }
100
124
 
101
125
  if (hasChanges) {
102
- await buildXmlFile(pathToESLintConfig, esLintConfigurationData);
126
+ await buildXmlFile(pathToESLintConfig, esLintConfigurationData)
103
127
  } else {
104
- task.skip();
128
+ task.skip()
105
129
  }
106
130
 
107
- return;
131
+ return
108
132
  }
109
133
 
110
- await setupESlintConfig(esLintDefaultConfigurationData);
134
+ await setupESlintConfig(esLintDefaultConfigurationData)
111
135
 
112
- await buildXmlFile(pathToESLintConfig, esLintDefaultConfigurationData);
136
+ await buildXmlFile(pathToESLintConfig, esLintDefaultConfigurationData)
113
137
  }
114
- });
138
+ })
115
139
 
116
- module.exports = setupESLintConfigTask;
140
+ module.exports = setupESLintConfigTask