@scandipwa/magento-scripts 2.0.3-alpha.0 → 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 +258 -173
  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 +49 -34
  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 +174 -108
  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 -46
  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 +64 -71
  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 +41 -38
  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,27 +1,33 @@
1
- const Joi = require('joi');
2
- const semver = require('semver');
3
- const KnownError = require('../errors/known-error');
4
- const pathExistsSync = require('./path-exists-sync');
1
+ const Joi = require('joi')
2
+ const semver = require('semver')
3
+ const KnownError = require('../errors/known-error')
4
+ const pathExistsSync = require('./path-exists-sync')
5
5
 
6
+ /**
7
+ * @type {Joi.CustomValidator<string>}
8
+ */
6
9
  const fileExistsValidator = (value) => {
7
- const fileExists = pathExistsSync(value);
10
+ const fileExists = pathExistsSync(value)
8
11
 
9
12
  if (!fileExists) {
10
- throw new KnownError(`File "${value}" does not exists!`);
13
+ throw new KnownError(`File "${value}" does not exists!`)
11
14
  }
12
15
 
13
- return undefined;
14
- };
16
+ return undefined
17
+ }
15
18
 
19
+ /**
20
+ * @type {Joi.CustomValidator<string>}
21
+ */
16
22
  const versionValidator = (value, helpers) => {
17
- const isValid = semver.valid(value);
23
+ const isValid = semver.valid(value)
18
24
 
19
25
  if (!isValid) {
20
- return helpers.error('any.invalid');
26
+ return helpers.error('any.invalid')
21
27
  }
22
28
 
23
- return undefined;
24
- };
29
+ return undefined
30
+ }
25
31
 
26
32
  /**
27
33
  * @type {Joi.ObjectSchema<import('../../typings').CMAConfiguration['magento']>}
@@ -33,9 +39,14 @@ const magentoSchema = Joi.object({
33
39
  user: Joi.string().required(),
34
40
  password: Joi.string().required(),
35
41
  adminuri: Joi.string().required(),
36
- mode: Joi.string().valid('default', 'developer', 'production', 'maintenance'),
42
+ mode: Joi.string().valid(
43
+ 'default',
44
+ 'developer',
45
+ 'production',
46
+ 'maintenance'
47
+ ),
37
48
  edition: Joi.string().valid('community', 'enterprise')
38
- });
49
+ })
39
50
 
40
51
  /**
41
52
  * @type {Joi.ObjectSchema<import('../../typings').SSLConfiguration>}
@@ -44,23 +55,21 @@ const sslSchema = Joi.object({
44
55
  enabled: Joi.bool().required(),
45
56
  ssl_certificate: Joi.string().required(),
46
57
  ssl_certificate_key: Joi.string().required()
47
- });
58
+ })
48
59
 
49
60
  /**
50
61
  * @type {Joi.ObjectSchema<import('../../typings/index').PHPExtensions>}
51
62
  */
52
- const phpExtensionConfiguration = Joi.object()
53
- .pattern(
54
- Joi.string(),
55
- Joi.object({
56
- name: Joi.string().optional(),
57
- alternativeName: Joi.array().items(Joi.string()).optional(),
58
- command: Joi.alternatives().try(Joi.func(), Joi.string()).optional(),
59
- dependencies: Joi.array().items(Joi.string()).optional(),
60
- version: Joi.string().optional()
61
- })
62
- .unknown()
63
- );
63
+ const phpExtensionConfiguration = Joi.object().pattern(
64
+ Joi.string(),
65
+ Joi.object({
66
+ name: Joi.string().optional(),
67
+ alternativeName: Joi.array().items(Joi.string()).optional(),
68
+ command: Joi.alternatives().try(Joi.func(), Joi.string()).optional(),
69
+ dependencies: Joi.array().items(Joi.string()).optional(),
70
+ version: Joi.string().optional()
71
+ }).unknown()
72
+ )
64
73
 
