@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,21 +1,21 @@
1
- const path = require('path');
2
- const pathExists = require('../../../../util/path-exists');
3
- const { nameKey } = require('../keys');
4
- const { formatPathForPHPStormConfig } = require('../xml-utils');
1
+ const path = require('path')
2
+ const pathExists = require('../../../../util/path-exists')
3
+ const { nameKey } = require('../keys')
4
+ const { formatPathForPHPStormConfig } = require('../xml-utils')
5
5
 
6
- const COMPOSER_SETTINGS_COMPONENT_NAME = 'ComposerSettings';
6
+ const COMPOSER_SETTINGS_COMPONENT_NAME = 'ComposerSettings'
7
7
 
8
- const composerKey = '@_composer';
9
- const doNotAskKey = '@_doNotAsk';
10
- const synchronizationStateKey = '@_synchronizationState';
8
+ const composerKey = '@_composer'
9
+ const doNotAskKey = '@_doNotAsk'
10
+ const synchronizationStateKey = '@_synchronizationState'
11
11
 
12
- const composerJsonPath = path.join(process.cwd(), 'composer.json');
13
- const composerJsonFormattedPath = formatPathForPHPStormConfig(composerJsonPath);
12
+ const composerJsonPath = path.join(process.cwd(), 'composer.json')
13
+ const composerJsonFormattedPath = formatPathForPHPStormConfig(composerJsonPath)
14
14
 
15
15
  const defaultComposerSettingsProperties = {
16
16
  [doNotAskKey]: 'true',
17
17
  [synchronizationStateKey]: 'SYNCHRONIZE'
18
- };
18
+ }
19
19
 
20
20
  /**
21
21
  * @param {Array} workspaceConfigs
@@ -23,39 +23,47 @@ const defaultComposerSettingsProperties = {
23
23
  * @returns {Promise<Boolean>}
24
24
  */
25
25
  const setupComposerSettings = async (workspaceConfigs, ctx) => {
26
- let hasChanges = false;
26
+ let hasChanges = false
27
27
  const composerSettingsComponent = workspaceConfigs.find(
28
- (workspaceConfig) => workspaceConfig[nameKey] === COMPOSER_SETTINGS_COMPONENT_NAME
29
- );
28
+ (workspaceConfig) =>
29
+ workspaceConfig[nameKey] === COMPOSER_SETTINGS_COMPONENT_NAME
30
+ )
30
31
 
31
- const isComposerJsonExists = await pathExists(composerJsonPath);
32
- const { php } = ctx.config.docker.getContainers(ctx.ports);
32
+ const isComposerJsonExists = await pathExists(composerJsonPath)
33
+ const { php } = ctx.config.docker.getContainers(ctx.ports)
33
34
  const defaultInterpreterConfig = {
34
35
  [nameKey]: ctx.debug ? php.debugImage : php.image,
35
36
  [composerKey]: 'composer'
36
- };
37
+ }
37
38
 
