@reddoorla/maintenance 0.85.2 → 0.87.0

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 (265) hide show
  1. package/README.md +8 -0
  2. package/dist/airtable-ZBUPQJSC.js +9 -0
  3. package/dist/{announce-GIAYN67S.js → announce-I2Z4JN3I.js} +58 -30
  4. package/dist/announce-I2Z4JN3I.js.map +1 -0
  5. package/dist/attachments-NLZIJ5NU.js +9 -0
  6. package/dist/{bump-deps-SWJB6H5V.js → bump-deps-CGVELRLK.js} +9 -9
  7. package/dist/{chunk-SDUJIANJ.js → chunk-2NJQLSEU.js} +3 -3
  8. package/dist/chunk-2NQUCS7O.js +243 -0
  9. package/dist/chunk-2NQUCS7O.js.map +1 -0
  10. package/dist/{chunk-ZTPPCHDB.js → chunk-3G25KIWW.js} +4 -4
  11. package/dist/{chunk-DTTIFYAM.js → chunk-3JQ2FO3D.js} +44 -405
  12. package/dist/chunk-3JQ2FO3D.js.map +1 -0
  13. package/dist/chunk-3SF7D4DY.js +359 -0
  14. package/dist/chunk-3SF7D4DY.js.map +1 -0
  15. package/dist/{chunk-37S6L6G4.js → chunk-5UINJNAJ.js} +72 -2
  16. package/dist/chunk-5UINJNAJ.js.map +1 -0
  17. package/dist/{chunk-THEFTZ7F.js → chunk-62CMMGEO.js} +5 -5
  18. package/dist/{chunk-FDIFTIXC.js → chunk-6TWWY7ZU.js} +2 -2
  19. package/dist/{chunk-PBWDDDQH.js → chunk-7BZUOZPU.js} +2 -2
  20. package/dist/{chunk-577HCGZO.js → chunk-7NYN2P6I.js} +44 -26
  21. package/dist/chunk-7NYN2P6I.js.map +1 -0
  22. package/dist/{chunk-UYCAF77E.js → chunk-7RJ2HMMJ.js} +3 -3
  23. package/dist/{chunk-Q276MZ7E.js → chunk-7UAYMAKR.js} +2 -2
  24. package/dist/{chunk-MGR2H7F4.js → chunk-BBUSGEES.js} +58 -45
  25. package/dist/chunk-BBUSGEES.js.map +1 -0
  26. package/dist/chunk-BNM5POSJ.js +284 -0
  27. package/dist/chunk-BNM5POSJ.js.map +1 -0
  28. package/dist/{chunk-R6FPFMOS.js → chunk-BQRFQSGY.js} +3 -3
  29. package/dist/{chunk-NWB4O5EY.js → chunk-C6CLRKPV.js} +5 -5
  30. package/dist/chunk-C6CLRKPV.js.map +1 -0
  31. package/dist/{chunk-7J53SUT6.js → chunk-CROKUHJB.js} +4 -4
  32. package/dist/chunk-DEWJMMG3.js +274 -0
  33. package/dist/chunk-DEWJMMG3.js.map +1 -0
  34. package/dist/{chunk-SEEA6RXF.js → chunk-DJZWYIPP.js} +2 -2
  35. package/dist/chunk-DJZWYIPP.js.map +1 -0
  36. package/dist/chunk-EVBCK2KC.js +68 -0
  37. package/dist/chunk-EVBCK2KC.js.map +1 -0
  38. package/dist/chunk-F3JWOPTG.js +202 -0
  39. package/dist/chunk-F3JWOPTG.js.map +1 -0
  40. package/dist/{chunk-GZNBCHAZ.js → chunk-HEWSRXYV.js} +4 -4
  41. package/dist/chunk-HHMMUR4P.js +335 -0
  42. package/dist/chunk-HHMMUR4P.js.map +1 -0
  43. package/dist/chunk-HSI6Q7MI.js +1238 -0
  44. package/dist/chunk-HSI6Q7MI.js.map +1 -0
  45. package/dist/{chunk-MPBXOJ3N.js → chunk-IY6256GK.js} +33 -2
  46. package/dist/chunk-IY6256GK.js.map +1 -0
  47. package/dist/{chunk-LS6QPANO.js → chunk-IYSEC543.js} +2 -2
  48. package/dist/{chunk-DC5H7KEQ.js → chunk-JHGHLKFS.js} +2 -2
  49. package/dist/{chunk-4DHQCN5H.js → chunk-LBYOLBW7.js} +17 -2
  50. package/dist/chunk-LBYOLBW7.js.map +1 -0
  51. package/dist/{chunk-6QRLRT3P.js → chunk-MT2JINSS.js} +16 -265
  52. package/dist/chunk-MT2JINSS.js.map +1 -0
  53. package/dist/{chunk-TP5M2NQB.js → chunk-NCMZMLY7.js} +3 -3
  54. package/dist/{chunk-COZPL62X.js → chunk-NDWYJLRF.js} +24 -139
  55. package/dist/chunk-NDWYJLRF.js.map +1 -0
  56. package/dist/{chunk-3YXDSCM6.js → chunk-NXNPDCF3.js} +29 -11
  57. package/dist/chunk-NXNPDCF3.js.map +1 -0
  58. package/dist/chunk-NYUYNYQL.js +48 -0
  59. package/dist/chunk-NYUYNYQL.js.map +1 -0
  60. package/dist/chunk-P6AORG32.js +415 -0
  61. package/dist/chunk-P6AORG32.js.map +1 -0
  62. package/dist/chunk-PTDMVGKL.js +31 -0
  63. package/dist/chunk-PTDMVGKL.js.map +1 -0
  64. package/dist/{chunk-D4FVAIEJ.js → chunk-PZR4EBPY.js} +5 -2
  65. package/dist/chunk-PZR4EBPY.js.map +1 -0
  66. package/dist/{chunk-LTB6KVJW.js → chunk-SDDPUAWH.js} +13 -11
  67. package/dist/{chunk-LTB6KVJW.js.map → chunk-SDDPUAWH.js.map} +1 -1
  68. package/dist/{chunk-WYYQK4D3.js → chunk-TD2NNXLZ.js} +13 -13
  69. package/dist/{chunk-ZMIPG6TR.js → chunk-TVL5MVUF.js} +4 -4
  70. package/dist/chunk-UDRHAQT7.js +172 -0
  71. package/dist/chunk-UDRHAQT7.js.map +1 -0
  72. package/dist/chunk-VAD43MOR.js +72 -0
  73. package/dist/chunk-VAD43MOR.js.map +1 -0
  74. package/dist/chunk-VSBFM7DS.js +229 -0
  75. package/dist/chunk-VSBFM7DS.js.map +1 -0
  76. package/dist/{chunk-VRWUL4TR.js → chunk-XHHMM5HX.js} +2 -2
  77. package/dist/{chunk-RJB3QUSP.js → chunk-XIDUYLSR.js} +3 -3
  78. package/dist/{chunk-QG6OSL4M.js → chunk-XUGSZP7Z.js} +2 -2
  79. package/dist/{chunk-S56JQJ4F.js → chunk-Y53WOQIJ.js} +3 -3
  80. package/dist/{chunk-62VF32IC.js → chunk-YFAXOD7Z.js} +10 -6
  81. package/dist/chunk-YFAXOD7Z.js.map +1 -0
  82. package/dist/{chunk-ICXV25N7.js → chunk-Z3KYFUN6.js} +3 -3
  83. package/dist/chunk-ZBDZTJUO.js +129 -0
  84. package/dist/chunk-ZBDZTJUO.js.map +1 -0
  85. package/dist/chunk-ZGBEIWSC.js +146 -0
  86. package/dist/chunk-ZGBEIWSC.js.map +1 -0
  87. package/dist/cli/bin.js +51 -28
  88. package/dist/cli/bin.js.map +1 -1
  89. package/dist/cli/commands/audit.d.ts +30 -1
  90. package/dist/cli/commands/audit.js +69 -33
  91. package/dist/cli/commands/audit.js.map +1 -1
  92. package/dist/client-AUE3XUPO.js +11 -0
  93. package/dist/{convert-to-pnpm-AT52NWZB.js → convert-to-pnpm-QFJOEP5V.js} +9 -9
  94. package/dist/db-UXNIZ2RG.js +217 -0
  95. package/dist/db-UXNIZ2RG.js.map +1 -0
  96. package/dist/{digest-UVHYZUYE.js → digest-FW6QMZZJ.js} +26 -22
  97. package/dist/{digest-UVHYZUYE.js.map → digest-FW6QMZZJ.js.map} +1 -1
  98. package/dist/dump-P6EBSIOH.js +68 -0
  99. package/dist/dump-P6EBSIOH.js.map +1 -0
  100. package/dist/email-KJXASVH5.js +195 -0
  101. package/dist/email-KJXASVH5.js.map +1 -0
  102. package/dist/{ensure-site-S25MDDHW.js → ensure-site-4DCEBAPM.js} +25 -16
  103. package/dist/ensure-site-4DCEBAPM.js.map +1 -0
  104. package/dist/fleet-events-cF2Om88w.d.ts +24 -0
  105. package/dist/fleet-state-7TJ2GYT2.js +39 -0
  106. package/dist/{forms-notify-target-TWN4EH6K.js → forms-notify-target-2EAWCWBW.js} +42 -133
  107. package/dist/forms-notify-target-2EAWCWBW.js.map +1 -0
  108. package/dist/{github-signals-G4ILZAJ6.js → github-signals-E2WPYTBK.js} +42 -21
  109. package/dist/github-signals-E2WPYTBK.js.map +1 -0
  110. package/dist/{header-image-T7XD37JL.js → header-image-6IC53W27.js} +36 -13
  111. package/dist/header-image-6IC53W27.js.map +1 -0
  112. package/dist/header-images-SQBCE5OD.js +88 -0
  113. package/dist/header-images-SQBCE5OD.js.map +1 -0
  114. package/dist/{health-endpoint-242WG2OJ.js → health-endpoint-RFXL2F4A.js} +9 -9
  115. package/dist/health-mirror-L5JBEJVA.js +41 -0
  116. package/dist/health-mirror-L5JBEJVA.js.map +1 -0
  117. package/dist/import-airtable-OHVY344G.js +37 -0
  118. package/dist/index.d.ts +324 -21
  119. package/dist/index.js +215 -76
  120. package/dist/index.js.map +1 -1
  121. package/dist/{init-JN26NTWF.js → init-XRAQZYID.js} +21 -18
  122. package/dist/{init-JN26NTWF.js.map → init-XRAQZYID.js.map} +1 -1
  123. package/dist/{launch-JA7Z4CIM.js → launch-IX4Y5JJC.js} +65 -30
  124. package/dist/launch-IX4Y5JJC.js.map +1 -0
  125. package/dist/lighthouse-VHI77PFB.js +11 -0
  126. package/dist/{lighthouse-airtable-BIPM26SZ.js → lighthouse-airtable-3GUWHETW.js} +3 -3
  127. package/dist/mailchimp-XYCTEEJY.js +72 -0
  128. package/dist/mailchimp-XYCTEEJY.js.map +1 -0
  129. package/dist/migrate-GQH237A6.js +7 -0
  130. package/dist/migrate-GQH237A6.js.map +1 -0
  131. package/dist/notify-C645PGD5.js +22 -0
  132. package/dist/notify-C645PGD5.js.map +1 -0
  133. package/dist/{onboard-53CITIM7.js → onboard-O4IAHJMO.js} +9 -9
  134. package/dist/orchestrate-YLWQ6KK2.js +31 -0
  135. package/dist/orchestrate-YLWQ6KK2.js.map +1 -0
  136. package/dist/parity-56KA2DGR.js +12 -0
  137. package/dist/parity-56KA2DGR.js.map +1 -0
  138. package/dist/pipeline-3AANZFCR.js +12 -0
  139. package/dist/pipeline-3AANZFCR.js.map +1 -0
  140. package/dist/{preflight-3XPDUHFJ.js → preflight-TNORKGCX.js} +17 -13
  141. package/dist/{preflight-3XPDUHFJ.js.map → preflight-TNORKGCX.js.map} +1 -1
  142. package/dist/{prismic-ci-UTQ6LRR3.js → prismic-ci-G2AK53VL.js} +12 -12
  143. package/dist/{prismic-models-PVES6R5V.js → prismic-models-O6Z3OK3A.js} +18 -13
  144. package/dist/prismic-models-O6Z3OK3A.js.map +1 -0
  145. package/dist/prospect/types.d.ts +267 -0
  146. package/dist/prospect/types.js +1 -0
  147. package/dist/prospect/types.js.map +1 -0
  148. package/dist/prospect-audit-KSXUNQ5J.js +174 -0
  149. package/dist/prospect-audit-KSXUNQ5J.js.map +1 -0
  150. package/dist/prospect-audits-3PMIO73D.js +19 -0
  151. package/dist/prospect-audits-3PMIO73D.js.map +1 -0
  152. package/dist/{protection-audit-64PLLBLI.js → protection-audit-SJO53MEQ.js} +3 -3
  153. package/dist/recipes/sync-configs.js +3 -3
  154. package/dist/render-IFOGFB5T.js +10 -0
  155. package/dist/render-IFOGFB5T.js.map +1 -0
  156. package/dist/render-from-row-BWSOIYDS.js +17 -0
  157. package/dist/render-from-row-BWSOIYDS.js.map +1 -0
  158. package/dist/{renovate-dispatch-ICJGSFCE.js → renovate-dispatch-6GQWTRKX.js} +12 -12
  159. package/dist/{renovate-dispatch-ICJGSFCE.js.map → renovate-dispatch-6GQWTRKX.js.map} +1 -1
  160. package/dist/replay-C2LXMJZP.js +66 -0
  161. package/dist/replay-C2LXMJZP.js.map +1 -0
  162. package/dist/{report-6CKSWJNG.js → report-R3E3Y7HR.js} +100 -32
  163. package/dist/report-R3E3Y7HR.js.map +1 -0
  164. package/dist/report-mirror-4MNORYQ4.js +49 -0
  165. package/dist/report-mirror-4MNORYQ4.js.map +1 -0
  166. package/dist/reports/header-image/assets/headline-announcement.png +0 -0
  167. package/dist/reports/header-image/assets/headline-launch.png +0 -0
  168. package/dist/reports/header-image/assets/headline-maintenance.png +0 -0
  169. package/dist/reports/header-image/assets/headline-testing.png +0 -0
  170. package/dist/reports/header-image/assets/plate-clean.png +0 -0
  171. package/dist/rerender-3FM6DNRH.js +32 -0
  172. package/dist/rerender-3FM6DNRH.js.map +1 -0
  173. package/dist/{self-updating-PPQVV6UA.js → self-updating-UCIWESAX.js} +9 -9
  174. package/dist/{selftest-CQ6NOX52.js → selftest-VGHWPN72.js} +31 -24
  175. package/dist/selftest-VGHWPN72.js.map +1 -0
  176. package/dist/site-mirror-NIREX5ME.js +52 -0
  177. package/dist/site-mirror-NIREX5ME.js.map +1 -0
  178. package/dist/smoke-B2GQOSIZ.js +20 -0
  179. package/dist/smoke-B2GQOSIZ.js.map +1 -0
  180. package/dist/{smoke-suite-TMCSOYRK.js → smoke-suite-U3UKD3NS.js} +9 -9
  181. package/dist/{submissions-GJ6ITBRH.js → submissions-IQEJX6FK.js} +3 -3
  182. package/dist/{svelte-codemods-ZOBDHIES.js → svelte-codemods-GOKXTBHW.js} +9 -9
  183. package/dist/sync-CTUVXMCK.js +44 -0
  184. package/dist/sync-CTUVXMCK.js.map +1 -0
  185. package/dist/{sync-configs-CJXUX6MD.js → sync-configs-SPTLFJCC.js} +9 -9
  186. package/dist/{upgrade-WLX27UPC.js → upgrade-W6ZR3FJH.js} +9 -9
  187. package/dist/webhook-VOGOW3W6.js +38 -0
  188. package/dist/webhook-VOGOW3W6.js.map +1 -0
  189. package/dist/{websites-SADZR4XQ.js → websites-D6WYFAES.js} +6 -2
  190. package/dist/websites-D6WYFAES.js.map +1 -0
  191. package/dist/{write-audits-to-airtable-7PH75YWY.js → write-audits-to-airtable-CMKHGJNQ.js} +4 -4
  192. package/dist/write-audits-to-airtable-CMKHGJNQ.js.map +1 -0
  193. package/package.json +9 -2
  194. package/dist/airtable-HRKSA7V4.js +0 -9
  195. package/dist/announce-GIAYN67S.js.map +0 -1
  196. package/dist/chunk-37S6L6G4.js.map +0 -1
  197. package/dist/chunk-3YXDSCM6.js.map +0 -1
  198. package/dist/chunk-4DHQCN5H.js.map +0 -1
  199. package/dist/chunk-4SOCPK7A.js +0 -108
  200. package/dist/chunk-4SOCPK7A.js.map +0 -1
  201. package/dist/chunk-577HCGZO.js.map +0 -1
  202. package/dist/chunk-62VF32IC.js.map +0 -1
  203. package/dist/chunk-6QRLRT3P.js.map +0 -1
  204. package/dist/chunk-COZPL62X.js.map +0 -1
  205. package/dist/chunk-D4FVAIEJ.js.map +0 -1
  206. package/dist/chunk-DTTIFYAM.js.map +0 -1
  207. package/dist/chunk-MGR2H7F4.js.map +0 -1
  208. package/dist/chunk-MPBXOJ3N.js.map +0 -1
  209. package/dist/chunk-NWB4O5EY.js.map +0 -1
  210. package/dist/chunk-SEEA6RXF.js.map +0 -1
  211. package/dist/chunk-U5SZ4FOP.js +0 -26
  212. package/dist/chunk-U5SZ4FOP.js.map +0 -1
  213. package/dist/client-X5WUJWDE.js +0 -11
  214. package/dist/db-JSIZYT23.js +0 -23
  215. package/dist/db-JSIZYT23.js.map +0 -1
  216. package/dist/ensure-site-S25MDDHW.js.map +0 -1
  217. package/dist/forms-notify-target-TWN4EH6K.js.map +0 -1
  218. package/dist/github-signals-G4ILZAJ6.js.map +0 -1
  219. package/dist/header-image-T7XD37JL.js.map +0 -1
  220. package/dist/launch-JA7Z4CIM.js.map +0 -1
  221. package/dist/migrate-LJUFGXQZ.js +0 -7
  222. package/dist/orchestrate-KDNXZQX7.js +0 -27
  223. package/dist/prismic-models-PVES6R5V.js.map +0 -1
  224. package/dist/report-6CKSWJNG.js.map +0 -1
  225. package/dist/reports/header-image/assets/plate.png +0 -0
  226. package/dist/selftest-CQ6NOX52.js.map +0 -1
  227. /package/dist/{airtable-HRKSA7V4.js.map → airtable-ZBUPQJSC.js.map} +0 -0
  228. /package/dist/{client-X5WUJWDE.js.map → attachments-NLZIJ5NU.js.map} +0 -0
  229. /package/dist/{bump-deps-SWJB6H5V.js.map → bump-deps-CGVELRLK.js.map} +0 -0
  230. /package/dist/{chunk-SDUJIANJ.js.map → chunk-2NJQLSEU.js.map} +0 -0
  231. /package/dist/{chunk-ZTPPCHDB.js.map → chunk-3G25KIWW.js.map} +0 -0
  232. /package/dist/{chunk-THEFTZ7F.js.map → chunk-62CMMGEO.js.map} +0 -0
  233. /package/dist/{chunk-FDIFTIXC.js.map → chunk-6TWWY7ZU.js.map} +0 -0
  234. /package/dist/{chunk-PBWDDDQH.js.map → chunk-7BZUOZPU.js.map} +0 -0
  235. /package/dist/{chunk-UYCAF77E.js.map → chunk-7RJ2HMMJ.js.map} +0 -0
  236. /package/dist/{chunk-Q276MZ7E.js.map → chunk-7UAYMAKR.js.map} +0 -0
  237. /package/dist/{chunk-R6FPFMOS.js.map → chunk-BQRFQSGY.js.map} +0 -0
  238. /package/dist/{chunk-7J53SUT6.js.map → chunk-CROKUHJB.js.map} +0 -0
  239. /package/dist/{chunk-GZNBCHAZ.js.map → chunk-HEWSRXYV.js.map} +0 -0
  240. /package/dist/{chunk-LS6QPANO.js.map → chunk-IYSEC543.js.map} +0 -0
  241. /package/dist/{chunk-DC5H7KEQ.js.map → chunk-JHGHLKFS.js.map} +0 -0
  242. /package/dist/{chunk-TP5M2NQB.js.map → chunk-NCMZMLY7.js.map} +0 -0
  243. /package/dist/{chunk-WYYQK4D3.js.map → chunk-TD2NNXLZ.js.map} +0 -0
  244. /package/dist/{chunk-ZMIPG6TR.js.map → chunk-TVL5MVUF.js.map} +0 -0
  245. /package/dist/{chunk-VRWUL4TR.js.map → chunk-XHHMM5HX.js.map} +0 -0
  246. /package/dist/{chunk-RJB3QUSP.js.map → chunk-XIDUYLSR.js.map} +0 -0
  247. /package/dist/{chunk-QG6OSL4M.js.map → chunk-XUGSZP7Z.js.map} +0 -0
  248. /package/dist/{chunk-S56JQJ4F.js.map → chunk-Y53WOQIJ.js.map} +0 -0
  249. /package/dist/{chunk-ICXV25N7.js.map → chunk-Z3KYFUN6.js.map} +0 -0
  250. /package/dist/{lighthouse-airtable-BIPM26SZ.js.map → client-AUE3XUPO.js.map} +0 -0
  251. /package/dist/{convert-to-pnpm-AT52NWZB.js.map → convert-to-pnpm-QFJOEP5V.js.map} +0 -0
  252. /package/dist/{migrate-LJUFGXQZ.js.map → fleet-state-7TJ2GYT2.js.map} +0 -0
  253. /package/dist/{health-endpoint-242WG2OJ.js.map → health-endpoint-RFXL2F4A.js.map} +0 -0
  254. /package/dist/{orchestrate-KDNXZQX7.js.map → import-airtable-OHVY344G.js.map} +0 -0
  255. /package/dist/{websites-SADZR4XQ.js.map → lighthouse-VHI77PFB.js.map} +0 -0
  256. /package/dist/{write-audits-to-airtable-7PH75YWY.js.map → lighthouse-airtable-3GUWHETW.js.map} +0 -0
  257. /package/dist/{onboard-53CITIM7.js.map → onboard-O4IAHJMO.js.map} +0 -0
  258. /package/dist/{prismic-ci-UTQ6LRR3.js.map → prismic-ci-G2AK53VL.js.map} +0 -0
  259. /package/dist/{protection-audit-64PLLBLI.js.map → protection-audit-SJO53MEQ.js.map} +0 -0
  260. /package/dist/{self-updating-PPQVV6UA.js.map → self-updating-UCIWESAX.js.map} +0 -0
  261. /package/dist/{smoke-suite-TMCSOYRK.js.map → smoke-suite-U3UKD3NS.js.map} +0 -0
  262. /package/dist/{submissions-GJ6ITBRH.js.map → submissions-IQEJX6FK.js.map} +0 -0
  263. /package/dist/{svelte-codemods-ZOBDHIES.js.map → svelte-codemods-GOKXTBHW.js.map} +0 -0
  264. /package/dist/{sync-configs-CJXUX6MD.js.map → sync-configs-SPTLFJCC.js.map} +0 -0
  265. /package/dist/{upgrade-WLX27UPC.js.map → upgrade-W6ZR3FJH.js.map} +0 -0
