@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,19 +1,24 @@
1
- const fs = require('fs');
2
- const UnknownError = require('../errors/unknown-error');
3
- const pathExists = require('./path-exists');
1
+ const fs = require('fs')
2
+ const UnknownError = require('../errors/unknown-error')
3
+ const pathExists = require('./path-exists')
4
4
 
5
+ /**
6
+ * @type {<T>(fileData: string) => Promise<T | null>}
7
+ */
5
8
  const getJsonfileData = async (filePath) => {
6
- const fileExists = await pathExists(filePath);
9
+ const fileExists = await pathExists(filePath)
7
10
 
8
11
  if (!fileExists) {
9
- return null;
12
+ return null
10
13
  }
11
14
 
12
15
  try {
13
- return JSON.parse(await fs.promises.readFile(filePath, 'utf-8'));
16
+ return JSON.parse(await fs.promises.readFile(filePath, 'utf-8'))
14
17
  } catch (e) {
15
- throw new UnknownError(`Ooops! Something went wrong when trying to json parse ${filePath} file!\n\n${e}`);
18
+ throw new UnknownError(
19
+ `Ooops! Something went wrong when trying to json parse ${filePath} file!\n\n${e}`
20
+ )
16
21
  }
17
- };
22
+ }
18
23
 
19
- module.exports = getJsonfileData;
24
+ module.exports = getJsonfileData
@@ -1,100 +1,112 @@
1
- const os = require('os');
2
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
3
- const sleep = require('./sleep');
4
- const { execCommandTask } = require('./exec-async-command');
5
- const dependenciesForPlatforms = require('../config/dependencies-for-platforms');
6
- const KnownError = require('../errors/known-error');
1
+ const os = require('os')
2
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
3
+ const sleep = require('./sleep')
4
+ const { execCommandTask } = require('./exec-async-command')
5
+ const dependenciesForPlatforms = require('../config/dependencies-for-platforms')
6
+ const KnownError = require('../errors/known-error')
7
7
 
8
8
  /**
9
9
  * Install dependencies
10
10
  * @param {object} options
11
11
  * @param {keyof dependenciesForPlatforms} options.platform Platform
12
12
  * @param {string[]} options.dependenciesToInstall List of dependencies to install
13
- * @param {boolean} options.useMacNativeEnvironment Use Mac native environment
13
+ * @param {boolean} [options.useMacNativeEnvironment] Use Mac native environment
14
14
  * @returns {import('listr2').ListrTask<import('../../typings/context').ListrContext>}
15
15
  */