38
39
  if (composerSettingsComponent) {
39
40
  if (
40
- composerSettingsComponent.pharConfigPath === undefined
41
- && isComposerJsonExists
41
+ composerSettingsComponent.pharConfigPath === undefined &&
42
+ isComposerJsonExists
42
43
  ) {
43
- hasChanges = true;
44
- composerSettingsComponent.pharConfigPath = composerJsonFormattedPath;
44
+ hasChanges = true
45
+ composerSettingsComponent.pharConfigPath = composerJsonFormattedPath
45
46
  }
46
47
 
47
- const interpreterConfig = composerSettingsComponent.execution && composerSettingsComponent.execution.interpreter;
48
+ const interpreterConfig =
49
+ composerSettingsComponent.execution &&
50
+ composerSettingsComponent.execution.interpreter
48
51
 
49
52
  if (!interpreterConfig) {
50
- hasChanges = true;
51
- composerSettingsComponent.execution = composerSettingsComponent.execution || {};
52
- composerSettingsComponent.execution.interpreter = defaultInterpreterConfig;
53
- } else if (interpreterConfig[nameKey] !== defaultInterpreterConfig[nameKey]) {
54
- hasChanges = true;
55
- composerSettingsComponent.execution.interpreter[nameKey] = defaultInterpreterConfig[nameKey];
53
+ hasChanges = true
54
+ composerSettingsComponent.execution =
55
+ composerSettingsComponent.execution || {}
56
+ composerSettingsComponent.execution.interpreter =
57
+ defaultInterpreterConfig
58
+ } else if (
59
+ interpreterConfig[nameKey] !== defaultInterpreterConfig[nameKey]
60
+ ) {
61
+ hasChanges = true
62
+ composerSettingsComponent.execution.interpreter[nameKey] =
63
+ defaultInterpreterConfig[nameKey]
56
64
  }
57
65
  } else {
58
- hasChanges = true;
66
+ hasChanges = true
59
67
  workspaceConfigs.push({
60
68
  [nameKey]: COMPOSER_SETTINGS_COMPONENT_NAME,
61
69
  ...defaultComposerSettingsProperties,
@@ -63,10 +71,10 @@ const setupComposerSettings = async (workspaceConfigs, ctx) => {
63
71
  execution: {
64
72
  interpreter: defaultInterpreterConfig
65
73
  }
66
- });
74
+ })
67
75
  }
68
76
 
69
- return hasChanges;
70
- };
77
+ return hasChanges
78
+ }
71
79
 
72
- module.exports = setupComposerSettings;
80
+ module.exports = setupComposerSettings
@@ -1,57 +1,69 @@
1
- const {
2
- nameKey,
3
- valueKey
4
- } = require('../keys');
1
+ const { nameKey, valueKey } = require('../keys')
5
2
 
6
- const FORMAT_ON_SAVE_OPTIONS_COMPONENT_NAME = 'FormatOnSaveOptions';
3
+ const FORMAT_ON_SAVE_OPTIONS_COMPONENT_NAME = 'FormatOnSaveOptions'
7
4
 
8
- const MY_FORMAT_ONLY_CHANGED_LINES_OPTION_NAME = 'myFormatOnlyChangedLines';
9
- const MY_RUN_ON_SAVE_OPTION_NAME = 'myRunOnSave';
5
+ const MY_FORMAT_ONLY_CHANGED_LINES_OPTION_NAME = 'myFormatOnlyChangedLines'
6
+ const MY_RUN_ON_SAVE_OPTION_NAME = 'myRunOnSave'
10
7
 
11
8
  /**
12
9
  * @param {Array} workspaceConfigs
13
10
  * @returns {Promise<Boolean>}
14
11
  */
15
12
  const setupFormatOnSave = async (workspaceConfigs) => {
16
- let hasChanges = false;
13
+ let hasChanges = false
17
14
  const formatOnSaveOptionsComponent = workspaceConfigs.find(
18
- (workspaceConfig) => workspaceConfig[nameKey] === FORMAT_ON_SAVE_OPTIONS_COMPONENT_NAME
19
- );
15
+ (workspaceConfig) =>
16
+ workspaceConfig[nameKey] === FORMAT_ON_SAVE_OPTIONS_COMPONENT_NAME
17
+ )
20
18
 