65
74
  /**
66
75
  * @type {Joi.ObjectSchema<import('../../typings').PHPConfiguration>}
@@ -72,7 +81,7 @@ const phpConfigurationSchema = Joi.object({
72
81
  configTemplate: Joi.string().optional().custom(fileExistsValidator),
73
82
  debugTemplate: Joi.string().optional().custom(fileExistsValidator),
74
83
  extensions: phpExtensionConfiguration.optional()
75
- });
84
+ })
76
85
 
77
86
  /**
78
87
  * @type {Joi.ObjectSchema<import('../../typings').NginxConfiguration>}
@@ -80,7 +89,7 @@ const phpConfigurationSchema = Joi.object({
80
89
  const nginxConfigurationSchema = Joi.object({
81
90
  image: Joi.string().optional(),
82
91
  configTemplate: Joi.string().optional().custom(fileExistsValidator)
83
- });
92
+ })
84
93
 
85
94
  /**
86
95
  * @type {Joi.ObjectSchema<import('../../typings').VarnishConfiguration>}
@@ -90,14 +99,14 @@ const varnishConfigurationSchema = Joi.object({
90
99
  healthCheck: Joi.boolean().optional(),
91
100
  image: Joi.string().optional(),
92
101
  configTemplate: Joi.string().optional().custom(fileExistsValidator)
93
- });
102
+ })
94
103
 
95
104
  /**
96
105
  * @type {Joi.ObjectSchema<import('../../typings').ServiceWithImage>}
97
106
  */
98
107
  const serviceConfigurationSchema = Joi.object({
99
108
  image: Joi.string().optional()
100
- });
109
+ })
101
110
 
102
111
  /**
103
112
  * @type {Joi.ObjectSchema<import('../../typings').ElasticSearchConfiguration>}
@@ -105,45 +114,30 @@ const serviceConfigurationSchema = Joi.object({
105
114
  const elasticsearchConfigurationSchema = Joi.object({
106
115
  image: Joi.string().optional(),
107
116
  env: Joi.object().optional()
108
- });
117
+ })
109
118
 
110
119
  /**
111
120
  * @type {Joi.ObjectSchema<import('../../typings').ComposerConfiguration>}
112
121
  */
113
122
  const composerConfigurationSchema = Joi.object({
114
- version: Joi.string().optional().custom((value, helpers) => {
115
- if (['1', '2'].includes(value)) {
116
- return undefined;
117
- }
118
-
119
- return versionValidator(value, helpers);
120
- }),
121
- plugins: Joi.object()
122
- .pattern(
123
- Joi.string(),
124
- Joi.object({
125
- version: Joi.string().optional(),
126
- options: Joi.string().optional(),
127
- enabled: Joi.boolean().optional()
128
- })
129
- .unknown()
130
- )
131
- });
132
-
133
- /**
134
- * @type {Joi.ObjectSchema<import('../../typings').NewRelicConfiguration>}
135
- */
136
- const newRelicConfigurationSchema = Joi.object({
137
- enabled: Joi.boolean().optional(),
138
- agentVersion: Joi.string().optional(),
139
- licenseKey: Joi.string().optional()
140
- }).custom((d, helpers) => {
141
- if (d.enabled && !d.licenseKey) {
142
- return helpers.message('when newRelic is enabled license key is required!');
143
- }
144
-
145
- return true;
146
- });
123
+ version: Joi.string()
124
+ .optional()
125
+ .custom((value, helper) => {
126
+ if (['1', '2'].includes(value)) {
127
+ return undefined
128
+ }
129
+
130
+ return versionValidator(value, helper)
131
+ }),
132
+ plugins: Joi.object().pattern(
133
+ Joi.string(),
134
+ Joi.object({
135
+ version: Joi.string().optional(),
136
+ options: Joi.string().optional(),
137
+ enabled: Joi.boolean().optional()
138
+ }).unknown()
139
+ )
140
+ })
147
141
 
