heroku 11.0.0-alpha.11 → 11.0.0-alpha.13

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 (895) hide show
  1. package/README.md +17 -2
  2. package/lib/commands/access/add.d.ts +5 -5
  3. package/lib/commands/access/add.js +13 -13
  4. package/lib/commands/access/index.d.ts +2 -2
  5. package/lib/commands/access/index.js +7 -8
  6. package/lib/commands/access/remove.d.ts +1 -1
  7. package/lib/commands/access/remove.js +5 -5
  8. package/lib/commands/access/update.d.ts +5 -5
  9. package/lib/commands/access/update.js +9 -9
  10. package/lib/commands/accounts/add.d.ts +1 -1
  11. package/lib/commands/accounts/add.js +3 -2
  12. package/lib/commands/accounts/current.js +4 -5
  13. package/lib/commands/accounts/index.js +2 -1
  14. package/lib/commands/accounts/remove.d.ts +1 -1
  15. package/lib/commands/accounts/remove.js +3 -2
  16. package/lib/commands/accounts/set.d.ts +1 -1
  17. package/lib/commands/accounts/set.js +3 -2
  18. package/lib/commands/addons/attach.d.ts +6 -6
  19. package/lib/commands/addons/attach.js +14 -14
  20. package/lib/commands/addons/create.d.ts +9 -10
  21. package/lib/commands/addons/create.js +31 -29
  22. package/lib/commands/addons/destroy.d.ts +9 -9
  23. package/lib/commands/addons/destroy.js +19 -19
  24. package/lib/commands/addons/detach.d.ts +4 -4
  25. package/lib/commands/addons/detach.js +9 -9
  26. package/lib/commands/addons/docs.d.ts +5 -5
  27. package/lib/commands/addons/docs.js +9 -9
  28. package/lib/commands/addons/index.d.ts +5 -5
  29. package/lib/commands/addons/index.js +32 -30
  30. package/lib/commands/addons/info.d.ts +4 -4
  31. package/lib/commands/addons/info.js +18 -14
  32. package/lib/commands/addons/open.d.ts +26 -27
  33. package/lib/commands/addons/open.js +21 -24
  34. package/lib/commands/addons/rename.d.ts +2 -2
  35. package/lib/commands/addons/rename.js +6 -6
  36. package/lib/commands/addons/services.d.ts +1 -1
  37. package/lib/commands/addons/services.js +5 -4
  38. package/lib/commands/addons/upgrade.d.ts +10 -11
  39. package/lib/commands/addons/upgrade.js +74 -70
  40. package/lib/commands/addons/wait.d.ts +5 -5
  41. package/lib/commands/addons/wait.js +10 -10
  42. package/lib/commands/apps/create.d.ts +12 -12
  43. package/lib/commands/apps/create.js +50 -58
  44. package/lib/commands/apps/destroy.d.ts +6 -6
  45. package/lib/commands/apps/destroy.js +10 -10
  46. package/lib/commands/apps/errors.d.ts +3 -3
  47. package/lib/commands/apps/errors.js +24 -12
  48. package/lib/commands/apps/favorites/add.d.ts +1 -1
  49. package/lib/commands/apps/favorites/add.js +4 -4
  50. package/lib/commands/apps/favorites/index.d.ts +1 -1
  51. package/lib/commands/apps/favorites/index.js +4 -4
  52. package/lib/commands/apps/favorites/remove.d.ts +1 -1
  53. package/lib/commands/apps/favorites/remove.js +3 -3
  54. package/lib/commands/apps/index.d.ts +4 -4
  55. package/lib/commands/apps/index.js +21 -21
  56. package/lib/commands/apps/info.d.ts +8 -8
  57. package/lib/commands/apps/info.js +31 -31
  58. package/lib/commands/apps/join.d.ts +2 -2
  59. package/lib/commands/apps/join.js +3 -3
  60. package/lib/commands/apps/leave.d.ts +1 -1
  61. package/lib/commands/apps/leave.js +3 -3
  62. package/lib/commands/apps/lock.d.ts +2 -2
  63. package/lib/commands/apps/lock.js +5 -5
  64. package/lib/commands/apps/open.d.ts +5 -5
  65. package/lib/commands/apps/open.js +11 -9
  66. package/lib/commands/apps/rename.d.ts +6 -6
  67. package/lib/commands/apps/rename.js +13 -13
  68. package/lib/commands/apps/stacks/index.d.ts +2 -2
  69. package/lib/commands/apps/stacks/index.js +5 -6
  70. package/lib/commands/apps/stacks/set.d.ts +4 -4
  71. package/lib/commands/apps/stacks/set.js +9 -9
  72. package/lib/commands/apps/transfer.d.ts +8 -8
  73. package/lib/commands/apps/transfer.js +33 -32
  74. package/lib/commands/apps/unlock.d.ts +2 -2
  75. package/lib/commands/apps/unlock.js +3 -3
  76. package/lib/commands/auth/2fa/disable.d.ts +1 -1
  77. package/lib/commands/auth/2fa/disable.js +3 -2
  78. package/lib/commands/auth/2fa/index.d.ts +1 -1
  79. package/lib/commands/auth/2fa/index.js +4 -4
  80. package/lib/commands/auth/login.d.ts +3 -3
  81. package/lib/commands/auth/login.js +6 -6
  82. package/lib/commands/auth/logout.js +1 -0
  83. package/lib/commands/auth/token.js +4 -2
  84. package/lib/commands/authorizations/create.js +2 -1
  85. package/lib/commands/authorizations/index.js +3 -4
  86. package/lib/commands/authorizations/revoke.d.ts +2 -2
  87. package/lib/commands/authorizations/revoke.js +6 -6
  88. package/lib/commands/autocomplete/create.d.ts +29 -0
  89. package/lib/commands/autocomplete/create.js +223 -0
  90. package/lib/commands/autocomplete/doctor.d.ts +12 -0
  91. package/lib/commands/autocomplete/doctor.js +111 -0
  92. package/lib/commands/autocomplete/index.d.ts +12 -0
  93. package/lib/commands/autocomplete/index.js +65 -0
  94. package/lib/commands/autocomplete/options.d.ts +25 -0
  95. package/lib/commands/autocomplete/options.js +208 -0
  96. package/lib/commands/autocomplete/script.d.ts +10 -0
  97. package/lib/commands/autocomplete/script.js +20 -0
  98. package/lib/commands/buildpacks/index.js +2 -3
  99. package/lib/commands/buildpacks/remove.d.ts +4 -4
  100. package/lib/commands/buildpacks/remove.js +9 -8
  101. package/lib/commands/certs/add.d.ts +8 -8
  102. package/lib/commands/certs/add.js +27 -29
  103. package/lib/commands/certs/auto/disable.d.ts +2 -2
  104. package/lib/commands/certs/auto/disable.js +4 -4
  105. package/lib/commands/certs/auto/enable.d.ts +2 -2
  106. package/lib/commands/certs/auto/enable.js +8 -9
  107. package/lib/commands/certs/auto/index.d.ts +2 -2
  108. package/lib/commands/certs/auto/index.js +16 -17
  109. package/lib/commands/certs/generate.d.ts +2 -3
  110. package/lib/commands/certs/generate.js +1 -2
  111. package/lib/commands/certs/index.d.ts +1 -1
  112. package/lib/commands/certs/index.js +3 -3
  113. package/lib/commands/certs/info.d.ts +4 -4
  114. package/lib/commands/certs/info.js +6 -6
  115. package/lib/commands/certs/remove.d.ts +3 -3
  116. package/lib/commands/certs/remove.js +5 -5
  117. package/lib/commands/certs/update.d.ts +8 -8
  118. package/lib/commands/certs/update.js +19 -19
  119. package/lib/commands/ci/config/get.d.ts +5 -5
  120. package/lib/commands/ci/config/get.js +8 -8
  121. package/lib/commands/ci/config/index.d.ts +2 -2
  122. package/lib/commands/ci/config/index.js +8 -9
  123. package/lib/commands/ci/config/set.d.ts +2 -2
  124. package/lib/commands/ci/config/set.js +10 -10
  125. package/lib/commands/ci/config/unset.d.ts +3 -3
  126. package/lib/commands/ci/config/unset.js +6 -5
  127. package/lib/commands/ci/index.d.ts +2 -2
  128. package/lib/commands/ci/index.js +5 -4
  129. package/lib/commands/ci/info.js +3 -2
  130. package/lib/commands/ci/last.d.ts +1 -1
  131. package/lib/commands/ci/last.js +4 -3
  132. package/lib/commands/ci/migrate-manifest.d.ts +1 -1
  133. package/lib/commands/ci/migrate-manifest.js +4 -4
  134. package/lib/commands/ci/open.d.ts +2 -2
  135. package/lib/commands/ci/open.js +4 -3
  136. package/lib/commands/ci/rerun.d.ts +4 -4
  137. package/lib/commands/ci/rerun.js +9 -8
  138. package/lib/commands/ci/run.d.ts +1 -1
  139. package/lib/commands/ci/run.js +9 -7
  140. package/lib/commands/clients/create.js +4 -3
  141. package/lib/commands/clients/destroy.d.ts +1 -1
  142. package/lib/commands/clients/destroy.js +4 -4
  143. package/lib/commands/clients/index.js +5 -4
  144. package/lib/commands/clients/info.d.ts +3 -3
  145. package/lib/commands/clients/info.js +5 -5
  146. package/lib/commands/clients/rotate.d.ts +3 -3
  147. package/lib/commands/clients/rotate.js +5 -6
  148. package/lib/commands/clients/update.d.ts +3 -3
  149. package/lib/commands/clients/update.js +5 -5
  150. package/lib/commands/config/edit.d.ts +5 -5
  151. package/lib/commands/config/edit.js +21 -22
  152. package/lib/commands/config/get.d.ts +5 -4
  153. package/lib/commands/config/get.js +34 -13
  154. package/lib/commands/config/index.d.ts +1 -1
  155. package/lib/commands/config/index.js +4 -5
  156. package/lib/commands/config/set.d.ts +2 -2
  157. package/lib/commands/config/set.js +17 -18
  158. package/lib/commands/config/unset.d.ts +1 -1
  159. package/lib/commands/config/unset.js +12 -11
  160. package/lib/commands/container/pull.d.ts +4 -4
  161. package/lib/commands/container/pull.js +12 -12
  162. package/lib/commands/container/push.d.ts +6 -6
  163. package/lib/commands/container/push.js +18 -18
  164. package/lib/commands/container/release.d.ts +4 -4
  165. package/lib/commands/container/release.js +16 -15
  166. package/lib/commands/container/rm.d.ts +4 -4
  167. package/lib/commands/container/rm.js +10 -9
  168. package/lib/commands/container/run.d.ts +5 -5
  169. package/lib/commands/container/run.js +14 -14
  170. package/lib/commands/dashboard.d.ts +1 -1
  171. package/lib/commands/dashboard.js +19 -20
  172. package/lib/commands/domains/add.d.ts +5 -5
  173. package/lib/commands/domains/add.js +17 -18
  174. package/lib/commands/domains/clear.js +2 -2
  175. package/lib/commands/domains/index.d.ts +5 -3
  176. package/lib/commands/domains/index.js +99 -69
  177. package/lib/commands/domains/info.js +2 -1
  178. package/lib/commands/domains/remove.d.ts +3 -3
  179. package/lib/commands/domains/remove.js +5 -5
  180. package/lib/commands/domains/update.d.ts +4 -4
  181. package/lib/commands/domains/update.js +8 -8
  182. package/lib/commands/drains/add.d.ts +3 -3
  183. package/lib/commands/drains/add.js +7 -7
  184. package/lib/commands/drains/index.d.ts +1 -1
  185. package/lib/commands/drains/index.js +5 -6
  186. package/lib/commands/drains/remove.d.ts +4 -4
  187. package/lib/commands/drains/remove.js +6 -6
  188. package/lib/commands/features/disable.d.ts +3 -3
  189. package/lib/commands/features/disable.js +8 -8
  190. package/lib/commands/features/enable.d.ts +3 -3
  191. package/lib/commands/features/enable.js +8 -8
  192. package/lib/commands/features/index.js +2 -3
  193. package/lib/commands/features/info.d.ts +4 -4
  194. package/lib/commands/features/info.js +10 -9
  195. package/lib/commands/git/clone.d.ts +2 -2
  196. package/lib/commands/git/clone.js +7 -6
  197. package/lib/commands/git/remote.js +6 -5
  198. package/lib/commands/keys/add.d.ts +3 -4
  199. package/lib/commands/keys/add.js +20 -18
  200. package/lib/commands/keys/index.js +4 -5
  201. package/lib/commands/keys/remove.d.ts +2 -2
  202. package/lib/commands/keys/remove.js +8 -8
  203. package/lib/commands/labs/disable.d.ts +3 -3
  204. package/lib/commands/labs/disable.js +13 -13
  205. package/lib/commands/labs/enable.d.ts +4 -4
  206. package/lib/commands/labs/enable.js +11 -11
  207. package/lib/commands/labs/index.d.ts +2 -2
  208. package/lib/commands/labs/index.js +6 -7
  209. package/lib/commands/labs/info.d.ts +3 -3
  210. package/lib/commands/labs/info.js +8 -7
  211. package/lib/commands/local/index.d.ts +4 -4
  212. package/lib/commands/local/index.js +21 -21
  213. package/lib/commands/local/run.d.ts +1 -1
  214. package/lib/commands/local/run.js +4 -3
  215. package/lib/commands/logs.d.ts +1 -1
  216. package/lib/commands/logs.js +22 -21
  217. package/lib/commands/maintenance/off.d.ts +1 -1
  218. package/lib/commands/maintenance/off.js +2 -2
  219. package/lib/commands/maintenance/on.d.ts +1 -1
  220. package/lib/commands/maintenance/on.js +2 -2
  221. package/lib/commands/members/index.d.ts +3 -3
  222. package/lib/commands/members/index.js +18 -13
  223. package/lib/commands/members/remove.d.ts +1 -1
  224. package/lib/commands/members/remove.js +6 -6
  225. package/lib/commands/notifications/index.d.ts +3 -3
  226. package/lib/commands/notifications/index.js +9 -10
  227. package/lib/commands/orgs/open.js +2 -2
  228. package/lib/commands/pg/backups/cancel.d.ts +13 -0
  229. package/lib/commands/pg/backups/cancel.js +43 -0
  230. package/lib/commands/pg/backups/capture.d.ts +15 -0
  231. package/lib/commands/pg/backups/capture.js +62 -0
  232. package/lib/commands/pg/backups/delete.d.ts +15 -0
  233. package/lib/commands/pg/backups/delete.js +34 -0
  234. package/lib/commands/pg/backups/download.d.ts +14 -0
  235. package/lib/commands/pg/backups/download.js +54 -0
  236. package/lib/commands/pg/backups/index.d.ts +20 -0
  237. package/lib/commands/pg/backups/index.js +121 -0
  238. package/lib/commands/pg/backups/info.d.ts +17 -0
  239. package/lib/commands/pg/backups/info.js +86 -0
  240. package/lib/commands/pg/backups/restore.d.ts +20 -0
  241. package/lib/commands/pg/backups/restore.js +134 -0
  242. package/lib/commands/pg/backups/schedule.d.ts +21 -0
  243. package/lib/commands/pg/backups/schedule.js +69 -0
  244. package/lib/commands/pg/backups/schedules.d.ts +10 -0
  245. package/lib/commands/pg/backups/schedules.js +27 -0
  246. package/lib/commands/pg/backups/unschedule.d.ts +13 -0
  247. package/lib/commands/pg/backups/unschedule.js +42 -0
  248. package/lib/commands/pg/backups/url.d.ts +13 -0
  249. package/lib/commands/pg/backups/url.js +37 -0
  250. package/lib/commands/pg/bloat.d.ts +13 -0
  251. package/lib/{oldCommands → commands}/pg/bloat.js +23 -30
  252. package/lib/commands/pg/blocking.d.ts +13 -0
  253. package/lib/commands/pg/blocking.js +42 -0
  254. package/lib/commands/pg/connection-pooling/attach.d.ts +15 -0
  255. package/lib/commands/pg/connection-pooling/attach.js +38 -0
  256. package/lib/commands/pg/copy.d.ts +18 -0
  257. package/lib/commands/pg/copy.js +83 -0
  258. package/lib/commands/pg/credentials/create.d.ts +15 -0
  259. package/lib/commands/pg/credentials/create.js +39 -0
  260. package/lib/commands/pg/credentials/destroy.d.ts +16 -0
  261. package/lib/commands/pg/credentials/destroy.js +45 -0
  262. package/lib/commands/pg/credentials/repair-default.d.ts +15 -0
  263. package/lib/commands/pg/credentials/repair-default.js +38 -0
  264. package/lib/commands/pg/credentials/rotate.d.ts +17 -0
  265. package/lib/commands/pg/credentials/rotate.js +79 -0
  266. package/lib/commands/pg/credentials/url.d.ts +14 -0
  267. package/lib/commands/pg/credentials/url.js +59 -0
  268. package/lib/commands/pg/credentials.d.ts +16 -0
  269. package/lib/commands/pg/credentials.js +61 -0
  270. package/lib/commands/pg/diagnose.d.ts +18 -0
  271. package/lib/commands/pg/diagnose.js +106 -0
  272. package/lib/commands/pg/info.d.ts +14 -0
  273. package/lib/commands/pg/info.js +91 -0
  274. package/lib/commands/pg/kill.d.ts +15 -0
  275. package/lib/commands/pg/kill.js +32 -0
  276. package/lib/commands/pg/killall.d.ts +13 -0
  277. package/lib/commands/pg/killall.js +24 -0
  278. package/lib/commands/pg/links/create.d.ts +16 -0
  279. package/lib/commands/pg/links/create.js +57 -0
  280. package/lib/commands/pg/links/destroy.d.ts +16 -0
  281. package/lib/commands/pg/links/destroy.js +40 -0
  282. package/lib/commands/pg/links/index.d.ts +13 -0
  283. package/lib/commands/pg/links/index.js +62 -0
  284. package/lib/commands/pg/locks.d.ts +15 -0
  285. package/lib/commands/pg/locks.js +53 -0
  286. package/lib/commands/pg/maintenance/index.d.ts +13 -0
  287. package/lib/commands/pg/maintenance/index.js +27 -0
  288. package/lib/commands/pg/maintenance/run.d.ts +14 -0
  289. package/lib/commands/pg/maintenance/run.js +34 -0
  290. package/lib/commands/pg/maintenance/window.d.ts +15 -0
  291. package/lib/commands/pg/maintenance/window.js +41 -0
  292. package/lib/commands/pg/outliers.d.ts +19 -0
  293. package/lib/commands/pg/outliers.js +100 -0
  294. package/lib/commands/pg/promote.d.ts +14 -0
  295. package/lib/commands/pg/promote.js +167 -0
  296. package/lib/commands/pg/ps.d.ts +14 -0
  297. package/lib/commands/pg/ps.js +52 -0
  298. package/lib/commands/pg/psql.d.ts +16 -0
  299. package/lib/commands/pg/psql.js +47 -0
  300. package/lib/commands/pg/pull.d.ts +18 -0
  301. package/lib/commands/pg/pull.js +87 -0
  302. package/lib/commands/pg/push.d.ts +18 -0
  303. package/lib/commands/pg/push.js +83 -0
  304. package/lib/commands/pg/reset.d.ts +15 -0
  305. package/lib/commands/pg/reset.js +43 -0
  306. package/lib/commands/pg/settings/auto-explain/log-analyze.d.ts +13 -0
  307. package/lib/commands/pg/settings/auto-explain/log-analyze.js +28 -0
  308. package/lib/commands/pg/settings/auto-explain/log-buffers.d.ts +13 -0
  309. package/lib/commands/pg/settings/auto-explain/log-buffers.js +26 -0
  310. package/lib/commands/pg/settings/auto-explain/log-format.d.ts +12 -0
  311. package/lib/commands/pg/settings/auto-explain/log-format.js +22 -0
  312. package/lib/commands/pg/settings/auto-explain/log-min-duration.d.ts +13 -0
  313. package/lib/commands/pg/settings/auto-explain/log-min-duration.js +29 -0
  314. package/lib/commands/pg/settings/auto-explain/log-nested-statements.d.ts +12 -0
  315. package/lib/commands/pg/settings/auto-explain/log-nested-statements.js +20 -0
  316. package/lib/commands/pg/settings/auto-explain/log-triggers.d.ts +13 -0
  317. package/lib/commands/pg/settings/auto-explain/log-triggers.js +26 -0
  318. package/lib/commands/pg/settings/auto-explain/log-verbose.d.ts +17 -0
  319. package/lib/commands/pg/settings/auto-explain/log-verbose.js +29 -0
  320. package/lib/commands/pg/settings/auto-explain.d.ts +18 -0
  321. package/lib/commands/pg/settings/auto-explain.js +34 -0
  322. package/lib/commands/pg/settings/data-connector-details-logs.d.ts +17 -0
  323. package/lib/commands/pg/settings/data-connector-details-logs.js +30 -0
  324. package/lib/commands/pg/settings/index.d.ts +13 -0
  325. package/lib/commands/pg/settings/index.js +33 -0
  326. package/lib/commands/pg/settings/log-connections.d.ts +17 -0
  327. package/lib/commands/pg/settings/log-connections.js +30 -0
  328. package/lib/commands/pg/settings/log-lock-waits.d.ts +13 -0
  329. package/lib/commands/pg/settings/log-lock-waits.js +27 -0
  330. package/lib/commands/pg/settings/log-min-duration-statement.d.ts +12 -0
  331. package/lib/commands/pg/settings/log-min-duration-statement.js +29 -0
  332. package/lib/commands/pg/settings/log-min-error-statement.d.ts +12 -0
  333. package/lib/commands/pg/settings/log-min-error-statement.js +23 -0
  334. package/lib/commands/pg/settings/log-statement.d.ts +12 -0
  335. package/lib/commands/pg/settings/log-statement.js +26 -0
  336. package/lib/commands/pg/settings/track-functions.d.ts +12 -0
  337. package/lib/commands/pg/settings/track-functions.js +25 -0
  338. package/lib/commands/pg/unfollow.d.ts +14 -0
  339. package/lib/commands/pg/unfollow.js +38 -0
  340. package/lib/commands/pg/upgrade/cancel.d.ts +13 -0
  341. package/lib/commands/pg/upgrade/cancel.js +50 -0
  342. package/lib/commands/pg/upgrade/dryrun.d.ts +14 -0
  343. package/lib/commands/pg/upgrade/dryrun.js +50 -0
  344. package/lib/commands/pg/upgrade/index.d.ts +15 -0
  345. package/lib/commands/pg/upgrade/index.js +73 -0
  346. package/lib/commands/pg/upgrade/prepare.d.ts +14 -0
  347. package/lib/commands/pg/upgrade/prepare.js +51 -0
  348. package/lib/commands/pg/upgrade/run.d.ts +16 -0
  349. package/lib/commands/pg/upgrade/run.js +95 -0
  350. package/lib/commands/pg/upgrade/wait.d.ts +16 -0
  351. package/lib/commands/pg/upgrade/wait.js +105 -0
  352. package/lib/commands/pg/vacuum-stats.d.ts +13 -0
  353. package/lib/{oldCommands → commands}/pg/vacuum-stats.js +25 -29
  354. package/lib/commands/pg/wait.d.ts +15 -0
  355. package/lib/commands/pg/wait.js +79 -0
  356. package/lib/commands/pipelines/add.d.ts +3 -3
  357. package/lib/commands/pipelines/add.js +13 -13
  358. package/lib/commands/pipelines/connect.js +2 -1
  359. package/lib/commands/pipelines/create.d.ts +3 -3
  360. package/lib/commands/pipelines/create.js +20 -20
  361. package/lib/commands/pipelines/destroy.d.ts +2 -2
  362. package/lib/commands/pipelines/destroy.js +5 -5
  363. package/lib/commands/pipelines/diff.d.ts +3 -3
  364. package/lib/commands/pipelines/diff.js +12 -13
  365. package/lib/commands/pipelines/index.js +3 -3
  366. package/lib/commands/pipelines/info.d.ts +3 -3
  367. package/lib/commands/pipelines/info.js +10 -9
  368. package/lib/commands/pipelines/open.d.ts +9 -0
  369. package/lib/commands/pipelines/open.js +19 -0
  370. package/lib/commands/pipelines/promote.d.ts +12 -0
  371. package/lib/commands/pipelines/promote.js +209 -0
  372. package/lib/commands/pipelines/remove.d.ts +10 -0
  373. package/lib/commands/pipelines/remove.js +20 -0
  374. package/lib/commands/pipelines/rename.d.ts +10 -0
  375. package/lib/commands/pipelines/rename.js +34 -0
  376. package/lib/commands/pipelines/setup.d.ts +16 -0
  377. package/lib/commands/pipelines/setup.js +88 -0
  378. package/lib/commands/pipelines/transfer.d.ts +13 -0
  379. package/lib/commands/pipelines/transfer.js +60 -0
  380. package/lib/commands/pipelines/update.d.ts +11 -0
  381. package/lib/commands/pipelines/update.js +29 -0
  382. package/lib/commands/prompt.d.ts +1 -1
  383. package/lib/commands/prompt.js +4 -3
  384. package/lib/commands/ps/autoscale/disable.d.ts +10 -0
  385. package/lib/commands/ps/autoscale/disable.js +33 -0
  386. package/lib/commands/ps/autoscale/enable.d.ts +14 -0
  387. package/lib/commands/ps/autoscale/enable.js +84 -0
  388. package/lib/commands/ps/index.d.ts +15 -0
  389. package/lib/commands/ps/index.js +199 -0
  390. package/lib/commands/ps/restart.d.ts +18 -0
  391. package/lib/commands/ps/restart.js +68 -0
  392. package/lib/commands/ps/scale.d.ts +13 -0
  393. package/lib/commands/ps/scale.js +81 -0
  394. package/lib/commands/ps/stop.d.ts +18 -0
  395. package/lib/commands/ps/stop.js +62 -0
  396. package/lib/commands/ps/type.d.ts +12 -0
  397. package/lib/commands/ps/type.js +168 -0
  398. package/lib/commands/ps/wait.d.ts +13 -0
  399. package/lib/commands/ps/wait.js +73 -0
  400. package/lib/commands/regions.d.ts +2 -2
  401. package/lib/commands/regions.js +6 -5
  402. package/lib/commands/releases/index.d.ts +14 -0
  403. package/lib/commands/releases/index.js +155 -0
  404. package/lib/commands/releases/info.d.ts +15 -0
  405. package/lib/commands/releases/info.js +75 -0
  406. package/lib/commands/releases/output.d.ts +13 -0
  407. package/lib/commands/releases/output.js +33 -0
  408. package/lib/commands/releases/retry.d.ts +11 -0
  409. package/lib/commands/releases/retry.js +46 -0
  410. package/lib/commands/releases/rollback.d.ts +14 -0
  411. package/lib/commands/releases/rollback.js +54 -0
  412. package/lib/commands/repl.d.ts +1 -1
  413. package/lib/commands/repl.js +3 -2
  414. package/lib/commands/reviewapps/disable.d.ts +3 -3
  415. package/lib/commands/reviewapps/disable.js +11 -10
  416. package/lib/commands/reviewapps/enable.d.ts +2 -2
  417. package/lib/commands/reviewapps/enable.js +9 -8
  418. package/lib/commands/run/detached.d.ts +16 -0
  419. package/lib/commands/run/detached.js +54 -0
  420. package/lib/commands/run/index.d.ts +19 -0
  421. package/lib/commands/run/index.js +69 -0
  422. package/lib/commands/run/inside.d.ts +18 -0
  423. package/lib/commands/run/inside.js +77 -0
  424. package/lib/commands/sessions/destroy.d.ts +1 -1
  425. package/lib/commands/sessions/destroy.js +4 -4
  426. package/lib/commands/sessions/index.js +2 -3
  427. package/lib/commands/spaces/create.d.ts +23 -0
  428. package/lib/commands/spaces/create.js +87 -0
  429. package/lib/commands/spaces/destroy.d.ts +14 -0
  430. package/lib/commands/spaces/destroy.js +61 -0
  431. package/lib/commands/spaces/drains/get.d.ts +11 -0
  432. package/lib/commands/spaces/drains/get.js +23 -0
  433. package/lib/commands/spaces/drains/set.d.ts +13 -0
  434. package/lib/commands/spaces/drains/set.js +25 -0
  435. package/lib/commands/spaces/hosts.d.ts +14 -0
  436. package/lib/commands/spaces/hosts.js +35 -0
  437. package/lib/commands/spaces/index.d.ts +16 -0
  438. package/lib/commands/spaces/index.js +65 -0
  439. package/lib/commands/spaces/info.d.ts +14 -0
  440. package/lib/commands/spaces/info.js +48 -0
  441. package/lib/commands/spaces/peerings/accept.d.ts +15 -0
  442. package/lib/commands/spaces/peerings/accept.js +33 -0
  443. package/lib/commands/spaces/peerings/destroy.d.ts +15 -0
  444. package/lib/commands/spaces/peerings/destroy.js +43 -0
  445. package/lib/commands/spaces/peerings/index.d.ts +13 -0
  446. package/lib/commands/spaces/peerings/index.js +31 -0
  447. package/lib/commands/spaces/peerings/info.d.ts +15 -0
  448. package/lib/{oldCommands → commands}/spaces/peerings/info.js +32 -40
  449. package/lib/commands/spaces/ps.d.ts +15 -0
  450. package/lib/commands/spaces/ps.js +77 -0
  451. package/lib/commands/spaces/rename.d.ts +11 -0
  452. package/lib/commands/spaces/rename.js +24 -0
  453. package/lib/commands/spaces/topology.d.ts +18 -0
  454. package/lib/commands/spaces/topology.js +87 -0
  455. package/lib/commands/spaces/transfer.d.ts +11 -0
  456. package/lib/commands/spaces/transfer.js +33 -0
  457. package/lib/commands/spaces/trusted-ips/add.d.ts +16 -0
  458. package/lib/commands/spaces/trusted-ips/add.js +49 -0
  459. package/lib/commands/spaces/trusted-ips/index.d.ts +15 -0
  460. package/lib/commands/spaces/trusted-ips/index.js +59 -0
  461. package/lib/commands/spaces/trusted-ips/remove.d.ts +15 -0
  462. package/lib/commands/spaces/trusted-ips/remove.js +51 -0
  463. package/lib/commands/spaces/vpn/config.d.ts +14 -0
  464. package/lib/commands/spaces/vpn/config.js +53 -0
  465. package/lib/commands/spaces/vpn/connect.d.ts +15 -0
  466. package/lib/commands/spaces/vpn/connect.js +46 -0
  467. package/lib/commands/spaces/vpn/connections.d.ts +17 -0
  468. package/lib/commands/spaces/vpn/connections.js +55 -0
  469. package/lib/commands/spaces/vpn/destroy.d.ts +14 -0
  470. package/lib/commands/spaces/vpn/destroy.js +36 -0
  471. package/lib/commands/spaces/vpn/info.d.ts +16 -0
  472. package/lib/commands/spaces/vpn/info.js +85 -0
  473. package/lib/commands/spaces/vpn/update.d.ts +14 -0
  474. package/lib/commands/spaces/vpn/update.js +36 -0
  475. package/lib/commands/spaces/vpn/wait.d.ts +16 -0
  476. package/lib/commands/spaces/vpn/wait.js +69 -0
  477. package/lib/commands/spaces/wait.d.ts +17 -0
  478. package/lib/commands/spaces/wait.js +87 -0
  479. package/lib/commands/status.js +14 -13
  480. package/lib/commands/teams/index.d.ts +1 -1
  481. package/lib/commands/teams/index.js +4 -5
  482. package/lib/commands/telemetry/add.d.ts +6 -5
  483. package/lib/commands/telemetry/add.js +43 -18
  484. package/lib/commands/telemetry/index.d.ts +4 -4
  485. package/lib/commands/telemetry/index.js +19 -17
  486. package/lib/commands/telemetry/info.d.ts +2 -2
  487. package/lib/commands/telemetry/info.js +5 -4
  488. package/lib/commands/telemetry/update.d.ts +3 -3
  489. package/lib/commands/telemetry/update.js +8 -9
  490. package/lib/commands/usage/addons.d.ts +2 -2
  491. package/lib/commands/usage/addons.js +17 -18
  492. package/lib/commands/webhooks/add.d.ts +16 -0
  493. package/lib/commands/webhooks/add.js +43 -0
  494. package/lib/commands/webhooks/deliveries/index.d.ts +12 -0
  495. package/lib/commands/webhooks/deliveries/index.js +75 -0
  496. package/lib/commands/webhooks/deliveries/info.d.ts +14 -0
  497. package/lib/commands/webhooks/deliveries/info.js +40 -0
  498. package/lib/commands/webhooks/index.d.ts +11 -0
  499. package/lib/commands/webhooks/index.js +42 -0
  500. package/lib/commands/webhooks/info.d.ts +14 -0
  501. package/lib/commands/webhooks/info.js +29 -0
  502. package/lib/commands/webhooks/remove.d.ts +14 -0
  503. package/lib/commands/webhooks/remove.js +24 -0
  504. package/lib/commands/webhooks/update.d.ts +19 -0
  505. package/lib/commands/webhooks/update.js +36 -0
  506. package/lib/global_telemetry.d.ts +2 -2
  507. package/lib/global_telemetry.js +34 -36
  508. package/lib/lib/addons/addons_wait.d.ts +1 -1
  509. package/lib/lib/addons/addons_wait.js +2 -2
  510. package/lib/lib/addons/create_addon.d.ts +5 -3
  511. package/lib/lib/addons/create_addon.js +12 -9
  512. package/lib/lib/addons/destroy_addon.js +17 -9
  513. package/lib/lib/addons/resolve.d.ts +10 -11
  514. package/lib/lib/addons/resolve.js +19 -18
  515. package/lib/lib/addons/util.d.ts +2 -2
  516. package/lib/lib/addons/util.js +22 -16
  517. package/lib/lib/api.d.ts +1 -1
  518. package/lib/lib/api.js +19 -23
  519. package/lib/lib/apps/app-transfer.d.ts +3 -3
  520. package/lib/lib/apps/app-transfer.js +11 -11
  521. package/lib/lib/autocomplete/base.d.ts +11 -1
  522. package/lib/lib/autocomplete/base.js +33 -49
  523. package/lib/lib/autocomplete/cache.js +9 -7
  524. package/lib/lib/autocomplete/completions.d.ts +41 -1
  525. package/lib/lib/autocomplete/completions.js +258 -290
  526. package/lib/lib/buildpacks/buildpacks.d.ts +11 -11
  527. package/lib/lib/buildpacks/buildpacks.js +71 -71
  528. package/lib/lib/certs/certificate_details.js +3 -4
  529. package/lib/lib/certs/flags.d.ts +2 -2
  530. package/lib/lib/certs/flags.js +5 -8
  531. package/lib/lib/certs/get_cert_and_key.js +2 -2
  532. package/lib/lib/ci/git.d.ts +12 -2
  533. package/lib/lib/ci/git.js +20 -6
  534. package/lib/lib/ci/pipelines.d.ts +5 -5
  535. package/lib/lib/ci/pipelines.js +17 -17
  536. package/lib/lib/ci/source.d.ts +8 -0
  537. package/lib/lib/ci/source.js +22 -10
  538. package/lib/lib/ci/test-run.js +18 -15
  539. package/lib/lib/config/quote.js +4 -4
  540. package/lib/lib/config/util.d.ts +3 -0
  541. package/lib/lib/config/util.js +5 -0
  542. package/lib/lib/confirmCommand.js +6 -7
  543. package/lib/lib/container/docker_helper.d.ts +12 -12
  544. package/lib/lib/container/docker_helper.js +71 -74
  545. package/lib/lib/container/helpers.js +2 -2
  546. package/lib/lib/container/streamer.js +4 -4
  547. package/lib/lib/data/baseCommand.d.ts +4 -0
  548. package/lib/lib/data/baseCommand.js +15 -0
  549. package/lib/lib/data/createPool.d.ts +4 -0
  550. package/lib/lib/data/createPool.js +6 -0
  551. package/lib/lib/data/credentialUtils.d.ts +3 -0
  552. package/lib/lib/data/credentialUtils.js +23 -0
  553. package/lib/lib/data/displayQuota.d.ts +19 -0
  554. package/lib/lib/data/displayQuota.js +59 -0
  555. package/lib/lib/data/parseProvisionOpts.d.ts +15 -0
  556. package/lib/lib/data/parseProvisionOpts.js +31 -0
  557. package/lib/lib/data/types.d.ts +181 -0
  558. package/lib/lib/data/types.js +3 -0
  559. package/lib/lib/data-scrubber/patterns.d.ts +4 -0
  560. package/lib/lib/data-scrubber/patterns.js +13 -0
  561. package/lib/lib/data-scrubber/presets.d.ts +64 -0
  562. package/lib/lib/data-scrubber/presets.js +112 -0
  563. package/lib/lib/data-scrubber/scrubber.d.ts +131 -0
  564. package/lib/lib/data-scrubber/scrubber.js +256 -0
  565. package/lib/lib/data-scrubber/types.d.ts +169 -0
  566. package/lib/lib/domains/domains.js +10 -10
  567. package/lib/lib/domains/wait-for-domain.js +2 -3
  568. package/lib/lib/local/env-file-validator.js +2 -2
  569. package/lib/lib/local/fork-foreman.js +3 -2
  570. package/lib/lib/members/util.js +7 -7
  571. package/lib/lib/orgs/utils.js +2 -3
  572. package/lib/lib/pg/backups.d.ts +17 -1
  573. package/lib/lib/pg/backups.js +132 -156
  574. package/lib/lib/pg/download.js +7 -7
  575. package/lib/lib/pg/fetcher.d.ts +3 -1
  576. package/lib/lib/pg/fetcher.js +3 -162
  577. package/lib/lib/pg/psql.d.ts +17 -1
  578. package/lib/lib/pg/psql.js +59 -269
  579. package/lib/lib/pg/push_pull.d.ts +12 -0
  580. package/lib/lib/pg/push_pull.js +97 -119
  581. package/lib/lib/pg/setter.d.ts +16 -1
  582. package/lib/lib/pg/setter.js +61 -73
  583. package/lib/lib/pg/types.d.ts +10 -33
  584. package/lib/lib/pg/util.d.ts +8 -1
  585. package/lib/lib/pg/util.js +102 -211
  586. package/lib/lib/pipelines/disambiguate.js +9 -11
  587. package/lib/lib/pipelines/ownership.d.ts +1 -1
  588. package/lib/lib/pipelines/ownership.js +6 -12
  589. package/lib/lib/pipelines/render-pipeline.d.ts +2 -2
  590. package/lib/lib/pipelines/render-pipeline.js +10 -9
  591. package/lib/lib/pipelines/setup/create-apps.js +7 -9
  592. package/lib/lib/pipelines/setup/get-ci-settings.js +2 -2
  593. package/lib/lib/pipelines/setup/get-github-token.js +1 -3
  594. package/lib/lib/pipelines/setup/get-name-and-repo.js +27 -22
  595. package/lib/lib/pipelines/setup/get-settings.js +12 -12
  596. package/lib/lib/pipelines/setup/poll-app-setups.js +3 -5
  597. package/lib/lib/pipelines/setup/setup-pipeline.js +1 -3
  598. package/lib/lib/pipelines/setup/validate.d.ts +1 -1
  599. package/lib/lib/pipelines/setup/validate.js +2 -2
  600. package/lib/lib/pipelines/stages.d.ts +2 -2
  601. package/lib/lib/pipelines/stages.js +4 -4
  602. package/lib/lib/redis/api.d.ts +22 -22
  603. package/lib/lib/redis/api.js +62 -67
  604. package/lib/lib/releases/output.js +1 -1
  605. package/lib/lib/releases/status_helper.d.ts +1 -1
  606. package/lib/lib/releases/status_helper.js +16 -8
  607. package/lib/lib/run/colorize.js +73 -40
  608. package/lib/lib/run/dyno.d.ts +22 -30
  609. package/lib/lib/run/dyno.js +184 -180
  610. package/lib/lib/run/helpers.d.ts +25 -0
  611. package/lib/lib/run/helpers.js +119 -3
  612. package/lib/lib/run/log-displayer.d.ts +3 -3
  613. package/lib/lib/run/log-displayer.js +21 -21
  614. package/lib/lib/spaces/format.js +36 -23
  615. package/lib/lib/spaces/hosts.d.ts +9 -1
  616. package/lib/lib/spaces/hosts.js +28 -41
  617. package/lib/lib/spaces/peering.d.ts +4 -1
  618. package/lib/lib/spaces/peering.js +45 -52
  619. package/lib/lib/spaces/spaces.d.ts +6 -1
  620. package/lib/lib/spaces/spaces.js +30 -39
  621. package/lib/lib/spaces/vpn-connections.js +16 -16
  622. package/lib/lib/telemetry/util.d.ts +1 -1
  623. package/lib/lib/telemetry/util.js +3 -3
  624. package/lib/lib/types/completion.d.ts +15 -0
  625. package/lib/lib/utils/multisort.d.ts +4 -7
  626. package/lib/lib/utils/multisort.js +8 -32
  627. package/lib/lib/utils/packageParser.js +2 -2
  628. package/lib/lib/utils/uuid-validate.js +1 -3
  629. package/lib/lib/webhooks/base.d.ts +2 -2
  630. package/lib/lib/webhooks/base.js +3 -3
  631. package/lib/nls-data.d.ts +10 -0
  632. package/lib/nls-data.js +10 -0
  633. package/lib/nls.d.ts +1 -1
  634. package/lib/nls.js +1 -1
  635. package/npm-shrinkwrap.json +17653 -18259
  636. package/oclif.manifest.json +9918 -3293
  637. package/package.json +26 -237
  638. package/lib/lib/pg/bastion.js +0 -137
  639. package/lib/lib/pg/config.d.ts +0 -2
  640. package/lib/lib/pg/config.js +0 -9
  641. package/lib/lib/pg/host.d.ts +0 -1
  642. package/lib/lib/pg/host.js +0 -3
  643. package/lib/lib/spaces/outbound-rules.js +0 -85
  644. package/lib/oldCommands/autocomplete/create.d.ts +0 -1
  645. package/lib/oldCommands/autocomplete/create.js +0 -254
  646. package/lib/oldCommands/autocomplete/doctor.d.ts +0 -1
  647. package/lib/oldCommands/autocomplete/doctor.js +0 -110
  648. package/lib/oldCommands/autocomplete/index.d.ts +0 -1
  649. package/lib/oldCommands/autocomplete/index.js +0 -80
  650. package/lib/oldCommands/autocomplete/options.d.ts +0 -1
  651. package/lib/oldCommands/autocomplete/options.js +0 -240
  652. package/lib/oldCommands/autocomplete/script.d.ts +0 -1
  653. package/lib/oldCommands/autocomplete/script.js +0 -35
  654. package/lib/oldCommands/pg/backups/cancel.d.ts +0 -1
  655. package/lib/oldCommands/pg/backups/cancel.js +0 -56
  656. package/lib/oldCommands/pg/backups/capture.d.ts +0 -1
  657. package/lib/oldCommands/pg/backups/capture.js +0 -77
  658. package/lib/oldCommands/pg/backups/delete.d.ts +0 -1
  659. package/lib/oldCommands/pg/backups/delete.js +0 -45
  660. package/lib/oldCommands/pg/backups/download.d.ts +0 -1
  661. package/lib/oldCommands/pg/backups/download.js +0 -64
  662. package/lib/oldCommands/pg/backups/index.d.ts +0 -1
  663. package/lib/oldCommands/pg/backups/index.js +0 -141
  664. package/lib/oldCommands/pg/backups/info.d.ts +0 -1
  665. package/lib/oldCommands/pg/backups/info.js +0 -102
  666. package/lib/oldCommands/pg/backups/restore.d.ts +0 -1
  667. package/lib/oldCommands/pg/backups/restore.js +0 -150
  668. package/lib/oldCommands/pg/backups/schedule.d.ts +0 -1
  669. package/lib/oldCommands/pg/backups/schedule.js +0 -107
  670. package/lib/oldCommands/pg/backups/schedules.d.ts +0 -1
  671. package/lib/oldCommands/pg/backups/schedules.js +0 -34
  672. package/lib/oldCommands/pg/backups/unschedule.d.ts +0 -1
  673. package/lib/oldCommands/pg/backups/unschedule.js +0 -60
  674. package/lib/oldCommands/pg/backups/url.d.ts +0 -1
  675. package/lib/oldCommands/pg/backups/url.js +0 -46
  676. package/lib/oldCommands/pg/bloat.d.ts +0 -1
  677. package/lib/oldCommands/pg/blocking.d.ts +0 -1
  678. package/lib/oldCommands/pg/blocking.js +0 -48
  679. package/lib/oldCommands/pg/connection-pooling/attach.d.ts +0 -1
  680. package/lib/oldCommands/pg/connection-pooling/attach.js +0 -53
  681. package/lib/oldCommands/pg/copy.d.ts +0 -1
  682. package/lib/oldCommands/pg/copy.js +0 -104
  683. package/lib/oldCommands/pg/credentials/create.d.ts +0 -1
  684. package/lib/oldCommands/pg/credentials/create.js +0 -47
  685. package/lib/oldCommands/pg/credentials/destroy.d.ts +0 -1
  686. package/lib/oldCommands/pg/credentials/destroy.js +0 -56
  687. package/lib/oldCommands/pg/credentials/repair-default.d.ts +0 -1
  688. package/lib/oldCommands/pg/credentials/repair-default.js +0 -43
  689. package/lib/oldCommands/pg/credentials/rotate.d.ts +0 -1
  690. package/lib/oldCommands/pg/credentials/rotate.js +0 -97
  691. package/lib/oldCommands/pg/credentials/url.d.ts +0 -1
  692. package/lib/oldCommands/pg/credentials/url.js +0 -75
  693. package/lib/oldCommands/pg/credentials.d.ts +0 -1
  694. package/lib/oldCommands/pg/credentials.js +0 -77
  695. package/lib/oldCommands/pg/diagnose.d.ts +0 -1
  696. package/lib/oldCommands/pg/diagnose.js +0 -136
  697. package/lib/oldCommands/pg/info.d.ts +0 -1
  698. package/lib/oldCommands/pg/info.js +0 -110
  699. package/lib/oldCommands/pg/kill.d.ts +0 -1
  700. package/lib/oldCommands/pg/kill.js +0 -37
  701. package/lib/oldCommands/pg/killall.d.ts +0 -1
  702. package/lib/oldCommands/pg/killall.js +0 -31
  703. package/lib/oldCommands/pg/links/create.d.ts +0 -1
  704. package/lib/oldCommands/pg/links/create.js +0 -70
  705. package/lib/oldCommands/pg/links/destroy.d.ts +0 -1
  706. package/lib/oldCommands/pg/links/destroy.js +0 -51
  707. package/lib/oldCommands/pg/links/index.d.ts +0 -1
  708. package/lib/oldCommands/pg/links/index.js +0 -64
  709. package/lib/oldCommands/pg/locks.d.ts +0 -1
  710. package/lib/oldCommands/pg/locks.js +0 -60
  711. package/lib/oldCommands/pg/maintenance/index.d.ts +0 -1
  712. package/lib/oldCommands/pg/maintenance/index.js +0 -34
  713. package/lib/oldCommands/pg/maintenance/run.d.ts +0 -1
  714. package/lib/oldCommands/pg/maintenance/run.js +0 -44
  715. package/lib/oldCommands/pg/maintenance/window.d.ts +0 -1
  716. package/lib/oldCommands/pg/maintenance/window.js +0 -52
  717. package/lib/oldCommands/pg/outliers.d.ts +0 -1
  718. package/lib/oldCommands/pg/outliers.js +0 -110
  719. package/lib/oldCommands/pg/promote.d.ts +0 -1
  720. package/lib/oldCommands/pg/promote.js +0 -183
  721. package/lib/oldCommands/pg/ps.d.ts +0 -1
  722. package/lib/oldCommands/pg/ps.js +0 -56
  723. package/lib/oldCommands/pg/psql.d.ts +0 -1
  724. package/lib/oldCommands/pg/psql.js +0 -53
  725. package/lib/oldCommands/pg/pull.d.ts +0 -1
  726. package/lib/oldCommands/pg/pull.js +0 -114
  727. package/lib/oldCommands/pg/push.d.ts +0 -1
  728. package/lib/oldCommands/pg/push.js +0 -111
  729. package/lib/oldCommands/pg/reset.d.ts +0 -1
  730. package/lib/oldCommands/pg/reset.js +0 -49
  731. package/lib/oldCommands/pg/settings/auto-explain/log-analyze.d.ts +0 -1
  732. package/lib/oldCommands/pg/settings/auto-explain/log-analyze.js +0 -37
  733. package/lib/oldCommands/pg/settings/auto-explain/log-buffers.d.ts +0 -1
  734. package/lib/oldCommands/pg/settings/auto-explain/log-buffers.js +0 -35
  735. package/lib/oldCommands/pg/settings/auto-explain/log-format.d.ts +0 -1
  736. package/lib/oldCommands/pg/settings/auto-explain/log-format.js +0 -30
  737. package/lib/oldCommands/pg/settings/auto-explain/log-min-duration.d.ts +0 -1
  738. package/lib/oldCommands/pg/settings/auto-explain/log-min-duration.js +0 -39
  739. package/lib/oldCommands/pg/settings/auto-explain/log-nested-statements.d.ts +0 -1
  740. package/lib/oldCommands/pg/settings/auto-explain/log-nested-statements.js +0 -30
  741. package/lib/oldCommands/pg/settings/auto-explain/log-triggers.d.ts +0 -1
  742. package/lib/oldCommands/pg/settings/auto-explain/log-triggers.js +0 -35
  743. package/lib/oldCommands/pg/settings/auto-explain/log-verbose.d.ts +0 -1
  744. package/lib/oldCommands/pg/settings/auto-explain/log-verbose.js +0 -40
  745. package/lib/oldCommands/pg/settings/auto-explain.d.ts +0 -1
  746. package/lib/oldCommands/pg/settings/auto-explain.js +0 -45
  747. package/lib/oldCommands/pg/settings/data-connector-details-logs.d.ts +0 -1
  748. package/lib/oldCommands/pg/settings/data-connector-details-logs.js +0 -40
  749. package/lib/oldCommands/pg/settings/index.d.ts +0 -1
  750. package/lib/oldCommands/pg/settings/index.js +0 -41
  751. package/lib/oldCommands/pg/settings/log-connections.d.ts +0 -1
  752. package/lib/oldCommands/pg/settings/log-connections.js +0 -40
  753. package/lib/oldCommands/pg/settings/log-lock-waits.d.ts +0 -1
  754. package/lib/oldCommands/pg/settings/log-lock-waits.js +0 -36
  755. package/lib/oldCommands/pg/settings/log-min-duration-statement.d.ts +0 -1
  756. package/lib/oldCommands/pg/settings/log-min-duration-statement.js +0 -39
  757. package/lib/oldCommands/pg/settings/log-min-error-statement.d.ts +0 -1
  758. package/lib/oldCommands/pg/settings/log-min-error-statement.js +0 -31
  759. package/lib/oldCommands/pg/settings/log-statement.d.ts +0 -1
  760. package/lib/oldCommands/pg/settings/log-statement.js +0 -33
  761. package/lib/oldCommands/pg/settings/track-functions.d.ts +0 -1
  762. package/lib/oldCommands/pg/settings/track-functions.js +0 -33
  763. package/lib/oldCommands/pg/unfollow.d.ts +0 -1
  764. package/lib/oldCommands/pg/unfollow.js +0 -46
  765. package/lib/oldCommands/pg/upgrade/cancel.d.ts +0 -1
  766. package/lib/oldCommands/pg/upgrade/cancel.js +0 -62
  767. package/lib/oldCommands/pg/upgrade/dryrun.d.ts +0 -1
  768. package/lib/oldCommands/pg/upgrade/dryrun.js +0 -62
  769. package/lib/oldCommands/pg/upgrade/index.d.ts +0 -1
  770. package/lib/oldCommands/pg/upgrade/index.js +0 -85
  771. package/lib/oldCommands/pg/upgrade/prepare.d.ts +0 -1
  772. package/lib/oldCommands/pg/upgrade/prepare.js +0 -64
  773. package/lib/oldCommands/pg/upgrade/run.d.ts +0 -1
  774. package/lib/oldCommands/pg/upgrade/run.js +0 -106
  775. package/lib/oldCommands/pg/upgrade/wait.d.ts +0 -1
  776. package/lib/oldCommands/pg/upgrade/wait.js +0 -121
  777. package/lib/oldCommands/pg/upgrade.d.ts +0 -1
  778. package/lib/oldCommands/pg/upgrade.js +0 -66
  779. package/lib/oldCommands/pg/vacuum-stats.d.ts +0 -1
  780. package/lib/oldCommands/pg/wait.d.ts +0 -1
  781. package/lib/oldCommands/pg/wait.js +0 -96
  782. package/lib/oldCommands/pipelines/open.d.ts +0 -1
  783. package/lib/oldCommands/pipelines/open.js +0 -25
  784. package/lib/oldCommands/pipelines/promote.d.ts +0 -1
  785. package/lib/oldCommands/pipelines/promote.js +0 -269
  786. package/lib/oldCommands/pipelines/remove.d.ts +0 -1
  787. package/lib/oldCommands/pipelines/remove.js +0 -29
  788. package/lib/oldCommands/pipelines/rename.d.ts +0 -1
  789. package/lib/oldCommands/pipelines/rename.js +0 -42
  790. package/lib/oldCommands/pipelines/setup.d.ts +0 -1
  791. package/lib/oldCommands/pipelines/setup.js +0 -117
  792. package/lib/oldCommands/pipelines/transfer.d.ts +0 -1
  793. package/lib/oldCommands/pipelines/transfer.js +0 -78
  794. package/lib/oldCommands/pipelines/update.d.ts +0 -1
  795. package/lib/oldCommands/pipelines/update.js +0 -39
  796. package/lib/oldCommands/ps/autoscale/disable.d.ts +0 -1
  797. package/lib/oldCommands/ps/autoscale/disable.js +0 -43
  798. package/lib/oldCommands/ps/autoscale/enable.d.ts +0 -1
  799. package/lib/oldCommands/ps/autoscale/enable.js +0 -103
  800. package/lib/oldCommands/ps/index.d.ts +0 -1
  801. package/lib/oldCommands/ps/index.js +0 -254
  802. package/lib/oldCommands/ps/restart.d.ts +0 -1
  803. package/lib/oldCommands/ps/restart.js +0 -78
  804. package/lib/oldCommands/ps/scale.d.ts +0 -1
  805. package/lib/oldCommands/ps/scale.js +0 -95
  806. package/lib/oldCommands/ps/stop.d.ts +0 -1
  807. package/lib/oldCommands/ps/stop.js +0 -73
  808. package/lib/oldCommands/ps/type.d.ts +0 -1
  809. package/lib/oldCommands/ps/type.js +0 -190
  810. package/lib/oldCommands/ps/wait.d.ts +0 -1
  811. package/lib/oldCommands/ps/wait.js +0 -93
  812. package/lib/oldCommands/releases/index.d.ts +0 -1
  813. package/lib/oldCommands/releases/index.js +0 -156
  814. package/lib/oldCommands/releases/info.d.ts +0 -1
  815. package/lib/oldCommands/releases/info.js +0 -68
  816. package/lib/oldCommands/releases/output.d.ts +0 -1
  817. package/lib/oldCommands/releases/output.js +0 -42
  818. package/lib/oldCommands/releases/retry.d.ts +0 -1
  819. package/lib/oldCommands/releases/retry.js +0 -59
  820. package/lib/oldCommands/releases/rollback.d.ts +0 -1
  821. package/lib/oldCommands/releases/rollback.js +0 -65
  822. package/lib/oldCommands/run/detached.d.ts +0 -1
  823. package/lib/oldCommands/run/detached.js +0 -61
  824. package/lib/oldCommands/run/index.d.ts +0 -1
  825. package/lib/oldCommands/run/index.js +0 -72
  826. package/lib/oldCommands/run/inside.d.ts +0 -1
  827. package/lib/oldCommands/run/inside.js +0 -93
  828. package/lib/oldCommands/spaces/create.d.ts +0 -1
  829. package/lib/oldCommands/spaces/create.js +0 -99
  830. package/lib/oldCommands/spaces/destroy.d.ts +0 -1
  831. package/lib/oldCommands/spaces/destroy.js +0 -79
  832. package/lib/oldCommands/spaces/drains/get.d.ts +0 -1
  833. package/lib/oldCommands/spaces/drains/get.js +0 -33
  834. package/lib/oldCommands/spaces/drains/set.d.ts +0 -1
  835. package/lib/oldCommands/spaces/drains/set.js +0 -33
  836. package/lib/oldCommands/spaces/hosts.d.ts +0 -1
  837. package/lib/oldCommands/spaces/hosts.js +0 -42
  838. package/lib/oldCommands/spaces/index.d.ts +0 -1
  839. package/lib/oldCommands/spaces/index.js +0 -74
  840. package/lib/oldCommands/spaces/info.d.ts +0 -1
  841. package/lib/oldCommands/spaces/info.js +0 -59
  842. package/lib/oldCommands/spaces/peerings/accept.d.ts +0 -1
  843. package/lib/oldCommands/spaces/peerings/accept.js +0 -41
  844. package/lib/oldCommands/spaces/peerings/destroy.d.ts +0 -1
  845. package/lib/oldCommands/spaces/peerings/destroy.js +0 -51
  846. package/lib/oldCommands/spaces/peerings/index.d.ts +0 -1
  847. package/lib/oldCommands/spaces/peerings/index.js +0 -39
  848. package/lib/oldCommands/spaces/peerings/info.d.ts +0 -1
  849. package/lib/oldCommands/spaces/ps.d.ts +0 -1
  850. package/lib/oldCommands/spaces/ps.js +0 -97
  851. package/lib/oldCommands/spaces/rename.d.ts +0 -1
  852. package/lib/oldCommands/spaces/rename.js +0 -29
  853. package/lib/oldCommands/spaces/topology.d.ts +0 -1
  854. package/lib/oldCommands/spaces/topology.js +0 -95
  855. package/lib/oldCommands/spaces/transfer.d.ts +0 -1
  856. package/lib/oldCommands/spaces/transfer.js +0 -37
  857. package/lib/oldCommands/spaces/trusted-ips/add.d.ts +0 -1
  858. package/lib/oldCommands/spaces/trusted-ips/add.js +0 -48
  859. package/lib/oldCommands/spaces/trusted-ips/index.d.ts +0 -1
  860. package/lib/oldCommands/spaces/trusted-ips/index.js +0 -57
  861. package/lib/oldCommands/spaces/trusted-ips/remove.d.ts +0 -1
  862. package/lib/oldCommands/spaces/trusted-ips/remove.js +0 -50
  863. package/lib/oldCommands/spaces/vpn/config.d.ts +0 -1
  864. package/lib/oldCommands/spaces/vpn/config.js +0 -61
  865. package/lib/oldCommands/spaces/vpn/connect.d.ts +0 -1
  866. package/lib/oldCommands/spaces/vpn/connect.js +0 -54
  867. package/lib/oldCommands/spaces/vpn/connections.d.ts +0 -1
  868. package/lib/oldCommands/spaces/vpn/connections.js +0 -70
  869. package/lib/oldCommands/spaces/vpn/destroy.d.ts +0 -1
  870. package/lib/oldCommands/spaces/vpn/destroy.js +0 -48
  871. package/lib/oldCommands/spaces/vpn/info.d.ts +0 -1
  872. package/lib/oldCommands/spaces/vpn/info.js +0 -89
  873. package/lib/oldCommands/spaces/vpn/update.d.ts +0 -1
  874. package/lib/oldCommands/spaces/vpn/update.js +0 -46
  875. package/lib/oldCommands/spaces/vpn/wait.d.ts +0 -1
  876. package/lib/oldCommands/spaces/vpn/wait.js +0 -80
  877. package/lib/oldCommands/spaces/wait.d.ts +0 -1
  878. package/lib/oldCommands/spaces/wait.js +0 -106
  879. package/lib/oldCommands/webhooks/add.d.ts +0 -1
  880. package/lib/oldCommands/webhooks/add.js +0 -56
  881. package/lib/oldCommands/webhooks/deliveries/index.d.ts +0 -1
  882. package/lib/oldCommands/webhooks/deliveries/index.js +0 -90
  883. package/lib/oldCommands/webhooks/deliveries/info.d.ts +0 -1
  884. package/lib/oldCommands/webhooks/deliveries/info.js +0 -54
  885. package/lib/oldCommands/webhooks/index.d.ts +0 -1
  886. package/lib/oldCommands/webhooks/index.js +0 -55
  887. package/lib/oldCommands/webhooks/info.d.ts +0 -1
  888. package/lib/oldCommands/webhooks/info.js +0 -41
  889. package/lib/oldCommands/webhooks/remove.d.ts +0 -1
  890. package/lib/oldCommands/webhooks/remove.js +0 -37
  891. package/lib/oldCommands/webhooks/update.d.ts +0 -1
  892. package/lib/oldCommands/webhooks/update.js +0 -50
  893. package/lib/package.nls.json +0 -6
  894. /package/lib/lib/{pg/bastion.d.ts → data-scrubber/types.js} +0 -0
  895. /package/lib/lib/{spaces/outbound-rules.d.ts → types/completion.js} +0 -0
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Regex patterns for detecting PII in string content
3
+ */
4
+ export const PII_PATTERNS = [
5
+ // Social Security Numbers (US)
6
+ /\b\d{3}-\d{2}-\d{4}\b/g,
7
+ // Email addresses
8
+ /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,
9
+ // Phone numbers (US format)
10
+ /\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g,
11
+ // JWT tokens
12
+ /\beyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,
13
+ ];
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Heroku-specific sensitive field patterns
3
+ *
4
+ * Consolidated list of field names and patterns that contain sensitive data in Heroku applications.
5
+ *
6
+ * Use this preset to ensure consistent PII handling across Heroku services.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { HEROKU_FIELDS } from '@heroku/js-blanket/core/presets';
11
+ * import { Scrubber } from '@heroku/js-blanket';
12
+ *
13
+ * const scrubber = new Scrubber({ fields: HEROKU_FIELDS });
14
+ * const result = scrubber.scrub(data);
15
+ * ```
16
+ */
17
+ export declare const HEROKU_FIELDS: (string | RegExp)[];
18
+ /**
19
+ * GDPR-relevant PII field patterns
20
+ *
21
+ * Field names that typically contain personally identifiable information (PII)
22
+ * regulated by GDPR (General Data Protection Regulation).
23
+ *
24
+ * Use this preset when handling EU user data to ensure compliance with GDPR requirements.
25
+ *
26
+ * @see {@link https://gdpr.eu/what-is-gdpr/|GDPR Official Documentation}
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * import { GDPR_FIELDS, HEROKU_FIELDS } from '@heroku/js-blanket/core/presets';
31
+ * import { Scrubber } from '@heroku/js-blanket';
32
+ *
33
+ * // Combine multiple presets
34
+ * const scrubber = new Scrubber({
35
+ * fields: [...HEROKU_FIELDS, ...GDPR_FIELDS]
36
+ * });
37
+ * ```
38
+ */
39
+ export declare const GDPR_FIELDS: string[];
40
+ /**
41
+ * PCI-DSS relevant field patterns
42
+ *
43
+ * Field names that typically contain payment card information regulated by
44
+ * PCI-DSS (Payment Card Industry Data Security Standard).
45
+ *
46
+ * Use this preset when handling payment card data to help maintain PCI-DSS compliance.
47
+ *
48
+ * **Important**: This preset helps reduce exposure of sensitive payment data in logs and
49
+ * error reports, but is not a substitute for full PCI-DSS compliance measures.
50
+ *
51
+ * @see {@link https://www.pcisecuritystandards.org/|PCI Security Standards Council}
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * import { PCI_FIELDS } from '@heroku/js-blanket/core/presets';
56
+ * import { Scrubber } from '@heroku/js-blanket';
57
+ *
58
+ * const scrubber = new Scrubber({
59
+ * fields: PCI_FIELDS,
60
+ * patterns: [/\d{4}-\d{4}-\d{4}-\d{4}/g] // Also scrub card numbers in text
61
+ * });
62
+ * ```
63
+ */
64
+ export declare const PCI_FIELDS: string[];
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Heroku-specific sensitive field patterns
3
+ *
4
+ * Consolidated list of field names and patterns that contain sensitive data in Heroku applications.
5
+ *
6
+ * Use this preset to ensure consistent PII handling across Heroku services.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { HEROKU_FIELDS } from '@heroku/js-blanket/core/presets';
11
+ * import { Scrubber } from '@heroku/js-blanket';
12
+ *
13
+ * const scrubber = new Scrubber({ fields: HEROKU_FIELDS });
14
+ * const result = scrubber.scrub(data);
15
+ * ```
16
+ */
17
+ export const HEROKU_FIELDS = [
18
+ // Authentication & Sessions
19
+ 'access_token',
20
+ /api[-_]?key/i,
21
+ 'authenticity_token',
22
+ 'heroku_oauth_token',
23
+ 'heroku_session_nonce',
24
+ 'heroku_user_session',
25
+ 'oauth_token',
26
+ 'sudo_oauth_token',
27
+ 'super_user_session_secret',
28
+ 'user_session_secret',
29
+ 'postgres_session_nonce',
30
+ // Passwords & Secrets
31
+ 'password',
32
+ 'passwd',
33
+ 'old_secret',
34
+ 'secret',
35
+ 'secret_token',
36
+ 'confirm_password',
37
+ 'password_confirmation',
38
+ /client[-_]?secret/i,
39
+ // Tokens
40
+ 'token',
41
+ 'bouncer.token',
42
+ 'bouncer.refresh_token',
43
+ // Headers (case-insensitive)
44
+ /authorization/i,
45
+ /cookie/i,
46
+ /x-refresh-token/i,
47
+ // SSO & Sessions
48
+ 'www-sso-session',
49
+ // Payment
50
+ 'payment_method',
51
+ // Infrastructure
52
+ 'logplexUrl',
53
+ ];
54
+ /**
55
+ * GDPR-relevant PII field patterns
56
+ *
57
+ * Field names that typically contain personally identifiable information (PII)
58
+ * regulated by GDPR (General Data Protection Regulation).
59
+ *
60
+ * Use this preset when handling EU user data to ensure compliance with GDPR requirements.
61
+ *
62
+ * @see {@link https://gdpr.eu/what-is-gdpr/|GDPR Official Documentation}
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * import { GDPR_FIELDS, HEROKU_FIELDS } from '@heroku/js-blanket/core/presets';
67
+ * import { Scrubber } from '@heroku/js-blanket';
68
+ *
69
+ * // Combine multiple presets
70
+ * const scrubber = new Scrubber({
71
+ * fields: [...HEROKU_FIELDS, ...GDPR_FIELDS]
72
+ * });
73
+ * ```
74
+ */
75
+ export const GDPR_FIELDS = [
76
+ 'email',
77
+ 'phone',
78
+ 'address',
79
+ 'postal_code',
80
+ 'ssn',
81
+ 'tax_id',
82
+ ];
83
+ /**
84
+ * PCI-DSS relevant field patterns
85
+ *
86
+ * Field names that typically contain payment card information regulated by
87
+ * PCI-DSS (Payment Card Industry Data Security Standard).
88
+ *
89
+ * Use this preset when handling payment card data to help maintain PCI-DSS compliance.
90
+ *
91
+ * **Important**: This preset helps reduce exposure of sensitive payment data in logs and
92
+ * error reports, but is not a substitute for full PCI-DSS compliance measures.
93
+ *
94
+ * @see {@link https://www.pcisecuritystandards.org/|PCI Security Standards Council}
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * import { PCI_FIELDS } from '@heroku/js-blanket/core/presets';
99
+ * import { Scrubber } from '@heroku/js-blanket';
100
+ *
101
+ * const scrubber = new Scrubber({
102
+ * fields: PCI_FIELDS,
103
+ * patterns: [/\d{4}-\d{4}-\d{4}-\d{4}/g] // Also scrub card numbers in text
104
+ * });
105
+ * ```
106
+ */
107
+ export const PCI_FIELDS = [
108
+ 'card_number',
109
+ 'cvv',
110
+ 'credit_card',
111
+ 'payment_method',
112
+ ];
@@ -0,0 +1,131 @@
1
+ import { ScrubConfig, ScrubResult } from './types.js';
2
+ /**
3
+ * Core Scrubber - Deep object traversal with PII scrubbing
4
+ *
5
+ * A high-performance, immutable scrubbing engine that removes sensitive data from structured objects.
6
+ * Supports three scrubbing modes:
7
+ * - **Field-based**: Scrubs values based on field names (e.g., 'password', 'apiToken')
8
+ * - **Path-based**: Scrubs values at specific paths (e.g., 'user.email', 'request.headers.authorization')
9
+ * - **Pattern-based**: Scrubs content matching regex patterns (e.g., SSN, credit cards)
10
+ *
11
+ * ### Design Principles
12
+ * - **Immutable**: All operations create new objects, never mutate inputs
13
+ * - **Type-safe**: Preserves TypeScript types through generic constraints
14
+ * - **Circular-safe**: Handles circular references without crashing
15
+ * - **Performance**: <1ms p95 for logging, <10ms p95 for exception handling (544k+ ops/sec)
16
+ *
17
+ * ### Pattern Adoption
18
+ * Patterns adopted from `@heroku/oauth-provider-adapters-for-mcp/src/logging/redaction.ts`:
19
+ * - Deep recursive traversal with circular reference detection
20
+ * - Immutable cloning strategy with fallback for complex objects
21
+ * - Nested path resolution (e.g., 'user.profile.email')
22
+ * - General array path handling (e.g., 'users[0].password')
23
+ * - Type-safe generics preserving input types
24
+ *
25
+ * Enhanced with:
26
+ * - Field-based matching supporting both strings and regular expressions
27
+ * - Pattern-based content scrubbing for SSN, credit cards, etc.
28
+ * - Dual scrubbing: both field/path matching AND content pattern replacement
29
+ *
30
+ * @example Basic Usage
31
+ * ```typescript
32
+ * const scrubber = new Scrubber({
33
+ * fields: ['password', 'apiToken'],
34
+ * replacement: '[REDACTED]'
35
+ * });
36
+ *
37
+ * const result = scrubber.scrub({
38
+ * user: { name: 'John', password: 'secret123' }
39
+ * });
40
+ * // Result: { user: { name: 'John', password: '[REDACTED]' } }
41
+ * ```
42
+ *
43
+ * @example Advanced Usage with All Modes
44
+ * ```typescript
45
+ * const scrubber = new Scrubber({
46
+ * fields: ['password', /api[-_]?key/i], // Regex matches api_key, api-key, apikey
47
+ * paths: ['user.email', 'request.headers.authorization'],
48
+ * patterns: [/\b\d{3}-\d{2}-\d{4}\b/g], // SSN pattern
49
+ * replacement: '[SCRUBBED]'
50
+ * });
51
+ *
52
+ * const result = scrubber.scrub({
53
+ * user: { name: 'John', email: 'john@example.com', password: 'secret' },
54
+ * request: { headers: { authorization: 'Bearer token123' } },
55
+ * message: 'User SSN is 123-45-6789'
56
+ * });
57
+ * ```
58
+ */
59
+ export declare class Scrubber {
60
+ private config;
61
+ private circularRefs;
62
+ private pathSet;
63
+ /**
64
+ * Creates a new Scrubber instance with the specified configuration
65
+ *
66
+ * @param config - Scrubbing configuration
67
+ * @param config.fields - Field names to scrub (strings or regex patterns)
68
+ * @param config.paths - Dot-notation paths to scrub (e.g., 'user.email', 'items[0].password')
69
+ * @param config.patterns - Regex patterns for content scrubbing (must include global flag for multiple matches)
70
+ * @param config.replacement - Replacement string for scrubbed values (default: '[SCRUBBED]')
71
+ * @param config.recursive - Whether to recursively scrub nested objects (default: true)
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * const scrubber = new Scrubber({
76
+ * fields: ['password', /api[-_]?key/i],
77
+ * paths: ['user.email'],
78
+ * patterns: [/\b\d{3}-\d{2}-\d{4}\b/g],
79
+ * replacement: '[REDACTED]'
80
+ * });
81
+ * ```
82
+ */
83
+ constructor(config: ScrubConfig);
84
+ /**
85
+ * Scrubs sensitive data from an object
86
+ *
87
+ * This is the main entry point for the scrubbing engine. It performs three types of scrubbing:
88
+ * 1. **Field-based**: Replaces values of fields matching configured field names/patterns
89
+ * 2. **Path-based**: Replaces values at specific dot-notation paths
90
+ * 3. **Pattern-based**: Replaces content within string values matching regex patterns
91
+ *
92
+ * The operation is immutable - the input object is not modified. A deep clone is created
93
+ * and scrubbed values are replaced in the clone.
94
+ *
95
+ * ### Performance Characteristics
96
+ * - Small objects (typical logs): ~0.003ms p95
97
+ * - Medium objects (typical errors): ~0.034ms p95
98
+ * - Large objects (10KB+): ~1.2ms p95
99
+ * - Throughput: 54,000+ events/sec
100
+ *
101
+ * @template T - The type of the input object (preserved in output)
102
+ * @param obj - The object to scrub
103
+ * @returns A result object containing the scrubbed data, whether scrubbing occurred, and which paths were scrubbed
104
+ *
105
+ * @example Basic scrubbing
106
+ * ```typescript
107
+ * const scrubber = new Scrubber({ fields: ['password'] });
108
+ * const result = scrubber.scrub({ user: 'john', password: 'secret' });
109
+ * // result.data === { user: 'john', password: '[SCRUBBED]' }
110
+ * // result.scrubbed === true
111
+ * // result.scrubbedPaths === ['password']
112
+ * ```
113
+ *
114
+ * @example Type preservation
115
+ * ```typescript
116
+ * interface User { name: string; email: string; password: string; }
117
+ * const scrubber = new Scrubber({ fields: ['password', 'email'] });
118
+ * const user: User = { name: 'John', email: 'john@example.com', password: 'secret' };
119
+ * const result = scrubber.scrub(user);
120
+ * // result.data is still typed as User
121
+ * ```
122
+ */
123
+ scrub<T>(obj: T): ScrubResult<T>;
124
+ private scrubObject;
125
+ private scrubValue;
126
+ /**
127
+ * Check if a field name matches any configured sensitive field patterns
128
+ */
129
+ private isSensitiveField;
130
+ private deepClone;
131
+ }
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Core Scrubber - Deep object traversal with PII scrubbing
3
+ *
4
+ * A high-performance, immutable scrubbing engine that removes sensitive data from structured objects.
5
+ * Supports three scrubbing modes:
6
+ * - **Field-based**: Scrubs values based on field names (e.g., 'password', 'apiToken')
7
+ * - **Path-based**: Scrubs values at specific paths (e.g., 'user.email', 'request.headers.authorization')
8
+ * - **Pattern-based**: Scrubs content matching regex patterns (e.g., SSN, credit cards)
9
+ *
10
+ * ### Design Principles
11
+ * - **Immutable**: All operations create new objects, never mutate inputs
12
+ * - **Type-safe**: Preserves TypeScript types through generic constraints
13
+ * - **Circular-safe**: Handles circular references without crashing
14
+ * - **Performance**: <1ms p95 for logging, <10ms p95 for exception handling (544k+ ops/sec)
15
+ *
16
+ * ### Pattern Adoption
17
+ * Patterns adopted from `@heroku/oauth-provider-adapters-for-mcp/src/logging/redaction.ts`:
18
+ * - Deep recursive traversal with circular reference detection
19
+ * - Immutable cloning strategy with fallback for complex objects
20
+ * - Nested path resolution (e.g., 'user.profile.email')
21
+ * - General array path handling (e.g., 'users[0].password')
22
+ * - Type-safe generics preserving input types
23
+ *
24
+ * Enhanced with:
25
+ * - Field-based matching supporting both strings and regular expressions
26
+ * - Pattern-based content scrubbing for SSN, credit cards, etc.
27
+ * - Dual scrubbing: both field/path matching AND content pattern replacement
28
+ *
29
+ * @example Basic Usage
30
+ * ```typescript
31
+ * const scrubber = new Scrubber({
32
+ * fields: ['password', 'apiToken'],
33
+ * replacement: '[REDACTED]'
34
+ * });
35
+ *
36
+ * const result = scrubber.scrub({
37
+ * user: { name: 'John', password: 'secret123' }
38
+ * });
39
+ * // Result: { user: { name: 'John', password: '[REDACTED]' } }
40
+ * ```
41
+ *
42
+ * @example Advanced Usage with All Modes
43
+ * ```typescript
44
+ * const scrubber = new Scrubber({
45
+ * fields: ['password', /api[-_]?key/i], // Regex matches api_key, api-key, apikey
46
+ * paths: ['user.email', 'request.headers.authorization'],
47
+ * patterns: [/\b\d{3}-\d{2}-\d{4}\b/g], // SSN pattern
48
+ * replacement: '[SCRUBBED]'
49
+ * });
50
+ *
51
+ * const result = scrubber.scrub({
52
+ * user: { name: 'John', email: 'john@example.com', password: 'secret' },
53
+ * request: { headers: { authorization: 'Bearer token123' } },
54
+ * message: 'User SSN is 123-45-6789'
55
+ * });
56
+ * ```
57
+ */
58
+ export class Scrubber {
59
+ config;
60
+ circularRefs = new WeakSet();
61
+ pathSet;
62
+ /**
63
+ * Creates a new Scrubber instance with the specified configuration
64
+ *
65
+ * @param config - Scrubbing configuration
66
+ * @param config.fields - Field names to scrub (strings or regex patterns)
67
+ * @param config.paths - Dot-notation paths to scrub (e.g., 'user.email', 'items[0].password')
68
+ * @param config.patterns - Regex patterns for content scrubbing (must include global flag for multiple matches)
69
+ * @param config.replacement - Replacement string for scrubbed values (default: '[SCRUBBED]')
70
+ * @param config.recursive - Whether to recursively scrub nested objects (default: true)
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const scrubber = new Scrubber({
75
+ * fields: ['password', /api[-_]?key/i],
76
+ * paths: ['user.email'],
77
+ * patterns: [/\b\d{3}-\d{2}-\d{4}\b/g],
78
+ * replacement: '[REDACTED]'
79
+ * });
80
+ * ```
81
+ */
82
+ constructor(config) {
83
+ this.config = {
84
+ fields: config.fields || [],
85
+ paths: config.paths || [],
86
+ patterns: config.patterns || [],
87
+ replacement: config.replacement || '[SCRUBBED]',
88
+ recursive: config.recursive === undefined ? true : config.recursive,
89
+ };
90
+ // Pre-compute path set for O(1) lookups
91
+ this.pathSet = new Set(this.config.paths);
92
+ }
93
+ /**
94
+ * Scrubs sensitive data from an object
95
+ *
96
+ * This is the main entry point for the scrubbing engine. It performs three types of scrubbing:
97
+ * 1. **Field-based**: Replaces values of fields matching configured field names/patterns
98
+ * 2. **Path-based**: Replaces values at specific dot-notation paths
99
+ * 3. **Pattern-based**: Replaces content within string values matching regex patterns
100
+ *
101
+ * The operation is immutable - the input object is not modified. A deep clone is created
102
+ * and scrubbed values are replaced in the clone.
103
+ *
104
+ * ### Performance Characteristics
105
+ * - Small objects (typical logs): ~0.003ms p95
106
+ * - Medium objects (typical errors): ~0.034ms p95
107
+ * - Large objects (10KB+): ~1.2ms p95
108
+ * - Throughput: 54,000+ events/sec
109
+ *
110
+ * @template T - The type of the input object (preserved in output)
111
+ * @param obj - The object to scrub
112
+ * @returns A result object containing the scrubbed data, whether scrubbing occurred, and which paths were scrubbed
113
+ *
114
+ * @example Basic scrubbing
115
+ * ```typescript
116
+ * const scrubber = new Scrubber({ fields: ['password'] });
117
+ * const result = scrubber.scrub({ user: 'john', password: 'secret' });
118
+ * // result.data === { user: 'john', password: '[SCRUBBED]' }
119
+ * // result.scrubbed === true
120
+ * // result.scrubbedPaths === ['password']
121
+ * ```
122
+ *
123
+ * @example Type preservation
124
+ * ```typescript
125
+ * interface User { name: string; email: string; password: string; }
126
+ * const scrubber = new Scrubber({ fields: ['password', 'email'] });
127
+ * const user: User = { name: 'John', email: 'john@example.com', password: 'secret' };
128
+ * const result = scrubber.scrub(user);
129
+ * // result.data is still typed as User
130
+ * ```
131
+ */
132
+ scrub(obj) {
133
+ const scrubbedPaths = [];
134
+ const cloned = this.deepClone(obj);
135
+ // Reset circular refs tracker for each scrub operation
136
+ this.circularRefs = new WeakSet();
137
+ const scrubbed = this.scrubObject(cloned, '', scrubbedPaths);
138
+ return {
139
+ data: scrubbed,
140
+ scrubbed: scrubbedPaths.length > 0,
141
+ scrubbedPaths,
142
+ };
143
+ }
144
+ scrubObject(obj, path, paths) {
145
+ // Handle circular references
146
+ if (obj && typeof obj === 'object') {
147
+ if (this.circularRefs.has(obj)) {
148
+ return '[Circular Reference]';
149
+ }
150
+ this.circularRefs.add(obj);
151
+ }
152
+ // Handle primitives
153
+ if (obj === null || typeof obj !== 'object') {
154
+ return this.scrubValue(obj, path, paths);
155
+ }
156
+ // Handle arrays
157
+ if (Array.isArray(obj)) {
158
+ return obj.map((item, index) => {
159
+ const indexStr = index.toString();
160
+ const arrayPath = path ? `${path}[${index}]` : indexStr;
161
+ // Check if this specific array index path should be scrubbed
162
+ if (this.pathSet.has(indexStr) || this.pathSet.has(arrayPath)) {
163
+ paths.push(arrayPath);
164
+ return this.config.replacement;
165
+ }
166
+ // Recursively scrub array items
167
+ return this.scrubObject(item, arrayPath, paths);
168
+ });
169
+ }
170
+ // Handle objects - create new object (immutable approach)
171
+ const result = {};
172
+ for (const [key, value] of Object.entries(obj)) {
173
+ const keyPath = path ? `${path}.${key}` : key;
174
+ // Check if this specific path should be scrubbed
175
+ if (this.pathSet.has(key) || this.pathSet.has(keyPath)) {
176
+ result[key] = this.config.replacement;
177
+ paths.push(keyPath);
178
+ continue;
179
+ }
180
+ // Check if key matches sensitive field pattern
181
+ if (this.isSensitiveField(key)) {
182
+ result[key] = this.config.replacement;
183
+ paths.push(keyPath);
184
+ continue;
185
+ }
186
+ // Recursively scrub value
187
+ result[key] = this.config.recursive
188
+ ? this.scrubObject(value, keyPath, paths)
189
+ : this.scrubValue(value, keyPath, paths);
190
+ }
191
+ return result;
192
+ }
193
+ scrubValue(value, path, paths) {
194
+ if (typeof value !== 'string') {
195
+ return value;
196
+ }
197
+ let scrubbed = value;
198
+ let didScrub = false;
199
+ // Check against patterns (SSN, credit cards, etc.)
200
+ for (const pattern of this.config.patterns) {
201
+ if (pattern.test(scrubbed)) {
202
+ scrubbed = scrubbed.replace(pattern, this.config.replacement);
203
+ didScrub = true;
204
+ }
205
+ }
206
+ if (didScrub) {
207
+ paths.push(path);
208
+ }
209
+ return scrubbed;
210
+ }
211
+ /**
212
+ * Check if a field name matches any configured sensitive field patterns
213
+ */
214
+ isSensitiveField(key) {
215
+ return this.config.fields.some((field) => {
216
+ if (field instanceof RegExp) {
217
+ return field.test(key);
218
+ }
219
+ return key.toLowerCase().includes(field.toLowerCase());
220
+ });
221
+ }
222
+ deepClone(obj) {
223
+ try {
224
+ // Fast path for JSON-serializable objects
225
+ return JSON.parse(JSON.stringify(obj));
226
+ }
227
+ catch {
228
+ // Fallback for objects with circular references
229
+ const seen = new WeakMap();
230
+ // eslint-disable-next-line no-inner-declarations
231
+ function clone(value) {
232
+ if (value === null || typeof value !== 'object') {
233
+ return value;
234
+ }
235
+ if (seen.has(value)) {
236
+ return seen.get(value);
237
+ }
238
+ if (Array.isArray(value)) {
239
+ const arr = [];
240
+ seen.set(value, arr);
241
+ value.forEach((item, i) => {
242
+ arr[i] = clone(item);
243
+ });
244
+ return arr;
245
+ }
246
+ const obj = {};
247
+ seen.set(value, obj);
248
+ Object.keys(value).forEach(key => {
249
+ obj[key] = clone(value[key]);
250
+ });
251
+ return obj;
252
+ }
253
+ return clone(obj);
254
+ }
255
+ }
256
+ }