@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,167 +1,169 @@
1
1
  "use strict";
2
-
3
- exports.__esModule = true;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
4
6
  exports.default = createRechallengeLink;
5
- var _core = require("@apollo/client/core");
6
- var _debug = _interopRequireDefault(require("debug"));
7
- var _graphql = require("graphql");
8
- var _flow = require("./flow");
9
- var _tokenCache = _interopRequireDefault(require("./token-cache"));
10
- var _types = require("./types");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- const debug = (0, _debug.default)('@automattic/vip:rechallenge:link');
7
+ const core_1 = require("@apollo/client/core");
8
+ const debug_1 = __importDefault(require("debug"));
9
+ const graphql_1 = require("graphql");
10
+ const flow_1 = require("./flow");
11
+ const token_cache_1 = __importDefault(require("./token-cache"));
12
+ const types_1 = require("./types");
13
+ const debug = (0, debug_1.default)('@automattic/vip:rechallenge:link');
13
14
  function operationDefinition(doc) {
14
- return doc.definitions.find(def => def.kind === _graphql.Kind.OPERATION_DEFINITION);
15
+ return doc.definitions.find((def) => def.kind === graphql_1.Kind.OPERATION_DEFINITION);
15
16
  }
16
17
  function isMutation(doc) {
17
- return operationDefinition(doc)?.operation === _graphql.OperationTypeNode.MUTATION;
18
+ return operationDefinition(doc)?.operation === graphql_1.OperationTypeNode.MUTATION;
18
19
  }
19
20
  function primaryMutationFieldName(doc) {
20
- const op = operationDefinition(doc);
21
- if (!op || op.operation !== _graphql.OperationTypeNode.MUTATION) {
22
- return null;
23
- }
24
- const first = op.selectionSet.selections.find(sel => sel.kind === _graphql.Kind.FIELD);
25
- return first?.name.value ?? null;
21
+ const op = operationDefinition(doc);
22
+ if (!op || op.operation !== graphql_1.OperationTypeNode.MUTATION) {
23
+ return null;
24
+ }
25
+ const first = op.selectionSet.selections.find((sel) => sel.kind === graphql_1.Kind.FIELD);
26
+ return first?.name.value ?? null;
26
27
  }