21
19
  if (formatOnSaveOptionsComponent) {
22
- if (formatOnSaveOptionsComponent.option && !Array.isArray(formatOnSaveOptionsComponent.option)) {
23
- hasChanges = true;
24
- formatOnSaveOptionsComponent.option = [formatOnSaveOptionsComponent.option];
20
+ if (
21
+ formatOnSaveOptionsComponent.option &&
22
+ !Array.isArray(formatOnSaveOptionsComponent.option)
23
+ ) {
24
+ hasChanges = true
25
+ formatOnSaveOptionsComponent.option = [
26
+ formatOnSaveOptionsComponent.option
27
+ ]
25
28
  } else if (!formatOnSaveOptionsComponent.option) {
26
- hasChanges = true;
27
- formatOnSaveOptionsComponent.option = [];
29
+ hasChanges = true
30
+ formatOnSaveOptionsComponent.option = []
28
31
  }
29
32
 
30
- const missingOptions = [MY_FORMAT_ONLY_CHANGED_LINES_OPTION_NAME, MY_RUN_ON_SAVE_OPTION_NAME].filter(
31
- (optionName) => !formatOnSaveOptionsComponent.option.some((option) => option[nameKey] === optionName)
32
- );
33
+ const missingOptions = [
34
+ MY_FORMAT_ONLY_CHANGED_LINES_OPTION_NAME,
35
+ MY_RUN_ON_SAVE_OPTION_NAME
36
+ ].filter(
37
+ (optionName) =>
38
+ !formatOnSaveOptionsComponent.option.some(
39
+ (option) => option[nameKey] === optionName
40
+ )
41
+ )
33
42
 
34
43
  if (missingOptions.length > 0) {
35
- hasChanges = true;
44
+ hasChanges = true
36
45
  missingOptions.forEach((missingOption) => {
37
46
  formatOnSaveOptionsComponent.option.push({
38
47
  [nameKey]: missingOption,
39
48
  [valueKey]: 'true'
40
- });
41
- });
49
+ })
50
+ })
42
51
  }
43
52
  } else {
44
- hasChanges = true;
53
+ hasChanges = true
45
54
  workspaceConfigs.push({
46
55
  [nameKey]: FORMAT_ON_SAVE_OPTIONS_COMPONENT_NAME,
47
- option: [MY_FORMAT_ONLY_CHANGED_LINES_OPTION_NAME, MY_RUN_ON_SAVE_OPTION_NAME].map((option) => ({
56
+ option: [
57
+ MY_FORMAT_ONLY_CHANGED_LINES_OPTION_NAME,
58
+ MY_RUN_ON_SAVE_OPTION_NAME
59
+ ].map((option) => ({
48
60
  [nameKey]: option,
49
61
  [valueKey]: 'true'
50
62
  }))
51
- });
63
+ })
52
64
  }
53
65
 
54
- return hasChanges;
55
- };
66
+ return hasChanges
67
+ }
56
68
 
57
- module.exports = setupFormatOnSave;
69
+ module.exports = setupFormatOnSave
@@ -1,30 +1,34 @@
1
- const { loadXmlFile, buildXmlFile } = require('../../../../config/xml-parser');
2
- const pathExists = require('../../../../util/path-exists');
3
- const { setupXMLStructure } = require('../setup-xml-structure');
4
- const setupComposerSettings = require('./composer-settings-config');
5
- const setupFormatOnSave = require('./format-setting-config');
6
- const setupMessDetectorProjectConfiguration = require('./mess-detector-project-configuration-config');
7
- const setupPHPCodeSnifferProjectConfiguration = require('./php-code-sniffer-project-configuration-config');
8
- const setupPHPCSFixerProjectConfiguration = require('./php-cs-fixer-project-configuration-config');
9
- const setupPHPDebugGeneral = require('./php-debug-general-config');
10
- const setupPHPServers = require('./php-server-config');
11
- const setupPHPStanProjectConfiguration = require('./php-stan-project-configuration-config.js');
12
- const setupPHPWorkspaceProjectConfiguration = require('./php-workspace-project-configuration-config');
13
- const setupPropertiesComponent = require('./properties-component-config');
14
- const setupPSalmProjectConfiguration = require('./psalm-project-configuration-config.js');
15
- const setupRunManager = require('./run-manager-config');
16
- const { getWorkspaceConfig } = require('./workspace-config');
1
+ const { loadXmlFile, buildXmlFile } = require('../../../../config/xml-parser')
2
+ const pathExists = require('../../../../util/path-exists')
3
+ const { setupXMLStructure } = require('../setup-xml-structure')
4
+ const setupComposerSettings = require('./composer-settings-config')
5
+ const setupFormatOnSave = require('./format-setting-config')
6
+ const setupMessDetectorProjectConfiguration = require('./mess-detector-project-configuration-config')
7
+ const setupPHPCodeSnifferProjectConfiguration = require('./php-code-sniffer-project-configuration-config')
8
+ const setupPHPCSFixerProjectConfiguration = require('./php-cs-fixer-project-configuration-config')
9
+ const setupPHPDebugGeneral = require('./php-debug-general-config')
10
+ const setupPHPServers = require('./php-server-config')
11
+ const setupPHPStanProjectConfiguration = require('./php-stan-project-configuration-config.js')
12
+ const setupPHPWorkspaceProjectConfiguration = require('./php-workspace-project-configuration-config')
13
+ const setupPropertiesComponent = require('./properties-component-config')
14
+ const setupPSalmProjectConfiguration = require('./psalm-project-configuration-config.js')
15
+ const setupRunManager = require('./run-manager-config')
16
+ const { getWorkspaceConfig } = require('./workspace-config')
17
17
 