16
16
  const installDependenciesTask = (options) => ({
17
17
  task: async (ctx, task) => {
18
- const { dependenciesToInstall, platform } = options;
19
- task.title = `Installing ${platform} dependencies`;
20
- let cmd;
18
+ const { dependenciesToInstall, platform } = options
19
+ task.title = `Installing ${platform} dependencies`
20
+ let cmd
21
21
  if (os.platform() === 'darwin') {
22
- cmd = dependenciesForPlatforms[platform].installCommand(dependenciesToInstall.join(' '), {
23
- native: options.useMacNativeEnvironment
24
- });
22
+ cmd = dependenciesForPlatforms[platform].installCommand(
23
+ dependenciesToInstall.join(' '),
24
+ {
25
+ native: options.useMacNativeEnvironment
26
+ }
27
+ )
25
28
  } else {
26
- cmd = dependenciesForPlatforms[platform].installCommand(dependenciesToInstall.join(' '));
29
+ cmd = dependenciesForPlatforms[platform].installCommand(
30
+ dependenciesToInstall.join(' ')
31
+ )
27
32
  }
28
- const installCommand = logger.style.code(cmd);
29
- const dependenciesWordFormatter = `dependenc${dependenciesToInstall.length > 1 ? 'ies' : 'y'}`;
30
- task.title = `Installing missing dependencies: ${ logger.style.code(dependenciesToInstall.join(', ')) }`;
31
- task.output = `Missing ${ dependenciesWordFormatter } ${ logger.style.code(dependenciesToInstall.join(' ')) } detected!`;
33
+ const installCommand = logger.style.code(cmd)
34
+ const dependenciesWordFormatter = `dependenc${
35
+ dependenciesToInstall.length > 1 ? 'ies' : 'y'
36
+ }`
37
+ task.title = `Installing missing dependencies: ${logger.style.code(
38
+ dependenciesToInstall.join(', ')
39
+ )}`
40
+ task.output = `Missing ${dependenciesWordFormatter} ${logger.style.code(
41
+ dependenciesToInstall.join(' ')
42
+ )} detected!`
32
43
 
33
- let promptSkipper = false;
44
+ let promptSkipper = false
34
45
  const timer = async () => {
35
46
  for (let i = 5 * 60; i !== 0; i--) {
36
- await sleep(1000);
47
+ await sleep(1000)
37
48
  if (promptSkipper) {
38
- return null;
49
+ return null
39
50
  }
40
- task.title = `Checking ${platform} dependencies (${i} sec left...)`;
51
+ task.title = `Checking ${platform} dependencies (${i} sec left...)`
41
52
  }
42
- task.cancelPrompt();
43
- return 'timeout';
44
- };
53
+ task.cancelPrompt()
54
+ return 'timeout'
55
+ }
45
56
 
46
57
  const installAnswer = await Promise.race([
47
58
  task.prompt({
48
59
  type: 'Select',
49
- message: `Do you want to install missing ${ dependenciesWordFormatter } now?`,
60
+ message: `Do you want to install missing ${dependenciesWordFormatter} now?`,
50
61
  name: 'installAnswer',
51
62
  choices: [
52
63
  {
53
64
  name: 'install',
54
- message: `Install ${ dependenciesWordFormatter } now!`
65
+ message: `Install ${dependenciesWordFormatter} now!`
55
66
  },
56
67
  {
57
68
  name: 'not-install',
58
- message: `Install ${ dependenciesWordFormatter } later, when I feel it.`
69
+ message: `Install ${dependenciesWordFormatter} later, when I feel it.`
59
70
  }
60
71
  ]
61
72
  }),
62
73
  timer()
63
- ]);
74
+ ])
64
75
 
65
- promptSkipper = true;
76
+ promptSkipper = true
66
77
 
67
78
  if (installAnswer === 'timeout') {
68
79
  throw new KnownError(`Timeout!
69
80
 
70
- To install missing ${ dependenciesWordFormatter } manually, run the following command: ${ installCommand }`);
81
+ To install missing ${dependenciesWordFormatter} manually, run the following command: ${installCommand}`)
71
82
  }
72
83
 
73
84
  if (installAnswer === 'not-install') {
74
- task.skip(`User chose to skip installation of ${ dependenciesWordFormatter }`);
75
- return;
85
+ task.skip(
86
+ `User chose to skip installation of ${dependenciesWordFormatter}`
87
+ )
88
+ return
76
89
  }
77
90
 
78
91
  if (installAnswer === 'install') {
79
92
  // on macos we don't need sudo permissions to install dependencies, so every other platform required to do that
80
93
  if (platform !== 'darwin') {
81
- task.output = `Enter your sudo password! It's needed for ${ dependenciesWordFormatter } installation.`;
82
- task.output = logger.style.command(`>[sudo] password for ${ os.userInfo().username }:`);
94
+ task.output = `Enter your sudo password! It's needed for ${dependenciesWordFormatter} installation.`
95
+ task.output = logger.style.command(
96
+ `>[sudo] password for ${os.userInfo().username}:`
97
+ )
83
98
  }
84
99
 
85
100
  return task.newListr(
86
101
  execCommandTask(cmd, {
87
- callback: (t) => {
88
- task.output = t;
89
- },
90
102
  pipeInput: true
91
103
  })
92
- );
104
+ )
93
105
  }
94
106
  },
95
107
  options: {
96
108
  bottomBar: 10
97
109
  }
98
- });
110
+ })
99
111
 
100
- module.exports = installDependenciesTask;
112
+ module.exports = installDependenciesTask
@@ -1,20 +1,23 @@
1
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
1
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
2
2
 