27
28
  function extractElevatedPermission(result) {
28
- const errors = result.errors ?? [];
29
- for (const err of errors) {
30
- const ext = err.extensions ?? {};
31
- if (ext.code !== _types.ELEVATED_PERMISSION_ERROR_CODE) {
32
- continue;
33
- }
34
- const rechallenge = ext.rechallenge;
35
- if (rechallenge && typeof rechallenge.createSessionPath === 'string' && typeof rechallenge.statusPathTemplate === 'string' && typeof rechallenge.exchangePathTemplate === 'string' && typeof rechallenge.elevatedHeaderName === 'string') {
36
- return {
37
- rechallenge
38
- };
29
+ const errors = result.errors ?? [];
30
+ for (const err of errors) {
31
+ const ext = (err.extensions ?? {});
32
+ if (ext.code !== types_1.ELEVATED_PERMISSION_ERROR_CODE) {
33
+ continue;
34
+ }
35
+ const rechallenge = ext.rechallenge;
36
+ if (rechallenge &&
37
+ typeof rechallenge.createSessionPath === 'string' &&
38
+ typeof rechallenge.statusPathTemplate === 'string' &&
39
+ typeof rechallenge.exchangePathTemplate === 'string' &&
40
+ typeof rechallenge.elevatedHeaderName === 'string') {
41
+ return { rechallenge };
42
+ }
39
43
  }
40
- }
41
- return null;
44
+ return null;
42
45
  }
43
46
  function attachElevatedHeader(operation, headerName, token) {
44
- const ctx = operation.getContext();
45
- const headers = {
46
- ...ctx.headers
47
- };
48
- headers[headerName] = token.token;
49
- operation.setContext({
50
- ...ctx,
51
- headers
52
- });
47
+ const ctx = operation.getContext();
48
+ const headers = { ...ctx.headers };
49
+ headers[headerName] = token.token;
50
+ operation.setContext({ ...ctx, headers });
53
51
  }
54
52
  const DEFAULT_HEADER = 'x-elevated-token';
55
53
  function createRechallengeLink() {
56
- return new _core.ApolloLink((operation, forward) => {
57
- const scope = primaryMutationFieldName(operation.query);
58
- const eligible = isMutation(operation.query) && Boolean(scope);
59
- return new _core.Observable(observer => {
60
- let retrying = false;
61
- let cancelled = false;
62
- let firstSub = null;
63
- let retrySub = null;
64
- const abortController = new AbortController();
65
- const preflight = async () => {
66
- if (!eligible || !scope) {
67
- return;
68
- }
69
- const cached = await _tokenCache.default.get(scope);
70
- if (cached) {
71
- attachElevatedHeader(operation, cached.headerName || DEFAULT_HEADER, cached);
72
- }
73
- };
74
- const handleRetry = async (result, elevated) => {
75
- retrying = true;
76
- const headerName = elevated.rechallenge.elevatedHeaderName || DEFAULT_HEADER;
77
- let token;
78
- try {
79
- token = await (0, _flow.runRechallenge)({
80
- requestedOperation: scope,
81
- rechallenge: elevated.rechallenge,
82
- interactive: (0, _flow.isInteractiveContext)(),
83
- wait: (0, _flow.shouldWaitForRechallenge)(),
84
- signal: abortController.signal
85
- });
86
- } catch (err) {
87
- debug('rechallenge flow failed: %o', err);
88
- if (cancelled || observer.closed) {
89
- return;
90
- }
91
- // Surface the original elevated-permission error to upstream
92
- // so errorLink and consumers see it.
93
- observer.next(result);
94
- observer.complete();
95
- return;
96
- }
97
- if (cancelled || observer.closed) {
98
- return;
99
- }
100
- attachElevatedHeader(operation, headerName, token);
101
- try {
102
- retrySub = forward(operation).subscribe({
103
- next: res => observer.next(res),
104
- error: err => observer.error(err),
105
- complete: () => observer.complete()
106
- });
107
- } catch (err) {
108
- if (cancelled || observer.closed) {
109
- return;
110
- }
111
- observer.error(err);
112
- }
113
- };
114
- const start = async () => {
115
- try {
116
- await preflight();
117
- } catch (err) {
118
- debug('preflight error: %o', err);
119
- }
120
- if (cancelled || observer.closed) {
121
- return;
122
- }
123
- try {
124
- firstSub = forward(operation).subscribe({
125
- next: result => {
126
- if (retrying || !eligible || !scope) {
127
- observer.next(result);
128
- return;
129
- }
130
- const elevated = extractElevatedPermission(result);
131
- if (!elevated) {
132
- observer.next(result);
133
- return;
134
- }
135
- void handleRetry(result, elevated);
136
- },
137
- error: err => observer.error(err),
138
- complete: () => {
139
- if (!retrying) {
140
- observer.complete();
141
- }
142
- }
143
- });
144
- } catch (err) {
145
- if (cancelled || observer.closed) {
146
- return;
147
- }
148
- observer.error(err);
149
- }
150
- };
151
- void start().catch(err => {
152
- if (cancelled || observer.closed) {
153
- return;
154
- }
155
- observer.error(err);
156
- });
157
- return () => {
158
- cancelled = true;
159
- // Abort any in-flight rechallenge polling so the loop, its tracking
160
- // events, and the token-cache write stop instead of running to expiry.
161
- abortController.abort();
162
- firstSub?.unsubscribe();
163
- retrySub?.unsubscribe();
164
- };
54
+ return new core_1.ApolloLink((operation, forward) => {
55
+ const scope = primaryMutationFieldName(operation.query);
56
+ const eligible = isMutation(operation.query) && Boolean(scope);
57
+ return new core_1.Observable(observer => {
58
+ let retrying = false;
59
+ let cancelled = false;
60
+ let firstSub = null;
61
+ let retrySub = null;
62
+ const abortController = new AbortController();
63
+ const preflight = async () => {
64
+ if (!eligible || !scope) {
65
+ return;
66
+ }
67
+ const cached = await token_cache_1.default.get(scope);
68
+ if (cached) {
69
+ attachElevatedHeader(operation, cached.headerName || DEFAULT_HEADER, cached);
70
+ }
71
+ };
72
+ const handleRetry = async (result, elevated) => {
73
+ retrying = true;
74
+ const headerName = elevated.rechallenge.elevatedHeaderName || DEFAULT_HEADER;
75
+ let token;
76
+ try {
77
+ token = await (0, flow_1.runRechallenge)({
78
+ requestedOperation: scope,
79
+ rechallenge: elevated.rechallenge,
80
+ interactive: (0, flow_1.isInteractiveContext)(),
81
+ wait: (0, flow_1.shouldWaitForRechallenge)(),
82
+ signal: abortController.signal,
83
+ });
84
+ }
85
+ catch (err) {
86
+ debug('rechallenge flow failed: %o', err);
87
+ if (cancelled || observer.closed) {
88
+ return;
89
+ }
90
+ // Surface the original elevated-permission error to upstream
91
+ // so errorLink and consumers see it.
92
+ observer.next(result);
93
+ observer.complete();
94
+ return;
95
+ }
96
+ if (cancelled || observer.closed) {
97
+ return;
98
+ }
99
+ attachElevatedHeader(operation, headerName, token);
100
+ try {
101
+ retrySub = forward(operation).subscribe({
102
+ next: res => observer.next(res),
103
+ error: err => observer.error(err),
104
+ complete: () => observer.complete(),
105
+ });
106
+ }
107
+ catch (err) {
108
+ if (cancelled || observer.closed) {
109
+ return;
110
+ }
111
+ observer.error(err);
112
+ }
113
+ };
114
+ const start = async () => {
115
+ try {
116
+ await preflight();
117
+ }
118
+ catch (err) {
119
+ debug('preflight error: %o', err);
120
+ }
121
+ if (cancelled || observer.closed) {
122
+ return;
123
+ }
124
+ try {
125
+ firstSub = forward(operation).subscribe({
126
+ next: result => {
127
+ if (retrying || !eligible || !scope) {
128
+ observer.next(result);
129
+ return;
130
+ }
131
+ const elevated = extractElevatedPermission(result);
132
+ if (!elevated) {
133
+ observer.next(result);
134
+ return;
135
+ }
136
+ void handleRetry(result, elevated);
137
+ },
138
+ error: err => observer.error(err),
139
+ complete: () => {
140
+ if (!retrying) {
141
+ observer.complete();
142
+ }
143
+ },
144
+ });
145
+ }
146
+ catch (err) {
147
+ if (cancelled || observer.closed) {
148
+ return;
149
+ }
150
+ observer.error(err);
151
+ }
152
+ };
153
+ void start().catch(err => {
154
+ if (cancelled || observer.closed) {
155
+ return;
156
+ }
157
+ observer.error(err);
158
+ });
159
+ return () => {
160
+ cancelled = true;
161
+ // Abort any in-flight rechallenge polling so the loop, its tracking
162
+ // events, and the token-cache write stop instead of running to expiry.
163
+ abortController.abort();
164
+ firstSub?.unsubscribe();
165
+ retrySub?.unsubscribe();
166
+ };
167
+ });
165
168
  });
166
- });
167
- }
169
+ }
@@ -1,21 +1,18 @@
1
1
  "use strict";
2
-
3
- exports.__esModule = true;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
4
6
  exports.openBrowser = openBrowser;
5
- var _debug = _interopRequireDefault(require("debug"));
6
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
- const debug = (0, _debug.default)('@automattic/vip:rechallenge:open-browser');
8
-
7
+ const debug_1 = __importDefault(require("debug"));
8
+ const debug = (0, debug_1.default)('@automattic/vip:rechallenge:open-browser');
9
9
  /** Opens a URL in the default browser. Wraps the ESM-only `open` package. */
10
10
  async function openBrowser(url) {
11
- try {
12
- const {
13
- default: open
14
- } = await import('open');
15
- await open(url, {
16
- wait: false
17
- });
18
- } catch (err) {
19
- debug('Failed to open(%s): %o', url, err);
20
- }
21
- }
11
+ try {
12
+ const { default: open } = await import('open');
13
+ await open(url, { wait: false });
14
+ }
15
+ catch (err) {
16
+ debug('Failed to open(%s): %o', url, err);
17
+ }
18
+ }
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.default = void 0;
5
- var _debug = _interopRequireDefault(require("debug"));
6
- var _constants = require("../api/constants");
7
- var _keychain = require("../keychain");
8
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
- const debug = (0, _debug.default)('@automattic/vip:rechallenge:cache');
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const debug_1 = __importDefault(require("debug"));
7
+ const constants_1 = require("../api/constants");
8
+ const keychain_1 = require("../keychain");
9
+ const debug = (0, debug_1.default)('@automattic/vip:rechallenge:cache');
10
10
  // Storage strategy: a single keychain entry holds a JSON map { [scope]: ElevatedToken }.
11
11
  // The vip-cli Keychain interface (src/lib/keychain/keychain.ts) is service-only — there
12
12
  // is no separate account argument — so per-scope entries under the keytar model would
@@ -14,100 +14,97 @@ const debug = (0, _debug.default)('@automattic/vip:rechallenge:cache');
14
14
  // This is marked subject-to-change in the spec pending security review.
15
15
  const BASE_SERVICE = 'vip-go-cli:elevated';
16
16
  function serviceName() {
17
- if (_constants.API_HOST === _constants.PRODUCTION_API_HOST) {
18
- return BASE_SERVICE;
19
- }
20
- const sanitized = _constants.API_HOST.replace(/[^a-z0-9]/gi, '-');
21
- return `${BASE_SERVICE}:${sanitized}`;
17
+ if (constants_1.API_HOST === constants_1.PRODUCTION_API_HOST) {
18
+ return BASE_SERVICE;
19
+ }
20
+ const sanitized = constants_1.API_HOST.replace(/[^a-z0-9]/gi, '-');
21
+ return `${BASE_SERVICE}:${sanitized}`;
22
22
  }
23
23
  let inMemory = null;
24
24
  async function read() {
25
- if (inMemory) {
26
- return inMemory;
27
- }
28
- const keychain = await (0, _keychain.getKeychain)();
29
- const raw = await keychain.getPassword(serviceName());
30
- if (!raw) {
31
- inMemory = {};
32
- return inMemory;
33
- }
34
- try {
35
- const parsed = JSON.parse(raw);
36
- if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
37
- inMemory = parsed;
38
- } else {
39
- debug('Elevated token blob had unexpected shape; resetting');
40
- inMemory = {};
41
- await keychain.deletePassword(serviceName());
25
+ if (inMemory) {
26
+ return inMemory;
42
27
  }
43
- } catch (err) {
44
- debug('Failed to parse elevated token blob; resetting (%o)', err);
45
- inMemory = {};
46
- await keychain.deletePassword(serviceName());
47
- }
48
- return inMemory;
28
+ const keychain = await (0, keychain_1.getKeychain)();
29
+ const raw = await keychain.getPassword(serviceName());
30
+ if (!raw) {
31
+ inMemory = {};
32
+ return inMemory;
33
+ }
34
+ try {
35
+ const parsed = JSON.parse(raw);
36
+ if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
37
+ inMemory = parsed;
38
+ }
39
+ else {
40
+ debug('Elevated token blob had unexpected shape; resetting');
41
+ inMemory = {};
42
+ await keychain.deletePassword(serviceName());
43
+ }
44
+ }
45
+ catch (err) {
46
+ debug('Failed to parse elevated token blob; resetting (%o)', err);
47
+ inMemory = {};
48
+ await keychain.deletePassword(serviceName());
49
+ }
50
+ return inMemory;
49
51
  }
