checkly 9.5.0 → 10.0.0-prerelease-4f88d60

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 (575) hide show
  1. package/README.md +10 -0
  2. package/bin/launch.cjs +12 -0
  3. package/dist/ai-context/context.js +1 -0
  4. package/dist/ai-context/context.js.map +1 -1
  5. package/dist/ai-context/onboarding-boilerplate/checkly-config-template.ts +2 -2
  6. package/dist/ai-context/public-skills/checkly/SKILL.md +34 -5
  7. package/dist/ai-context/skills-command/references/communicate.md +8 -5
  8. package/dist/ai-context/skills-command/references/configure-api-checks.md +1 -9
  9. package/dist/ai-context/skills-command/references/configure-browser-checks.md +1 -8
  10. package/dist/ai-context/skills-command/references/configure-check-groups.md +1 -0
  11. package/dist/ai-context/skills-command/references/configure-dns-monitors.md +1 -9
  12. package/dist/ai-context/skills-command/references/configure-grpc-monitors.md +24 -0
  13. package/dist/ai-context/skills-command/references/configure-heartbeat-monitors.md +1 -9
  14. package/dist/ai-context/skills-command/references/configure-icmp-monitors.md +1 -9
  15. package/dist/ai-context/skills-command/references/configure-multistep-checks.md +1 -9
  16. package/dist/ai-context/skills-command/references/configure-playwright-checks.md +2 -2
  17. package/dist/ai-context/skills-command/references/configure-supporting-constructs.md +6 -2
  18. package/dist/ai-context/skills-command/references/configure-tcp-monitors.md +1 -10
  19. package/dist/ai-context/skills-command/references/configure-url-monitors.md +1 -10
  20. package/dist/ai-context/skills-command/references/configure.md +17 -5
  21. package/dist/ai-context/skills-command/references/initialize.md +11 -3
  22. package/dist/ai-context/skills-command/references/investigate-checks.md +1 -1
  23. package/dist/auth/api-key.d.ts +24 -0
  24. package/dist/auth/api-key.js +104 -0
  25. package/dist/auth/api-key.js.map +1 -0
  26. package/dist/auth/device-flow.d.ts +58 -0
  27. package/dist/auth/device-flow.js +228 -0
  28. package/dist/auth/device-flow.js.map +1 -0
  29. package/dist/auth/index.d.ts +6 -6
  30. package/dist/auth/index.js +64 -64
  31. package/dist/auth/index.js.map +1 -1
  32. package/dist/commands/account/plan.js +1 -1
  33. package/dist/commands/account/plan.js.map +1 -1
  34. package/dist/commands/account/usage/projections.d.ts +16 -0
  35. package/dist/commands/account/usage/projections.js +40 -0
  36. package/dist/commands/account/usage/projections.js.map +1 -0
  37. package/dist/commands/account/usage/series.d.ts +7 -3
  38. package/dist/commands/account/usage/series.js +30 -87
  39. package/dist/commands/account/usage/series.js.map +1 -1
  40. package/dist/commands/account/usage/summary.d.ts +4 -1
  41. package/dist/commands/account/usage/summary.js +19 -27
  42. package/dist/commands/account/usage/summary.js.map +1 -1
  43. package/dist/commands/account/usage/term.d.ts +15 -0
  44. package/dist/commands/account/usage/term.js +32 -0
  45. package/dist/commands/account/usage/term.js.map +1 -0
  46. package/dist/commands/account/usage/terms.d.ts +4 -0
  47. package/dist/commands/account/usage/terms.js +19 -27
  48. package/dist/commands/account/usage/terms.js.map +1 -1
  49. package/dist/commands/alert-channels/get.js +2 -1
  50. package/dist/commands/alert-channels/get.js.map +1 -1
  51. package/dist/commands/alert-channels/list.js +2 -1
  52. package/dist/commands/alert-channels/list.js.map +1 -1
  53. package/dist/commands/alert-channels/logs.js +2 -1
  54. package/dist/commands/alert-channels/logs.js.map +1 -1
  55. package/dist/commands/api.js +53 -10
  56. package/dist/commands/api.js.map +1 -1
  57. package/dist/commands/assets/download.js +11 -7
  58. package/dist/commands/assets/download.js.map +1 -1
  59. package/dist/commands/assets/list.js +2 -3
  60. package/dist/commands/assets/list.js.map +1 -1
  61. package/dist/commands/authCommand.d.ts +19 -0
  62. package/dist/commands/authCommand.js +118 -12
  63. package/dist/commands/authCommand.js.map +1 -1
  64. package/dist/commands/baseCommand.d.ts +12 -1
  65. package/dist/commands/baseCommand.js +24 -5
  66. package/dist/commands/baseCommand.js.map +1 -1
  67. package/dist/commands/checks/delete.js +1 -1
  68. package/dist/commands/checks/delete.js.map +1 -1
  69. package/dist/commands/checks/run.js +3 -1
  70. package/dist/commands/checks/run.js.map +1 -1
  71. package/dist/commands/debug/parse-project.d.ts +1 -0
  72. package/dist/commands/debug/parse-project.js +5 -2
  73. package/dist/commands/debug/parse-project.js.map +1 -1
  74. package/dist/commands/deploy.d.ts +8 -2
  75. package/dist/commands/deploy.js +735 -274
  76. package/dist/commands/deploy.js.map +1 -1
  77. package/dist/commands/destroy.js +3 -3
  78. package/dist/commands/destroy.js.map +1 -1
  79. package/dist/commands/env/add.js +2 -2
  80. package/dist/commands/env/add.js.map +1 -1
  81. package/dist/commands/env/ls.js +2 -1
  82. package/dist/commands/env/ls.js.map +1 -1
  83. package/dist/commands/env/pull.js +3 -3
  84. package/dist/commands/env/pull.js.map +1 -1
  85. package/dist/commands/env/update.js +2 -2
  86. package/dist/commands/env/update.js.map +1 -1
  87. package/dist/commands/import/apply.js +12 -10
  88. package/dist/commands/import/apply.js.map +1 -1
  89. package/dist/commands/import/cancel.js +4 -4
  90. package/dist/commands/import/cancel.js.map +1 -1
  91. package/dist/commands/import/commit.js +11 -9
  92. package/dist/commands/import/commit.js.map +1 -1
  93. package/dist/commands/import/plan.js +82 -62
  94. package/dist/commands/import/plan.js.map +1 -1
  95. package/dist/commands/init.d.ts +2 -0
  96. package/dist/commands/init.js +62 -41
  97. package/dist/commands/init.js.map +1 -1
  98. package/dist/commands/login.d.ts +38 -2
  99. package/dist/commands/login.js +848 -52
  100. package/dist/commands/login.js.map +1 -1
  101. package/dist/commands/logout.js +10 -4
  102. package/dist/commands/logout.js.map +1 -1
  103. package/dist/commands/pw-test.js +6 -3
  104. package/dist/commands/pw-test.js.map +1 -1
  105. package/dist/commands/rca/get.js +1 -1
  106. package/dist/commands/rca/get.js.map +1 -1
  107. package/dist/commands/rca/run.js +1 -1
  108. package/dist/commands/rca/run.js.map +1 -1
  109. package/dist/commands/skills/index.js +1 -1
  110. package/dist/commands/skills/index.js.map +1 -1
  111. package/dist/commands/skills/install.js +12 -12
  112. package/dist/commands/skills/install.js.map +1 -1
  113. package/dist/commands/switch.d.ts +10 -1
  114. package/dist/commands/switch.js +75 -13
  115. package/dist/commands/switch.js.map +1 -1
  116. package/dist/commands/sync-playwright.js +5 -10
  117. package/dist/commands/sync-playwright.js.map +1 -1
  118. package/dist/commands/test.d.ts +2 -0
  119. package/dist/commands/test.js +58 -29
  120. package/dist/commands/test.js.map +1 -1
  121. package/dist/commands/trigger.d.ts +1 -2
  122. package/dist/commands/trigger.js +27 -20
  123. package/dist/commands/trigger.js.map +1 -1
  124. package/dist/commands/validate.js +1 -0
  125. package/dist/commands/validate.js.map +1 -1
  126. package/dist/commands/whoami.d.ts +8 -0
  127. package/dist/commands/whoami.js +57 -6
  128. package/dist/commands/whoami.js.map +1 -1
  129. package/dist/constants.d.ts +3 -2
  130. package/dist/constants.js +8 -1
  131. package/dist/constants.js.map +1 -1
  132. package/dist/constructs/alert-channel-codegen.d.ts +6 -1
  133. package/dist/constructs/alert-channel-codegen.js +12 -6
  134. package/dist/constructs/alert-channel-codegen.js.map +1 -1
  135. package/dist/constructs/alert-channel-subscription.d.ts +1 -0
  136. package/dist/constructs/alert-channel-subscription.js +4 -0
  137. package/dist/constructs/alert-channel-subscription.js.map +1 -1
  138. package/dist/constructs/alert-channel.js +8 -5
  139. package/dist/constructs/alert-channel.js.map +1 -1
  140. package/dist/constructs/alert-escalation-policy-codegen.d.ts +7 -0
  141. package/dist/constructs/alert-escalation-policy-codegen.js +25 -8
  142. package/dist/constructs/alert-escalation-policy-codegen.js.map +1 -1
  143. package/dist/constructs/api-assertion.d.ts +0 -2
  144. package/dist/constructs/api-assertion.js +0 -4
  145. package/dist/constructs/api-assertion.js.map +1 -1
  146. package/dist/constructs/api-check-bundle.d.ts +4 -124
  147. package/dist/constructs/api-check-codegen.js +1 -1
  148. package/dist/constructs/api-check-codegen.js.map +1 -1
  149. package/dist/constructs/api-check.d.ts +8 -128
  150. package/dist/constructs/api-check.js +15 -17
  151. package/dist/constructs/api-check.js.map +1 -1
  152. package/dist/constructs/api-request-codegen.js +10 -8
  153. package/dist/constructs/api-request-codegen.js.map +1 -1
  154. package/dist/constructs/browser-check-bundle.d.ts +11 -125
  155. package/dist/constructs/browser-check-bundle.js +5 -1
  156. package/dist/constructs/browser-check-bundle.js.map +1 -1
  157. package/dist/constructs/browser-check.d.ts +5 -107
  158. package/dist/constructs/browser-check.js +1 -1
  159. package/dist/constructs/browser-check.js.map +1 -1
  160. package/dist/constructs/check-codegen.d.ts +46 -14
  161. package/dist/constructs/check-codegen.js +118 -34
  162. package/dist/constructs/check-codegen.js.map +1 -1
  163. package/dist/constructs/check-group-codegen.js +23 -9
  164. package/dist/constructs/check-group-codegen.js.map +1 -1
  165. package/dist/constructs/check-group-v1.d.ts +28 -16
  166. package/dist/constructs/check-group-v1.js +48 -17
  167. package/dist/constructs/check-group-v1.js.map +1 -1
  168. package/dist/constructs/check-group-v2.d.ts +2 -21
  169. package/dist/constructs/check-group-v2.js +4 -4
  170. package/dist/constructs/check-group-v2.js.map +1 -1
  171. package/dist/constructs/check.d.ts +68 -220
  172. package/dist/constructs/check.js +106 -37
  173. package/dist/constructs/check.js.map +1 -1
  174. package/dist/constructs/construct-codegen.d.ts +1 -2
  175. package/dist/constructs/construct-diagnostics.d.ts +3 -0
  176. package/dist/constructs/construct-diagnostics.js +11 -0
  177. package/dist/constructs/construct-diagnostics.js.map +1 -1
  178. package/dist/constructs/construct.d.ts +30 -4
  179. package/dist/constructs/construct.js +52 -6
  180. package/dist/constructs/construct.js.map +1 -1
  181. package/dist/constructs/dashboard.js +11 -7
  182. package/dist/constructs/dashboard.js.map +1 -1
  183. package/dist/constructs/dns-monitor.d.ts +4 -100
  184. package/dist/constructs/dns-request-codegen.js +1 -1
  185. package/dist/constructs/dns-request-codegen.js.map +1 -1
  186. package/dist/constructs/email-alert-channel-codegen.js +1 -1
  187. package/dist/constructs/email-alert-channel-codegen.js.map +1 -1
  188. package/dist/constructs/engine.d.ts +4 -2
  189. package/dist/constructs/engine.js +3 -1
  190. package/dist/constructs/engine.js.map +1 -1
  191. package/dist/constructs/frequency-codegen.js +10 -2
  192. package/dist/constructs/frequency-codegen.js.map +1 -1
  193. package/dist/constructs/frequency.d.ts +8 -3
  194. package/dist/constructs/frequency.js +7 -2
  195. package/dist/constructs/frequency.js.map +1 -1
  196. package/dist/constructs/grpc-monitor.d.ts +4 -100
  197. package/dist/constructs/grpc-monitor.js +19 -0
  198. package/dist/constructs/grpc-monitor.js.map +1 -1
  199. package/dist/constructs/grpc-request-codegen.js +13 -4
  200. package/dist/constructs/grpc-request-codegen.js.map +1 -1
  201. package/dist/constructs/grpc-request.d.ts +23 -0
  202. package/dist/constructs/heartbeat-monitor.d.ts +2 -1
  203. package/dist/constructs/heartbeat-monitor.js +2 -2
  204. package/dist/constructs/heartbeat-monitor.js.map +1 -1
  205. package/dist/constructs/icmp-monitor.d.ts +4 -100
  206. package/dist/constructs/icmp-request-codegen.js +1 -1
  207. package/dist/constructs/icmp-request-codegen.js.map +1 -1
  208. package/dist/constructs/incidentio-alert-channel-codegen.d.ts +1 -1
  209. package/dist/constructs/incidentio-alert-channel-codegen.js +14 -8
  210. package/dist/constructs/incidentio-alert-channel-codegen.js.map +1 -1
  211. package/dist/constructs/index.d.ts +1 -1
  212. package/dist/constructs/index.js +1 -1
  213. package/dist/constructs/index.js.map +1 -1
  214. package/dist/constructs/internal/assertion-validation.js +1 -2
  215. package/dist/constructs/internal/assertion-validation.js.map +1 -1
  216. package/dist/constructs/internal/codegen/context.d.ts +73 -6
  217. package/dist/constructs/internal/codegen/context.js +78 -6
  218. package/dist/constructs/internal/codegen/context.js.map +1 -1
  219. package/dist/constructs/internal/codegen/index.d.ts +3 -1
  220. package/dist/constructs/internal/codegen/index.js +2 -1
  221. package/dist/constructs/internal/codegen/index.js.map +1 -1
  222. package/dist/constructs/internal/codegen/render.d.ts +68 -0
  223. package/dist/constructs/internal/codegen/render.js +75 -0
  224. package/dist/constructs/internal/codegen/render.js.map +1 -0
  225. package/dist/constructs/internal/common-diagnostics.d.ts +1 -2
  226. package/dist/constructs/internal/common-diagnostics.js +7 -17
  227. package/dist/constructs/internal/common-diagnostics.js.map +1 -1
  228. package/dist/constructs/internal/declaring-file.d.ts +39 -0
  229. package/dist/constructs/internal/declaring-file.js +139 -0
  230. package/dist/constructs/internal/declaring-file.js.map +1 -0
  231. package/dist/constructs/internal/default-retry-strategy.d.ts +9 -0
  232. package/dist/constructs/internal/default-retry-strategy.js +13 -0
  233. package/dist/constructs/internal/default-retry-strategy.js.map +1 -0
  234. package/dist/constructs/internal/retry-strategy-defaults.d.ts +13 -0
  235. package/dist/constructs/internal/retry-strategy-defaults.js +14 -0
  236. package/dist/constructs/internal/retry-strategy-defaults.js.map +1 -0
  237. package/dist/constructs/key-value-pair-codegen.d.ts +6 -1
  238. package/dist/constructs/key-value-pair-codegen.js +24 -3
  239. package/dist/constructs/key-value-pair-codegen.js.map +1 -1
  240. package/dist/constructs/maintenance-window-codegen.d.ts +7 -0
  241. package/dist/constructs/maintenance-window-codegen.js +36 -19
  242. package/dist/constructs/maintenance-window-codegen.js.map +1 -1
  243. package/dist/constructs/maintenance-window.d.ts +37 -3
  244. package/dist/constructs/maintenance-window.js +34 -1
  245. package/dist/constructs/maintenance-window.js.map +1 -1
  246. package/dist/constructs/monitor.d.ts +6 -119
  247. package/dist/constructs/monitor.js +3 -5
  248. package/dist/constructs/monitor.js.map +1 -1
  249. package/dist/constructs/msteams-alert-channel-codegen.d.ts +1 -1
  250. package/dist/constructs/msteams-alert-channel-codegen.js +8 -18
  251. package/dist/constructs/msteams-alert-channel-codegen.js.map +1 -1
  252. package/dist/constructs/multi-step-check-bundle.d.ts +4 -109
  253. package/dist/constructs/multi-step-check.d.ts +4 -100
  254. package/dist/constructs/opsgenie-alert-channel-codegen.js +1 -1
  255. package/dist/constructs/opsgenie-alert-channel-codegen.js.map +1 -1
  256. package/dist/constructs/pagerduty-alert-channel-codegen.js +1 -1
  257. package/dist/constructs/pagerduty-alert-channel-codegen.js.map +1 -1
  258. package/dist/constructs/phone-call-alert-channel-codegen.js +1 -1
  259. package/dist/constructs/phone-call-alert-channel-codegen.js.map +1 -1
  260. package/dist/constructs/playwright-check-bundle.d.ts +10 -130
  261. package/dist/constructs/playwright-check-bundle.js +3 -3
  262. package/dist/constructs/playwright-check-bundle.js.map +1 -1
  263. package/dist/constructs/playwright-check-codegen.d.ts +85 -0
  264. package/dist/constructs/playwright-check-codegen.js +212 -0
  265. package/dist/constructs/playwright-check-codegen.js.map +1 -0
  266. package/dist/constructs/playwright-check.d.ts +14 -122
  267. package/dist/constructs/playwright-check.js +17 -51
  268. package/dist/constructs/playwright-check.js.map +1 -1
  269. package/dist/constructs/private-location-check-assignment.d.ts +1 -0
  270. package/dist/constructs/private-location-check-assignment.js +4 -0
  271. package/dist/constructs/private-location-check-assignment.js.map +1 -1
  272. package/dist/constructs/private-location-group-assignment.d.ts +1 -0
  273. package/dist/constructs/private-location-group-assignment.js +4 -0
  274. package/dist/constructs/private-location-group-assignment.js.map +1 -1
  275. package/dist/constructs/private-location.js +3 -1
  276. package/dist/constructs/private-location.js.map +1 -1
  277. package/dist/constructs/retry-strategy-codegen.d.ts +7 -1
  278. package/dist/constructs/retry-strategy-codegen.js +41 -32
  279. package/dist/constructs/retry-strategy-codegen.js.map +1 -1
  280. package/dist/constructs/retry-strategy.d.ts +0 -4
  281. package/dist/constructs/retry-strategy.js +5 -8
  282. package/dist/constructs/retry-strategy.js.map +1 -1
  283. package/dist/constructs/session.d.ts +38 -1
  284. package/dist/constructs/session.js +73 -3
  285. package/dist/constructs/session.js.map +1 -1
  286. package/dist/constructs/slack-alert-channel-codegen.js +1 -1
  287. package/dist/constructs/slack-alert-channel-codegen.js.map +1 -1
  288. package/dist/constructs/slack-app-alert-channel-codegen.js +1 -1
  289. package/dist/constructs/slack-app-alert-channel-codegen.js.map +1 -1
  290. package/dist/constructs/sms-alert-channel-codegen.js +1 -1
  291. package/dist/constructs/sms-alert-channel-codegen.js.map +1 -1
  292. package/dist/constructs/ssl-monitor.d.ts +4 -142
  293. package/dist/constructs/ssl-request-codegen.js +4 -3
  294. package/dist/constructs/ssl-request-codegen.js.map +1 -1
  295. package/dist/constructs/status-page-v3-automation-rule-codegen.js +5 -4
  296. package/dist/constructs/status-page-v3-automation-rule-codegen.js.map +1 -1
  297. package/dist/constructs/status-page-v3-codegen.js +3 -2
  298. package/dist/constructs/status-page-v3-codegen.js.map +1 -1
  299. package/dist/constructs/status-page-v3-component-codegen.js +8 -7
  300. package/dist/constructs/status-page-v3-component-codegen.js.map +1 -1
  301. package/dist/constructs/tcp-monitor-codegen.js +3 -2
  302. package/dist/constructs/tcp-monitor-codegen.js.map +1 -1
  303. package/dist/constructs/tcp-monitor.d.ts +8 -103
  304. package/dist/constructs/tcp-monitor.js +3 -2
  305. package/dist/constructs/tcp-monitor.js.map +1 -1
  306. package/dist/constructs/telegram-alert-channel-codegen.d.ts +1 -1
  307. package/dist/constructs/telegram-alert-channel-codegen.js +14 -8
  308. package/dist/constructs/telegram-alert-channel-codegen.js.map +1 -1
  309. package/dist/constructs/time-zone.d.ts +24 -0
  310. package/dist/constructs/time-zone.js +455 -0
  311. package/dist/constructs/time-zone.js.map +1 -0
  312. package/dist/constructs/traceroute-monitor.d.ts +4 -100
  313. package/dist/constructs/traceroute-request-codegen.js +2 -2
  314. package/dist/constructs/traceroute-request-codegen.js.map +1 -1
  315. package/dist/constructs/url-monitor-codegen.js +1 -1
  316. package/dist/constructs/url-monitor-codegen.js.map +1 -1
  317. package/dist/constructs/url-monitor.d.ts +7 -123
  318. package/dist/constructs/url-monitor.js +3 -0
  319. package/dist/constructs/url-monitor.js.map +1 -1
  320. package/dist/constructs/url-request-codegen.js +4 -3
  321. package/dist/constructs/url-request-codegen.js.map +1 -1
  322. package/dist/constructs/webhook-alert-channel-codegen.js +3 -3
  323. package/dist/constructs/webhook-alert-channel-codegen.js.map +1 -1
  324. package/dist/formatters/check-result-detail.js +0 -185
  325. package/dist/formatters/check-result-detail.js.map +1 -1
  326. package/dist/formatters/render.d.ts +2 -1
  327. package/dist/formatters/render.js +2 -2
  328. package/dist/formatters/render.js.map +1 -1
  329. package/dist/formatters/usage.d.ts +18 -12
  330. package/dist/formatters/usage.js +285 -245
  331. package/dist/formatters/usage.js.map +1 -1
  332. package/dist/help/help-extension.js +2 -1
  333. package/dist/help/help-extension.js.map +1 -1
  334. package/dist/helpers/accounts.d.ts +28 -0
  335. package/dist/helpers/accounts.js +50 -0
  336. package/dist/helpers/accounts.js.map +1 -0
  337. package/dist/helpers/activate-account.d.ts +13 -0
  338. package/dist/helpers/activate-account.js +24 -0
  339. package/dist/helpers/activate-account.js.map +1 -0
  340. package/dist/helpers/api-fields.js +3 -2
  341. package/dist/helpers/api-fields.js.map +1 -1
  342. package/dist/helpers/cli-mode.d.ts +24 -0
  343. package/dist/helpers/cli-mode.js +64 -8
  344. package/dist/helpers/cli-mode.js.map +1 -1
  345. package/dist/helpers/command-preview.d.ts +44 -0
  346. package/dist/helpers/command-preview.js +29 -9
  347. package/dist/helpers/command-preview.js.map +1 -1
  348. package/dist/helpers/command-style.d.ts +1 -0
  349. package/dist/helpers/command-style.js +51 -37
  350. package/dist/helpers/command-style.js.map +1 -1
  351. package/dist/helpers/flags.d.ts +10 -0
  352. package/dist/helpers/flags.js +18 -0
  353. package/dist/helpers/flags.js.map +1 -1
  354. package/dist/helpers/import-plan-selection.d.ts +1 -1
  355. package/dist/helpers/import-plan-selection.js +8 -20
  356. package/dist/helpers/import-plan-selection.js.map +1 -1
  357. package/dist/helpers/invalid-input-error.d.ts +15 -0
  358. package/dist/helpers/invalid-input-error.js +17 -0
  359. package/dist/helpers/invalid-input-error.js.map +1 -0
  360. package/dist/helpers/number.js +4 -3
  361. package/dist/helpers/number.js.map +1 -1
  362. package/dist/helpers/onboarding/boilerplate.js +15 -3
  363. package/dist/helpers/onboarding/boilerplate.js.map +1 -1
  364. package/dist/helpers/onboarding/index.d.ts +1 -1
  365. package/dist/helpers/onboarding/index.js +1 -1
  366. package/dist/helpers/onboarding/index.js.map +1 -1
  367. package/dist/helpers/onboarding/messages.d.ts +7 -0
  368. package/dist/helpers/onboarding/messages.js +14 -0
  369. package/dist/helpers/onboarding/messages.js.map +1 -1
  370. package/dist/helpers/onboarding/prompt-display.js +2 -2
  371. package/dist/helpers/onboarding/prompt-display.js.map +1 -1
  372. package/dist/helpers/onboarding/prompts-helpers.js +3 -1
  373. package/dist/helpers/onboarding/prompts-helpers.js.map +1 -1
  374. package/dist/helpers/onboarding/skill-install.js +4 -4
  375. package/dist/helpers/onboarding/skill-install.js.map +1 -1
  376. package/dist/helpers/prompts.d.ts +7 -0
  377. package/dist/helpers/prompts.js +10 -0
  378. package/dist/helpers/prompts.js.map +1 -0
  379. package/dist/helpers/result-assets.js +4 -3
  380. package/dist/helpers/result-assets.js.map +1 -1
  381. package/dist/helpers/test-helper.d.ts +14 -0
  382. package/dist/helpers/test-helper.js +33 -3
  383. package/dist/helpers/test-helper.js.map +1 -1
  384. package/dist/helpers/usage.d.ts +51 -14
  385. package/dist/helpers/usage.js +193 -53
  386. package/dist/helpers/usage.js.map +1 -1
  387. package/dist/helpers/wrap.js +1 -1
  388. package/dist/helpers/wrap.js.map +1 -1
  389. package/dist/messages/common-messages.d.ts +1 -0
  390. package/dist/messages/common-messages.js +4 -2
  391. package/dist/messages/common-messages.js.map +1 -1
  392. package/dist/reporters/abstract-list.d.ts +9 -2
  393. package/dist/reporters/abstract-list.js +105 -32
  394. package/dist/reporters/abstract-list.js.map +1 -1
  395. package/dist/reporters/ci.js +7 -4
  396. package/dist/reporters/ci.js.map +1 -1
  397. package/dist/reporters/dot.d.ts +1 -0
  398. package/dist/reporters/dot.js +19 -7
  399. package/dist/reporters/dot.js.map +1 -1
  400. package/dist/reporters/github.d.ts +2 -0
  401. package/dist/reporters/github.js +29 -4
  402. package/dist/reporters/github.js.map +1 -1
  403. package/dist/reporters/json.d.ts +2 -0
  404. package/dist/reporters/json.js +27 -4
  405. package/dist/reporters/json.js.map +1 -1
  406. package/dist/reporters/list.js +10 -8
  407. package/dist/reporters/list.js.map +1 -1
  408. package/dist/reporters/reporter.d.ts +1 -0
  409. package/dist/reporters/reporter.js.map +1 -1
  410. package/dist/reporters/util.d.ts +5 -2
  411. package/dist/reporters/util.js +25 -61
  412. package/dist/reporters/util.js.map +1 -1
  413. package/dist/rest/analytics.js +0 -4
  414. package/dist/rest/analytics.js.map +1 -1
  415. package/dist/rest/api.d.ts +10 -1
  416. package/dist/rest/api.js +44 -9
  417. package/dist/rest/api.js.map +1 -1
  418. package/dist/rest/check-results.d.ts +1 -50
  419. package/dist/rest/check-results.js.map +1 -1
  420. package/dist/rest/checkly-storage.d.ts +6 -1
  421. package/dist/rest/checkly-storage.js +13 -2
  422. package/dist/rest/checkly-storage.js.map +1 -1
  423. package/dist/rest/errors.d.ts +19 -0
  424. package/dist/rest/errors.js +20 -1
  425. package/dist/rest/errors.js.map +1 -1
  426. package/dist/rest/projects.d.ts +254 -4
  427. package/dist/rest/projects.js +208 -17
  428. package/dist/rest/projects.js.map +1 -1
  429. package/dist/rest/usage.d.ts +164 -73
  430. package/dist/rest/usage.js +21 -10
  431. package/dist/rest/usage.js.map +1 -1
  432. package/dist/services/abstract-check-runner.d.ts +34 -2
  433. package/dist/services/abstract-check-runner.js +183 -56
  434. package/dist/services/abstract-check-runner.js.map +1 -1
  435. package/dist/services/check-parser/bundler.d.ts +26 -0
  436. package/dist/services/check-parser/bundler.js +81 -7
  437. package/dist/services/check-parser/bundler.js.map +1 -1
  438. package/dist/services/check-parser/cache-hash.d.ts +1 -4
  439. package/dist/services/check-parser/cache-hash.js.map +1 -1
  440. package/dist/services/check-parser/package-files/json-text-source-file.d.ts +0 -2
  441. package/dist/services/check-parser/package-files/json-text-source-file.js +6 -6
  442. package/dist/services/check-parser/package-files/json-text-source-file.js.map +1 -1
  443. package/dist/services/check-parser/parser.d.ts +3 -2
  444. package/dist/services/check-parser/parser.js +31 -40
  445. package/dist/services/check-parser/parser.js.map +1 -1
  446. package/dist/services/checkly-config-codegen.js +4 -4
  447. package/dist/services/checkly-config-codegen.js.map +1 -1
  448. package/dist/services/checkly-config-loader.d.ts +18 -33
  449. package/dist/services/checkly-config-loader.js +50 -47
  450. package/dist/services/checkly-config-loader.js.map +1 -1
  451. package/dist/services/config.d.ts +42 -1
  452. package/dist/services/config.js +93 -9
  453. package/dist/services/config.js.map +1 -1
  454. package/dist/services/content-hash.d.ts +14 -0
  455. package/dist/services/content-hash.js +22 -0
  456. package/dist/services/content-hash.js.map +1 -0
  457. package/dist/services/deploy-diff/diff-lines.d.ts +52 -0
  458. package/dist/services/deploy-diff/diff-lines.js +327 -0
  459. package/dist/services/deploy-diff/diff-lines.js.map +1 -0
  460. package/dist/services/deploy-diff/double-check.d.ts +9 -0
  461. package/dist/services/deploy-diff/double-check.js +21 -0
  462. package/dist/services/deploy-diff/double-check.js.map +1 -0
  463. package/dist/services/deploy-diff/import-shape.d.ts +171 -0
  464. package/dist/services/deploy-diff/import-shape.js +633 -0
  465. package/dist/services/deploy-diff/import-shape.js.map +1 -0
  466. package/dist/services/deploy-diff/legacy-payload.d.ts +22 -0
  467. package/dist/services/deploy-diff/legacy-payload.js +51 -0
  468. package/dist/services/deploy-diff/legacy-payload.js.map +1 -0
  469. package/dist/services/deploy-diff/plan-summary.d.ts +81 -0
  470. package/dist/services/deploy-diff/plan-summary.js +262 -0
  471. package/dist/services/deploy-diff/plan-summary.js.map +1 -0
  472. package/dist/services/deploy-diff/preview-output.d.ts +63 -0
  473. package/dist/services/deploy-diff/preview-output.js +403 -0
  474. package/dist/services/deploy-diff/preview-output.js.map +1 -0
  475. package/dist/services/deploy-diff/render.d.ts +59 -0
  476. package/dist/services/deploy-diff/render.js +326 -0
  477. package/dist/services/deploy-diff/render.js.map +1 -0
  478. package/dist/services/deploy-diff/shape-changes.d.ts +2 -0
  479. package/dist/services/deploy-diff/shape-changes.js +48 -0
  480. package/dist/services/deploy-diff/shape-changes.js.map +1 -0
  481. package/dist/services/deploy-diff/source-index.d.ts +18 -0
  482. package/dist/services/deploy-diff/source-index.js +48 -0
  483. package/dist/services/deploy-diff/source-index.js.map +1 -0
  484. package/dist/services/deploy-diff/variable-names.d.ts +30 -0
  485. package/dist/services/deploy-diff/variable-names.js +64 -0
  486. package/dist/services/deploy-diff/variable-names.js.map +1 -0
  487. package/dist/services/engine-resolver.js +3 -0
  488. package/dist/services/engine-resolver.js.map +1 -1
  489. package/dist/services/engine-rules-loader.d.ts +6 -0
  490. package/dist/services/engine-rules-loader.js +12 -3
  491. package/dist/services/engine-rules-loader.js.map +1 -1
  492. package/dist/services/oxc-parser.d.ts +26 -0
  493. package/dist/services/oxc-parser.js +70 -0
  494. package/dist/services/oxc-parser.js.map +1 -0
  495. package/dist/services/project-cli.d.ts +75 -0
  496. package/dist/services/project-cli.js +302 -0
  497. package/dist/services/project-cli.js.map +1 -0
  498. package/dist/services/project-parser.d.ts +5 -0
  499. package/dist/services/project-parser.js +25 -13
  500. package/dist/services/project-parser.js.map +1 -1
  501. package/dist/services/skills.js +3 -3
  502. package/dist/services/skills.js.map +1 -1
  503. package/dist/services/snapshot-service.d.ts +25 -8
  504. package/dist/services/snapshot-service.js +46 -4
  505. package/dist/services/snapshot-service.js.map +1 -1
  506. package/dist/services/socket-client.js +1 -1
  507. package/dist/services/socket-client.js.map +1 -1
  508. package/dist/services/test-filters.d.ts +18 -0
  509. package/dist/services/test-filters.js +10 -0
  510. package/dist/services/test-filters.js.map +1 -1
  511. package/dist/services/test-runner.d.ts +1 -1
  512. package/dist/services/test-runner.js +10 -11
  513. package/dist/services/test-runner.js.map +1 -1
  514. package/dist/services/test-session-cancel.d.ts +5 -0
  515. package/dist/services/test-session-cancel.js +28 -3
  516. package/dist/services/test-session-cancel.js.map +1 -1
  517. package/dist/services/trigger-runner.d.ts +1 -1
  518. package/dist/services/trigger-runner.js +2 -2
  519. package/dist/services/trigger-runner.js.map +1 -1
  520. package/dist/services/two-installs.d.ts +39 -0
  521. package/dist/services/two-installs.js +155 -0
  522. package/dist/services/two-installs.js.map +1 -0
  523. package/dist/services/util.d.ts +17 -2
  524. package/dist/services/util.js +118 -11
  525. package/dist/services/util.js.map +1 -1
  526. package/dist/services/write-back/apply-edits.d.ts +29 -0
  527. package/dist/services/write-back/apply-edits.js +255 -0
  528. package/dist/services/write-back/apply-edits.js.map +1 -0
  529. package/dist/services/write-back/helper-edit.d.ts +135 -0
  530. package/dist/services/write-back/helper-edit.js +343 -0
  531. package/dist/services/write-back/helper-edit.js.map +1 -0
  532. package/dist/services/write-back/imports.d.ts +30 -0
  533. package/dist/services/write-back/imports.js +88 -0
  534. package/dist/services/write-back/imports.js.map +1 -0
  535. package/dist/services/write-back/literal-edit.d.ts +183 -0
  536. package/dist/services/write-back/literal-edit.js +359 -0
  537. package/dist/services/write-back/literal-edit.js.map +1 -0
  538. package/dist/services/write-back/output.d.ts +26 -0
  539. package/dist/services/write-back/output.js +110 -0
  540. package/dist/services/write-back/output.js.map +1 -0
  541. package/dist/services/write-back/plan.d.ts +180 -0
  542. package/dist/services/write-back/plan.js +1046 -0
  543. package/dist/services/write-back/plan.js.map +1 -0
  544. package/dist/services/write-back/source-file.d.ts +133 -0
  545. package/dist/services/write-back/source-file.js +460 -0
  546. package/dist/services/write-back/source-file.js.map +1 -0
  547. package/dist/sourcegen/index.d.ts +1 -1
  548. package/dist/sourcegen/index.js +1 -1
  549. package/dist/sourcegen/index.js.map +1 -1
  550. package/dist/sourcegen/program.d.ts +19 -1
  551. package/dist/sourcegen/program.js +32 -7
  552. package/dist/sourcegen/program.js.map +1 -1
  553. package/dist/testing/clear-git-env.d.ts +1 -0
  554. package/dist/testing/clear-git-env.js +25 -0
  555. package/dist/testing/clear-git-env.js.map +1 -0
  556. package/dist/testing/global-setup.d.ts +1 -0
  557. package/dist/testing/global-setup.js +3 -0
  558. package/dist/testing/global-setup.js.map +1 -1
  559. package/oclif.manifest.json +1113 -884
  560. package/package.json +21 -19
  561. package/dist/commands/rules.d.ts +0 -9
  562. package/dist/commands/rules.js +0 -13
  563. package/dist/commands/rules.js.map +0 -1
  564. package/dist/constructs/agentic-check-codegen.d.ts +0 -22
  565. package/dist/constructs/agentic-check-codegen.js +0 -59
  566. package/dist/constructs/agentic-check-codegen.js.map +0 -1
  567. package/dist/constructs/agentic-check.d.ts +0 -237
  568. package/dist/constructs/agentic-check.js +0 -100
  569. package/dist/constructs/agentic-check.js.map +0 -1
  570. package/dist/services/check-parser/package-files/json-text-source-file-parser.d.ts +0 -7
  571. package/dist/services/check-parser/package-files/json-text-source-file-parser.js +0 -47
  572. package/dist/services/check-parser/package-files/json-text-source-file-parser.js.map +0 -1
  573. package/dist/services/check-parser/package-files/source-file-parser.d.ts +0 -10
  574. package/dist/services/check-parser/package-files/source-file-parser.js +0 -13
  575. package/dist/services/check-parser/package-files/source-file-parser.js.map +0 -1