3
- const WEB_LOCAL_LOCATION_TITLE = `Location on ${ logger.style.misc('localhost') }`;
4
- const WEB_LOCATION_TITLE = 'Location on the Web';
5
- const WEB_ADMIN_LOCATION_TITLE = 'Panel location';
6
- const WEB_ADMIN_CREDENTIALS_TITLE = 'Panel credentials';
7
- const WEB_MAILDEV_LOCATION_TITLE = 'Panel location';
3
+ const WEB_LOCAL_LOCATION_TITLE = `Location on ${logger.style.misc('localhost')}`
4
+ const WEB_LOCATION_TITLE = 'Location on the Web'
5
+ const WEB_ADMIN_LOCATION_TITLE = 'Panel location'
6
+ const WEB_ADMIN_CREDENTIALS_TITLE = 'Panel credentials'
7
+ const WEB_MAILDEV_LOCATION_TITLE = 'Panel location'
8
8
 
9
+ /**
10
+ * @param {{ title: string, text: string }} param0
11
+ */
9
12
  const mapDataStyle = ({ title, text }) => ({
10
13
  title,
11
14
  text: logger.style.link(text),
12
15
  link: text
13
- });
16
+ })
14
17
 
15
18
  /**
16
19
  * @param {import("../../typings/context").ListrContext} ctx
17
- * @return {{ frontend: { title: string, text: string }[], admin: { title: string, url: string }[], maildev: { title: string, text: string }[] }}
20
+ * @return {{ frontend: { title: string, text: string }[], admin: { title: string, text: string }[], maildev: { title: string, text: string }[] }}
18
21
  */
19
22
  const getInstanceMetadata = (ctx) => {
20
23
  const {
@@ -23,64 +26,76 @@ const getInstanceMetadata = (ctx) => {
23
26
  magentoConfiguration,
24
27
  overridenConfiguration: { host, ssl }
25
28
  }
26
- } = ctx;
29
+ } = ctx
27
30
 
28
31
  /**
29
32
  * @type {{ title: string, text: string }[]}
30
33
  */
31
- const frontend = [];
34
+ const frontend = []
32
35
 
33
36
  /**
34
37
  * @type {{ title: string, text: string }[]}
35
38
  */
36
- const admin = [];
39
+ const admin = []
37
40
 
38
41
  /**
39
42
  * @type {{ title: string, text: string }[]}
40
43
  */
41
- const maildev = [];
44
+ const maildev = []
42
45
 
43
- const isNgrok = host.endsWith('ngrok.io');
46
+ const isNgrok = host.endsWith('ngrok.io')
44
47
 
45
48
  if (isNgrok) {
46
49
  frontend.push({
47
50
  title: WEB_LOCAL_LOCATION_TITLE,
48
- text: `${ssl.enabled ? 'https' : 'http'}://localhost${ssl.enabled || ports.sslTerminator === 80 ? '' : `:${ports.sslTerminator}`}/`
49
- });
51
+ text: `${ssl.enabled ? 'https' : 'http'}://localhost${
52
+ ssl.enabled || ports.sslTerminator === 80
53
+ ? ''
54
+ : `:${ports.sslTerminator}`
55
+ }/`
56
+ })
50
57
  frontend.push({
51
58
  title: WEB_LOCATION_TITLE,
52
59
  text: `${ssl.enabled ? 'https' : 'http'}://${host}/`
53
- });
60
+ })
54
61
  } else {
55
62
  frontend.push({
56
63
  title: WEB_LOCATION_TITLE,
57
- text: `${ssl.enabled ? 'https' : 'http'}://${host}${ssl.enabled || ports.sslTerminator === 80 ? '' : `:${ports.sslTerminator}`}/`
58
- });
64
+ text: `${ssl.enabled ? 'https' : 'http'}://${host}${
65
+ ssl.enabled || ports.sslTerminator === 80
66
+ ? ''
67
+ : `:${ports.sslTerminator}`
68
+ }/`
69
+ })
59
70
  }
60
71
 
