@automattic/vip 4.1.6 → 4.1.8

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 (311) hide show
  1. package/assets/dev-env.lando.template.yml.ejs +1 -1
  2. package/dist/bin/vip-app-deploy-token-generate.js +110 -78
  3. package/dist/bin/vip-app-deploy-token.js +24 -16
  4. package/dist/bin/vip-app-deploy-validate.js +45 -41
  5. package/dist/bin/vip-app-deploy.js +222 -215
  6. package/dist/bin/vip-app-list.js +59 -43
  7. package/dist/bin/vip-app.js +97 -66
  8. package/dist/bin/vip-backup-db.js +36 -29
  9. package/dist/bin/vip-backup.js +16 -9
  10. package/dist/bin/vip-cache-purge-url.js +93 -55
  11. package/dist/bin/vip-cache.js +23 -14
  12. package/dist/bin/vip-config-envvar-delete.js +74 -73
  13. package/dist/bin/vip-config-envvar-get-all.js +68 -68
  14. package/dist/bin/vip-config-envvar-get.js +46 -46
  15. package/dist/bin/vip-config-envvar-list.js +54 -57
  16. package/dist/bin/vip-config-envvar-set.js +102 -96
  17. package/dist/bin/vip-config-envvar.js +38 -24
  18. package/dist/bin/vip-config-software-get.js +88 -75
  19. package/dist/bin/vip-config-software-update.js +116 -120
  20. package/dist/bin/vip-config-software.js +31 -21
  21. package/dist/bin/vip-config.js +25 -17
  22. package/dist/bin/vip-db-phpmyadmin.js +40 -39
  23. package/dist/bin/vip-db.js +13 -12
  24. package/dist/bin/vip-defensive-mode-configure.js +197 -197
  25. package/dist/bin/vip-defensive-mode-disable.js +43 -35
  26. package/dist/bin/vip-defensive-mode-enable.js +47 -38
  27. package/dist/bin/vip-defensive-mode.js +28 -17
  28. package/dist/bin/vip-dev-env-create.js +147 -104
  29. package/dist/bin/vip-dev-env-destroy.js +48 -39
  30. package/dist/bin/vip-dev-env-envvar-delete.js +60 -49
  31. package/dist/bin/vip-dev-env-envvar-get-all.js +52 -45
  32. package/dist/bin/vip-dev-env-envvar-get.js +48 -37
  33. package/dist/bin/vip-dev-env-envvar-list.js +48 -41
  34. package/dist/bin/vip-dev-env-envvar-set.js +83 -70
  35. package/dist/bin/vip-dev-env-envvar.js +38 -23
  36. package/dist/bin/vip-dev-env-exec.js +81 -74
  37. package/dist/bin/vip-dev-env-import-media.js +34 -26
  38. package/dist/bin/vip-dev-env-import-sql.js +65 -51
  39. package/dist/bin/vip-dev-env-import.js +23 -14
  40. package/dist/bin/vip-dev-env-info.js +59 -50
  41. package/dist/bin/vip-dev-env-list.js +34 -31
  42. package/dist/bin/vip-dev-env-logs.js +59 -49
  43. package/dist/bin/vip-dev-env-purge.js +71 -63
  44. package/dist/bin/vip-dev-env-shell.js +82 -71
  45. package/dist/bin/vip-dev-env-start.js +77 -65
  46. package/dist/bin/vip-dev-env-stop.js +80 -74
  47. package/dist/bin/vip-dev-env-sync-sql.js +80 -72
  48. package/dist/bin/vip-dev-env-sync.js +18 -11
  49. package/dist/bin/vip-dev-env-update.js +93 -84
  50. package/dist/bin/vip-dev-env.js +25 -8
  51. package/dist/bin/vip-edge-workers-build.js +82 -54
  52. package/dist/bin/vip-edge-workers-delete.js +84 -52
  53. package/dist/bin/vip-edge-workers-deploy.js +186 -126
  54. package/dist/bin/vip-edge-workers-disable.js +75 -44
  55. package/dist/bin/vip-edge-workers-enable.js +86 -54
  56. package/dist/bin/vip-edge-workers-get.js +108 -88
  57. package/dist/bin/vip-edge-workers-init.js +83 -53
  58. package/dist/bin/vip-edge-workers-list.js +89 -54
  59. package/dist/bin/vip-edge-workers-new.js +98 -69
  60. package/dist/bin/vip-edge-workers-validate.js +123 -82
  61. package/dist/bin/vip-edge-workers.js +19 -6
  62. package/dist/bin/vip-export-sql.js +75 -69
  63. package/dist/bin/vip-export.js +12 -7
  64. package/dist/bin/vip-import-media-abort.js +99 -73
  65. package/dist/bin/vip-import-media-status.js +83 -51
  66. package/dist/bin/vip-import-media.js +165 -166
  67. package/dist/bin/vip-import-sql-status.js +75 -45
  68. package/dist/bin/vip-import-sql.js +536 -596
  69. package/dist/bin/vip-import-validate-files.js +122 -141
  70. package/dist/bin/vip-import-validate-sql.js +52 -16
  71. package/dist/bin/vip-import.js +16 -7
  72. package/dist/bin/vip-logout.js +17 -13
  73. package/dist/bin/vip-logs.js +209 -183
  74. package/dist/bin/vip-search-replace.js +85 -53
  75. package/dist/bin/vip-slowlogs.js +168 -147
  76. package/dist/bin/vip-sync.js +163 -133
  77. package/dist/bin/vip-whoami.js +71 -35
  78. package/dist/bin/vip-wp.js +506 -549
  79. package/dist/bin/vip.js +161 -116
  80. package/dist/commands/backup-db.js +183 -149
  81. package/dist/commands/dev-env-import-sql.js +162 -117
  82. package/dist/commands/dev-env-sync-sql.js +372 -330
  83. package/dist/commands/export-sql.js +441 -425
  84. package/dist/commands/phpmyadmin.js +232 -212
  85. package/dist/commands/wp-ssh.js +218 -187
  86. package/dist/lib/analytics/clients/tracks.js +84 -91
  87. package/dist/lib/analytics/index.js +27 -27
  88. package/dist/lib/api/app.js +37 -36
  89. package/dist/lib/api/cache-purge.js +17 -20
  90. package/dist/lib/api/constants.js +5 -6
  91. package/dist/lib/api/edge-workers.js +84 -135
  92. package/dist/lib/api/error-debug.js +10 -13
  93. package/dist/lib/api/feature-flags.js +16 -17
  94. package/dist/lib/api/http.js +47 -48
  95. package/dist/lib/api/user.js +17 -18
  96. package/dist/lib/api.js +107 -116
  97. package/dist/lib/app-logs/app-logs.js +24 -25
  98. package/dist/lib/app-slowlogs/app-slowlogs.js +23 -24
  99. package/dist/lib/app-slowlogs/types.js +2 -1
  100. package/dist/lib/app.js +6 -8
  101. package/dist/lib/backup-storage-availability/backup-storage-availability.js +119 -119
  102. package/dist/lib/backup-storage-availability/docker-machine-not-found-error.js +5 -6
  103. package/dist/lib/cli/apiConfig.js +71 -41
  104. package/dist/lib/cli/command.js +1120 -873
  105. package/dist/lib/cli/config.js +29 -29
  106. package/dist/lib/cli/envAlias.js +35 -50
  107. package/dist/lib/cli/exit.js +19 -19
  108. package/dist/lib/cli/format.js +172 -172
  109. package/dist/lib/cli/progress.js +193 -236
  110. package/dist/lib/cli/prompt.js +14 -15
  111. package/dist/lib/cli/runtime-mode.js +5 -6
  112. package/dist/lib/client-file-uploader.js +489 -641
  113. package/dist/lib/config/software.js +206 -212
  114. package/dist/lib/constants/dev-environment.js +40 -37
  115. package/dist/lib/constants/file-size.js +6 -7
  116. package/dist/lib/constants/vipgo.js +24 -12
  117. package/dist/lib/custom-deploy/custom-deploy.js +138 -120
  118. package/dist/lib/database.js +88 -85
  119. package/dist/lib/defensive-mode/api.js +41 -46
  120. package/dist/lib/defensive-mode/cli-helpers.js +40 -40
  121. package/dist/lib/dev-environment/dev-environment-cli.js +776 -735
  122. package/dist/lib/dev-environment/dev-environment-configuration-file.js +224 -191
  123. package/dist/lib/dev-environment/dev-environment-core.js +697 -732
  124. package/dist/lib/dev-environment/dev-environment-database.js +57 -41
  125. package/dist/lib/dev-environment/dev-environment-lando.js +734 -666
  126. package/dist/lib/dev-environment/docker-utils.js +96 -90
  127. package/dist/lib/dev-environment/env-vars.js +61 -59
  128. package/dist/lib/dev-environment/lando-loader.js +6 -7
  129. package/dist/lib/dev-environment/types.js +2 -1
  130. package/dist/lib/edge-workers/confirmation.js +42 -36
  131. package/dist/lib/edge-workers/deployment.js +150 -159
  132. package/dist/lib/edge-workers/index.js +68 -85
  133. package/dist/lib/edge-workers/location.js +26 -26
  134. package/dist/lib/edge-workers/output.js +14 -15
  135. package/dist/lib/edge-workers/project.js +123 -132
  136. package/dist/lib/edge-workers/toolchains/assemblyscript/constants.js +6 -8
  137. package/dist/lib/edge-workers/toolchains/assemblyscript/index.js +100 -101
  138. package/dist/lib/edge-workers/toolchains/assemblyscript/templates.js +31 -33
  139. package/dist/lib/edge-workers/toolchains/index.js +15 -15
  140. package/dist/lib/edge-workers/types.js +10 -38
  141. package/dist/lib/edge-workers/validation.js +161 -150
  142. package/dist/lib/env.js +16 -17
  143. package/dist/lib/envvar/api-delete.js +16 -18
  144. package/dist/lib/envvar/api-get-all.js +15 -19
  145. package/dist/lib/envvar/api-get.js +8 -9
  146. package/dist/lib/envvar/api-list.js +16 -21
  147. package/dist/lib/envvar/api-set.js +20 -19
  148. package/dist/lib/envvar/api.js +34 -29
  149. package/dist/lib/envvar/input.js +29 -34
  150. package/dist/lib/envvar/logging.js +9 -11
  151. package/dist/lib/envvar/read-file.js +6 -7
  152. package/dist/lib/http/download-file.js +76 -44
  153. package/dist/lib/http/proxy-agent.js +37 -40
  154. package/dist/lib/http/proxy-dispatcher.js +69 -71
  155. package/dist/lib/keychain/insecure.js +40 -36
  156. package/dist/lib/keychain/keychain.js +2 -1
  157. package/dist/lib/keychain/secure.js +16 -15
  158. package/dist/lib/keychain.js +22 -22
  159. package/dist/lib/live-backup-copy.js +117 -115
  160. package/dist/lib/logout.js +17 -19
  161. package/dist/lib/media-import/config.js +15 -14
  162. package/dist/lib/media-import/media-file-import.js +9 -13
  163. package/dist/lib/media-import/progress.js +53 -65
  164. package/dist/lib/media-import/status.js +241 -256
  165. package/dist/lib/media-import/utils.js +15 -15
  166. package/dist/lib/node-version-check.js +16 -16
  167. package/dist/lib/promise.js +16 -17
  168. package/dist/lib/read-file.js +48 -16
  169. package/dist/lib/rechallenge/client.js +37 -43
  170. package/dist/lib/rechallenge/errors.js +38 -37
  171. package/dist/lib/rechallenge/flow.js +148 -123
  172. package/dist/lib/rechallenge/index.js +23 -24
  173. package/dist/lib/rechallenge/link.js +153 -151
  174. package/dist/lib/rechallenge/open-browser.js +14 -17
  175. package/dist/lib/rechallenge/token-cache.js +83 -86
  176. package/dist/lib/rechallenge/types.js +5 -14
  177. package/dist/lib/retry.js +93 -129
  178. package/dist/lib/search-and-replace.js +164 -148
  179. package/dist/lib/site-import/db-file-import.js +12 -16
  180. package/dist/lib/site-import/status.js +291 -291
  181. package/dist/lib/token.js +86 -87
  182. package/dist/lib/tracker.js +51 -62
  183. package/dist/lib/types/graphql/rate-limit-exceeded-error.js +2 -1
  184. package/dist/lib/types.js +2 -1
  185. package/dist/lib/user-error.js +6 -8
  186. package/dist/lib/utils.js +81 -87
  187. package/dist/lib/validations/custom-deploy.js +218 -186
  188. package/dist/lib/validations/is-multi-site-sql-dump.js +6 -6
  189. package/dist/lib/validations/is-multi-site.js +83 -50
  190. package/dist/lib/validations/is-multisite-domain-mapped.js +92 -62
  191. package/dist/lib/validations/line-by-line.js +78 -46
  192. package/dist/lib/validations/site-type.js +59 -63
  193. package/dist/lib/validations/sql-insert-parser.js +415 -0
  194. package/dist/lib/validations/sql.js +551 -431
  195. package/dist/lib/validations/utils.js +27 -29
  196. package/dist/lib/vip-import-validate-files.js +481 -490
  197. package/dist/lib/wp/helpers.js +41 -45
  198. package/dist/lib/wp/readline.js +21 -57
  199. package/dist/lib/xdg-data.js +11 -12
  200. package/helpers/mark-cli-executable.js +9 -0
  201. package/node_modules/@apollo/client/CHANGELOG.md +10 -0
  202. package/node_modules/@apollo/client/__cjs/cache/inmemory/helpers.cjs +5 -0
  203. package/node_modules/@apollo/client/__cjs/cache/inmemory/helpers.cjs.map +1 -1
  204. package/node_modules/@apollo/client/__cjs/cache/inmemory/inMemoryCache.cjs +2 -1
  205. package/node_modules/@apollo/client/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  206. package/node_modules/@apollo/client/__cjs/cache/inmemory/key-extractor.cjs +14 -2
  207. package/node_modules/@apollo/client/__cjs/cache/inmemory/key-extractor.cjs.map +1 -1
  208. package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.cjs +16 -0
  209. package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.cjs.map +1 -1
  210. package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.d.cts +2 -0
  211. package/node_modules/@apollo/client/__cjs/cache/inmemory/writeToStore.cjs +3 -2
  212. package/node_modules/@apollo/client/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  213. package/node_modules/@apollo/client/__cjs/core/QueryInfo.cjs +9 -1
  214. package/node_modules/@apollo/client/__cjs/core/QueryInfo.cjs.map +1 -1
  215. package/node_modules/@apollo/client/__cjs/core/QueryInfo.d.cts +1 -1
  216. package/node_modules/@apollo/client/__cjs/core/QueryManager.cjs +10 -3
  217. package/node_modules/@apollo/client/__cjs/core/QueryManager.cjs.map +1 -1
  218. package/node_modules/@apollo/client/__cjs/react/hooks/useFragment.cjs.map +1 -1
  219. package/node_modules/@apollo/client/__cjs/react/hooks/useFragment.d.cts +42 -43
  220. package/node_modules/@apollo/client/__cjs/version.cjs +1 -1
  221. package/node_modules/@apollo/client/cache/inmemory/helpers.js +5 -0
  222. package/node_modules/@apollo/client/cache/inmemory/helpers.js.map +1 -1
  223. package/node_modules/@apollo/client/cache/inmemory/inMemoryCache.js +2 -1
  224. package/node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.map +1 -1
  225. package/node_modules/@apollo/client/cache/inmemory/key-extractor.js +14 -2
  226. package/node_modules/@apollo/client/cache/inmemory/key-extractor.js.map +1 -1
  227. package/node_modules/@apollo/client/cache/inmemory/policies.d.ts +2 -0
  228. package/node_modules/@apollo/client/cache/inmemory/policies.js +17 -1
  229. package/node_modules/@apollo/client/cache/inmemory/policies.js.map +1 -1
  230. package/node_modules/@apollo/client/cache/inmemory/writeToStore.js +3 -2
  231. package/node_modules/@apollo/client/cache/inmemory/writeToStore.js.map +1 -1
  232. package/node_modules/@apollo/client/core/QueryInfo.d.ts +1 -1
  233. package/node_modules/@apollo/client/core/QueryInfo.js +10 -2
  234. package/node_modules/@apollo/client/core/QueryInfo.js.map +1 -1
  235. package/node_modules/@apollo/client/core/QueryManager.js +10 -3
  236. package/node_modules/@apollo/client/core/QueryManager.js.map +1 -1
  237. package/node_modules/@apollo/client/package.json +1 -1
  238. package/node_modules/@apollo/client/react/hooks/useFragment.d.ts +42 -43
  239. package/node_modules/@apollo/client/react/hooks/useFragment.js.map +1 -1
  240. package/node_modules/@apollo/client/react/hooks-compiled/useFragment.d.ts +42 -43
  241. package/node_modules/@apollo/client/react/hooks-compiled/useFragment.js.map +1 -1
  242. package/node_modules/@apollo/client/version.js +1 -1
  243. package/node_modules/@automattic/vip-search-replace/README.md +6 -1
  244. package/node_modules/@automattic/vip-search-replace/lib/index.js +46 -14
  245. package/node_modules/@automattic/vip-search-replace/package.json +1 -1
  246. package/node_modules/@types/node/README.md +1 -1
  247. package/node_modules/@types/node/package.json +2 -2
  248. package/node_modules/@types/node/zlib.d.ts +752 -0
  249. package/node_modules/check-disk-space/README.md +92 -32
  250. package/node_modules/check-disk-space/dist/check-disk-space.d.mts +58 -0
  251. package/node_modules/check-disk-space/dist/check-disk-space.mjs +170 -190
  252. package/node_modules/check-disk-space/package.json +43 -71
  253. package/node_modules/cpu-features/build/Makefile +2 -2
  254. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/filesystem.o.d +1 -1
  255. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_linux_or_android.o.d +1 -1
  256. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_macos_or_iphone.o.d +1 -1
  257. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_windows.o.d +1 -1
  258. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_arm_linux_or_android.o.d +1 -1
  259. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_mips_linux_or_android.o.d +1 -1
  260. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_ppc_linux.o.d +1 -1
  261. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_freebsd.o.d +1 -1
  262. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_linux_or_android.o.d +1 -1
  263. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_macos.o.d +1 -1
  264. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_windows.o.d +1 -1
  265. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/stack_line_reader.o.d +1 -1
  266. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/string_view.o.d +1 -1
  267. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpufeatures/src/binding.o.d +157 -145
  268. package/node_modules/cpu-features/build/Release/cpufeatures.node +0 -0
  269. package/node_modules/cpu-features/build/Release/obj.target/cpufeatures/src/binding.o +0 -0
  270. package/node_modules/cpu-features/build/Release/obj.target/cpufeatures.node +0 -0
  271. package/node_modules/cpu-features/build/config.gypi +100 -31
  272. package/node_modules/cpu-features/build/cpufeatures.target.mk +14 -14
  273. package/node_modules/cpu-features/build/deps/cpu_features/cpu_features.target.mk +14 -14
  274. package/node_modules/ssh2/lib/protocol/crypto/build/Makefile +2 -2
  275. package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto/src/binding.o.d.raw +136 -0
  276. package/node_modules/ssh2/lib/protocol/crypto/build/sshcrypto.target.mk +14 -14
  277. package/node_modules/undici/docs/docs/api/Interceptors.md +15 -2
  278. package/node_modules/undici/lib/dispatcher/client-h2.js +78 -3
  279. package/node_modules/undici/lib/dispatcher/pool-base.js +20 -3
  280. package/node_modules/undici/package.json +3 -3
  281. package/node_modules/undici/types/api.d.ts +1 -1
  282. package/node_modules/undici/types/utility.d.ts +4 -4
  283. package/package.json +44 -13
  284. package/dist/lib/analytics/clients/client.js +0 -1
  285. package/dist/lib/analytics/clients/pendo.js +0 -78
  286. package/helpers/check-version.js +0 -16
  287. package/node_modules/check-disk-space/dist/check-disk-space.cjs +0 -210
  288. package/node_modules/check-disk-space/dist/check-disk-space.d.ts +0 -53
  289. package/node_modules/fetch-retry/.eslintignore +0 -1
  290. package/node_modules/fetch-retry/.eslintrc.yml +0 -20
  291. package/node_modules/fetch-retry/.github/workflows/node.js.yml +0 -32
  292. package/node_modules/fetch-retry/.husky/pre-commit +0 -6
  293. package/node_modules/fetch-retry/.nycrc.json +0 -24
  294. package/node_modules/fetch-retry/.travis.yml +0 -3
  295. package/node_modules/fetch-retry/LICENSE +0 -21
  296. package/node_modules/fetch-retry/README.md +0 -128
  297. package/node_modules/fetch-retry/dist/fetch-retry.umd.js +0 -151
  298. package/node_modules/fetch-retry/index.d.ts +0 -29
  299. package/node_modules/fetch-retry/index.js +0 -143
  300. package/node_modules/fetch-retry/package.json +0 -41
  301. package/node_modules/fetch-retry/rollup.config.js +0 -12
  302. package/node_modules/fetch-retry/test/.eslintrc.yml +0 -7
  303. package/node_modules/fetch-retry/test/integration/index.js +0 -212
  304. package/node_modules/fetch-retry/test/integration/mock-api/index.js +0 -42
  305. package/node_modules/fetch-retry/test/unit/index.js +0 -1169
  306. package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto/src/binding.o.d +0 -265
  307. package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto.node.d +0 -1
  308. package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/sshcrypto.node.d +0 -1
  309. package/node_modules/ssh2/lib/protocol/crypto/build/Release/obj.target/sshcrypto/src/binding.o +0 -0
  310. package/node_modules/ssh2/lib/protocol/crypto/build/Release/obj.target/sshcrypto.node +0 -0
  311. package/node_modules/ssh2/lib/protocol/crypto/build/Release/sshcrypto.node +0 -0