148
142
  /**
149
143
  * @type {Joi.ObjectSchema<import('../../typings').CMAConfiguration['configuration']>}
@@ -157,9 +151,8 @@ const configurationSchema = Joi.object({
157
151
  composer: composerConfigurationSchema.optional(),
158
152
  varnish: varnishConfigurationSchema.optional(),
159
153
  sslTerminator: nginxConfigurationSchema.optional(),
160
- maildev: serviceConfigurationSchema.optional(),
161
- newRelic: newRelicConfigurationSchema.optional()
162
- });
154
+ maildev: serviceConfigurationSchema.optional()
155
+ })
163
156
 
164
157
  /**
165
158
  * @type {Joi.ObjectSchema<import('../../typings').CMAConfiguration>}
@@ -170,7 +163,7 @@ const configFileSchema = Joi.object({
170
163
  ssl: sslSchema.optional(),
171
164
  prefix: Joi.bool().optional(),
172
165
  configuration: configurationSchema.required()
173
- });
166
+ })
174
167
 
175
168
  /**
176
169
  * @type {Joi.ObjectSchema<{ useNonOverlappingPorts:boolean, analytics:boolean }>}
@@ -178,9 +171,9 @@ const configFileSchema = Joi.object({
178
171
  const systemConfigurationSchema = Joi.object({
179
172
  useNonOverlappingPorts: Joi.bool().optional(),
180
173
  analytics: Joi.bool().optional()
181
- });
174
+ })
182
175
 
183
176
  module.exports = {
184
177
  configFileSchema,
185
178
  systemConfigurationSchema
186
- };
179
+ }
@@ -1,29 +1,47 @@
1
- const path = require('path');
2
- const UnknownError = require('../errors/unknown-error');
3
- const { runPHPContainerCommand } = require('../tasks/php/php-container');
4
- const pathExists = require('./path-exists');
1
+ const path = require('path')
2
+ const UnknownError = require('../errors/unknown-error')
3
+ const { runPHPContainerCommand } = require('../tasks/php/php-container')
4
+ const pathExists = require('./path-exists')
5
5
 
6
6
  /**
7
7
  * @param {import('../../typings/context').ListrContext} ctx
8
8
  */
9
9
  const configPhpToJson = async (ctx) => {
10
- const configPhpOnSystemPath = path.join(ctx.config.baseConfig.magentoDir, 'app', 'etc', 'config.php');
11
- const configPhpInContainerPath = path.join(ctx.config.baseConfig.containerMagentoDir, 'app', 'etc', 'config.php');
12
- if (!await pathExists(configPhpOnSystemPath)) {
13
- return null;
10
+ const configPhpOnSystemPath = path.join(
11
+ ctx.config.baseConfig.magentoDir,
12
+ 'app',
13
+ 'etc',
14
+ 'config.php'
15
+ )
16
+ const configPhpInContainerPath = path.join(
17
+ ctx.config.baseConfig.containerMagentoDir,
18
+ 'app',
19
+ 'etc',
20
+ 'config.php'
21
+ )
22
+ if (!(await pathExists(configPhpOnSystemPath))) {
23
+ return null
14
24
  }
15
- const { code, result } = await runPHPContainerCommand(ctx, `php -r "echo json_encode(require '${configPhpInContainerPath}');"`, {
16
- withCode: true
17
- });
25
+ const { code, result } = await runPHPContainerCommand(
26
+ ctx,
27
+ `php -r "echo json_encode(require '${configPhpInContainerPath}');"`,
28
+ {
29
+ withCode: true
30
+ }
31
+ )
18
32
 
19
33
  if (code !== 0) {
20
- throw new UnknownError(`Received non-zero code during converting app/etc/config.php to json:\n\n${result}`);
34
+ throw new UnknownError(
35
+ `Received non-zero code during converting app/etc/config.php to json:\n\n${result}`
36
+ )
21
37
  }
22
38
  try {
23
- return JSON.parse(result);
39
+ return JSON.parse(result)
24
40
  } catch (e) {
25
- throw new UnknownError(`Ooops! Something went wrong when trying to parse app/etc/config.php file!\n\n${e}\n\nFile result: ${result}`);
41
+ throw new UnknownError(
42
+ `Ooops! Something went wrong when trying to parse app/etc/config.php file!\n\n${e}\n\nFile result: ${result}`
43
+ )
26
44
  }
27
- };
45
+ }
28
46
 
29
- module.exports = configPhpToJson;
47
+ module.exports = configPhpToJson
@@ -2,11 +2,12 @@
2
2
  * @typedef ParsedConnection
3
3
  * @prop {String} protocol
4
4
  * @prop {String} [user]
5
+ * @prop {String} [password]
5
6
  * @prop {String} [port]
6
7
  * @prop {String} host
7
8
  * @prop {String} [hostname]
8
9
  * @prop {String[]} [segments]
9
- * @prop {Record<string, string} params
10
+ * @prop {Record<string, string>} params
10
11
  */
11
12
 
12
13
  /**
@@ -14,49 +15,62 @@
14
15
  * @returns {ParsedConnection}
15
16
  */