61
- const webLocation = frontend.find((u) => u.title === WEB_LOCATION_TITLE);
72
+ const webLocation = frontend.find((u) => u.title === WEB_LOCATION_TITLE)
62
73
 
63
- admin.push({
64
- title: WEB_ADMIN_LOCATION_TITLE,
65
- text: logger.style.link(`${webLocation.text}admin`)
66
- });
74
+ if (webLocation) {
75
+ admin.push({
76
+ title: WEB_ADMIN_LOCATION_TITLE,
77
+ text: logger.style.link(`${webLocation.text}admin`)
78
+ })
79
+ }
67
80
 
68
81
  admin.push({
69
82
  title: WEB_ADMIN_CREDENTIALS_TITLE,
70
- text: `${logger.style.misc(magentoConfiguration.user)} - ${logger.style.misc(magentoConfiguration.password)}`
71
- });
83
+ text: `${logger.style.misc(
84
+ magentoConfiguration.user
85
+ )} - ${logger.style.misc(magentoConfiguration.password)}`
86
+ })
72
87
 
73
88
  maildev.push({
74
89
  title: WEB_MAILDEV_LOCATION_TITLE,
75
90
  text: `http://${host}:${ports.maildevWeb}/`
76
- });
91
+ })
77
92
 
78
93
  return {
79
94
  admin,
80
95
  frontend: frontend.map(mapDataStyle),
81
96
  maildev: maildev.map(mapDataStyle)
82
- };
83
- };
97
+ }
98
+ }
84
99
 
85
100
  module.exports = {
86
101
  getInstanceMetadata,
@@ -90,4 +105,4 @@ module.exports = {
90
105
  WEB_ADMIN_LOCATION_TITLE,
91
106
  WEB_ADMIN_CREDENTIALS_TITLE
92
107
  }
93
- };
108
+ }
package/lib/util/ip.js CHANGED
@@ -1,8 +1,12 @@
1
- const { request } = require('smol-request');
1
+ const { request } = require('smol-request')
2
2
 
3
- const ipRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
3
+ const ipRegex =
4
+ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
4
5
 
5
- const isIpAddress = (text) => ipRegex.test(text);
6
+ /**
7
+ * @param {string} text
8
+ */
9
+ const isIpAddress = (text) => ipRegex.test(text)
6
10
 
7
11
  const externalIpProviders = [
8
12
  'http://api.ipify.org/',
@@ -16,24 +20,24 @@ const externalIpProviders = [
16
20
  'http://ipecho.net/plain',
17
21
  'http://diagnostic.opendns.com/myip',
18
22
  'http://trackip.net/ip'
19
- ];
23
+ ]
20
24
 
21
25
  /**
22
26
  * Get an external IP address
23
27
  * @returns {Promise<string>}
24
28
  */
25
29
  const getExternalIpAddress = async () => {
26
- let ip;
30
+ let ip
27
31
 
28
32
  for (const ipProvider of externalIpProviders) {
29
33
  try {
30
34
  const response = await request(ipProvider, {
31
35
  responseType: 'text'
32
- });
36
+ })
33
37
 
34
38
  if (response.status === 200) {
35
- ip = response.data;
36
- break;
39
+ ip = response.data
40
+ break
37
41
  }
38
42
  } catch (e) {
39
43
  //
@@ -41,14 +45,14 @@ const getExternalIpAddress = async () => {
41
45
  }
42
46
 
43
47
  if (!ip) {
44
- throw new Error('External IP address is not available!');
48
+ throw new Error('External IP address is not available!')
45
49
  }
46
50
 
47
- return ip;
48
- };
51
+ return ip
52
+ }
49
53
 
50
54
  module.exports = {
51
55
  ipRegex,
52
56
  isIpAddress,
53
57
  getExternalIpAddress
54
- };
58
+ }
@@ -1,5 +1,8 @@
1
- const os = require('os');
1
+ const os = require('os')
2
2
 
3
- const isRunningRoot = () => ['linux', 'darwin'].includes(os.platform()) && process.getuid() === 0; // UID 0 is always root
3
+ const isRunningRoot = () =>
4
+ ['linux', 'darwin'].includes(os.platform()) &&
5
+ process.getuid &&
6
+ process.getuid() === 0 // UID 0 is always root
4
7
 