18
18
  /**
19
- * @type {() => import('listr2').ListrTask<import('../../../../../typings/context').ListrContext>}
19
+ * @returns {import('listr2').ListrTask<import('../../../../../typings/context').ListrContext>}
20
20
  */
21
21
  const setupWorkspaceConfig = () => ({
22
22
  title: 'Set up Workspace configuration',
23
23
  task: async (ctx, task) => {
24
- const workspaceConfig = getWorkspaceConfig(ctx.config.overridenConfiguration);
24
+ const workspaceConfig = getWorkspaceConfig(
25
+ ctx.config.overridenConfiguration
26
+ )
25
27
  if (await pathExists(workspaceConfig.path)) {
26
- const workspaceConfiguration = setupXMLStructure(await loadXmlFile(workspaceConfig.path));
27
- const workspaceConfigs = workspaceConfiguration.project.component;
28
+ const workspaceConfiguration = setupXMLStructure(
29
+ await loadXmlFile(workspaceConfig.path)
30
+ )
31
+ const workspaceConfigs = workspaceConfiguration.project.component
28
32
  const hasChanges = await Promise.all([
29
33
  setupMessDetectorProjectConfiguration(workspaceConfigs),
30
34
  setupPHPCSFixerProjectConfiguration(workspaceConfigs),
@@ -37,19 +41,19 @@ const setupWorkspaceConfig = () => ({
37
41
  setupComposerSettings(workspaceConfigs, ctx),
38
42
  setupRunManager(workspaceConfigs, workspaceConfig),
39
43
  setupPropertiesComponent(workspaceConfigs)
40
- ]);
44
+ ])
41
45
 
42
46
  if (hasChanges.includes(true)) {
43
- await buildXmlFile(workspaceConfig.path, workspaceConfiguration);
47
+ await buildXmlFile(workspaceConfig.path, workspaceConfiguration)
44
48
  } else {
45
- task.skip();
49
+ task.skip()
46
50
  }
47
51
 
48
- return;
52
+ return
49
53
  }
50
54
 
51
- const workspaceConfiguration = setupXMLStructure();
52
- const workspaceConfigs = workspaceConfiguration.project.component;
55
+ const workspaceConfiguration = setupXMLStructure()
56
+ const workspaceConfigs = workspaceConfiguration.project.component
53
57
 
54
58
  await Promise.all([
55
59
  setupMessDetectorProjectConfiguration(workspaceConfigs),
@@ -64,10 +68,10 @@ const setupWorkspaceConfig = () => ({
64
68
  setupPropertiesComponent(workspaceConfigs),
65
69
  setupComposerSettings(workspaceConfigs, ctx),
66
70
  setupFormatOnSave(workspaceConfigs)
67
- ]);
71
+ ])
68
72
 
69
- await buildXmlFile(workspaceConfig.path, workspaceConfiguration);
73
+ await buildXmlFile(workspaceConfig.path, workspaceConfiguration)
70
74
  }
71
- });
75
+ })
72
76
 
73
- module.exports = setupWorkspaceConfig;
77
+ module.exports = setupWorkspaceConfig
@@ -1,50 +1,60 @@
1
- const { nameKey, valueKey } = require('../keys');
1
+ const { nameKey, valueKey } = require('../keys')
2
2
 