16
17
  const connectionStringParser = (url) => {
17
- // eslint-disable-next-line no-useless-escape
18
- const pattern = /^(?:([^:\/?#\s]+):\/{2})?(?:([^@\/?#\s]+)@)?([^\/?#\s]+)?(?:\/([^?#\s]*))?(?:[?]([^#\s]+))?\S*$/;
19
- const matches = url.match(pattern);
20
- const params = {};
21
- if (matches[5] !== undefined) {
18
+ const pattern =
19
+ /^(?:([^:/?#\s]+):\/{2})?(?:([^@/?#\s]+)@)?([^/?#\s]+)?(?:\/([^?#\s]*))?(?:[?]([^#\s]+))?\S*$/
20
+ const matches = url.match(pattern)
21
+
22
+ if (!matches) {
23
+ return {
24
+ host: '',
25
+ params: {},
26
+ protocol: ''
27
+ }
28
+ }
29
+ /**
30
+ * @type {Record<string, string>}
31
+ */
32
+ const params = {}
33
+ if (matches && matches[5] !== undefined) {
22
34
  matches[5].split('&').forEach((x) => {
23
- const a = x.split('=');
24
- params[a[0]] = a[1];
25
- });
35
+ const a = x.split('=')
36
+ params[a[0]] = a[1]
37
+ })
26
38
  }
27
39
 
28
40
  return {
29
41
  protocol: matches[1],
30
42
  user: matches[2] !== undefined ? matches[2].split(':')[0] : undefined,
31
- password: matches[2] !== undefined ? matches[2].split(':')[1] : undefined,
43
+ password:
44
+ matches[2] !== undefined ? matches[2].split(':')[1] : undefined,
32
45
  host: matches[3],
33
- hostname: matches[3] !== undefined ? matches[3].split(/:(?=\d+$)/)[0] : undefined,
34
- port: matches[3] !== undefined ? matches[3].split(/:(?=\d+$)/)[1] : undefined,
46
+ hostname:
47
+ matches[3] !== undefined
48
+ ? matches[3].split(/:(?=\d+$)/)[0]
49
+ : undefined,
50
+ port:
51
+ matches[3] !== undefined
52
+ ? matches[3].split(/:(?=\d+$)/)[1]
53
+ : undefined,
35
54
  segments: matches[4] !== undefined ? matches[4].split('/') : undefined,
36
55
  params
37
- };
38
- };
56
+ }
57
+ }
39
58
 
40
59
  /**
41
60
  * @param {ParsedConnection} options
42
61
  * @returns {String}
43
62
  */
44
63
  const connectionStringBuilder = (options) => {
45
- const {
46
- protocol,
47
- user,
48
- password,
49
- host,
50
- port,
51
- segments,
52
- params
53
- } = options;
64
+ const { protocol, user, password, host, port, segments, params } = options
54
65
 
55
- // eslint-disable-next-line max-len
56
- return `${protocol}://${(user && password) ? `${user}:${password}@` : ''}${host}${port ? `:${port}` : ''}/${(segments && segments.length > 0) ? segments.join('/') : ''}${new URLSearchParams(params).toString()}`;
57
- };
66
+ return `${protocol}://${
67
+ user && password ? `${user}:${password}@` : ''
68
+ }${host}${port ? `:${port}` : ''}/${
69
+ segments && segments.length > 0 ? segments.join('/') : ''
70
+ }${new URLSearchParams(params).toString()}`
71
+ }
58
72
 
59
73
  module.exports = {
60
74
  connectionStringParser,
61
75
  connectionStringBuilder
62
- };
76
+ }
@@ -4,49 +4,48 @@
4
4
  * @typedef {{ type: BlockType, data: string }} Block
5
5
  */
6
6
 
7
- const logger = require('@scandipwa/scandipwa-dev-utils/logger');
8
-
9
- const HORIZONTAL_SEPARATOR = '-';
10
- const VERTICAL_SEPARATOR = '|';
11
- const EMPTY_CHAR = ' ';
12
- const TOP_LEFT_SEPARATOR = '┌';
13
- const TOP_RIGHT_SEPARATOR = '┐';
14
- const MIDDLE_LEFT_SEPARATOR = '├';
15
- const MIDDLE_RIGHT_SEPARATOR = '┤';
16
- const BOTTOM_LEFT_SEPARATOR = '└';
17
- const BOTTOM_RIGHT_SEPARATOR = '┘';
7
+ const logger = require('@scandipwa/scandipwa-dev-utils/logger')
8
+
9
+ const HORIZONTAL_SEPARATOR = '-'
10
+ const VERTICAL_SEPARATOR = '|'
11
+ const EMPTY_CHAR = ' '
12
+ const TOP_LEFT_SEPARATOR = '┌'
13
+ const TOP_RIGHT_SEPARATOR = '┐'
14
+ const MIDDLE_LEFT_SEPARATOR = '├'
15
+ const MIDDLE_RIGHT_SEPARATOR = '┤'
16
+ const BOTTOM_LEFT_SEPARATOR = '└'
17
+ const BOTTOM_RIGHT_SEPARATOR = '┘'
18
18
 
19
19
  // eslint-disable-next-line no-control-regex
20
- const consoleStyleReplacer = /[\u001b]\[\S+?m/g;
20
+ const consoleStyleReplacer = /[\u001b]\[\S+?m/g
21
21
 
22
22
  class ConsoleBlock {
23
23
  constructor() {
24
24
  /**
25
25
  * @type {Block[]}
26
26
  */
27
- this.data = [];
27
+ this.data = []
28
28
  }
29
29
 
30
30
  /**
31
31
  * @param {string} header
32
32
  */
33
33
  addHeader(header) {
34
- this.data.unshift(
35
- {
36
- type: 'header',
37
- data: header
38
- }
39
- );
34
+ this.data.unshift({
35
+ type: 'header',
36
+ data: header
37
+ })
40
38
 
41
- return this;
39
+ return this
42
40
  }
43
41
 
44
42
  addEmptyLine() {
45
43
  this.data.push({
46
- type: 'empty-line'
47
- });
44
+ type: 'empty-line',
45
+ data: ''
46
+ })
48
47
 
49
- return this;
48
+ return this
50
49
  }
51
50
 
52
51
  /**
@@ -56,9 +55,9 @@ class ConsoleBlock {
56
55
  this.data.push({
57
56
  type: 'line',
58
57
  data: line
59
- });
58
+ })
60
59
 
61
- return this;
60
+ return this
62
61
  }
63
62
 
64
63
  /**
@@ -68,58 +67,106 @@ class ConsoleBlock {
68
67
  this.data.push({
69
68
  type: 'separator',
70
69
  data: separator
71
- });
70
+ })
72
71
 
73
- return this;
72
+ return this
74
73
  }
75
74
 
76
75
  log() {
77
76
  const longestLineRaw = this.data.reduce(
78
- (acc, { data = '' }) => (
79
- data.replace(consoleStyleReplacer, '').length > acc ? data.replace(consoleStyleReplacer, '').length : acc
80
- ),
77
+ (acc, { data = '' }) =>
78
+ data.replace(consoleStyleReplacer, '').length > acc
79
+ ? data.replace(consoleStyleReplacer, '').length
80
+ : acc,
81
81
  0
82
- );
83
- const longestLine = longestLineRaw % 2 === 0 ? longestLineRaw + 2 : longestLineRaw + 3;
82
+ )
83
+ const longestLine =
84
+ longestLineRaw % 2 === 0 ? longestLineRaw + 2 : longestLineRaw + 3
84
85
 
85
- logger.log('');
86
+ logger.log('')
86
87
 
87
88
  this.data.forEach(({ type, data }) => {
88
89
  switch (type) {
89
- case 'header': {
90
- const dataLength = data.replace(consoleStyleReplacer, '').length;
91
- const spacersLength = (longestLine - (dataLength % 2 === 0 ? dataLength : (dataLength + 1))) / 2;
92
-
93
- logger.log(`${TOP_LEFT_SEPARATOR}${HORIZONTAL_SEPARATOR.repeat(spacersLength)}${EMPTY_CHAR}${data}${EMPTY_CHAR}${HORIZONTAL_SEPARATOR.repeat(dataLength % 2 === 0 ? spacersLength : spacersLength + 1)}${TOP_RIGHT_SEPARATOR}`);
94
- break;
95
- }
96
-
97
- case 'line': {
98
- logger.log(`${VERTICAL_SEPARATOR}${EMPTY_CHAR}${data}${EMPTY_CHAR.repeat(longestLine - data.replace(consoleStyleReplacer, '').length || 1)}${EMPTY_CHAR}${VERTICAL_SEPARATOR}`);
99
- break;
100
- }
101
-
102
- case 'separator': {
103
- const dataLength = data.replace(consoleStyleReplacer, '').length;
104
- const spacersLength = (longestLine - (dataLength % 2 === 0 ? dataLength : (dataLength + 1))) / 2;
105
-
106
- logger.log(`${MIDDLE_LEFT_SEPARATOR}${HORIZONTAL_SEPARATOR.repeat(spacersLength)}${EMPTY_CHAR}${data}${EMPTY_CHAR}${HORIZONTAL_SEPARATOR.repeat(dataLength % 2 === 0 ? spacersLength : spacersLength + 1)}${MIDDLE_RIGHT_SEPARATOR}`);
107
- break;
108
- }
109
-
110
- case 'empty-line': {
111
- logger.log(`${VERTICAL_SEPARATOR}${EMPTY_CHAR.repeat(longestLine + 2)}${VERTICAL_SEPARATOR}`);
112
- break;
113
- }
114
-
115
- default: {
116
- //
117
- }
90
+ case 'header': {
91
+ const dataLength = data.replace(
92
+ consoleStyleReplacer,
93
+ ''
94
+ ).length
95
+ const spacersLength =
96
+ (longestLine -
97
+ (dataLength % 2 === 0
98
+ ? dataLength
99
+ : dataLength + 1)) /
100
+ 2
101
+
102
+ logger.log(
103
+ `${TOP_LEFT_SEPARATOR}${HORIZONTAL_SEPARATOR.repeat(
104
+ spacersLength
105
+ )}${EMPTY_CHAR}${data}${EMPTY_CHAR}${HORIZONTAL_SEPARATOR.repeat(
106
+ dataLength % 2 === 0
107
+ ? spacersLength
108
+ : spacersLength + 1
109
+ )}${TOP_RIGHT_SEPARATOR}`
110
+ )
111
+ break
112
+ }
113
+
114
+ case 'line': {
115
+ logger.log(
116
+ `${VERTICAL_SEPARATOR}${EMPTY_CHAR}${data}${EMPTY_CHAR.repeat(
117
+ longestLine -
118
+ data.replace(consoleStyleReplacer, '').length ||
119
+ 1
120
+ )}${EMPTY_CHAR}${VERTICAL_SEPARATOR}`
121
+ )
122
+ break
123
+ }
124
+
125
+ case 'separator': {
126
+ const dataLength = data.replace(
127
+ consoleStyleReplacer,
128
+ ''
129
+ ).length
130
+ const spacersLength =
131
+ (longestLine -
132
+ (dataLength % 2 === 0
133
+ ? dataLength
134
+ : dataLength + 1)) /
135
+ 2
136
+
137
+ logger.log(
138
+ `${MIDDLE_LEFT_SEPARATOR}${HORIZONTAL_SEPARATOR.repeat(
139
+ spacersLength
140
+ )}${EMPTY_CHAR}${data}${EMPTY_CHAR}${HORIZONTAL_SEPARATOR.repeat(
141
+ dataLength % 2 === 0
142
+ ? spacersLength
143
+ : spacersLength + 1
144
+ )}${MIDDLE_RIGHT_SEPARATOR}`
145
+ )
146
+ break
147
+ }
148
+
149
+ case 'empty-line': {
150
+ logger.log(
151
+ `${VERTICAL_SEPARATOR}${EMPTY_CHAR.repeat(
152
+ longestLine + 2
153
+ )}${VERTICAL_SEPARATOR}`
154
+ )
155
+ break
156
+ }
157
+
158
+ default: {
159
+ //
160
+ }
118
161
  }
119
- });
162
+ })
120
163
 
121
- logger.logN(`${BOTTOM_LEFT_SEPARATOR}${HORIZONTAL_SEPARATOR.repeat(longestLine + 2)}${BOTTOM_RIGHT_SEPARATOR}`);
164
+ logger.logN(
165
+ `${BOTTOM_LEFT_SEPARATOR}${HORIZONTAL_SEPARATOR.repeat(
166
+ longestLine + 2
167
+ )}${BOTTOM_RIGHT_SEPARATOR}`
168
+ )
122
169
  }
123
170
  }
124
171
 
125
- module.exports = ConsoleBlock;
172
+ module.exports = ConsoleBlock