50
52
  async function write(blob) {
51
- inMemory = blob;
52
- const keychain = await (0, _keychain.getKeychain)();
53
- if (Object.keys(blob).length === 0) {
54
- await keychain.deletePassword(serviceName());
55
- } else {
56
- await keychain.setPassword(serviceName(), JSON.stringify(blob));
57
- }
53
+ inMemory = blob;
54
+ const keychain = await (0, keychain_1.getKeychain)();
55
+ if (Object.keys(blob).length === 0) {
56
+ await keychain.deletePassword(serviceName());
57
+ }
58
+ else {
59
+ await keychain.setPassword(serviceName(), JSON.stringify(blob));
60
+ }
58
61
  }
59
62
  function isExpired(token) {
60
- const exp = Date.parse(token.expiresAt);
61
- if (Number.isNaN(exp)) {
62
- return true;
63
- }
64
- // Treat tokens within the next 5 seconds as effectively expired.
65
- return Date.now() >= exp - 5_000;
63
+ const exp = Date.parse(token.expiresAt);
64
+ if (Number.isNaN(exp)) {
65
+ return true;
66
+ }
67
+ // Treat tokens within the next 5 seconds as effectively expired.
68
+ return Date.now() >= exp - 5_000;
66
69
  }
67
70
  async function get(scope) {
68
- const blob = await read();
69
- const token = blob[scope];
70
- if (!token) {
71
- return null;
72
- }
73
- if (isExpired(token)) {
74
- debug('Cached elevated token for %s is expired; evicting', scope);
75
- const {
76
- [scope]: _evicted,
77
- ...rest
78
- } = blob;
79
- await write(rest);
80
- return null;
81
- }
82
- return token;
71
+ const blob = await read();
72
+ const token = blob[scope];
73
+ if (!token) {
74
+ return null;
75
+ }
76
+ if (isExpired(token)) {
77
+ debug('Cached elevated token for %s is expired; evicting', scope);
78
+ const { [scope]: _evicted, ...rest } = blob;
79
+ await write(rest);
80
+ return null;
81
+ }
82
+ return token;
83
83
  }