5
- module.exports = isRunningRoot;
8
+ module.exports = isRunningRoot
@@ -1,5 +1,5 @@
1
- const os = require('os');
2
- const fs = require('fs');
1
+ const os = require('os')
2
+ const fs = require('fs')
3
3
 
4
4
  /**
5
5
  * Checks if process is running in wsl mode
@@ -7,24 +7,24 @@ const fs = require('fs');
7
7
  */
8
8
  const getIsWsl = async () => {
9
9
  if (process.platform !== 'linux') {
10
- return false;
10
+ return false
11
11
  }
12
12
 
13
13
  if (typeof process.env.WSL_DISTRO_NAME === 'string') {
14
- return true;
14
+ return true
15
15
  }
16
16
 
17
17
  if (os.release().toLowerCase().includes('microsoft')) {
18
- return true;
18
+ return true
19
19
  }
20
20
 
21
21
  try {
22
- const procVersion = await fs.promises.readFile('/proc/version', 'utf8');
22
+ const procVersion = await fs.promises.readFile('/proc/version', 'utf8')
23
23
 
24
- return procVersion.toLowerCase().includes('microsoft');
24
+ return procVersion.toLowerCase().includes('microsoft')
25
25
  } catch (e) {
26
- return false;
26
+ return false
27
27
  }
28
- };
28
+ }
29
29
 
30
- module.exports = getIsWsl;
30
+ module.exports = getIsWsl
@@ -1,20 +1,21 @@
1
- const semver = require('semver');
2
- const macosVersion = require('macos-version');
3
- const { execAsyncSpawn } = require('./exec-async-command');
1
+ const semver = require('semver')
2
+ const macosVersion = require('macos-version')
3
+ const { execAsyncSpawn } = require('./exec-async-command')
4
4
 
5
5
  const getMacOSVersion = async () => {
6
- const { code, result } = await execAsyncSpawn('sw_vers -productVersion',
7
- {
8
- withCode: true
9
- });
6
+ const { code, result } = await execAsyncSpawn('sw_vers -productVersion', {
7
+ withCode: true
8
+ })
10
9
 
11
10
  if (code !== 0) {
12
- return macosVersion();
11
+ return macosVersion()
13
12
  }
14
13
 
15
- return semver.coerce(result).version;
16
- };
14
+ const { version } = semver.coerce(result) || {}
15
+
16
+ return version
17
+ }
17
18
 
18
19
  module.exports = {
19
20
  getMacOSVersion
20
- };
21
+ }
@@ -1,4 +1,5 @@
1
- const runMagentoCommand = require('./run-magento');
1
+ const UnknownError = require('../errors/unknown-error')
2
+ const runMagentoCommand = require('./run-magento')
2
3
 
3
4
  /**
4
5
  * @param {String} command
@@ -11,20 +12,24 @@ const magentoTask = (command, options = {}) => ({
11
12
  task: async (ctx, task) => {
12
13
  try {
13
14
  await runMagentoCommand(ctx, command, {
14
- callback: !ctx.verbose ? undefined : (t) => {
15
- task.output = t;
16
- },
15
+ callback: !ctx.verbose
16
+ ? undefined
17
+ : (t) => {
18
+ task.output = t
19
+ },
17
20
  throwNonZeroCode: true
18
- });
21
+ })
19
22
  } catch (e) {
20
- if (options.onError) {
21
- options.onError(e);
23
+ if (e instanceof UnknownError && options.onError) {
24
+ options.onError(e)
22
25
  }
26
+
27
+ throw e
23
28
  }
24
29
  },
25
30
  options: {
26
31
  bottomBar: 10
27
32
  }
28
- });
33
+ })
29
34
 
30
- module.exports = magentoTask;
35
+ module.exports = magentoTask
@@ -1,5 +1,5 @@
1
- const path = require('path');
2
- const pathExists = require('./path-exists');
1
+ const path = require('path')
2
+ const pathExists = require('./path-exists')
3
3
 
4
4
  /**
5
5
  * Check file system structure to detect possible unfinished installation
@@ -9,25 +9,31 @@ const pathExists = require('./path-exists');
9
9
  */