3
- const MESS_DETECTOR_PROJECT_CONFIGURATION_COMPONENT_NAME = 'MessDetectorProjectConfiguration';
3
+ const MESS_DETECTOR_PROJECT_CONFIGURATION_COMPONENT_NAME =
4
+ 'MessDetectorProjectConfiguration'
4
5
 
5
- const selectedConfigurationIdName = 'selectedConfigurationId';
6
- const value = 'DEFAULT_INTERPRETER';
6
+ const selectedConfigurationIdName = 'selectedConfigurationId'
7
+ const value = 'DEFAULT_INTERPRETER'
7
8
 
8
9
  const defaultOption = {
9
10
  [nameKey]: selectedConfigurationIdName,
10
11
  [valueKey]: value
11
- };
12
+ }
12
13
 
13
14
  /**
14
15
  * @param {Array} workspaceConfigs
15
16
  * @returns {Promise<Boolean>}
16
17
  */
17
18
  const setupMessDetectorProjectConfiguration = async (workspaceConfigs) => {
18
- let hasChanges = false;
19
+ let hasChanges = false
19
20
  const messDetectorProjectConfigurationComponent = workspaceConfigs.find(
20
- (workspaceConfig) => workspaceConfig[nameKey] === MESS_DETECTOR_PROJECT_CONFIGURATION_COMPONENT_NAME
21
- );
21
+ (workspaceConfig) =>
22
+ workspaceConfig[nameKey] ===
23
+ MESS_DETECTOR_PROJECT_CONFIGURATION_COMPONENT_NAME
24
+ )
22
25
 
23
26
  if (messDetectorProjectConfigurationComponent) {
24
- if (messDetectorProjectConfigurationComponent.option && !Array.isArray(messDetectorProjectConfigurationComponent.option)) {
25
- hasChanges = true;
26
- messDetectorProjectConfigurationComponent.option = [messDetectorProjectConfigurationComponent.option];
27
+ if (
28
+ messDetectorProjectConfigurationComponent.option &&
29
+ !Array.isArray(messDetectorProjectConfigurationComponent.option)
30
+ ) {
31
+ hasChanges = true
32
+ messDetectorProjectConfigurationComponent.option = [
33
+ messDetectorProjectConfigurationComponent.option
34
+ ]
27
35
  } else if (!messDetectorProjectConfigurationComponent.option) {
28
- hasChanges = true;
29
- messDetectorProjectConfigurationComponent.option = [];
36
+ hasChanges = true
37
+ messDetectorProjectConfigurationComponent.option = []
30
38
  }
31
39
 
32
40
  if (
33
- messDetectorProjectConfigurationComponent.option.length > 0
34
- && !messDetectorProjectConfigurationComponent.option.some((option) => option[nameKey] === selectedConfigurationIdName)
41
+ messDetectorProjectConfigurationComponent.option.length > 0 &&
42
+ !messDetectorProjectConfigurationComponent.option.some(
43
+ (option) => option[nameKey] === selectedConfigurationIdName
44
+ )
35
45
  ) {
36
- messDetectorProjectConfigurationComponent.option = [defaultOption];
37
- hasChanges = true;
46
+ messDetectorProjectConfigurationComponent.option = [defaultOption]
47
+ hasChanges = true
38
48
  }
39
49
  } else {
40
- hasChanges = true;
50
+ hasChanges = true
41
51
  workspaceConfigs.push({
42
52
  [nameKey]: MESS_DETECTOR_PROJECT_CONFIGURATION_COMPONENT_NAME,
43
53
  option: [defaultOption]
44
- });
54
+ })
45
55
  }
46
56
 
47
- return hasChanges;
48
- };
57
+ return hasChanges
58
+ }
49
59
 
50
- module.exports = setupMessDetectorProjectConfiguration;
60
+ module.exports = setupMessDetectorProjectConfiguration
@@ -1,50 +1,60 @@
1
- const { nameKey, valueKey } = require('../keys');
1
+ const { nameKey, valueKey } = require('../keys')
2
2
 