@@ -1,221 +1,254 @@
1
1
  "use strict";
2
-
3
- exports.__esModule = true;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
4
39
  exports.CONFIGURATION_TEMPLATE_FILE_NAME = exports.CONFIGURATION_FILE_NAME = void 0;
5
40
  exports.getConfigurationFileOptions = getConfigurationFileOptions;
6
41
  exports.mergeConfigurationFileOptions = mergeConfigurationFileOptions;
7
- var _chalk = _interopRequireDefault(require("chalk"));
8
- var _debug = _interopRequireDefault(require("debug"));
9
- var _jsYaml = _interopRequireWildcard(require("js-yaml"));
10
- var _promises = require("node:fs/promises");
11
- var _nodePath = _interopRequireDefault(require("node:path"));
12
- var _devEnvironmentCli = require("./dev-environment-cli");
13
- var exit = _interopRequireWildcard(require("../cli/exit"));
14
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
- const debug = (0, _debug.default)('@automattic/vip:bin:dev-environment');
17
- const CONFIGURATION_FILE_NAME = exports.CONFIGURATION_FILE_NAME = 'vip-dev-env.yml';
18
- const CONFIGURATION_TEMPLATE_FILE_NAME = exports.CONFIGURATION_TEMPLATE_FILE_NAME = 'vip-dev-env.yml.ejs';
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const debug_1 = __importDefault(require("debug"));
44
+ const js_yaml_1 = __importStar(require("js-yaml"));
45
+ const promises_1 = require("node:fs/promises");
46
+ const node_path_1 = __importDefault(require("node:path"));
47
+ const dev_environment_cli_1 = require("./dev-environment-cli");
48
+ const exit = __importStar(require("../cli/exit"));
49
+ const debug = (0, debug_1.default)('@automattic/vip:bin:dev-environment');
50
+ exports.CONFIGURATION_FILE_NAME = 'vip-dev-env.yml';
51
+ exports.CONFIGURATION_TEMPLATE_FILE_NAME = 'vip-dev-env.yml.ejs';
19
52
  const ALLOWED_CONFIG_DIR_TEMPLATE = /<%=\s*configDir\s*%>/g;