84
84
  async function set(scope, token) {
85
- const blob = await read();
86
- blob[scope] = token;
87
- await write(blob);
85
+ const blob = await read();
86
+ blob[scope] = token;
87
+ await write(blob);
88
88
  }
89
89
  async function clearScope(scope) {
90
- const blob = await read();
91
- if (scope in blob) {
92
- const {
93
- [scope]: _removed,
94
- ...rest
95
- } = blob;
96
- await write(rest);
97
- }
90
+ const blob = await read();
91
+ if (scope in blob) {
92
+ const { [scope]: _removed, ...rest } = blob;
93
+ await write(rest);
94
+ }
98
95
  }
99
96
  async function clearAll() {
100
- inMemory = {};
101
- const keychain = await (0, _keychain.getKeychain)();
102
- await keychain.deletePassword(serviceName());
97
+ inMemory = {};
98
+ const keychain = await (0, keychain_1.getKeychain)();
99
+ await keychain.deletePassword(serviceName());
103
100
  }
104
101
  function _resetInMemoryForTests() {
105
- inMemory = null;
102
+ inMemory = null;
106
103
  }
107
- var _default = exports.default = {
108
- get,
109
- set,
110
- clearScope,
111
- clearAll,
112
- _resetInMemoryForTests
113
- };
104
+ exports.default = {
105
+ get,
106
+ set,
107
+ clearScope,
108
+ clearAll,
109
+ _resetInMemoryForTests,
110
+ };
@@ -1,15 +1,6 @@
1
1
  "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.RECHALLENGE_VERSION = exports.ELEVATED_PERMISSION_ERROR_CODE = exports.CLIENT_TYPE = void 0;
5
- const ELEVATED_PERMISSION_ERROR_CODE = exports.ELEVATED_PERMISSION_ERROR_CODE = 'elevated-permission-required';
6
- const RECHALLENGE_VERSION = exports.RECHALLENGE_VERSION = 'v2';
7
- const CLIENT_TYPE = exports.CLIENT_TYPE = 'cli';
8
-
9
- /** Shape of `errors[0].extensions.rechallenge` from the API. */
10
-
11
- /** Response from POST {createSessionPath}. */
12
-
13
- /** Response from GET {statusPathTemplate}. */
14
-
15
- /** Response from POST {exchangePathTemplate}. */
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLIENT_TYPE = exports.RECHALLENGE_VERSION = exports.ELEVATED_PERMISSION_ERROR_CODE = void 0;
4
+ exports.ELEVATED_PERMISSION_ERROR_CODE = 'elevated-permission-required';
5
+ exports.RECHALLENGE_VERSION = 'v2';
6
+ exports.CLIENT_TYPE = 'cli';