3
- const PHP_CODE_SNIFFER_PROJECT_CONFIGURATION_COMPONENT_NAME = 'PHPCodeSnifferProjectConfiguration';
3
+ const PHP_CODE_SNIFFER_PROJECT_CONFIGURATION_COMPONENT_NAME =
4
+ 'PHPCodeSnifferProjectConfiguration'
4
5
 
5
- const selectedConfigurationIdName = 'selectedConfigurationId';
6
- const value = 'DEFAULT_INTERPRETER';
6
+ const selectedConfigurationIdName = 'selectedConfigurationId'
7
+ const value = 'DEFAULT_INTERPRETER'
7
8
 
8
9
  const defaultOption = {
9
10
  [nameKey]: selectedConfigurationIdName,
10
11
  [valueKey]: value
11
- };
12
+ }
12
13
 
13
14
  /**
14
15
  * @param {Array} workspaceConfigs
15
16
  * @returns {Promise<Boolean>}
16
17
  */
17
18
  const setupPHPCodeSnifferProjectConfiguration = async (workspaceConfigs) => {
18
- let hasChanges = false;
19
+ let hasChanges = false
19
20
  const phpCodeSnifferProjectConfigurationComponent = workspaceConfigs.find(
20
- (workspaceConfig) => workspaceConfig[nameKey] === PHP_CODE_SNIFFER_PROJECT_CONFIGURATION_COMPONENT_NAME
21
- );
21
+ (workspaceConfig) =>
22
+ workspaceConfig[nameKey] ===
23
+ PHP_CODE_SNIFFER_PROJECT_CONFIGURATION_COMPONENT_NAME
24
+ )
22
25
 
23
26
  if (phpCodeSnifferProjectConfigurationComponent) {
24
- if (phpCodeSnifferProjectConfigurationComponent.option && !Array.isArray(phpCodeSnifferProjectConfigurationComponent.option)) {
25
- hasChanges = true;
26
- phpCodeSnifferProjectConfigurationComponent.option = [phpCodeSnifferProjectConfigurationComponent.option];
27
+ if (
28
+ phpCodeSnifferProjectConfigurationComponent.option &&
29
+ !Array.isArray(phpCodeSnifferProjectConfigurationComponent.option)
30
+ ) {
31
+ hasChanges = true
32
+ phpCodeSnifferProjectConfigurationComponent.option = [
33
+ phpCodeSnifferProjectConfigurationComponent.option
34
+ ]
27
35
  } else if (!phpCodeSnifferProjectConfigurationComponent.option) {
28
- hasChanges = true;
29
- phpCodeSnifferProjectConfigurationComponent.option = [];
36
+ hasChanges = true
37
+ phpCodeSnifferProjectConfigurationComponent.option = []
30
38
  }
31
39
 
32
40
  if (
33
- phpCodeSnifferProjectConfigurationComponent.option.length > 0
34
- && !phpCodeSnifferProjectConfigurationComponent.option.some((option) => option[nameKey] === selectedConfigurationIdName)
41
+ phpCodeSnifferProjectConfigurationComponent.option.length > 0 &&
42
+ !phpCodeSnifferProjectConfigurationComponent.option.some(
43
+ (option) => option[nameKey] === selectedConfigurationIdName
44
+ )
35
45
  ) {
36
- phpCodeSnifferProjectConfigurationComponent.option = [defaultOption];
37
- hasChanges = true;
46
+ phpCodeSnifferProjectConfigurationComponent.option = [defaultOption]
47
+ hasChanges = true
38
48
  }
39
49
  } else {
40
- hasChanges = true;
50
+ hasChanges = true
41
51
  workspaceConfigs.push({
42
52
  [nameKey]: PHP_CODE_SNIFFER_PROJECT_CONFIGURATION_COMPONENT_NAME,
43
53
  option: [defaultOption]
44
- });
54
+ })
45
55
  }
46
56
 
47
- return hasChanges;
48
- };
57
+ return hasChanges
58
+ }
49
59
 
50
- module.exports = setupPHPCodeSnifferProjectConfiguration;
60
+ module.exports = setupPHPCodeSnifferProjectConfiguration
@@ -1,50 +1,60 @@
1
- const { nameKey, valueKey } = require('../keys');
1
+ const { nameKey, valueKey } = require('../keys')
2
2
 