20
53
  const EJS_TEMPLATE_TAG = /<%[\s\S]*?%>/;
21
54
  async function getConfigurationFileOptions() {
22
- const configurationFile = await findConfigurationFile();
23
- if (configurationFile === false) {
24
- return {};
25
- }
26
- const {
27
- configurationPath,
28
- configurationContents
29
- } = configurationFile;
30
- let configurationFromFile = {};
31
- try {
32
- configurationFromFile = _jsYaml.default.load(configurationContents, {
33
- // Only allow strings, arrays, and objects to be parsed from configuration file
34
- // This causes number-looking values like `php: 8.1` to be parsed directly into strings
35
- schema: _jsYaml.FAILSAFE_SCHEMA
36
- });
37
- } catch (err) {
38
- const messageToShow = `Configuration file ${_chalk.default.grey(configurationPath)} could not be loaded:\n` + err.toString();
39
- exit.withError(messageToShow);
40
- }
41
- try {
42
- let configuration = sanitizeConfiguration(configurationFromFile, configurationPath);
43
- configuration = adjustRelativePaths(configuration, configurationPath);
44
- debug('Sanitized configuration from file:', configuration);
45
- return configuration;
46
- } catch (err) {
47
- exit.withError(err instanceof Error ? err : new Error('Unknown error'));
48
- }
55
+ const configurationFile = await findConfigurationFile();
56
+ if (configurationFile === false) {
57
+ return {};
58
+ }
59
+ const { configurationPath, configurationContents } = configurationFile;
60
+ let configurationFromFile = {};
61
+ try {
62
+ configurationFromFile = js_yaml_1.default.load(configurationContents, {
63
+ // Only allow strings, arrays, and objects to be parsed from configuration file
64
+ // This causes number-looking values like `php: 8.1` to be parsed directly into strings
65
+ schema: js_yaml_1.FAILSAFE_SCHEMA,
66
+ });
67
+ }
68
+ catch (err) {
69
+ const messageToShow = `Configuration file ${chalk_1.default.grey(configurationPath)} could not be loaded:\n` +
70
+ err.toString();
71
+ exit.withError(messageToShow);
72
+ }
73
+ try {
74
+ let configuration = sanitizeConfiguration(configurationFromFile, configurationPath);
75
+ configuration = adjustRelativePaths(configuration, configurationPath);
76
+ debug('Sanitized configuration from file:', configuration);
77
+ return configuration;
78
+ }
79
+ catch (err) {
80
+ exit.withError(err instanceof Error ? err : new Error('Unknown error'));
81
+ }
49
82
  }