@@ -6,19 +6,26 @@ import {
6
6
  } from "./chunk-GASBX52O.js";
7
7
  import {
8
8
  assertUrlSegment
9
- } from "./chunk-VRWUL4TR.js";
10
- import {
11
- defaultSpawn
12
- } from "./chunk-4DHQCN5H.js";
9
+ } from "./chunk-XHHMM5HX.js";
13
10
  import {
14
11
  INGEST_TIMEOUT_MS
15
12
  } from "./chunk-A3WDWNN5.js";
13
+ import {
14
+ lighthouseAudit,
15
+ readSiteConfig
16
+ } from "./chunk-2NQUCS7O.js";
17
+ import {
18
+ smokeAudit
19
+ } from "./chunk-UDRHAQT7.js";
20
+ import {
21
+ findFreePort
22
+ } from "./chunk-PTDMVGKL.js";
23
+ import {
24
+ defaultSpawn
25
+ } from "./chunk-LBYOLBW7.js";
16
26
  import {
17
27
  siteLabel
18
28
  } from "./chunk-XXTZBPUY.js";
19
- import {
20
- lighthouseConfig
21
- } from "./chunk-NMAWXBJA.js";
22
29
  import {
23
30
  a11yRoutes,
24
31
  smokeRoutes
@@ -280,7 +287,7 @@ function makeGitHubRest(deps) {
280
287
  }
281
288
  return body.default_branch;
282
289
  },