@@ -0,0 +1,633 @@
1
+ import { MASKED_VALUE } from '../../constructs/internal/codegen/index.js';
2
+ export function idKey(type, logicalId) {
3
+ return `${type}:${logicalId}`;
4
+ }
5
+ /**
6
+ * The segments of an RFC 6901 pointer, unescaped; the root pointer has none.
7
+ *
8
+ * @throws UnshapeableError for a string that is not a pointer, rather than
9
+ * matching it against nothing.
10
+ */
11
+ export function pointerSegments(pointer) {
12
+ if (pointer === '') {
13
+ return [];
14
+ }
15
+ if (!pointer.startsWith('/')) {
16
+ throw new UnshapeableError(`'${pointer}' is not a JSON Pointer`);
17
+ }
18
+ return pointer.slice(1).split('/').map(segment => segment.replace(/~1/g, '/').replace(/~0/g, '~'));
19
+ }
20
+ /** A payload this module cannot turn into an import resource; the message says why. */
21
+ export class UnshapeableError extends Error {
22
+ }
23
+ /** Types whose physical id is a number; every other type's is a string. */
24
+ const NUMERIC_ID_TYPES = new Set(['check-group', 'alert-channel', 'alert-channel-subscription']);
25
+ /**
26
+ * Above every real numeric id, so a synthetic one can never be mistaken for
27
+ * (or collide with) a resource that exists.
28
+ */
29
+ const SYNTHETIC_ID_BASE = 1_000_000_000_000;
30
+ /**
31
+ * A stable id for a resource that has none yet (it is being created), derived
32
+ * from its identity rather than counted: two shapings of the same project
33
+ * must number the same resource the same way, whatever order they run in.
34
+ * FNV-1a over the key, offset above every real id for numeric types; string
35
+ * ids reuse the logical id, which no UUID can equal.
36
+ */
37
+ function syntheticId(type, logicalId) {
38
+ if (!NUMERIC_ID_TYPES.has(type)) {
39
+ return `synthetic:${logicalId}`;
40
+ }
41
+ let hash = 0x811c9dc5;
42
+ for (const char of `${type}\0${logicalId}`) {
43
+ hash ^= char.codePointAt(0);
44
+ hash = Math.imul(hash, 0x01000193) >>> 0;
45
+ }
46
+ return SYNTHETIC_ID_BASE + hash;
47
+ }
48
+ /**
49
+ * Every resource's physical id, for the rendering: the preview's entries
50
+ * carry the id of everything that exists (including a resource the code only
51
+ * references, whose `fromId` construct sends it), and a resource being created
52
+ * gets a synthetic one so the codegen has something to key its registrations
53
+ * on. Every local resource has an entry afterwards; this is the one place an
54
+ * id is minted.
55
+ */
56
+ export function physicalIdsFromPlan(diff, local) {
57
+ const ids = new Map();
58
+ for (const entry of diff) {
59
+ if (entry.physicalId !== undefined) {
60
+ ids.set(idKey(entry.type, entry.logicalId), entry.physicalId);
61
+ }
62
+ }
63
+ for (const resource of local) {
64
+ const key = idKey(resource.type, resource.logicalId);
65
+ if (!ids.has(key)) {
66
+ ids.set(key, resource.physicalId ?? syntheticId(resource.type, resource.logicalId));
67
+ }
68
+ }
69
+ return ids;
70
+ }
71
+ /**
72
+ * The payload keys that hold a reference (`{ ref: logicalId }` in a deploy
73
+ * payload, a physical id in the import format), and the type they point at.
74
+ * `services` is a list of references on a status page card, and its codegen
75
+ * reads each element's `id`, so it is substituted to `{ id }` objects rather
76
+ * than bare ids.
77
+ */
78
+ const REFERENCE_KEYS = {
79
+ alertChannelId: 'alert-channel',
80
+ checkId: 'check',
81
+ componentId: 'status-page-component',
82
+ groupId: 'check-group',
83
+ parentId: 'status-page-component',
84
+ privateLocationId: 'private-location',
85
+ serviceId: 'status-page-service',
86
+ services: 'status-page-service',
87
+ statusPageId: 'status-page',
88
+ };
89
+ /** Keys only a deploy reads; the import format has no counterpart and the codegen would ignore them. */
90
+ const DEPLOY_ONLY_KEYS = ['sourceFile', 'codeBundleSha256', 'privateLocations', 'v'];
91
+ /**
92
+ * Keys of a deployed row that neither side renders: a setup or teardown
93
+ * snippet reference. The codegen resolves one through snippet files an
94
+ * import registers and a preview has not, a deploy clears it either way, and
95
+ * it is a bookkeeping column the plan never reports — so left in `before`,
96
+ * `fillUnchangedFromBefore` would copy it onto the local side.
97
+ */
98
+ export const UNRENDERED_KEYS = ['setupSnippetId', 'tearDownSnippetId'];
99
+ /** Keys of a deployed row that are not properties of the local payload: its id, and the relation rows it carries. */
100
+ const NOT_FILLED = new Set(['id', 'alertChannelSubscriptions', 'privateLocationAssignments']);
101
+ const escapeSegment = (segment) => segment.replace(/~/g, '~0').replace(/\//g, '~1');
102
+ const isPlainObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
103
+ /**
104
+ * Fills into the shaped local payload every property the deployed row holds
105
+ * that the payload leaves out and the plan does not report as changed. Those
106
+ * are the defaults the deploy's validation fills into an absent property
107
+ * (`activated: true`, a check type's response-time limits, an empty header
108
+ * list), which the row then always carries and the codegen prints: the plan
109
+ * compared the validated payload against the row, so a property absent here
110
+ * and unreported there is one the deploy leaves as it is. Taking it from
111
+ * `before` makes the two renderings agree on it without this CLI keeping a
112
+ * copy of any default — and cannot hide a change, since a value copied to
113
+ * both sides prints alike on both.
114
+ *
115
+ * A key is left alone when a reported change path is it, lies under it, or
116
+ * lies above it; an explicit `null` is a value, not an absence; and only
117
+ * object keys are filled, never the elements of a list.
118
+ */
119
+ export function fillUnchangedFromBefore(local, before, changes) {
120
+ const reported = changes.map(change => change.path);
121
+ const touched = (pointer) => reported.some(path => path === pointer || path.startsWith(`${pointer}/`) || pointer.startsWith(`${path}/`));
122
+ const fill = (target, source, prefix) => {
123
+ for (const [key, value] of Object.entries(source)) {
124
+ if (prefix === '' && NOT_FILLED.has(key)) {
125
+ continue;
126
+ }
127
+ const pointer = `${prefix}/${escapeSegment(key)}`;
128
+ const current = target[key];
129
+ if (current === undefined) {
130
+ if (!touched(pointer)) {
131
+ target[key] = structuredClone(value);
132
+ }
133
+ }
134
+ else if (isPlainObject(current) && isPlainObject(value)) {
135
+ fill(current, value, pointer);
136
+ }
137
+ }
138
+ };
139
+ fill(local, before, '');
140
+ }
141
+ function isRef(value) {
142
+ return (typeof value === 'object'
143
+ && value !== null
144
+ && !Array.isArray(value)
145
+ && Object.keys(value).length === 1
146
+ && typeof value.ref === 'string');
147
+ }
148
+ function resolveRef(ids, key, ref) {
149
+ const id = ids.get(idKey(REFERENCE_KEYS[key], ref.ref));
150
+ if (id === undefined) {
151
+ throw new UnshapeableError(`'${key}' refers to ${REFERENCE_KEYS[key]} '${ref.ref}', which this plan does not know`);
152
+ }
153
+ return id;
154
+ }
155
+ /**
156
+ * Rebuild a payload subtree with references substituted. Only a JSON-shaped
157
+ * value is accepted: the codegen renders values, and an invalid `Date` or a
158
+ * function would either throw mid-render or print nonsense. A value that
159
+ * serializes itself (`toJSON`) is taken as what it serializes to, which is
160
+ * what the deploy sends.
161
+ */
162
+ function substitute(value, key, ids) {
163
+ if (value === null || value === undefined) {
164
+ return value;
165
+ }
166
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
167
+ return value;
168
+ }
169
+ if (value instanceof Date) {
170
+ if (Number.isNaN(value.getTime())) {
171
+ throw new UnshapeableError(`'${key}' holds an invalid date`);
172
+ }
173
+ return value.toISOString();
174
+ }
175
+ if (Array.isArray(value)) {
176
+ if (key === 'services') {
177
+ return value.map(element => isRef(element) ? { id: resolveRef(ids, key, element) } : substitute(element, key, ids));
178
+ }
179
+ if (key === 'cards') {
180
+ // A card's `services` may be left out (or left undefined) by the
181
+ // construct; the import format always carries the list and the card
182
+ // codegen iterates it unguarded.
183
+ return value.map(element => {
184
+ const card = substitute(element, key, ids);
185
+ return card !== null && typeof card === 'object' && !Array.isArray(card) && !('services' in card)
186
+ ? { ...card, services: [] }
187
+ : card;
188
+ });
189
+ }
190
+ return value.map(element => substitute(element, key, ids));
191
+ }
192
+ if (typeof value !== 'object') {
193
+ throw new UnshapeableError(`'${key}' holds a ${typeof value}`);
194
+ }
195
+ if (isRef(value) && key !== undefined && key in REFERENCE_KEYS) {
196
+ return resolveRef(ids, key, value);
197
+ }
198
+ if (isRef(value)) {
199
+ throw new UnshapeableError(`'${key}' holds a reference this shaping does not know how to place`);
200
+ }
201
+ if (typeof value.toJSON === 'function') {
202
+ return substitute(value.toJSON(), key, ids);
203
+ }
204
+ const result = {};
205
+ for (const [childKey, child] of Object.entries(value)) {
206
+ if (child !== undefined) {
207
+ result[childKey] = substitute(child, childKey, ids);
208
+ }
209
+ }
210
+ return result;
211
+ }
212
+ /**
213
+ * A check's intent as the backend stores and the import format returns it:
214
+ * the constraints grouped by type, required outcomes first, in the order the
215
+ * author gave within each group. The construct keeps the author's
216
+ * interleaving, which the store does not.
217
+ */
218
+ function groupConstraints(intent) {
219
+ if (intent === null || typeof intent !== 'object' || !Array.isArray(intent.constraints)) {
220
+ return intent;
221
+ }
222
+ const { constraints, ...rest } = intent;
223
+ const required = [];
224
+ const preserved = [];
225
+ // A type this CLI does not know keeps its place after the known groups
226
+ // rather than vanishing from the rendering.
227
+ const others = [];
228
+ for (const constraint of constraints) {
229
+ const bucket = constraint?.type === 'REQUIRED_OUTCOME' ? required : constraint?.type === 'MUST_PRESERVE' ? preserved : others;
230
+ bucket.push(constraint);
231
+ }
232
+ return { ...rest, constraints: [...required, ...preserved, ...others] };
233
+ }
234
+ /**
235
+ * The local payload of one resource, as an import resource: `id` set, every
236
+ * reference a physical id, deploy-only keys dropped, the intent's constraints
237
+ * grouped as stored. No canonicalization of nulls, defaults or
238
+ * ordering: the payload has none, and the defaults the deploy would fill
239
+ * are taken from the deployed row by `fillUnchangedFromBefore`.
240
+ *
241
+ * @throws UnshapeableError for a payload the codegen could not render.
242
+ */
243
+ export function toImportResource(type, logicalId, payload, ids) {
244
+ if (payload === null || typeof payload !== 'object' || Array.isArray(payload)) {
245
+ throw new UnshapeableError('the payload is not an object');
246
+ }
247
+ const id = ids.get(idKey(type, logicalId));
248
+ if (id === undefined) {
249
+ throw new UnshapeableError(`${type} '${logicalId}' has no id in this plan`);
250
+ }
251
+ const shaped = substitute(payload, undefined, ids);
252
+ for (const key of DEPLOY_ONLY_KEYS) {
253
+ delete shaped[key];
254
+ }
255
+ if ('intent' in shaped) {
256
+ shaped.intent = groupConstraints(shaped.intent);
257
+ }
258
+ shaped.id = id;
259
+ return { type, logicalId, payload: shaped };
260
+ }
261
+ /** The relation types a parent of each kind carries, and the parent key on their rows. */
262
+ const RELATIONS = {
263
+ 'check': {
264
+ parentKey: 'checkId',
265
+ subscription: 'alert-channel-subscription',
266
+ assignment: 'private-location-check-assignment',
267
+ },
268
+ 'check-group': {
269
+ parentKey: 'groupId',
270
+ subscription: 'alert-channel-subscription',
271
+ assignment: 'private-location-group-assignment',
272
+ },
273
+ };
274
+ /** The target a relation row or resource points at, for matching the two sides. */
275
+ function relationTarget(payload) {
276
+ return payload.alertChannelId !== undefined
277
+ ? `alert-channel:${payload.alertChannelId}`
278
+ : `private-location:${payload.privateLocationId}`;
279
+ }
280
+ /**
281
+ * Relations in one stable order, by target, on whichever side they come
282
+ * from: the codegen folds them into `alertChannels`/`privateLocations` in
283
+ * registration order, and the deployed rows' order (creation order) means
284
+ * nothing the diff should show.
285
+ */
286
+ function inTargetOrder(resources) {
287
+ return [...resources].sort((a, b) => relationTarget(a.payload).localeCompare(relationTarget(b.payload)));
288
+ }
289
+ /**
290
+ * The relation rows a parent's `before` carries — every live subscription
291
+ * and assignment, the way the import format spells them — as the resources
292
+ * whose `prepare()` registers them on the codegen context.
293
+ */
294
+ export function relationResourcesFromBefore(type, before) {
295
+ const kinds = RELATIONS[type];
296
+ if (!kinds) {
297
+ return [];
298
+ }
299
+ const rows = (key) => (Array.isArray(before[key]) ? before[key] : []);
300
+ return inTargetOrder([
301
+ ...rows('alertChannelSubscriptions').map(row => ({
302
+ type: kinds.subscription,
303
+ logicalId: `deployed:${kinds.subscription}:${row.id}`,
304
+ payload: row,
305
+ })),
306
+ ...rows('privateLocationAssignments').map(row => ({
307
+ type: kinds.assignment,
308
+ logicalId: `deployed:${kinds.assignment}:${row.id}`,
309
+ payload: row,
310
+ })),
311
+ ]);
312
+ }
313
+ /**
314
+ * The relation resources the local side renders with: the project's own
315
+ * subscription and assignment constructs for this parent, plus every deployed
316
+ * relation the deploy will leave in place. A deployed row is left out when the
317
+ * code removed it (a DELETE or DETACH relation entry folded into this parent
318
+ * names its row id), when `--prune-unmanaged-relations` will delete it (a pruned entry
319
+ * names it too), or when a local construct already stands for the same target.
320
+ * What remains is unmanaged: the deploy keeps it, so both sides show it.
321
+ *
322
+ * @throws UnshapeableError when one of the parent's own relations cannot be shaped.
323
+ */
324
+ export function relationResourcesForAfter(input) {
325
+ const { ids, local, entry, diff, pruneRelations } = input;
326
+ const { type, logicalId } = entry;
327
+ const kinds = RELATIONS[type];
328
+ if (!kinds) {
329
+ return [];
330
+ }
331
+ const ownRelations = [];
332
+ for (const resource of local) {
333
+ if (resource.type !== kinds.subscription && resource.type !== kinds.assignment) {
334
+ continue;
335
+ }
336
+ const parentRef = resource.payload?.[kinds.parentKey];
337
+ if (!isRef(parentRef) || parentRef.ref !== logicalId) {
338
+ continue;
339
+ }
340
+ ownRelations.push(toImportResource(resource.type, resource.logicalId, resource.payload, ids));
341
+ }
342
+ // Subscriptions and assignments live in different tables, with independent
343
+ // ids, so a removed row is known by its type as well.
344
+ const removed = new Set();
345
+ for (const candidate of diff) {
346
+ const folded = candidate.foldedInto?.type === type && candidate.foldedInto.logicalId === logicalId;
347
+ if (!folded) {
348
+ continue;
349
+ }
350
+ const goes = candidate.action === 'DELETE' || candidate.action === 'DETACH';
351
+ if (!goes || (candidate.origin === 'unmanaged' && !pruneRelations)) {
352
+ continue;
353
+ }
354
+ if (candidate.physicalId === undefined) {
355
+ throw new UnshapeableError(`the plan removes a ${candidate.type} of '${logicalId}' without saying which`);
356
+ }
357
+ removed.add(`${candidate.type}:${candidate.physicalId}`);
358
+ }
359
+ const covered = new Set(ownRelations.map(resource => relationTarget(resource.payload)));
360
+ const kept = entry.before === undefined
361
+ ? []
362
+ : relationResourcesFromBefore(type, entry.before).filter(resource => {
363
+ const row = resource.payload;
364
+ return !removed.has(`${resource.type}:${row.id}`) && !covered.has(relationTarget(row));
365
+ });
366
+ return inTargetOrder([...ownRelations, ...kept]);
367
+ }
368
+ const CONDITIONS = {
369
+ locked: element => element.locked === true,
370
+ lockedOrSecret: element => element.locked === true || element.secret === true,
371
+ };
372
+ /** What a redacted value renders as, on both sides: never an empty string, which could pass for a value. */
373
+ export const MASK = MASKED_VALUE;
374
+ const placeholderOf = (rule) => (rule.kind === 'object' ? null : MASK);
375
+ /**
376
+ * Whether a conditional rule applies to the element holding the value. A
377
+ * condition this CLI does not know (a newer API) applies regardless — the
378
+ * one direction that cannot print a credential.
379
+ */
380
+ function qualifies(rule, element) {
381
+ if (rule.when === undefined) {
382
+ return true;
383
+ }
384
+ const condition = Object.hasOwn(CONDITIONS, rule.when) ? CONDITIONS[rule.when] : undefined;
385
+ return condition === undefined || (element !== null && typeof element === 'object' && condition(element));
386
+ }
387
+ function blank(node, segments, rule) {
388
+ if (segments.length === 0) {
389
+ return node;
390
+ }
391
+ const [segment, ...rest] = segments;
392
+ if (segment === '*') {
393
+ // Every position: of a list, or of a map (a free-form header object).
394
+ // A trailing `*` names the positions themselves, each blanked when it
395
+ // qualifies.
396
+ const each = (element) => (rest.length === 0 ? (qualifies(rule, element) ? placeholderOf(rule) : element) : blank(element, rest, rule));
397
+ if (Array.isArray(node)) {
398
+ return node.map(each);
399
+ }
400
+ if (node !== null && typeof node === 'object') {
401
+ return Object.fromEntries(Object.entries(node).map(([k, v]) => [k, each(v)]));
402
+ }
403
+ return node;
404
+ }
405
+ if (node === null || typeof node !== 'object' || Array.isArray(node)) {
406
+ return node;
407
+ }
408
+ const object = node;
409
+ const key = segment;
410
+ if (rest.length > 0) {
411
+ const replaced = blank(object[key], rest, rule);
412
+ return replaced === object[key] ? node : { ...object, [key]: replaced };
413
+ }
414
+ if (rule.when === undefined) {
415
+ // Unconditional: blank a value that is there.
416
+ if (!(key in object) || object[key] === undefined) {
417
+ return node;
418
+ }
419
+ }
420
+ else if (!qualifies(rule, object)) {
421
+ // Conditional: the element's own flags decide, and the API blanks a
422
+ // qualifying element whether or not the value is there, so this side
423
+ // does too.
424
+ return node;
425
+ }
426
+ // The placeholder the rule names, which is what the API wrote on its side.
427
+ return { ...object, [key]: placeholderOf(rule) };
428
+ }
429
+ /**
430
+ * A payload with the API's redaction rules applied — the type's whole table,
431
+ * whatever the deployed row held — so a credential is masked on both sides
432
+ * (the deployed side arrives blanked and is masked the same way, since a
433
+ * blank could pass for a value) and never a phantom change, nor printed. A
434
+ * rule that matches nothing is simply ignored. No table at all is refused:
435
+ * an API that reports a `before` without one predates the rules, and the one
436
+ * direction this module must never take is printing a credential.
437
+ *
438
+ * @throws UnshapeableError when the API reported no rule table.
439
+ */
440
+ export function blankRedacted(payload, redactions) {
441
+ if (redactions === undefined) {
442
+ throw new UnshapeableError('the preview reports no redaction rules for this resource');
443
+ }
444
+ let result = payload;
445
+ for (const rule of redactions) {
446
+ result = blank(result, pointerSegments(rule.path), rule);
447
+ }
448
+ return result;
449
+ }
450
+ export function isMaskedMarker(value) {
451
+ return (typeof value === 'object' && value !== null && !Array.isArray(value)
452
+ && (value.$masked === 'same' || value.$masked === 'changed'));
453
+ }
454
+ function markerPositions(value, segments = []) {
455
+ if (isMaskedMarker(value)) {
456
+ return [{ segments: [...segments], changed: value.$masked === 'changed' }];
457
+ }
458
+ if (Array.isArray(value)) {
459
+ return value.flatMap((element, index) => markerPositions(element, [...segments, String(index)]));
460
+ }
461
+ if (value !== null && typeof value === 'object') {
462
+ return Object.entries(value)
463
+ .flatMap(([key, member]) => markerPositions(member, [...segments, key]));
464
+ }
465
+ return [];
466
+ }
467
+ /** Whether a reported value holds a marker anywhere inside it. */
468
+ export const carriesMarker = (value) => markerPositions(value).length > 0;
469
+ const changedPositions = (value) => markerPositions(value).filter(position => position.changed).map(position => position.segments);
470
+ /** The value at `segments` inside `root`, or undefined where the path does not resolve. */
471
+ export function nodeAt(root, segments) {
472
+ let node = root;
473
+ for (const segment of segments) {
474
+ if (Array.isArray(node)) {
475
+ node = node[Number(segment)];
476
+ }
477
+ else if (node !== null && typeof node === 'object') {
478
+ node = node[segment];
479
+ }
480
+ else {
481
+ return undefined;
482
+ }
483
+ }
484
+ return node;
485
+ }
486
+ /**
487
+ * Overwrite the masked value at `segments` with `label`. Only a masked string
488
+ * is overwritten: a position the rules blank to `null` (a Playwright config
489
+ * subtree) has nothing to print, and one that is not masked at all is not
490
+ * this CLI's to touch.
491
+ */
492
+ function label(root, segments, text) {
493
+ const parent = nodeAt(root, segments.slice(0, -1));
494
+ const last = segments[segments.length - 1];
495
+ if (last === undefined || parent === null || typeof parent !== 'object') {
496
+ return false;
497
+ }
498
+ const container = parent;
499
+ if (container[last] !== MASK) {
500
+ return false;
501
+ }
502
+ container[last] = text;
503
+ return true;
504
+ }
505
+ const keyOf = (element) => {
506
+ const key = element?.key;
507
+ return typeof key === 'string' ? key : undefined;
508
+ };
509
+ /**
510
+ * Write `text` over the masked value of every element the report marks
511
+ * `changed`, in the payload's list at `path`. A reported element is matched
512
+ * to the payload's by `key` when that key is unique in both, else by index
513
+ * when the key at that index is the same and the lists are equal in length,
514
+ * else not at all — the deployed row's list can be ordered differently from
515
+ * the report, so an index alone is never trusted, and a name is never
516
+ * wrong. A scalar marker names its own path. Returns whether any mark was
517
+ * placed.
518
+ */
519
+ export function markChanged(payload, path, reported, text) {
520
+ const segments = pointerSegments(path);
521
+ const root = nodeAt(payload, segments);
522
+ let placed = false;
523
+ if (Array.isArray(reported) && Array.isArray(root)) {
524
+ const count = (list, key) => list.filter(element => keyOf(element) === key).length;
525
+ reported.forEach((element, index) => {
526
+ const positions = changedPositions(element);
527
+ if (positions.length === 0) {
528
+ return;
529
+ }
530
+ const key = keyOf(element);
531
+ let target;
532
+ if (key !== undefined && count(reported, key) === 1 && count(root, key) === 1) {
533
+ target = root.findIndex(candidate => keyOf(candidate) === key);
534
+ }
535
+ else if (reported.length === root.length && keyOf(root[index]) === key) {
536
+ target = index;
537
+ }
538
+ if (target === undefined) {
539
+ return;
540
+ }
541
+ for (const position of positions) {
542
+ placed = label(payload, [...segments, String(target), ...position], text) || placed;
543
+ }
544
+ });
545
+ return placed;
546
+ }
547
+ for (const position of changedPositions(reported)) {
548
+ placed = label(payload, [...segments, ...position], text) || placed;
549
+ }
550
+ return placed;
551
+ }
552
+ /** How each referenceable type registers on the codegen context. */
553
+ const REGISTRARS = [
554
+ { type: 'check-group', register: (context, id, name, file) => context.registerCheckGroup(id, name, file) },
555
+ { type: 'alert-channel', register: (context, id, name, file) => context.registerAlertChannel(id, name, file) },
556
+ { type: 'private-location', register: (context, id, name, file) => context.registerPrivateLocation(id, name, file) },
557
+ { type: 'status-page', register: (context, id, name, file) => context.registerStatusPage(id, name, file) },
558
+ { type: 'status-page-service', register: (context, id, name, file) => context.registerStatusPageService(id, name, file) },
559
+ { type: 'status-page-component', register: (context, id, name, file) => context.registerStatusPageComponent(id, name, file) },
560
+ ];
561
+ /** The types another construct refers to by variable. */
562
+ export const REFERENCEABLE_TYPES = REGISTRARS.map(({ type }) => type);
563
+ /** The name a construct has in the user's code (`names`, keyed by `idKey`), to use as it is, or else `fallback`. */
564
+ function variableName(names, type, logicalId, fallback) {
565
+ const identifier = names.get(idKey(type, logicalId));
566
+ return identifier !== undefined ? { identifier } : fallback;
567
+ }
568
+ const LOOKUPS = {
569
+ 'check-group': (context, id) => context.lookupCheckGroup(id),
570
+ 'alert-channel': (context, id) => context.lookupAlertChannel(id),
571
+ 'private-location': (context, id) => context.lookupPrivateLocation(id),
572
+ 'status-page': (context, id) => context.lookupStatusPage(id),
573
+ 'status-page-service': (context, id) => context.lookupStatusPageService(id),
574
+ 'status-page-component': (context, id) => context.lookupStatusPageComponent(id),
575
+ };
576
+ /**
577
+ * Re-register the construct a codegen has just prepared under the name it
578
+ * has in the user's code (`names`, keyed by `idKey`), or else its logical
579
+ * id, in the construct file the codegen chose. A codegen names the variable
580
+ * it exports after the resource's content (an alert channel after its
581
+ * address, a group after its name), so a change to that content would show
582
+ * as a renamed variable beside the change itself; the code's name and the
583
+ * logical id are the same on both sides. The codegen's own name is given up
584
+ * first, so the new one can be the same (a group declared as `websiteGroup`
585
+ * and named "Website Group") without a counter to tell the two apart. A type
586
+ * whose codegen registers no variable is left alone.
587
+ */
588
+ export function registerUnderCodeName(context, resource, names = new Map()) {
589
+ const lookup = LOOKUPS[resource.type];
590
+ const registrar = REGISTRARS.find(entry => entry.type === resource.type);
591
+ if (lookup === undefined || registrar === undefined) {
592
+ return;
593
+ }
594
+ const id = resource.payload.id;
595
+ const prepared = lookup(context, id);
596
+ const { file } = prepared;
597
+ context.releaseVariable(prepared);
598
+ registrar.register(context, id, variableName(names, resource.type, resource.logicalId, resource.logicalId), file);
599
+ }
600
+ /**
601
+ * Register every referenceable construct of the local project on a fresh
602
+ * context, under its physical id, so a rendered reference comes out as a
603
+ * variable rather than as `fromId(...)`: the one the construct has in the
604
+ * user's code (`names`, keyed by `idKey`), or else one derived from its name. Both
605
+ * sides of a comparison register the same set in the same order, which is
606
+ * what makes their identifiers agree. The constructs the code names go
607
+ * first, so a name derived for another construct that happens to be the
608
+ * same is the one that gets a counter. One support file for all of them, so
609
+ * the context's per-file identifier namespace tells two constructs with the
610
+ * same name apart (`group`, `group2`); a support file, not a construct file,
611
+ * because `renderConstruct` counts the construct files a render adds.
612
+ */
613
+ export function registerProject(context, program, project, ids, names = new Map()) {
614
+ const file = program.generatedSupportFile('__preview__/project');
615
+ for (const named of [true, false]) {
616
+ for (const { type, register } of REGISTRARS) {
617
+ const constructs = project.data[type];
618
+ for (const logicalId of Object.keys(constructs).sort()) {
619
+ const id = ids.get(idKey(type, logicalId));
620
+ // A reference construct (`fromId(...)`) has no name of its own: left
621
+ // unregistered, the codegen renders the reference as the `fromId(...)`
622
+ // it is, on both sides.
623
+ if (id === undefined || constructs[logicalId].member === false || names.has(idKey(type, logicalId)) !== named) {
624
+ continue;
625
+ }
626
+ const name = constructs[logicalId].name;
627
+ const derived = typeof name === 'string' && name.length > 0 ? name : logicalId;
628
+ register(context, id, variableName(names, type, logicalId, derived), file);
629
+ }
630
+ }
631
+ }
632
+ }
633
+ //# sourceMappingURL=import-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-shape.js","sourceRoot":"","sources":["../../../src/services/deploy-diff/import-shape.ts"],"names":[],"mappings":"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"}