10
10
  const matchFilesystem = async (cwd, structure) => {
11
11
  if (Array.isArray(structure)) {
12
- const ok = (await Promise.all(structure.map((str) => pathExists(path.join(cwd, str)))))
13
- .every((value) => value === true);
12
+ const ok = (
13
+ await Promise.all(
14
+ structure.map((str) => pathExists(path.join(cwd, str)))
15
+ )
16
+ ).every((value) => value === true)
14
17
 
15
- return ok;
18
+ return ok
16
19
  }
17
20
  if (typeof structure === 'object') {
18
- const ok = (await Promise.all(Object.entries(structure).map(([key, value]) => {
19
- if (typeof value === 'boolean') {
20
- return pathExists(path.join(cwd, key));
21
- }
21
+ const ok = (
22
+ await Promise.all(
23
+ Object.entries(structure).map(([key, value]) => {
24
+ if (typeof value === 'boolean') {
25
+ return pathExists(path.join(cwd, key))
26
+ }
22
27
 
23
- return matchFilesystem(path.join(cwd, key), value);
24
- })))
25
- .every((value) => value === true);
28
+ return matchFilesystem(path.join(cwd, key), value)
29
+ })
30
+ )
31
+ ).every((value) => value === true)
26
32
 
27
- return ok;
33
+ return ok
28
34
  }
29
35
 
30
- return pathExists(path.join(cwd, structure));
31
- };
36
+ return pathExists(path.join(cwd, structure))
37
+ }
32
38
 
33
- module.exports = matchFilesystem;
39
+ module.exports = matchFilesystem
@@ -1,38 +1,53 @@
1
- const fs = require('fs');
1
+ const fs = require('fs')
2
2
 
3
+ /**
4
+ * @param {{ from: string, to: string }} param0
5
+ */
3
6
  const moveFile = async ({ from, to }) => {
4
- const copy = () => new Promise((resolve, reject) => {
5
- const readStream = fs.createReadStream(from);
6
- const writeStream = fs.createWriteStream(to);
7
- const onError = async (e) => {
8
- await fs.promises.unlink(to);
9
- reject(e);
10
- };
7
+ /**
8
+ * @returns {Promise<void>}
9
+ */
10
+ const copy = () =>
11
+ new Promise((resolve, reject) => {
12
+ const readStream = fs.createReadStream(from)
13
+ const writeStream = fs.createWriteStream(to)
14
+ /**
15
+ * @param {Error} e
16
+ */
17
+ const onError = async (e) => {
18
+ await fs.promises.unlink(to)
19
+ reject(e)
20
+ }
11
21
 
12
- readStream.on('error', onError);
13
- writeStream.on('error', onError);
22
+ readStream.on('error', onError)
23
+ writeStream.on('error', onError)
14
24
 
15
- readStream.on('close', async () => {
16
- try {
17
- await fs.promises.unlink(from);
18
- } catch (e) {
19
- onError(e);
20
- }
21
- resolve();
22
- });
25
+ readStream.on('close', async () => {
26
+ try {
27
+ await fs.promises.unlink(from)
28
+ } catch (e) {
29
+ if (e instanceof Error) {
30
+ onError(e)
31
+ return
32
+ } else if (typeof e === 'string') {
33
+ onError(new Error(e))
34
+ }
35
+ }
36
+ resolve()
37
+ })
23
38
 
24
- readStream.pipe(writeStream);
25
- });
39
+ readStream.pipe(writeStream)
40
+ })
26
41
 
27
42
  try {
28
- await fs.promises.rename(from, to);
43
+ await fs.promises.rename(from, to)
29
44
  } catch (e) {
30
45
  if (e && e.code === 'EXDEV') {
31
- await copy();
46
+ await copy()
32
47
  } else {
33
- throw e;
48
+ throw e
34
49
  }
35
50
  }
36
- };
51
+ }
37
52
 
38
- module.exports = moveFile;
53
+ module.exports = moveFile