283
- async dispatchWorkflow(repo, workflow, ref) {
290
+ async dispatchWorkflow(repo, workflow, ref, inputs) {
284
291
  const { owner, name } = splitRepo(repo);
285
292
  assertUrlSegment("path", owner);
286
293
  assertUrlSegment("path", name);
@@ -291,7 +298,7 @@ function makeGitHubRest(deps) {
291
298
  {
292
299
  method: "POST",
293
300
  headers: { ...baseHeaders, "content-type": "application/json" },
294
- body: JSON.stringify({ ref })
301
+ body: JSON.stringify(inputs ? { ref, inputs } : { ref })
295
302
  }
296
303
  );
297
304
  if (!res.ok) {
@@ -581,263 +588,13 @@ async function securityAudit(ctx) {
581
588
  };
582
589
  }
583
590
 
584
- // src/audits/lighthouse.ts
585
- import { readFile as readFile4, writeFile, mkdtemp, rm, readdir } from "fs/promises";
586
- import { tmpdir } from "os";
587
- import { join as join5 } from "path";
588
-
589
- // src/audits/util/site-config.ts
590
- import { readFile as readFile3 } from "fs/promises";
591
- import { join as join4 } from "path";
592
- async function readSiteConfig(sitePath) {
593
- let raw;
594
- try {
595
- raw = await readFile3(join4(sitePath, "package.json"), "utf-8");
596
- } catch {
597
- return {};
598
- }
599
- let pkg;
600
- try {
601
- pkg = JSON.parse(raw);
602
- } catch {
603
- return {};
604
- }
605
- if (!pkg || typeof pkg !== "object") return {};
606
- const cfg = pkg.reddoor;
607
- if (!cfg || typeof cfg !== "object") return {};
608
- const out = {};
609
- const url = cfg.lighthouseUrl;
610
- if (typeof url === "string" && url.length > 0) {
611
- out.lighthouseUrl = url;
612
- }
613
- const routes = cfg.a11yRoutes;
614
- if (Array.isArray(routes)) {
615
- const clean = routes.filter((r) => typeof r === "string").map((r) => r.trim()).filter((r) => r.length > 0);
616
- if (clean.length > 0) out.a11yRoutes = clean;
617
- }
618
- return out;
619
- }
620
-
621
- // src/util/free-port.ts
622
- import { createServer } from "net";
623
- async function findFreePort() {
624
- return new Promise((resolve, reject) => {
625
- const server = createServer();
626
- server.unref();
627
- server.on("error", reject);
628
- server.listen(0, "127.0.0.1", () => {
629
- const addr = server.address();
630
- if (typeof addr === "object" && addr) {
631
- const port = addr.port;
632
- server.close(() => resolve(port));
633
- } else {
634
- server.close();
635
- reject(new Error("findFreePort: could not determine assigned port from socket"));
636
- }
637
- });
638
- });
639
- }
640
- function withFreePort(url, port) {
641
- const u = new URL(url);
642
- u.hostname = "localhost";
643
- u.port = String(port);
644
- return u.toString();
645
- }
646
-
647
- // src/audits/lighthouse.ts
648
- async function readJsonMaybe(path) {
649
- try {
650
- const raw = await readFile4(path, "utf-8");
651
- return JSON.parse(raw);
652
- } catch {
653
- return null;
654
- }
655
- }
656
- async function readLhrEntries(resultsDir) {
657
- const files = await readdir(resultsDir).catch(() => []);
658
- const entries = [];
659
- for (const f of files) {
660
- if (!f.startsWith("lhr-") || !f.endsWith(".json")) continue;
661
- const lhr = await readJsonMaybe(join5(resultsDir, f));
662
- if (!lhr || !lhr.categories) continue;
663
- const summary = {};
664
- for (const [k, v] of Object.entries(lhr.categories)) {
665
- if (typeof v?.score === "number") summary[k] = v.score;
666
- }
667
- entries.push({ url: lhr.requestedUrl, summary });
668
- }
669
- return entries;
670
- }
671
- function averageSummaries(entries) {
672
- if (entries.length === 0) return {};
673
- const sums = {};
674
- const counts = {};
675
- for (const e of entries) {
676
- for (const [k, v] of Object.entries(e.summary ?? {})) {
677
- if (typeof v !== "number") continue;
678
- sums[k] = (sums[k] ?? 0) + v;
679
- counts[k] = (counts[k] ?? 0) + 1;
680
- }
681
- }
682
- const out = {};
683
- for (const k of Object.keys(sums)) {
684
- const total = sums[k] ?? 0;
685
- const count = counts[k] ?? 1;
686
- out[k] = total / count;
687
- }
688
- return out;
689
- }
690
- function categoryFromAssertion(a) {
691
- const colonIdx = a.name.indexOf(":");
692
- return colonIdx >= 0 ? a.name.slice(colonIdx + 1) : a.name;
693
- }
694
- function messageForAssertion(a) {
695
- const actual = typeof a.actual === "number" ? a.actual.toFixed(2) : "n/a";
696
- return `${a.name} ${a.operator} ${a.expected} (actual: ${actual})`;
697
- }
698
- async function parseLhciResults(resultsDir, label, raw) {
699
- const manifest = await readLhrEntries(resultsDir);
700
- if (manifest.length === 0) {
701
- return {
702
- audit: "lighthouse",
703
- site: label,
704
- status: "fail",
705
- summary: `lighthouse: no lhr-*.json written (exit ${raw.code})${raw.stderr ? ` \u2014 ${raw.stderr.slice(0, 200)}` : ""}`
706
- };
707
- }
708
- const assertionResults = await readJsonMaybe(join5(resultsDir, "assertion-results.json")) ?? [];
709
- const failed = assertionResults.filter((a) => !a.passed);
710
- const assertions = failed.map((a) => ({
711
- category: categoryFromAssertion(a),
712
- level: a.level,
713
- message: messageForAssertion(a)
714
- }));
715
- const anyError = assertions.some((a) => a.level === "error");
716
- const anyWarn = assertions.some((a) => a.level === "warn");
717
- const status = anyError ? "fail" : anyWarn ? "warn" : "pass";
718
- const normalized = {
719
- summary: averageSummaries(manifest),
720
- assertionsFailed: failed.length,
721
- assertions
722
- };
723
- const summary = status === "pass" ? "lighthouse: all categories passing" : `lighthouse: ${failed.length} assertion(s) failed`;
724
- return { audit: "lighthouse", site: label, status, summary, details: normalized };
725
- }
726
- async function checkoutLighthouse(spawn, site, label) {
727
- const siteCfg = await readSiteConfig(site.path);
728
- const port = await findFreePort();
729
- const baseUrl = siteCfg.lighthouseUrl ?? lighthouseConfig.ci.collect.url[0];
730
- const resolvedConfig = {
731
- ...lighthouseConfig,
732
- ci: {
733
- ...lighthouseConfig.ci,
734
- collect: {
735
- ...lighthouseConfig.ci.collect,
736
- url: [withFreePort(baseUrl, port)],
737
- startServerCommand: `npm run vite:dev -- --port ${port} --strictPort`
738
- }
739
- }
740
- };
741
- const configDir = await mkdtemp(join5(tmpdir(), "reddoor-lhci-"));
742
- const configPath = join5(configDir, "lighthouserc.json");
743
- await writeFile(configPath, JSON.stringify(resolvedConfig), "utf-8");
744
- const resultsDir = join5(site.path, ".lighthouseci");
745
- await rm(resultsDir, { recursive: true, force: true });
746
- let raw;
747
- try {
748
- raw = await spawn("npx", ["--yes", "@lhci/cli", "autorun", `--config=${configPath}`], {
749
- cwd: site.path,
750
- timeoutMs: 5 * 6e4
751
- });
752
- } catch (err) {
753
- await rm(configDir, { recursive: true, force: true });
754
- const e = err;
755
- if (e.code === "ENOENT" || /ENOENT/.test(String(err))) {
756
- return {
757
- audit: "lighthouse",
758
- site: label,
759
- status: "skip",
760
- summary: "npx/@lhci/cli not available"
761
- };
762
- }
763
- throw err;
764
- }
765
- await rm(configDir, { recursive: true, force: true });
766
- return parseLhciResults(resultsDir, label, raw);
767
- }
768
- async function deployedLighthouse(spawn, deployedUrl, label) {
769
- const workDir = await mkdtemp(join5(tmpdir(), "reddoor-lh-deployed-"));
770
- const resolvedConfig = {
771
- ci: {
772
- // Deliberately NOT spread from lighthouseConfig.ci.collect: deployed mode
773
- // must omit startServerCommand and the dev-server settings entirely.
774
- collect: {
775
- url: [deployedUrl],
776
- // 3 runs to damp Lighthouse's run-to-run variance; parseLhciResults
777
- // averages the lhr files. (Median is a tracked future refinement.)
778
- numberOfRuns: 3,
779
- // Use devtools (applied) throttling instead of the desktop preset's
780
- // default `simulate` (Lantern). Lantern estimates LCP from the
781
- // dependency graph and can't model an LCP element revealed by a
782
- // JS-load opacity fade (e.g. gallerysonder's GridImage): on a fast
783
- // observed load it finds no LCP node and throws NO_LCP, nulling the
784
- // perf score, which the cockpit then coerces to a misleading 0.
785
- // devtools reads the real LCP paint event from the throttled trace
786
- // instead. Trade-off: slightly noisier run-to-run, damped by the
787
- // numberOfRuns:3 average above.
788
- settings: { preset: "desktop", throttlingMethod: "devtools", skipAudits: ["uses-http2"] }
789
- },
790
- assert: lighthouseConfig.ci.assert,
791
- upload: { target: "filesystem", outputDir: join5(workDir, "lhci-report") }
792
- }
793
- };
794
- const configPath = join5(workDir, "lighthouserc.json");
795
- await writeFile(configPath, JSON.stringify(resolvedConfig), "utf-8");
796
- const resultsDir = join5(workDir, ".lighthouseci");
797
- let raw;
798
- try {
799
- raw = await spawn("npx", ["--yes", "@lhci/cli", "autorun", `--config=${configPath}`], {
800
- cwd: workDir,
801
- // 3 serial cold runs of a slow deployed site (lhci's own maxWaitForLoad
802
- // ~45-60s each) + first-use Chrome download can plausibly exceed 3 min →
803
- // SIGTERM → no lhr-*.json → spurious "no scores". Match the 5-min budget
804
- // the checkout path already gives (erp-industrials nightly flake,
805
- // morning-brief 2026-06-10 MEDIUM-F).
806
- timeoutMs: 5 * 6e4
807
- });
808
- } catch (err) {
809
- await rm(workDir, { recursive: true, force: true });
810
- const e = err;
811
- if (e.code === "ENOENT" || /ENOENT/.test(String(err))) {
812
- return {
813
- audit: "lighthouse",
814
- site: label,
815
- status: "skip",
816
- summary: "npx/@lhci/cli not available"
817
- };
818
- }
819
- throw err;
820
- }
821
- try {
822
- return await parseLhciResults(resultsDir, label, raw);
823
- } finally {
824
- await rm(workDir, { recursive: true, force: true });
825
- }
826
- }
827
- async function lighthouseAudit(ctx) {
828
- const spawn = ctx.spawn ?? defaultSpawn;
829
- const site = ctx.site;
830
- const label = siteLabel(site);
831
- return site.deployedUrl ? deployedLighthouse(spawn, site.deployedUrl, label) : checkoutLighthouse(spawn, site, label);
832
- }
833
-
834
591
  // src/audits/a11y.ts
835
- import { readFile as readFile5, writeFile as writeFile2, mkdtemp as mkdtemp2, rm as rm2 } from "fs/promises";
836
- import { join as join6 } from "path";
592
+ import { readFile as readFile3, writeFile, mkdtemp, rm } from "fs/promises";
593
+ import { join as join4 } from "path";
837
594
  var RESULTS_REL = ".reddoor-a11y/results.json";
838
- async function readJsonMaybe2(path) {
595
+ async function readJsonMaybe(path) {
839
596
  try {
840
- const raw = await readFile5(path, "utf-8");
597
+ const raw = await readFile3(path, "utf-8");
841
598
  return JSON.parse(raw);
842
599
  } catch {
843
600
  return null;
@@ -964,20 +721,20 @@ async function a11yAudit(ctx) {
964
721
  const spawn = ctx.spawn ?? defaultSpawn;
965
722
  const site = ctx.site;
966
723
  const label = siteLabel(site);
967
- const specDir = await mkdtemp2(join6(site.path, ".reddoor-a11y-spec-"));
724
+ const specDir = await mkdtemp(join4(site.path, ".reddoor-a11y-spec-"));
968
725
  try {
969
726
  const { a11yRoutes: siteRoutes } = await readSiteConfig(site.path);
970
727
  const axePages = [
971
728
  ...a11yRoutes,
972
729
  ...(siteRoutes ?? []).map((path) => ({ path, name: path }))
973
730
  ];
974
- const specPath = join6(specDir, "a11y.spec.ts");
975
- await writeFile2(specPath, buildSpec(axePages), "utf-8");
731
+ const specPath = join4(specDir, "a11y.spec.ts");
732
+ await writeFile(specPath, buildSpec(axePages), "utf-8");
976
733
  const port = await findFreePort();
977
- const configPath = join6(specDir, "playwright.config.ts");
978
- await writeFile2(configPath, buildPlaywrightConfig(port, site.path), "utf-8");
979
- const resultsPath = join6(site.path, RESULTS_REL);
980
- await rm2(join6(site.path, ".reddoor-a11y"), { recursive: true, force: true });
734
+ const configPath = join4(specDir, "playwright.config.ts");
735
+ await writeFile(configPath, buildPlaywrightConfig(port, site.path), "utf-8");
736
+ const resultsPath = join4(site.path, RESULTS_REL);
737
+ await rm(join4(site.path, ".reddoor-a11y"), { recursive: true, force: true });
981
738
  let raw;
982
739
  try {
983
740
  raw = await spawn(
@@ -1005,7 +762,7 @@ async function a11yAudit(ctx) {
1005
762
  }
1006
763
  throw err;
1007
764
  }
1008
- const artifact = await readJsonMaybe2(resultsPath);
765
+ const artifact = await readJsonMaybe(resultsPath);
1009
766
  if (!artifact) {
1010
767
  return {
1011
768
  audit: "a11y",
@@ -1026,7 +783,7 @@ async function a11yAudit(ctx) {
1026
783
  details: artifact
1027
784
  };
1028
785
  } finally {
1029
- await rm2(specDir, { recursive: true, force: true });
786
+ await rm(specDir, { recursive: true, force: true });
1030
787
  }
1031
788
  }
1032
789
 
@@ -1899,134 +1656,6 @@ async function functionHealthAudit(ctx) {
1899
1656
  };
1900
1657
  }
1901
1658
 
1902
- // src/audits/smoke.ts
1903
- import { access, readFile as readFile6 } from "fs/promises";
1904
- import { join as join7 } from "path";
1905
- var ANSI = new RegExp(`${String.fromCharCode(27)}\\[[0-9;]*m`, "g");
1906
- function summarizeSmokeFailure(stdout, stderr) {
1907
- const lines = stdout.replace(ANSI, "").split("\n").map((l) => l.trim());
1908
- const failing = [];
1909
- for (let i = 0; i < lines.length; i++) {
1910
- const line = lines[i];
1911
- if (line === void 0) continue;
1912
- if (/^\d+\)\s/.test(line)) {
1913
- failing.push(line);
1914
- let taken = 0;
1915
- for (let j = i + 1; j < lines.length && taken < 3; j++) {
1916
- const next = lines[j];
1917
- if (!next) continue;
1918
- if (/^\d+\)\s/.test(next)) break;
1919
- failing.push(next);
1920
- taken++;
1921
- }
1922
- break;
1923
- }
1924
- }
1925
- const tally = lines.find((l) => l !== void 0 && /\b\d+\s+failed\b/.test(l));
1926
- const distilled = [tally, ...failing].filter(Boolean).join(" | ");
1927
- if (distilled) return distilled.slice(0, 300);
1928
- const err = stderr.replace(ANSI, "").trim();
1929
- return err ? err.slice(0, 200) : "no reporter output";
1930
- }
1931
- async function hasTestSmokeScript(sitePath) {
1932
- try {
1933
- const raw = await readFile6(join7(sitePath, "package.json"), "utf-8");
1934
- const pkg = JSON.parse(raw);
1935
- return typeof pkg.scripts?.["test:smoke"] === "string";
1936
- } catch {
1937
- return false;
1938
- }
1939
- }
1940
- async function hasNodeModules(sitePath) {
1941
- try {
1942
- await access(join7(sitePath, "node_modules"));
1943
- return true;
1944
- } catch {
1945
- return false;
1946
- }
1947
- }
1948
- async function smokeAudit(ctx) {
1949
- const spawn = ctx.spawn ?? defaultSpawn;
1950
- const site = ctx.site;
1951
- const label = siteLabel(site);
1952
- const now = ctx.now ?? /* @__PURE__ */ new Date();
1953
- const checkedAt = now.toISOString();
1954
- if (!await hasTestSmokeScript(site.path)) {
1955
- return {
1956
- audit: "smoke",
1957
- site: label,
1958
- status: "skip",
1959
- summary: "no test:smoke script"
1960
- };
1961
- }
1962
- if (!await hasNodeModules(site.path)) {
1963
- let install;
1964
- try {
1965
- install = await spawn("pnpm", ["install", "--frozen-lockfile"], {
1966
- cwd: site.path,
1967
- timeoutMs: 5 * 6e4
1968
- });
1969
- } catch (err) {
1970
- const e = err;
1971
- if (e.code === "ENOENT" || /ENOENT/.test(String(err))) {
1972
- return { audit: "smoke", site: label, status: "skip", summary: "pnpm not available" };
1973
- }
1974
- throw err;
1975
- }
1976
- if (install.code !== 0) {
1977
- const retry = await spawn("pnpm", ["install"], { cwd: site.path, timeoutMs: 5 * 6e4 });
1978
- if (retry.code !== 0) {
1979
- return {
1980
- audit: "smoke",
1981
- site: label,
1982
- status: "skip",
1983
- summary: `smoke: pnpm install failed (exit ${retry.code}) \u2014 deps unavailable`
1984
- };
1985
- }
1986
- }
1987
- }
1988
- try {
1989
- await spawn("pnpm", ["exec", "svelte-kit", "sync"], {
1990
- cwd: site.path,
1991
- timeoutMs: 6e4
1992
- });
1993
- } catch {
1994
- }
1995
- const port = await findFreePort();
1996
- let raw;
1997
- try {
1998
- raw = await spawn("pnpm", ["test:smoke"], {
1999
- cwd: site.path,
2000
- env: { ...process.env, REDDOOR_SMOKE_PORT: String(port) },
2001
- // Playwright on a cold tree installs chromium, boots the site's dev server,
2002
- // and runs the smoke specs — the shared 30s default starves it (mirrors a11y).
2003
- timeoutMs: 5 * 6e4
2004
- });
2005
- } catch (err) {
2006
- const e = err;
2007
- if (e.code === "ENOENT" || /ENOENT/.test(String(err))) {
2008
- return { audit: "smoke", site: label, status: "skip", summary: "pnpm not available" };
2009
- }
2010
- throw err;
2011
- }
2012
- if (raw.code === 0) {
2013
- return {
2014
- audit: "smoke",
2015
- site: label,
2016
- status: "pass",
2017
- summary: "smoke: suite green",
2018
- details: { ok: "pass", checkedAt }
2019
- };
2020
- }
2021
- return {
2022
- audit: "smoke",
2023
- site: label,
2024
- status: "fail",
2025
- summary: `smoke: suite failed (exit ${raw.code}) \u2014 ${summarizeSmokeFailure(raw.stdout, raw.stderr)}`,
2026
- details: { ok: "fail", checkedAt }
2027
- };
2028
- }
2029
-
2030
1659
  // src/audits/form-e2e.ts
2031
1660
  var CF_TEST_SITEKEY = "1x00000000000000000000AA";
2032
1661
  var CONTACT_PATHS = ["/contact", "/"];
@@ -2097,7 +1726,7 @@ async function formE2eAudit(ctx) {
2097
1726
  details
2098
1727
  };
2099
1728
  }
2100
- const thin = typeof outcome.elapsedMs === "number" && isIngestBudgetThin(outcome.elapsedMs) ? budgetThinSummary(outcome.elapsedMs) : null;
1729
+ const thin = typeof outcome.postElapsedMs === "number" && isIngestBudgetThin(outcome.postElapsedMs) ? budgetThinSummary(outcome.postElapsedMs) : null;
2101
1730
  return {
2102
1731
  audit: "form-e2e",
2103
1732
  site: label,
@@ -2180,14 +1809,25 @@ async function defaultFormRunner() {
2180
1809
  })();
2181
1810
  `);
2182
1811
  await page.waitForTimeout(FILL_SETTLE_MS);
1812
+ let startedAt = 0;
1813
+ let postElapsedMs;
2183
1814
  const postResponse = page.waitForResponse((r) => r.request().method() === "POST", {
2184
1815
  timeout: PAGE_TIMEOUT_MS2
1816
+ }).then((r) => {
1817
+ if (startedAt > 0) postElapsedMs = Date.now() - startedAt;
1818
+ return r;
2185
1819
  }).catch(() => null);
2186
- const startedAt = Date.now();
1820
+ startedAt = Date.now();
2187
1821
  await page.locator('button[type="submit"], input[type="submit"]').first().click({ timeout: PAGE_TIMEOUT_MS2 });
2188
1822
  const ok = await page.locator('[role="status"]').first().waitFor({ state: "visible", timeout: PAGE_TIMEOUT_MS2 }).then(() => true).catch(() => false);
2189
1823
  const elapsedMs = Date.now() - startedAt;
2190
- if (ok) return { formPresent: true, success: true, elapsedMs };
1824
+ if (ok)
1825
+ return {
1826
+ formPresent: true,
1827
+ success: true,
1828
+ elapsedMs,
1829
+ ...postElapsedMs !== void 0 ? { postElapsedMs } : {}
1830
+ };
2191
1831
  const actionResp = await postResponse;
2192
1832
  const alertText = await page.locator('[role="alert"]').first().textContent({ timeout: 1e3 }).catch(() => null);
2193
1833
  const respBit = actionResp ? `POST ${actionResp.status()}${actionResp.status() >= 400 ? ` ${(await actionResp.text().catch(() => "")).slice(0, 80)}` : ""}` : "no POST observed";
@@ -2256,11 +1896,10 @@ export {
2256
1896
  depsAudit,
2257
1897
  lintAudit,
2258
1898
  securityAudit,
2259
- lighthouseAudit,
2260
1899
  a11yAudit,
2261
1900
  ALL_AUDIT_NAMES,
2262
1901
  runOneAudit,
2263
1902
  runAudits,
2264
1903
  runAuditsAcross
2265
1904
  };
2266
- //# sourceMappingURL=chunk-DTTIFYAM.js.map
1905
+ //# sourceMappingURL=chunk-3JQ2FO3D.js.map