3
- const PHP_CS_FIXER_PROJECT_CONFIGURATION_COMPONENT_NAME = 'PHPCSFixerProjectConfiguration';
3
+ const PHP_CS_FIXER_PROJECT_CONFIGURATION_COMPONENT_NAME =
4
+ 'PHPCSFixerProjectConfiguration'
4
5
 
5
- const selectedConfigurationIdName = 'selectedConfigurationId';
6
- const value = 'DEFAULT_INTERPRETER';
6
+ const selectedConfigurationIdName = 'selectedConfigurationId'
7
+ const value = 'DEFAULT_INTERPRETER'
7
8
 
8
9
  const defaultOption = {
9
10
  [nameKey]: selectedConfigurationIdName,
10
11
  [valueKey]: value
11
- };
12
+ }
12
13
 
13
14
  /**
14
15
  * @param {Array} workspaceConfigs
15
16
  * @returns {Promise<Boolean>}
16
17
  */
17
18
  const setupPHPCSFixerProjectConfiguration = async (workspaceConfigs) => {
18
- let hasChanges = false;
19
+ let hasChanges = false
19
20
  const phpCSFixeProjectConfigurationComponent = workspaceConfigs.find(
20
- (workspaceConfig) => workspaceConfig[nameKey] === PHP_CS_FIXER_PROJECT_CONFIGURATION_COMPONENT_NAME
21
- );
21
+ (workspaceConfig) =>
22
+ workspaceConfig[nameKey] ===
23
+ PHP_CS_FIXER_PROJECT_CONFIGURATION_COMPONENT_NAME
24
+ )
22
25
 
23
26
  if (phpCSFixeProjectConfigurationComponent) {
24
- if (phpCSFixeProjectConfigurationComponent.option && !Array.isArray(phpCSFixeProjectConfigurationComponent.option)) {
25
- hasChanges = true;
26
- phpCSFixeProjectConfigurationComponent.option = [phpCSFixeProjectConfigurationComponent.option];
27
+ if (
28
+ phpCSFixeProjectConfigurationComponent.option &&
29
+ !Array.isArray(phpCSFixeProjectConfigurationComponent.option)
30
+ ) {
31
+ hasChanges = true
32
+ phpCSFixeProjectConfigurationComponent.option = [
33
+ phpCSFixeProjectConfigurationComponent.option
34
+ ]
27
35
  } else if (!phpCSFixeProjectConfigurationComponent.option) {
28
- hasChanges = true;
29
- phpCSFixeProjectConfigurationComponent.option = [];
36
+ hasChanges = true
37
+ phpCSFixeProjectConfigurationComponent.option = []
30
38
  }
31
39
 
32
40
  if (
33
- phpCSFixeProjectConfigurationComponent.option.length > 0
34
- && !phpCSFixeProjectConfigurationComponent.option.some((option) => option[nameKey] === selectedConfigurationIdName)
41
+ phpCSFixeProjectConfigurationComponent.option.length > 0 &&
42
+ !phpCSFixeProjectConfigurationComponent.option.some(
43
+ (option) => option[nameKey] === selectedConfigurationIdName
44
+ )
35
45
  ) {
36
- phpCSFixeProjectConfigurationComponent.option = [defaultOption];
37
- hasChanges = true;
46
+ phpCSFixeProjectConfigurationComponent.option = [defaultOption]
47
+ hasChanges = true
38
48
  }
39
49
  } else {
40
- hasChanges = true;
50
+ hasChanges = true
41
51
  workspaceConfigs.push({
42
52
  [nameKey]: PHP_CS_FIXER_PROJECT_CONFIGURATION_COMPONENT_NAME,
43
53
  option: [defaultOption]
44
- });
54
+ })
45
55
  }
46
56
 
47
- return hasChanges;
48
- };
57
+ return hasChanges
58
+ }
49
59
 
50
- module.exports = setupPHPCSFixerProjectConfiguration;
60
+ module.exports = setupPHPCSFixerProjectConfiguration