50
83
  function sanitizeConfiguration(configuration, configurationFilePath) {
51
- const genericConfigurationError = `Configuration file ${_chalk.default.grey(configurationFilePath)} is available but ` + `couldn't be loaded. Ensure there is a ${_chalk.default.cyan('configuration-version')} and ${_chalk.default.cyan('slug')} ` + `configured. For example:\n\n${_chalk.default.grey(getConfigurationFileExample())}`;
52
- if (Array.isArray(configuration) || typeof configuration !== 'object') {
53
- throw new Error(genericConfigurationError);
54
- }
55
- const version = configuration['configuration-version'];
56
- if (typeof version !== 'string' && typeof version !== 'number' || configuration.slug === undefined || configuration.slug === null) {
57
- throw new Error(genericConfigurationError);
58
- }
59
- const validVersions = getAllConfigurationFileVersions().map(ver => _chalk.default.cyan(ver)).join(', ');
60
- if (!isValidConfigurationFileVersion(version.toString())) {
61
- throw new Error(`Configuration file ${_chalk.default.grey(configurationFilePath)} has an invalid ` + `${_chalk.default.cyan('configuration-version')} key. Update to a supported version. For example:\n\n` + _chalk.default.grey(getConfigurationFileExample()) + `\nSupported configuration versions: ${validVersions}.\n`);
62
- }
63
- const stringToBooleanIfDefined = value => {
64
- if (typeof value !== 'string' || !['true', 'false'].includes(value)) {
65
- return undefined;
84
+ const genericConfigurationError = `Configuration file ${chalk_1.default.grey(configurationFilePath)} is available but ` +
85
+ `couldn't be loaded. Ensure there is a ${chalk_1.default.cyan('configuration-version')} and ${chalk_1.default.cyan('slug')} ` +
86
+ `configured. For example:\n\n${chalk_1.default.grey(getConfigurationFileExample())}`;
87
+ if (Array.isArray(configuration) || typeof configuration !== 'object') {
88
+ throw new Error(genericConfigurationError);
89
+ }
90
+ const version = configuration['configuration-version'];
91
+ if ((typeof version !== 'string' && typeof version !== 'number') ||
92
+ configuration.slug === undefined ||
93
+ configuration.slug === null) {
94
+ throw new Error(genericConfigurationError);
66
95
  }
67
- return value === 'true';
68
- };
69
- const configurationMeta = {
70
- 'configuration-path': configurationFilePath
71
- };
72
- const sanitizedConfiguration = {
73
- version: version.toString(),
74
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
75
- slug: configuration.slug.toString(),
76
- // NOSONAR
77
- title: configuration.title?.toString(),
78
- multisite: (0, _devEnvironmentCli.resolveMultisite)((0, _devEnvironmentCli.processStringOrBooleanOption)(configuration.multisite)),
79
- php: configuration.php?.toString(),
80
- wordpress: configuration.wordpress?.toString(),
81
- 'mu-plugins': configuration['mu-plugins']?.toString(),
82
- 'app-code': configuration['app-code']?.toString(),
83
- elasticsearch: stringToBooleanIfDefined(configuration.elasticsearch),
84
- phpmyadmin: stringToBooleanIfDefined(configuration.phpmyadmin),
85
- xdebug: stringToBooleanIfDefined(configuration.xdebug),
86
- mailpit: stringToBooleanIfDefined(configuration.mailpit),
87
- 'media-redirect-domain': configuration['media-redirect-domain']?.toString(),
88
- photon: stringToBooleanIfDefined(configuration.photon),
89
- cron: stringToBooleanIfDefined(configuration.cron),
90
- overrides: configuration.overrides?.toString(),
91
- meta: configurationMeta
92
- };
93
-
94
- // Remove undefined values
95
- Object.keys(sanitizedConfiguration).forEach(
96
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
97
- key => sanitizedConfiguration[key] === undefined && delete sanitizedConfiguration[key]);
98
- return sanitizedConfiguration;
96
+ const validVersions = getAllConfigurationFileVersions()
97
+ .map(ver => chalk_1.default.cyan(ver))
98
+ .join(', ');
99
+ if (!isValidConfigurationFileVersion(version.toString())) {
100
+ throw new Error(`Configuration file ${chalk_1.default.grey(configurationFilePath)} has an invalid ` +
101
+ `${chalk_1.default.cyan('configuration-version')} key. Update to a supported version. For example:\n\n` +
102
+ chalk_1.default.grey(getConfigurationFileExample()) +
103
+ `\nSupported configuration versions: ${validVersions}.\n`);
104
+ }
105
+ const stringToBooleanIfDefined = (value) => {
106
+ if (typeof value !== 'string' || !['true', 'false'].includes(value)) {
107
+ return undefined;
108
+ }
109
+ return value === 'true';
110
+ };
111
+ const configurationMeta = {
112
+ 'configuration-path': configurationFilePath,
113
+ };
114
+ const sanitizedConfiguration = {
115
+ version: version.toString(),
116
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
117
+ slug: configuration.slug.toString(), // NOSONAR
118
+ title: configuration.title?.toString(),
119
+ multisite: (0, dev_environment_cli_1.resolveMultisite)((0, dev_environment_cli_1.processStringOrBooleanOption)(configuration.multisite)),
120
+ php: configuration.php?.toString(),
121
+ wordpress: configuration.wordpress?.toString(),
122
+ 'mu-plugins': configuration['mu-plugins']?.toString(),
123
+ 'app-code': configuration['app-code']?.toString(),
124
+ elasticsearch: stringToBooleanIfDefined(configuration.elasticsearch),
125
+ phpmyadmin: stringToBooleanIfDefined(configuration.phpmyadmin),
126
+ xdebug: stringToBooleanIfDefined(configuration.xdebug),
127
+ mailpit: stringToBooleanIfDefined(configuration.mailpit),
128
+ 'media-redirect-domain': configuration['media-redirect-domain']?.toString(),
129
+ photon: stringToBooleanIfDefined(configuration.photon),
130
+ cron: stringToBooleanIfDefined(configuration.cron),
131
+ overrides: configuration.overrides?.toString(),
132
+ meta: configurationMeta,
133
+ };
134
+ // Remove undefined values
135
+ Object.keys(sanitizedConfiguration).forEach(
136
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
137
+ key => sanitizedConfiguration[key] === undefined && delete sanitizedConfiguration[key]);
138
+ return sanitizedConfiguration;
99
139
  }
100
140
  function adjustRelativePaths(configuration, configurationFilePath) {
101
- const configurationDirectory = _nodePath.default.resolve(_nodePath.default.dirname(configurationFilePath));
102
- const imageOption = ['demo', 'image'];
103
- for (const option of ['app-code', 'mu-plugins']) {
104
- const value = configuration[option];
105
- if (value && !imageOption.includes(value)) {
106
- configuration[option] = _nodePath.default.isAbsolute(value) ? value : _nodePath.default.join(configurationDirectory, value);
141
+ const configurationDirectory = node_path_1.default.resolve(node_path_1.default.dirname(configurationFilePath));
142
+ const imageOption = ['demo', 'image'];
143
+ for (const option of ['app-code', 'mu-plugins']) {
144
+ const value = configuration[option];
145
+ if (value && !imageOption.includes(value)) {
146
+ configuration[option] = node_path_1.default.isAbsolute(value)
147
+ ? value
148
+ : node_path_1.default.join(configurationDirectory, value);
149
+ }
107
150
  }
108
- }
109
- return configuration;
151
+ return configuration;
110
152
  }
111
153
  function mergeConfigurationFileOptions(preselectedOptions, configurationFileOptions) {
112
- // configurationFileOptions holds different parameters than present in
113
- // preselectedOptions like "slug", and friendly-named parameters (e.g.
114
- // 'app-code' vs 'appCode'). Selectively merge configurationFileOptions
115
- // parameters into preselectedOptions.
116
- const configurationFileInstanceOptions = {
117
- title: configurationFileOptions.title,
118
- multisite: configurationFileOptions.multisite,
119
- php: configurationFileOptions.php,
120
- wordpress: configurationFileOptions.wordpress,
121
- muPlugins: configurationFileOptions['mu-plugins'],
122
- appCode: configurationFileOptions['app-code'],
123
- elasticsearch: configurationFileOptions.elasticsearch,
124
- phpmyadmin: configurationFileOptions.phpmyadmin,
125
- xdebug: configurationFileOptions.xdebug,
126
- xdebugConfig: configurationFileOptions['xdebug-config'],
127
- mailpit: configurationFileOptions.mailpit,
128
- mediaRedirectDomain: configurationFileOptions['media-redirect-domain'],
129
- photon: configurationFileOptions.photon,
130
- cron: configurationFileOptions.cron,
131
- overrides: configurationFileOptions.overrides
132
- };
133
- const mergedOptions = {};
134
- Object.keys(configurationFileInstanceOptions).forEach(key => {
135
- // preselectedOptions (supplied from command-line) override configurationFileOptions
136
- if (preselectedOptions[key] !== undefined) {
137
- mergedOptions[key] = preselectedOptions[key];
138
- } else if (configurationFileInstanceOptions[key] !== undefined) {
139
- mergedOptions[key] = configurationFileInstanceOptions[key];
140
- }
141
- });
142
- return mergedOptions;
154
+ // configurationFileOptions holds different parameters than present in
155
+ // preselectedOptions like "slug", and friendly-named parameters (e.g.
156
+ // 'app-code' vs 'appCode'). Selectively merge configurationFileOptions
157
+ // parameters into preselectedOptions.
158
+ const configurationFileInstanceOptions = {
159
+ title: configurationFileOptions.title,
160
+ multisite: configurationFileOptions.multisite,
161
+ php: configurationFileOptions.php,
162
+ wordpress: configurationFileOptions.wordpress,
163
+ muPlugins: configurationFileOptions['mu-plugins'],
164
+ appCode: configurationFileOptions['app-code'],
165
+ elasticsearch: configurationFileOptions.elasticsearch,
166
+ phpmyadmin: configurationFileOptions.phpmyadmin,
167
+ xdebug: configurationFileOptions.xdebug,
168
+ xdebugConfig: configurationFileOptions['xdebug-config'],
169
+ mailpit: configurationFileOptions.mailpit,
170
+ mediaRedirectDomain: configurationFileOptions['media-redirect-domain'],
171
+ photon: configurationFileOptions.photon,
172
+ cron: configurationFileOptions.cron,
173
+ overrides: configurationFileOptions.overrides,
174
+ };
175
+ const mergedOptions = {};
176
+ Object.keys(configurationFileInstanceOptions).forEach(key => {
177
+ // preselectedOptions (supplied from command-line) override configurationFileOptions
178
+ if (preselectedOptions[key] !== undefined) {
179
+ mergedOptions[key] = preselectedOptions[key];
180
+ }
181
+ else if (configurationFileInstanceOptions[key] !== undefined) {
182
+ mergedOptions[key] = configurationFileInstanceOptions[key];
183
+ }
184
+ });
185
+ return mergedOptions;
143
186
  }
144
187
  async function findConfigurationFile() {
145
- let currentPath = process.cwd();
146
- const rootPath = _nodePath.default.parse(currentPath).root;
147
- let depth = 0;
148
- const maxDepth = 64;
149
- const locations = [];
150
- while (currentPath !== rootPath && depth < maxDepth) {
151
- locations.push({
152
- dir: _nodePath.default.join(currentPath, _devEnvironmentCli.CONFIGURATION_FOLDER),
153
- file: _nodePath.default.join(currentPath, _devEnvironmentCli.CONFIGURATION_FOLDER, CONFIGURATION_TEMPLATE_FILE_NAME),
154
- template: true
155
- }, {
156
- dir: _nodePath.default.join(currentPath, _devEnvironmentCli.CONFIGURATION_FOLDER),
157
- file: _nodePath.default.join(currentPath, _devEnvironmentCli.CONFIGURATION_FOLDER, CONFIGURATION_FILE_NAME),
158
- template: false
159
- }, {
160
- dir: currentPath,
161
- file: _nodePath.default.join(currentPath, '.' + CONFIGURATION_TEMPLATE_FILE_NAME),
162
- template: true
163
- }, {
164
- dir: currentPath,
165
- file: _nodePath.default.join(currentPath, '.' + CONFIGURATION_FILE_NAME),
166
- template: false
167
- });
168
-
169
- // Move up one directory
170
- currentPath = _nodePath.default.dirname(currentPath);
171
-
172
- // Use depth as a sanity check to avoid an infitite loop
173
- ++depth;
174
- }
175
- for (const {
176
- dir,
177
- file,
178
- template
179
- } of locations) {
180
- let contents;
181
- try {
182
- // eslint-disable-next-line no-await-in-loop
183
- contents = await (0, _promises.readFile)(file, 'utf8');
184
- } catch (error) {
185
- const err = error instanceof Error ? error : new Error('Unknown error');
186
- debug(`Error reading file ${file}: ${err.message}`);
187
- continue;
188
+ let currentPath = process.cwd();
189
+ const rootPath = node_path_1.default.parse(currentPath).root;
190
+ let depth = 0;
191
+ const maxDepth = 64;
192
+ const locations = [];
193
+ while (currentPath !== rootPath && depth < maxDepth) {
194
+ locations.push({
195
+ dir: node_path_1.default.join(currentPath, dev_environment_cli_1.CONFIGURATION_FOLDER),
196
+ file: node_path_1.default.join(currentPath, dev_environment_cli_1.CONFIGURATION_FOLDER, exports.CONFIGURATION_TEMPLATE_FILE_NAME),
197
+ template: true,
198
+ }, {
199
+ dir: node_path_1.default.join(currentPath, dev_environment_cli_1.CONFIGURATION_FOLDER),
200
+ file: node_path_1.default.join(currentPath, dev_environment_cli_1.CONFIGURATION_FOLDER, exports.CONFIGURATION_FILE_NAME),
201
+ template: false,
202
+ }, {
203
+ dir: currentPath,
204
+ file: node_path_1.default.join(currentPath, '.' + exports.CONFIGURATION_TEMPLATE_FILE_NAME),
205
+ template: true,
206
+ }, {
207
+ dir: currentPath,
208
+ file: node_path_1.default.join(currentPath, '.' + exports.CONFIGURATION_FILE_NAME),
209
+ template: false,
210
+ });
211
+ // Move up one directory
212
+ currentPath = node_path_1.default.dirname(currentPath);
213
+ // Use depth as a sanity check to avoid an infitite loop
214
+ ++depth;
188
215
  }
189
- if (template) {
190
- const stripped = contents.replace(ALLOWED_CONFIG_DIR_TEMPLATE, '');
191
- if (EJS_TEMPLATE_TAG.test(stripped)) {
192
- exit.withError(`EJS JavaScript is not supported in dev-env configuration file ${file}. ` + 'Use plain YAML, or only the supported <%= configDir %> placeholder.');
193
- }
194
- const rendered = contents.replace(ALLOWED_CONFIG_DIR_TEMPLATE, () => dir);
195
- return {
196
- configurationPath: file,
197
- configurationContents: rendered
198
- };
216
+ for (const { dir, file, template } of locations) {
217
+ let contents;
218
+ try {
219
+ // eslint-disable-next-line no-await-in-loop
220
+ contents = await (0, promises_1.readFile)(file, 'utf8');
221
+ }
222
+ catch (error) {
223
+ const err = error instanceof Error ? error : new Error('Unknown error');
224
+ debug(`Error reading file ${file}: ${err.message}`);
225
+ continue;
226
+ }
227
+ if (template) {
228
+ const stripped = contents.replace(ALLOWED_CONFIG_DIR_TEMPLATE, '');
229
+ if (EJS_TEMPLATE_TAG.test(stripped)) {
230
+ exit.withError(`EJS JavaScript is not supported in dev-env configuration file ${file}. ` +
231
+ 'Use plain YAML, or only the supported <%= configDir %> placeholder.');
232
+ }
233
+ const rendered = contents.replace(ALLOWED_CONFIG_DIR_TEMPLATE, () => dir);
234
+ return { configurationPath: file, configurationContents: rendered };
235
+ }
236
+ return { configurationPath: file, configurationContents: contents };
199
237
  }
200
- return {
201
- configurationPath: file,
202
- configurationContents: contents
203
- };
204
- }
205
- return false;
238
+ return false;
206
239
  }
207
240
  const CONFIGURATION_FILE_VERSIONS = ['1'];
208
241
  function getAllConfigurationFileVersions() {
209
- return CONFIGURATION_FILE_VERSIONS;
242
+ return CONFIGURATION_FILE_VERSIONS;
210
243
  }
211
244
  function getLatestConfigurationFileVersion() {
212
- return CONFIGURATION_FILE_VERSIONS[CONFIGURATION_FILE_VERSIONS.length - 1];
245
+ return CONFIGURATION_FILE_VERSIONS[CONFIGURATION_FILE_VERSIONS.length - 1];
213
246
  }
214
247
  function isValidConfigurationFileVersion(version) {
215
- return CONFIGURATION_FILE_VERSIONS.includes(version);
248
+ return CONFIGURATION_FILE_VERSIONS.includes(version);
216
249
  }
217
250
  function getConfigurationFileExample() {
218
- return `configuration-version: ${getLatestConfigurationFileVersion()}
251
+ return `configuration-version: ${getLatestConfigurationFileVersion()}
219
252
  slug: dev-site
220
253
  title: Dev Site
221
254
  php: 8.2
@@ -230,4 +263,4 @@ mailpit: false
230
263
  photon: false
231
264
  cron: false
232
265
  `;
233
- }
266
+ }