@reddoorla/maintenance 0.95.1 → 0.97.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 (316) hide show
  1. package/README.md +41 -7
  2. package/dist/{announce-CLQYX5I4.js → announce-5ZD2SBGD.js} +39 -31
  3. package/dist/announce-5ZD2SBGD.js.map +1 -0
  4. package/dist/attachments-JFGFQRXQ.js +10 -0
  5. package/dist/{blux-4KNXUP2K.js → blux-NXQLMS4W.js} +1 -1
  6. package/dist/{bump-deps-C5G2EFBB.js → bump-deps-775VLDYB.js} +6 -6
  7. package/dist/{chunk-FUWFLAWQ.js → chunk-3RLDX3Q2.js} +5 -5
  8. package/dist/{chunk-XHHMM5HX.js → chunk-43SW3FGW.js} +63 -1
  9. package/dist/chunk-43SW3FGW.js.map +1 -0
  10. package/dist/{chunk-R53VL3RI.js → chunk-5CJVUPJU.js} +1 -1
  11. package/dist/{chunk-R53VL3RI.js.map → chunk-5CJVUPJU.js.map} +1 -1
  12. package/dist/{chunk-S7RYFUIK.js → chunk-6PGXKN6F.js} +2 -2
  13. package/dist/{chunk-HTABUCF4.js → chunk-6THEZQLA.js} +3 -3
  14. package/dist/chunk-A5QKNOXW.js +72 -0
  15. package/dist/chunk-A5QKNOXW.js.map +1 -0
  16. package/dist/chunk-ASLDCWBF.js +41 -0
  17. package/dist/chunk-ASLDCWBF.js.map +1 -0
  18. package/dist/{chunk-CWXTNPNZ.js → chunk-AYDQQBNG.js} +3 -3
  19. package/dist/chunk-AYDQQBNG.js.map +1 -0
  20. package/dist/{chunk-WVNDEYXL.js → chunk-BINFZQ2T.js} +57 -6
  21. package/dist/chunk-BINFZQ2T.js.map +1 -0
  22. package/dist/{chunk-2NQUCS7O.js → chunk-BIYQN7FH.js} +3 -1
  23. package/dist/{chunk-2NQUCS7O.js.map → chunk-BIYQN7FH.js.map} +1 -1
  24. package/dist/{chunk-YLYXW5PH.js → chunk-CXICCLNM.js} +34 -4
  25. package/dist/chunk-CXICCLNM.js.map +1 -0
  26. package/dist/{chunk-BYGPUUCT.js → chunk-DRNZVORX.js} +66 -30
  27. package/dist/chunk-DRNZVORX.js.map +1 -0
  28. package/dist/{chunk-LM2NHRCJ.js → chunk-DYTYPKFN.js} +4 -4
  29. package/dist/chunk-DYTYPKFN.js.map +1 -0
  30. package/dist/{chunk-DFKBTBO3.js → chunk-EN6CTBUN.js} +35 -6
  31. package/dist/chunk-EN6CTBUN.js.map +1 -0
  32. package/dist/{chunk-5EEMTJMT.js → chunk-FHFXJ3EM.js} +8 -6
  33. package/dist/chunk-FHFXJ3EM.js.map +1 -0
  34. package/dist/{chunk-Z2K4JPQ3.js → chunk-FP6HOW6J.js} +10 -7
  35. package/dist/chunk-FP6HOW6J.js.map +1 -0
  36. package/dist/{chunk-2LYOAB2E.js → chunk-HSMN35LU.js} +2 -2
  37. package/dist/chunk-ICSRWW5Q.js +148 -0
  38. package/dist/chunk-ICSRWW5Q.js.map +1 -0
  39. package/dist/{chunk-FSGICFXB.js → chunk-IDBPII6G.js} +17 -5
  40. package/dist/chunk-IDBPII6G.js.map +1 -0
  41. package/dist/{chunk-C3IQQKXL.js → chunk-IOTOOTII.js} +121 -1
  42. package/dist/{chunk-C3IQQKXL.js.map → chunk-IOTOOTII.js.map} +1 -1
  43. package/dist/{chunk-BCKEP5S6.js → chunk-JHJNNJLG.js} +2 -2
  44. package/dist/{chunk-TO7DJYLZ.js → chunk-L3S3QZXL.js} +178 -39
  45. package/dist/chunk-L3S3QZXL.js.map +1 -0
  46. package/dist/{chunk-WSJ7RO54.js → chunk-LAG6IP7Y.js} +23 -5
  47. package/dist/chunk-LAG6IP7Y.js.map +1 -0
  48. package/dist/{chunk-WJMPCVOR.js → chunk-LAJ3FF54.js} +12 -4
  49. package/dist/chunk-LAJ3FF54.js.map +1 -0
  50. package/dist/{chunk-2ZAZ7ETT.js → chunk-LDHRIQUW.js} +32 -18
  51. package/dist/chunk-LDHRIQUW.js.map +1 -0
  52. package/dist/{chunk-6R56OKJZ.js → chunk-LF2TJN4X.js} +2 -2
  53. package/dist/chunk-LF2TJN4X.js.map +1 -0
  54. package/dist/{chunk-ZQV7UQNE.js → chunk-LUF52EIY.js} +2 -2
  55. package/dist/{chunk-5UINJNAJ.js → chunk-LZMAG73U.js} +34 -21
  56. package/dist/chunk-LZMAG73U.js.map +1 -0
  57. package/dist/{chunk-VSGMCCGQ.js → chunk-MMSMZC7S.js} +2 -2
  58. package/dist/chunk-MVKNU4QD.js +37 -0
  59. package/dist/chunk-MVKNU4QD.js.map +1 -0
  60. package/dist/{chunk-XPJQXSC4.js → chunk-P7323YVW.js} +27 -5
  61. package/dist/chunk-P7323YVW.js.map +1 -0
  62. package/dist/{chunk-KJRVMMM3.js → chunk-PARKXDXI.js} +36 -5
  63. package/dist/chunk-PARKXDXI.js.map +1 -0
  64. package/dist/{chunk-4763KQ6O.js → chunk-PXRN2MER.js} +2 -2
  65. package/dist/{chunk-WMBLR5VA.js → chunk-PZZ6HM5T.js} +3 -3
  66. package/dist/{chunk-TR3HFH6J.js → chunk-QFSL2L2B.js} +67 -10
  67. package/dist/chunk-QFSL2L2B.js.map +1 -0
  68. package/dist/chunk-RQJFGK3A.js +51 -0
  69. package/dist/chunk-RQJFGK3A.js.map +1 -0
  70. package/dist/{chunk-3Z6X3BHU.js → chunk-TC4GANMX.js} +53 -150
  71. package/dist/chunk-TC4GANMX.js.map +1 -0
  72. package/dist/{chunk-F3JWOPTG.js → chunk-TEMQPSCM.js} +45 -105
  73. package/dist/chunk-TEMQPSCM.js.map +1 -0
  74. package/dist/chunk-TJLKWQOX.js +52 -0
  75. package/dist/chunk-TJLKWQOX.js.map +1 -0
  76. package/dist/{chunk-CJ2RMTT7.js → chunk-TV76A6GN.js} +2 -2
  77. package/dist/{chunk-KZRR4NFG.js → chunk-TVZ6QCOE.js} +3 -3
  78. package/dist/{chunk-BVEDKMNG.js → chunk-U2ZI6G7H.js} +29 -11
  79. package/dist/chunk-U2ZI6G7H.js.map +1 -0
  80. package/dist/chunk-UPE6D4AT.js +69 -0
  81. package/dist/chunk-UPE6D4AT.js.map +1 -0
  82. package/dist/{chunk-R5IMFAFR.js → chunk-VMGHQUTV.js} +7 -16
  83. package/dist/chunk-VMGHQUTV.js.map +1 -0
  84. package/dist/chunk-VQMAAQ5M.js +53 -0
  85. package/dist/chunk-VQMAAQ5M.js.map +1 -0
  86. package/dist/{chunk-AVEQUR44.js → chunk-WMF5S2MB.js} +60 -17
  87. package/dist/chunk-WMF5S2MB.js.map +1 -0
  88. package/dist/{chunk-SVAAONYB.js → chunk-WQLNUEZL.js} +12 -2
  89. package/dist/{chunk-SVAAONYB.js.map → chunk-WQLNUEZL.js.map} +1 -1
  90. package/dist/{chunk-XN37VTDB.js → chunk-X56LAKPR.js} +3 -3
  91. package/dist/chunk-X56LAKPR.js.map +1 -0
  92. package/dist/{chunk-ZCL7C5LH.js → chunk-Y6FCXRIC.js} +1661 -387
  93. package/dist/chunk-Y6FCXRIC.js.map +1 -0
  94. package/dist/{chunk-2SLED3NB.js → chunk-YDZ7XGPZ.js} +1 -1
  95. package/dist/{chunk-2SLED3NB.js.map → chunk-YDZ7XGPZ.js.map} +1 -1
  96. package/dist/{chunk-IY6256GK.js → chunk-YJBSB4LP.js} +6 -1
  97. package/dist/chunk-YJBSB4LP.js.map +1 -0
  98. package/dist/{chunk-BI2VI6EM.js → chunk-YXWBM26P.js} +2 -2
  99. package/dist/{chunk-QF6IQQFP.js → chunk-Z7FDJ35L.js} +18 -12
  100. package/dist/chunk-Z7FDJ35L.js.map +1 -0
  101. package/dist/cli/bin.js +111 -51
  102. package/dist/cli/bin.js.map +1 -1
  103. package/dist/cli/commands/audit.d.ts +33 -3
  104. package/dist/cli/commands/audit.js +28 -25
  105. package/dist/cli/commands/audit.js.map +1 -1
  106. package/dist/client-DGTO65WB.js +11 -0
  107. package/dist/configs/playwright-a11y.d.ts +11 -1
  108. package/dist/configs/playwright-a11y.js +3 -1
  109. package/dist/{convert-to-pnpm-YTFREUJK.js → convert-to-pnpm-KLWA53N5.js} +6 -6
  110. package/dist/{db-XKZYDCKM.js → db-II5WAK4D.js} +45 -20
  111. package/dist/db-II5WAK4D.js.map +1 -0
  112. package/dist/deadletter-G4M3HSVM.js +17 -0
  113. package/dist/{digest-7UBGUBRK.js → digest-CWKK2DMR.js} +56 -32
  114. package/dist/digest-CWKK2DMR.js.map +1 -0
  115. package/dist/{digest-collectors-DJFN5ZDK.js → digest-collectors-CYTN2EUX.js} +17 -12
  116. package/dist/{digest-state-3KHZF7GD.js → digest-state-ZDPKR7MW.js} +18 -2
  117. package/dist/digest-state-ZDPKR7MW.js.map +1 -0
  118. package/dist/ensure-site-2QZHFVQ3.js +70 -0
  119. package/dist/ensure-site-2QZHFVQ3.js.map +1 -0
  120. package/dist/ensure-site-JEKV2ODE.js +105 -0
  121. package/dist/ensure-site-JEKV2ODE.js.map +1 -0
  122. package/dist/{ensure-site-OAAE5YE2.js → ensure-site-OO4UPWNQ.js} +49 -44
  123. package/dist/ensure-site-OO4UPWNQ.js.map +1 -0
  124. package/dist/fleet-events-CkOZpMVC.d.ts +435 -0
  125. package/dist/{fleet-state-UEVZ3X3J.js → fleet-state-RJROYXKO.js} +19 -7
  126. package/dist/{forms-notify-target-UC6PF3AE.js → forms-notify-target-X6UEOI2M.js} +19 -15
  127. package/dist/forms-notify-target-X6UEOI2M.js.map +1 -0
  128. package/dist/{freeze-A6MUCZU4.js → freeze-GUQ43EAU.js} +2 -2
  129. package/dist/{github-signals-TX5FPYP6.js → github-signals-QIRTHHET.js} +22 -17
  130. package/dist/github-signals-QIRTHHET.js.map +1 -0
  131. package/dist/{header-image-PSPT7CUM.js → header-image-H7ZJAV26.js} +15 -18
  132. package/dist/header-image-H7ZJAV26.js.map +1 -0
  133. package/dist/{health-endpoint-KVCJYWET.js → health-endpoint-BJ6BKRHF.js} +8 -7
  134. package/dist/{health-endpoint-KVCJYWET.js.map → health-endpoint-BJ6BKRHF.js.map} +1 -1
  135. package/dist/{health-mirror-XJAKA3EY.js → health-mirror-KU3G7V2Y.js} +10 -10
  136. package/dist/{import-airtable-TAKSN4NV.js → import-airtable-UBF5GYAL.js} +3 -3
  137. package/dist/index.d.ts +158 -419
  138. package/dist/index.js +91 -46
  139. package/dist/index.js.map +1 -1
  140. package/dist/{init-FFE4FCO2.js → init-GOWDA5QS.js} +19 -18
  141. package/dist/{init-FFE4FCO2.js.map → init-GOWDA5QS.js.map} +1 -1
  142. package/dist/{launch-UD36AHUN.js → launch-7N3X2MXB.js} +229 -79
  143. package/dist/launch-7N3X2MXB.js.map +1 -0
  144. package/dist/{lighthouse-VHI77PFB.js → lighthouse-52WSPZ5D.js} +2 -2
  145. package/dist/lighthouse-airtable-M45OPVRV.js +14 -0
  146. package/dist/match-harness-GBCDSVPS.js +417 -0
  147. package/dist/match-harness-GBCDSVPS.js.map +1 -0
  148. package/dist/migrate-XZ7U5DFC.js +7 -0
  149. package/dist/{notify-IISTHNBR.js → notify-K3WVH3DM.js} +4 -4
  150. package/dist/{onboard-TM2KESGF.js → onboard-JQQIMQW7.js} +6 -6
  151. package/dist/{orchestrate-HYVQPRCE.js → orchestrate-L2A5BZFY.js} +13 -10
  152. package/dist/parity-2JGVUCZD.js +14 -0
  153. package/dist/{pipeline-YROAY6DT.js → pipeline-UUPXOS2J.js} +3 -3
  154. package/dist/{preflight-RYIP54NY.js → preflight-O7Q6FWHU.js} +35 -11
  155. package/dist/preflight-O7Q6FWHU.js.map +1 -0
  156. package/dist/{prismic-ci-6GKKZGB5.js → prismic-ci-NAPWOXXD.js} +39 -9
  157. package/dist/prismic-ci-NAPWOXXD.js.map +1 -0
  158. package/dist/{prismic-models-P6FWWVRS.js → prismic-models-LL6ORTQ2.js} +20 -17
  159. package/dist/prismic-models-LL6ORTQ2.js.map +1 -0
  160. package/dist/prospect/types.d.ts +72 -0
  161. package/dist/prospect/types.js +1 -1
  162. package/dist/{prospect-audit-PRHU53HS.js → prospect-audit-FMPGQIRQ.js} +16 -7
  163. package/dist/prospect-audit-FMPGQIRQ.js.map +1 -0
  164. package/dist/{prospect-audits-R3LWF6U7.js → prospect-audits-IZVQY3OQ.js} +4 -2
  165. package/dist/protection-audit-YXJKFU6O.js +413 -0
  166. package/dist/protection-audit-YXJKFU6O.js.map +1 -0
  167. package/dist/recipes/sync-configs.js +3 -3
  168. package/dist/{render-YGNGTX3W.js → render-MHUUHPLN.js} +36 -9
  169. package/dist/render-MHUUHPLN.js.map +1 -0
  170. package/dist/{render-from-row-IFSBHWDH.js → render-from-row-75JTED2Z.js} +6 -4
  171. package/dist/{renovate-dispatch-U5Q52SKT.js → renovate-dispatch-2IHAZDVA.js} +14 -9
  172. package/dist/{renovate-dispatch-U5Q52SKT.js.map → renovate-dispatch-2IHAZDVA.js.map} +1 -1
  173. package/dist/{replay-PCSQOGCZ.js → replay-4FVFOMHH.js} +10 -23
  174. package/dist/replay-4FVFOMHH.js.map +1 -0
  175. package/dist/{report-LQS4ECTM.js → report-IAHXN5CW.js} +103 -57
  176. package/dist/report-IAHXN5CW.js.map +1 -0
  177. package/dist/{report-mirror-HDTOJE64.js → report-mirror-4QM57LMS.js} +34 -12
  178. package/dist/report-mirror-4QM57LMS.js.map +1 -0
  179. package/dist/roster-GDNSIRAK.js +19 -0
  180. package/dist/roster-GDNSIRAK.js.map +1 -0
  181. package/dist/{schema-A4WCPIF4.js → schema-KWUQEZ5O.js} +1 -1
  182. package/dist/schema-KWUQEZ5O.js.map +1 -0
  183. package/dist/{self-updating-MWXIZLL7.js → self-updating-ZUWPGYUP.js} +8 -7
  184. package/dist/{self-updating-MWXIZLL7.js.map → self-updating-ZUWPGYUP.js.map} +1 -1
  185. package/dist/{selftest-VXTHRPRN.js → selftest-G4W3LIBQ.js} +21 -17
  186. package/dist/{selftest-VXTHRPRN.js.map → selftest-G4W3LIBQ.js.map} +1 -1
  187. package/dist/site-create-ZU3ACBTO.js +45 -0
  188. package/dist/site-create-ZU3ACBTO.js.map +1 -0
  189. package/dist/site-lookup-DTOLJ4EA.js +27 -0
  190. package/dist/site-lookup-DTOLJ4EA.js.map +1 -0
  191. package/dist/{site-mirror-WON4FTJ2.js → site-mirror-WR7ACXOV.js} +26 -12
  192. package/dist/site-mirror-WR7ACXOV.js.map +1 -0
  193. package/dist/{smoke-suite-7DGITCTZ.js → smoke-suite-WAUPI6EJ.js} +8 -7
  194. package/dist/{smoke-suite-7DGITCTZ.js.map → smoke-suite-WAUPI6EJ.js.map} +1 -1
  195. package/dist/{submissions-OVZPVBYG.js → submissions-2SHCFOKD.js} +12 -7
  196. package/dist/submissions-2SHCFOKD.js.map +1 -0
  197. package/dist/{submissions-3I3GAQAX.js → submissions-JDZP35JM.js} +49 -9
  198. package/dist/submissions-JDZP35JM.js.map +1 -0
  199. package/dist/{svelte-codemods-WSV2FGNG.js → svelte-codemods-VOLOKKFI.js} +6 -6
  200. package/dist/{sync-K3PKHVLH.js → sync-F4USL4K5.js} +6 -6
  201. package/dist/{sync-configs-RRIHNLIJ.js → sync-configs-OXSWKVZ2.js} +6 -6
  202. package/dist/turso-KQKBBQCK.js +24 -0
  203. package/dist/turso-KQKBBQCK.js.map +1 -0
  204. package/dist/{upgrade-VTD6V4HS.js → upgrade-EVAL3JTO.js} +6 -6
  205. package/dist/util/git.d.ts +49 -10
  206. package/dist/util/git.js +1 -1
  207. package/dist/{webflow-IRKOIT7S.js → webflow-624FEBFD.js} +4 -4
  208. package/dist/{websites-TB4TCAWM.js → websites-Y6FN2XFD.js} +27 -20
  209. package/dist/{write-audits-to-airtable-53EVXKMU.js → write-audits-to-airtable-TI3JMWSY.js} +7 -5
  210. package/package.json +3 -2
  211. package/dist/airtable-JGCPS7JH.js +0 -9
  212. package/dist/announce-CLQYX5I4.js.map +0 -1
  213. package/dist/attachments-NLZIJ5NU.js +0 -9
  214. package/dist/chunk-2ZAZ7ETT.js.map +0 -1
  215. package/dist/chunk-3Z6X3BHU.js.map +0 -1
  216. package/dist/chunk-5EEMTJMT.js.map +0 -1
  217. package/dist/chunk-5GUJ36TL.js +0 -53
  218. package/dist/chunk-5GUJ36TL.js.map +0 -1
  219. package/dist/chunk-5UINJNAJ.js.map +0 -1
  220. package/dist/chunk-6R56OKJZ.js.map +0 -1
  221. package/dist/chunk-AVEQUR44.js.map +0 -1
  222. package/dist/chunk-BVEDKMNG.js.map +0 -1
  223. package/dist/chunk-BYGPUUCT.js.map +0 -1
  224. package/dist/chunk-CWXTNPNZ.js.map +0 -1
  225. package/dist/chunk-DFKBTBO3.js.map +0 -1
  226. package/dist/chunk-F3JWOPTG.js.map +0 -1
  227. package/dist/chunk-FSGICFXB.js.map +0 -1
  228. package/dist/chunk-GASBX52O.js +0 -12
  229. package/dist/chunk-GASBX52O.js.map +0 -1
  230. package/dist/chunk-IY6256GK.js.map +0 -1
  231. package/dist/chunk-KJRVMMM3.js.map +0 -1
  232. package/dist/chunk-LM2NHRCJ.js.map +0 -1
  233. package/dist/chunk-QF6IQQFP.js.map +0 -1
  234. package/dist/chunk-R5IMFAFR.js.map +0 -1
  235. package/dist/chunk-TO7DJYLZ.js.map +0 -1
  236. package/dist/chunk-TR3HFH6J.js.map +0 -1
  237. package/dist/chunk-WJMPCVOR.js.map +0 -1
  238. package/dist/chunk-WSJ7RO54.js.map +0 -1
  239. package/dist/chunk-WVNDEYXL.js.map +0 -1
  240. package/dist/chunk-XHHMM5HX.js.map +0 -1
  241. package/dist/chunk-XN37VTDB.js.map +0 -1
  242. package/dist/chunk-XPJQXSC4.js.map +0 -1
  243. package/dist/chunk-YFAXOD7Z.js +0 -42
  244. package/dist/chunk-YFAXOD7Z.js.map +0 -1
  245. package/dist/chunk-YLYXW5PH.js.map +0 -1
  246. package/dist/chunk-Z2K4JPQ3.js.map +0 -1
  247. package/dist/chunk-ZCL7C5LH.js.map +0 -1
  248. package/dist/client-G2WGWPCA.js +0 -11
  249. package/dist/db-XKZYDCKM.js.map +0 -1
  250. package/dist/digest-7UBGUBRK.js.map +0 -1
  251. package/dist/digest-state-3KHZF7GD.js.map +0 -1
  252. package/dist/ensure-site-OAAE5YE2.js.map +0 -1
  253. package/dist/fleet-events-cF2Om88w.d.ts +0 -24
  254. package/dist/forms-notify-target-UC6PF3AE.js.map +0 -1
  255. package/dist/github-signals-TX5FPYP6.js.map +0 -1
  256. package/dist/header-image-PSPT7CUM.js.map +0 -1
  257. package/dist/launch-UD36AHUN.js.map +0 -1
  258. package/dist/lighthouse-airtable-YMH4UA7R.js +0 -12
  259. package/dist/match-harness-QRG6XZAR.js +0 -70
  260. package/dist/match-harness-QRG6XZAR.js.map +0 -1
  261. package/dist/migrate-Y7R4CESL.js +0 -7
  262. package/dist/parity-CAJ477PS.js +0 -14
  263. package/dist/preflight-RYIP54NY.js.map +0 -1
  264. package/dist/prismic-ci-6GKKZGB5.js.map +0 -1
  265. package/dist/prismic-models-P6FWWVRS.js.map +0 -1
  266. package/dist/prospect-audit-PRHU53HS.js.map +0 -1
  267. package/dist/protection-audit-SJO53MEQ.js +0 -168
  268. package/dist/protection-audit-SJO53MEQ.js.map +0 -1
  269. package/dist/render-YGNGTX3W.js.map +0 -1
  270. package/dist/replay-PCSQOGCZ.js.map +0 -1
  271. package/dist/report-LQS4ECTM.js.map +0 -1
  272. package/dist/report-mirror-HDTOJE64.js.map +0 -1
  273. package/dist/schema-A4WCPIF4.js.map +0 -1
  274. package/dist/site-mirror-WON4FTJ2.js.map +0 -1
  275. package/dist/submissions-3I3GAQAX.js.map +0 -1
  276. package/dist/submissions-OVZPVBYG.js.map +0 -1
  277. /package/dist/{airtable-JGCPS7JH.js.map → attachments-JFGFQRXQ.js.map} +0 -0
  278. /package/dist/{blux-4KNXUP2K.js.map → blux-NXQLMS4W.js.map} +0 -0
  279. /package/dist/{bump-deps-C5G2EFBB.js.map → bump-deps-775VLDYB.js.map} +0 -0
  280. /package/dist/{chunk-FUWFLAWQ.js.map → chunk-3RLDX3Q2.js.map} +0 -0
  281. /package/dist/{chunk-S7RYFUIK.js.map → chunk-6PGXKN6F.js.map} +0 -0
  282. /package/dist/{chunk-HTABUCF4.js.map → chunk-6THEZQLA.js.map} +0 -0
  283. /package/dist/{chunk-2LYOAB2E.js.map → chunk-HSMN35LU.js.map} +0 -0
  284. /package/dist/{chunk-BCKEP5S6.js.map → chunk-JHJNNJLG.js.map} +0 -0
  285. /package/dist/{chunk-ZQV7UQNE.js.map → chunk-LUF52EIY.js.map} +0 -0
  286. /package/dist/{chunk-VSGMCCGQ.js.map → chunk-MMSMZC7S.js.map} +0 -0
  287. /package/dist/{chunk-4763KQ6O.js.map → chunk-PXRN2MER.js.map} +0 -0
  288. /package/dist/{chunk-WMBLR5VA.js.map → chunk-PZZ6HM5T.js.map} +0 -0
  289. /package/dist/{chunk-CJ2RMTT7.js.map → chunk-TV76A6GN.js.map} +0 -0
  290. /package/dist/{chunk-KZRR4NFG.js.map → chunk-TVZ6QCOE.js.map} +0 -0
  291. /package/dist/{chunk-BI2VI6EM.js.map → chunk-YXWBM26P.js.map} +0 -0
  292. /package/dist/{attachments-NLZIJ5NU.js.map → client-DGTO65WB.js.map} +0 -0
  293. /package/dist/{convert-to-pnpm-YTFREUJK.js.map → convert-to-pnpm-KLWA53N5.js.map} +0 -0
  294. /package/dist/{client-G2WGWPCA.js.map → deadletter-G4M3HSVM.js.map} +0 -0
  295. /package/dist/{digest-collectors-DJFN5ZDK.js.map → digest-collectors-CYTN2EUX.js.map} +0 -0
  296. /package/dist/{fleet-state-UEVZ3X3J.js.map → fleet-state-RJROYXKO.js.map} +0 -0
  297. /package/dist/{freeze-A6MUCZU4.js.map → freeze-GUQ43EAU.js.map} +0 -0
  298. /package/dist/{health-mirror-XJAKA3EY.js.map → health-mirror-KU3G7V2Y.js.map} +0 -0
  299. /package/dist/{import-airtable-TAKSN4NV.js.map → import-airtable-UBF5GYAL.js.map} +0 -0
  300. /package/dist/{lighthouse-VHI77PFB.js.map → lighthouse-52WSPZ5D.js.map} +0 -0
  301. /package/dist/{lighthouse-airtable-YMH4UA7R.js.map → lighthouse-airtable-M45OPVRV.js.map} +0 -0
  302. /package/dist/{migrate-Y7R4CESL.js.map → migrate-XZ7U5DFC.js.map} +0 -0
  303. /package/dist/{notify-IISTHNBR.js.map → notify-K3WVH3DM.js.map} +0 -0
  304. /package/dist/{onboard-TM2KESGF.js.map → onboard-JQQIMQW7.js.map} +0 -0
  305. /package/dist/{orchestrate-HYVQPRCE.js.map → orchestrate-L2A5BZFY.js.map} +0 -0
  306. /package/dist/{parity-CAJ477PS.js.map → parity-2JGVUCZD.js.map} +0 -0
  307. /package/dist/{pipeline-YROAY6DT.js.map → pipeline-UUPXOS2J.js.map} +0 -0
  308. /package/dist/{prospect-audits-R3LWF6U7.js.map → prospect-audits-IZVQY3OQ.js.map} +0 -0
  309. /package/dist/{render-from-row-IFSBHWDH.js.map → render-from-row-75JTED2Z.js.map} +0 -0
  310. /package/dist/{svelte-codemods-WSV2FGNG.js.map → svelte-codemods-VOLOKKFI.js.map} +0 -0
  311. /package/dist/{sync-K3PKHVLH.js.map → sync-F4USL4K5.js.map} +0 -0
  312. /package/dist/{sync-configs-RRIHNLIJ.js.map → sync-configs-OXSWKVZ2.js.map} +0 -0
  313. /package/dist/{upgrade-VTD6V4HS.js.map → upgrade-EVAL3JTO.js.map} +0 -0
  314. /package/dist/{webflow-IRKOIT7S.js.map → webflow-624FEBFD.js.map} +0 -0
  315. /package/dist/{websites-TB4TCAWM.js.map → websites-Y6FN2XFD.js.map} +0 -0
  316. /package/dist/{write-audits-to-airtable-53EVXKMU.js.map → write-audits-to-airtable-TI3JMWSY.js.map} +0 -0
@@ -2,30 +2,31 @@ import {
2
2
  appendSkipNotice,
3
3
  fleetWorkdir,
4
4
  prepareFleetSites
5
- } from "./chunk-LM2NHRCJ.js";
5
+ } from "./chunk-DYTYPKFN.js";
6
6
  import {
7
7
  resolveSites
8
- } from "./chunk-Z2K4JPQ3.js";
8
+ } from "./chunk-FP6HOW6J.js";
9
9
  import {
10
10
  init
11
- } from "./chunk-BVEDKMNG.js";
12
- import "./chunk-S7RYFUIK.js";
13
- import "./chunk-CWXTNPNZ.js";
14
- import "./chunk-2LYOAB2E.js";
11
+ } from "./chunk-U2ZI6G7H.js";
12
+ import "./chunk-EN6CTBUN.js";
13
+ import "./chunk-6PGXKN6F.js";
14
+ import "./chunk-AYDQQBNG.js";
15
+ import "./chunk-HSMN35LU.js";
15
16
  import "./chunk-J7SZQUCW.js";
16
- import "./chunk-WSJ7RO54.js";
17
- import "./chunk-DFKBTBO3.js";
18
- import "./chunk-R53VL3RI.js";
19
- import "./chunk-FUWFLAWQ.js";
20
- import "./chunk-ZQV7UQNE.js";
17
+ import "./chunk-LAG6IP7Y.js";
18
+ import "./chunk-TJLKWQOX.js";
19
+ import "./chunk-5CJVUPJU.js";
20
+ import "./chunk-3RLDX3Q2.js";
21
21
  import "./chunk-SLFG7Y76.js";
22
+ import "./chunk-LUF52EIY.js";
22
23
  import "./chunk-OTGB6YQO.js";
23
- import "./chunk-TO7DJYLZ.js";
24
+ import "./chunk-L3S3QZXL.js";
24
25
  import "./chunk-LKGVSM2O.js";
25
- import "./chunk-GASBX52O.js";
26
- import "./chunk-XHHMM5HX.js";
26
+ import "./chunk-MVKNU4QD.js";
27
+ import "./chunk-43SW3FGW.js";
27
28
  import "./chunk-Z3JXLULD.js";
28
- import "./chunk-2NQUCS7O.js";
29
+ import "./chunk-BIYQN7FH.js";
29
30
  import "./chunk-UDRHAQT7.js";
30
31
  import "./chunk-PTDMVGKL.js";
31
32
  import "./chunk-LBYOLBW7.js";
@@ -35,9 +36,9 @@ import "./chunk-RARREDQE.js";
35
36
  import {
36
37
  siteLabel
37
38
  } from "./chunk-XXTZBPUY.js";
38
- import "./chunk-AVEQUR44.js";
39
+ import "./chunk-WMF5S2MB.js";
39
40
  import "./chunk-NMAWXBJA.js";
40
- import "./chunk-YLYXW5PH.js";
41
+ import "./chunk-CXICCLNM.js";
41
42
 
42
43
  // src/cli/commands/init.ts
43
44
  import { resolve } from "path";
@@ -110,4 +111,4 @@ async function runInitCommand(site, opts) {
110
111
  export {
111
112
  runInitCommand
112
113
  };
113
- //# sourceMappingURL=init-FFE4FCO2.js.map
114
+ //# sourceMappingURL=init-GOWDA5QS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/commands/init.ts"],"sourcesContent":["import { resolve } from \"node:path\";\nimport { init, type InitResult, type InitStepResult } from \"../../recipes/init.js\";\nimport { resolveSites } from \"../fleet/resolve-sites.js\";\nimport { prepareFleetSites, appendSkipNotice, type SkippedSite } from \"../fleet/prepare-sites.js\";\nimport { fleetWorkdir } from \"../../util/fleet-workdir.js\";\nimport { siteLabel } from \"../../util/site.js\";\n\nexport type InitCommandOptions = {\n fleet?: string;\n workdir?: string;\n cwd?: string;\n};\n\nfunction formatStep(name: string, r: InitStepResult): string {\n if (r.kind === \"error\") return `${name.padEnd(20)} error: ${r.message}`;\n if (r.kind === \"audit\") {\n const lines = r.results.map(\n (a) => ` ${a.audit.padEnd(12)} ${a.status.padEnd(5)} ${a.summary}`,\n );\n return `${name.padEnd(20)} ${r.results.length} audit(s):\\n${lines.join(\"\\n\")}`;\n }\n const rec = r.result;\n if (rec.status === \"noop\") return `${name.padEnd(20)} noop${rec.notes ? ` — ${rec.notes}` : \"\"}`;\n if (rec.status === \"failed\")\n return `${name.padEnd(20)} failed${rec.notes ? ` — ${rec.notes}` : \"\"}`;\n return `${name.padEnd(20)} applied (${rec.commits.length} commit${rec.commits.length === 1 ? \"\" : \"s\"})${rec.notes ? ` — ${rec.notes}` : \"\"}`;\n}\n\nfunction formatResult(r: InitResult): string {\n const header = `[${r.site}] init — ${r.complete ? \"complete\" : \"STOPPED\"}`;\n const body = r.steps.map((s) => formatStep(s.name, s.result)).join(\"\\n\");\n return `${header}\\n${body}`;\n}\n\nfunction exitCodeFor(r: InitResult): number {\n if (!r.complete) return 1;\n // A complete chain can still surface a failing audit at the end. Treat\n // any `fail`-status audit as exit 1 so CI signals a regression even when\n // every recipe applied cleanly.\n for (const step of r.steps) {\n if (step.result.kind === \"audit\" && step.result.results.some((a) => a.status === \"fail\")) {\n return 1;\n }\n }\n return 0;\n}\n\nexport async function runInitCommand(\n site: string | undefined,\n opts: InitCommandOptions,\n): Promise<{ output: string; code: number }> {\n const cwd = opts.cwd ? resolve(opts.cwd) : process.cwd();\n\n let sites = await resolveSites({\n ...(site !== undefined ? { site } : {}),\n ...(opts.fleet !== undefined ? { fleet: opts.fleet } : {}),\n ...(opts.workdir !== undefined ? { workdir: opts.workdir } : {}),\n cwd,\n });\n\n let skipped: SkippedSite[] = [];\n if (opts.fleet) {\n const workdir = opts.workdir ?? fleetWorkdir();\n const prep = await prepareFleetSites(sites, { workdir });\n sites = prep.prepared;\n skipped = prep.skipped;\n }\n\n const results: InitResult[] = [];\n for (const s of sites) {\n try {\n results.push(await init(s));\n } catch (err) {\n // Isolate a per-site throw (e.g. a transient git error) so the rest of the\n // fleet still runs — the same guarantee `runRecipeOverSites` gives the other\n // fleet commands, but `init` returns an `InitResult`, so synthesize a stopped\n // one here rather than reuse the shared helper.\n results.push({\n site: siteLabel(s),\n steps: [\n {\n name: \"init\",\n result: { kind: \"error\", message: err instanceof Error ? err.message : String(err) },\n },\n ],\n complete: false,\n });\n }\n }\n\n const output = results.map(formatResult).join(\"\\n\\n\");\n const code = results.some((r) => exitCodeFor(r) !== 0) ? 1 : 0;\n return { output: appendSkipNotice(output, skipped), code };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/cli/commands/init.ts"],"sourcesContent":["import { resolve } from \"node:path\";\nimport { init, type InitResult, type InitStepResult } from \"../../recipes/init.js\";\nimport { resolveSites } from \"../fleet/resolve-sites.js\";\nimport { prepareFleetSites, appendSkipNotice, type SkippedSite } from \"../fleet/prepare-sites.js\";\nimport { fleetWorkdir } from \"../../util/fleet-workdir.js\";\nimport { siteLabel } from \"../../util/site.js\";\n\nexport type InitCommandOptions = {\n fleet?: string;\n workdir?: string;\n cwd?: string;\n};\n\nfunction formatStep(name: string, r: InitStepResult): string {\n if (r.kind === \"error\") return `${name.padEnd(20)} error: ${r.message}`;\n if (r.kind === \"audit\") {\n const lines = r.results.map(\n (a) => ` ${a.audit.padEnd(12)} ${a.status.padEnd(5)} ${a.summary}`,\n );\n return `${name.padEnd(20)} ${r.results.length} audit(s):\\n${lines.join(\"\\n\")}`;\n }\n const rec = r.result;\n if (rec.status === \"noop\") return `${name.padEnd(20)} noop${rec.notes ? ` — ${rec.notes}` : \"\"}`;\n if (rec.status === \"failed\")\n return `${name.padEnd(20)} failed${rec.notes ? ` — ${rec.notes}` : \"\"}`;\n return `${name.padEnd(20)} applied (${rec.commits.length} commit${rec.commits.length === 1 ? \"\" : \"s\"})${rec.notes ? ` — ${rec.notes}` : \"\"}`;\n}\n\nfunction formatResult(r: InitResult): string {\n const header = `[${r.site}] init — ${r.complete ? \"complete\" : \"STOPPED\"}`;\n const body = r.steps.map((s) => formatStep(s.name, s.result)).join(\"\\n\");\n return `${header}\\n${body}`;\n}\n\nfunction exitCodeFor(r: InitResult): number {\n if (!r.complete) return 1;\n // A complete chain can still surface a failing audit at the end. Treat\n // any `fail`-status audit as exit 1 so CI signals a regression even when\n // every recipe applied cleanly.\n for (const step of r.steps) {\n if (step.result.kind === \"audit\" && step.result.results.some((a) => a.status === \"fail\")) {\n return 1;\n }\n }\n return 0;\n}\n\nexport async function runInitCommand(\n site: string | undefined,\n opts: InitCommandOptions,\n): Promise<{ output: string; code: number }> {\n const cwd = opts.cwd ? resolve(opts.cwd) : process.cwd();\n\n let sites = await resolveSites({\n ...(site !== undefined ? { site } : {}),\n ...(opts.fleet !== undefined ? { fleet: opts.fleet } : {}),\n ...(opts.workdir !== undefined ? { workdir: opts.workdir } : {}),\n cwd,\n });\n\n let skipped: SkippedSite[] = [];\n if (opts.fleet) {\n const workdir = opts.workdir ?? fleetWorkdir();\n const prep = await prepareFleetSites(sites, { workdir });\n sites = prep.prepared;\n skipped = prep.skipped;\n }\n\n const results: InitResult[] = [];\n for (const s of sites) {\n try {\n results.push(await init(s));\n } catch (err) {\n // Isolate a per-site throw (e.g. a transient git error) so the rest of the\n // fleet still runs — the same guarantee `runRecipeOverSites` gives the other\n // fleet commands, but `init` returns an `InitResult`, so synthesize a stopped\n // one here rather than reuse the shared helper.\n results.push({\n site: siteLabel(s),\n steps: [\n {\n name: \"init\",\n result: { kind: \"error\", message: err instanceof Error ? err.message : String(err) },\n },\n ],\n complete: false,\n });\n }\n }\n\n const output = results.map(formatResult).join(\"\\n\\n\");\n const code = results.some((r) => exitCodeFor(r) !== 0) ? 1 : 0;\n return { output: appendSkipNotice(output, skipped), code };\n}\n"],"mappings":"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","names":[]}
@@ -1,31 +1,37 @@
1
1
  import {
2
- writeAuditsToAirtable
3
- } from "./chunk-5EEMTJMT.js";
2
+ HARNESS_JSON_RELATIVE,
3
+ UNGUARDED_TWIN_TELL
4
+ } from "./chunk-Y6FCXRIC.js";
4
5
  import {
5
6
  selfUpdating
6
- } from "./chunk-FSGICFXB.js";
7
+ } from "./chunk-IDBPII6G.js";
7
8
  import "./chunk-MNDIED4M.js";
9
+ import {
10
+ writeAuditsToAirtable
11
+ } from "./chunk-FHFXJ3EM.js";
8
12
  import {
9
13
  hasRealScores,
10
14
  lighthouseScoresFromResult
11
- } from "./chunk-XN37VTDB.js";
12
- import "./chunk-SVAAONYB.js";
15
+ } from "./chunk-X56LAKPR.js";
16
+ import "./chunk-WQLNUEZL.js";
13
17
  import "./chunk-5L3FPQIJ.js";
14
18
  import {
15
19
  resolveSites
16
- } from "./chunk-Z2K4JPQ3.js";
20
+ } from "./chunk-FP6HOW6J.js";
17
21
  import {
22
+ createReportDraft,
23
+ findReportForPeriod,
18
24
  queueDraft
19
- } from "./chunk-YFAXOD7Z.js";
25
+ } from "./chunk-UPE6D4AT.js";
26
+ import "./chunk-TJLKWQOX.js";
20
27
  import {
21
- createDraft,
22
- findReportByPeriod,
23
28
  updateReportScores
24
- } from "./chunk-F3JWOPTG.js";
29
+ } from "./chunk-TEMQPSCM.js";
30
+ import "./chunk-ASLDCWBF.js";
25
31
  import "./chunk-VAD43MOR.js";
26
32
  import {
27
33
  uploadAttachment
28
- } from "./chunk-IY6256GK.js";
34
+ } from "./chunk-YJBSB4LP.js";
29
35
  import {
30
36
  openBase,
31
37
  readAirtableConfig
@@ -35,19 +41,20 @@ import {
35
41
  resolveCopy
36
42
  } from "./chunk-KJGKZLCT.js";
37
43
  import "./chunk-BGTYPVLT.js";
44
+ import "./chunk-TC4GANMX.js";
38
45
  import {
39
- listWebsites,
40
46
  siteSlug
41
- } from "./chunk-3Z6X3BHU.js";
47
+ } from "./chunk-ICSRWW5Q.js";
48
+ import "./chunk-RQJFGK3A.js";
42
49
  import "./chunk-SLFG7Y76.js";
43
50
  import {
44
51
  runAudits
45
- } from "./chunk-TO7DJYLZ.js";
52
+ } from "./chunk-L3S3QZXL.js";
46
53
  import "./chunk-LKGVSM2O.js";
47
- import "./chunk-GASBX52O.js";
48
- import "./chunk-XHHMM5HX.js";
54
+ import "./chunk-MVKNU4QD.js";
55
+ import "./chunk-43SW3FGW.js";
49
56
  import "./chunk-Z3JXLULD.js";
50
- import "./chunk-2NQUCS7O.js";
57
+ import "./chunk-BIYQN7FH.js";
51
58
  import "./chunk-UDRHAQT7.js";
52
59
  import "./chunk-PTDMVGKL.js";
53
60
  import "./chunk-LBYOLBW7.js";
@@ -57,27 +64,75 @@ import "./chunk-RARREDQE.js";
57
64
  import {
58
65
  siteLabel
59
66
  } from "./chunk-XXTZBPUY.js";
60
- import "./chunk-AVEQUR44.js";
67
+ import "./chunk-WMF5S2MB.js";
61
68
  import "./chunk-6VAL7XJT.js";
62
69
  import "./chunk-NMAWXBJA.js";
63
- import "./chunk-YLYXW5PH.js";
70
+ import "./chunk-CXICCLNM.js";
64
71
 
65
72
  // src/cli/commands/launch.ts
66
73
  import { resolve } from "path";
67
74
 
68
75
  // src/recipes/launch.ts
69
76
  import { existsSync } from "fs";
70
- import { readFile } from "fs/promises";
77
+ import { readFile, readdir } from "fs/promises";
71
78
  import { join } from "path";
72
79
  var SITE_404_MARKER = /<h1[^>]*>\s*404\s*<\/h1>/i;
73
- var UNGUARDED_TWIN_MARKER = /no (matching )?assembly for/i;
80
+ var UNGUARDED_TWIN_MARKER = new RegExp(
81
+ `${UNGUARDED_TWIN_TELL.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}|no (matching )?assembly for`,
82
+ "i"
83
+ );
74
84
  var MATCH_ROUTE_DIR = "src/routes/dev/match";
75
85
  var CHECKOUT_MARKER = "src/routes";
76
- var MATCH_GUARD_FILES = [
77
- "src/routes/dev/+layout.server.ts",
78
- "src/routes/dev/match/+layout.server.ts",
79
- "src/routes/dev/match/[uid]/+page.server.ts"
80
- ];
86
+ var REGEX_PRECEDERS = /[(,=:[!&|?{};+\-*%~^<>]/;
87
+ var REGEX_KEYWORDS = /* @__PURE__ */ new Set([
88
+ "return",
89
+ "typeof",
90
+ "case",
91
+ "in",
92
+ "of",
93
+ "new",
94
+ "delete",
95
+ "void",
96
+ "instanceof",
97
+ "do",
98
+ "else",
99
+ "yield",
100
+ "await"
101
+ ]);
102
+ function opensRegex(prevChar, prevWord) {
103
+ if (prevChar === "") return true;
104
+ if (REGEX_PRECEDERS.test(prevChar)) return true;
105
+ return REGEX_KEYWORDS.has(prevWord);
106
+ }
107
+ function lookback(out) {
108
+ let i = out.length - 1;
109
+ while (i >= 0 && /\s/.test(out[i])) i--;
110
+ if (i < 0) return { char: "", word: "" };
111
+ let j = i;
112
+ while (j >= 0 && /[A-Za-z0-9_$]/.test(out[j])) j--;
113
+ return { char: out[i], word: out.slice(j + 1, i + 1) };
114
+ }
115
+ function regexLiteralEnd(source, at) {
116
+ let inClass = false;
117
+ for (let i = at + 1; i < source.length; i++) {
118
+ const c = source[i];
119
+ if (c === "\\") {
120
+ i++;
121
+ continue;
122
+ }
123
+ if (c === "\n") return -1;
124
+ if (inClass) {
125
+ if (c === "]") inClass = false;
126
+ continue;
127
+ }
128
+ if (c === "[") {
129
+ inClass = true;
130
+ continue;
131
+ }
132
+ if (c === "/") return i;
133
+ }
134
+ return -1;
135
+ }
81
136
  function stripComments(source) {
82
137
  let out = "";
83
138
  for (let i = 0; i < source.length; ) {
@@ -93,6 +148,17 @@ function stripComments(source) {
93
148
  i += 2;
94
149
  continue;
95
150
  }
151
+ if (ch === "/") {
152
+ const { char, word } = lookback(out);
153
+ if (opensRegex(char, word)) {
154
+ const end = regexLiteralEnd(source, i);
155
+ if (end !== -1) {
156
+ out += source.slice(i, end + 1);
157
+ i = end + 1;
158
+ continue;
159
+ }
160
+ }
161
+ }
96
162
  if (ch === '"' || ch === "'" || ch === "`") {
97
163
  out += ch;
98
164
  i++;
@@ -117,6 +183,17 @@ function maskLiterals(code) {
117
183
  let out = "";
118
184
  for (let i = 0; i < code.length; ) {
119
185
  const ch = code[i];
186
+ if (ch === "/") {
187
+ const { char, word } = lookback(out);
188
+ if (opensRegex(char, word)) {
189
+ const end = regexLiteralEnd(code, i);
190
+ if (end !== -1) {
191
+ out += "/" + " ".repeat(end - i - 1) + "/";
192
+ i = end + 1;
193
+ continue;
194
+ }
195
+ }
196
+ }
120
197
  if (ch !== '"' && ch !== "'" && ch !== "`") {
121
198
  out += ch;
122
199
  i++;
@@ -175,6 +252,45 @@ function carriesGuard(source) {
175
252
  }
176
253
  return false;
177
254
  }
255
+ var DEV_ROUTE_DIR = "src/routes/dev";
256
+ async function routeFilesUnder(sitePath, relDir) {
257
+ let entries;
258
+ try {
259
+ entries = await readdir(join(sitePath, relDir), { withFileTypes: true });
260
+ } catch {
261
+ return [];
262
+ }
263
+ const out = [];
264
+ for (const e of entries) {
265
+ const rel = `${relDir}/${e.name}`;
266
+ if (e.isDirectory()) out.push(...await routeFilesUnder(sitePath, rel));
267
+ else if (e.name.startsWith("+")) out.push(rel);
268
+ }
269
+ return out;
270
+ }
271
+ async function guardAt(sitePath, rel, cache) {
272
+ const hit = cache.get(rel);
273
+ if (hit !== void 0) return hit;
274
+ let ok;
275
+ try {
276
+ ok = carriesGuard(await readFile(join(sitePath, rel), "utf-8"));
277
+ } catch {
278
+ ok = false;
279
+ }
280
+ cache.set(rel, ok);
281
+ return ok;
282
+ }
283
+ async function coveringLayout(sitePath, dir, cache) {
284
+ let d = dir;
285
+ for (; ; ) {
286
+ const rel = `${d}/+layout.server.ts`;
287
+ if (await guardAt(sitePath, rel, cache)) return rel;
288
+ if (d === DEV_ROUTE_DIR) return null;
289
+ const up = d.slice(0, d.lastIndexOf("/"));
290
+ if (up.length < DEV_ROUTE_DIR.length) return null;
291
+ d = up;
292
+ }
293
+ }
178
294
  async function matchingDisposition(sitePath) {
179
295
  if (!existsSync(join(sitePath, CHECKOUT_MARKER))) {
180
296
  return {
@@ -188,33 +304,64 @@ async function matchingDisposition(sitePath) {
188
304
  message: `no ${MATCH_ROUTE_DIR} in this checkout (${CHECKOUT_MARKER} is present, so the absence is a real one)`
189
305
  };
190
306
  }
191
- const read = [];
192
- for (const rel of MATCH_GUARD_FILES) {
193
- let source;
194
- try {
195
- source = await readFile(join(sitePath, rel), "utf-8");
196
- } catch {
307
+ const files = await routeFilesUnder(sitePath, MATCH_ROUTE_DIR);
308
+ if (files.length === 0) {
309
+ return {
310
+ ok: false,
311
+ message: `${MATCH_ROUTE_DIR} exists but carries no route files (+page/+server/+layout) \u2014 the twin's disposition cannot be established`
312
+ };
313
+ }
314
+ const cache = /* @__PURE__ */ new Map();
315
+ const unguarded = [];
316
+ const covers = [];
317
+ for (const ep of files.filter((f) => f.endsWith("/+server.ts"))) {
318
+ if (await guardAt(sitePath, ep, cache)) covers.push(ep);
319
+ else
320
+ unguarded.push(
321
+ `${ep} (a \`+server.ts\` endpoint \u2014 layout \`load\` does not run for it, so it needs its own guard)`
322
+ );
323
+ }
324
+ const pageDirs = [
325
+ ...new Set(
326
+ files.filter((f) => /\/\+page\.(server\.ts|ts|svelte)$/.test(f)).map((f) => f.slice(0, f.lastIndexOf("/")))
327
+ )
328
+ ];
329
+ for (const dir of pageDirs) {
330
+ const layout = await coveringLayout(sitePath, dir, cache);
331
+ if (layout) {
332
+ covers.push(layout);
197
333
  continue;
198
334
  }
199
- read.push(rel);
200
- if (carriesGuard(source)) {
201
- return {
202
- ok: true,
203
- message: `${rel} contains dev guard source \u2014 \`if (!dev)\` on \`$app/environment\` whose own branch refuses with a 404/throw (source text only; the deployed build is checked at the dev-guard step)`
204
- };
335
+ const own = `${dir}/+page.server.ts`;
336
+ if (await guardAt(sitePath, own, cache)) {
337
+ covers.push(own);
338
+ continue;
205
339
  }
340
+ unguarded.push(`${dir}/ (no guarded +page.server.ts and no covering +layout.server.ts)`);
206
341
  }
207
- if (read.length === 0) {
342
+ if (unguarded.length > 0) {
208
343
  return {
209
344
  ok: false,
210
- message: `${MATCH_ROUTE_DIR} exists but none of ${MATCH_GUARD_FILES.join(", ")} could be read \u2014 the twin's disposition cannot be established`
345
+ message: `${MATCH_ROUTE_DIR} is not fully guarded \u2014 ${unguarded.join("; ")} \u2014 an \`if (!dev)\` guard on \`$app/environment\` whose own branch refuses (\`error(404\` or \`throw\`) is required, once comments are stripped and string and regex contents masked; the matching twin would ship`
211
346
  };
212
347
  }
213
348
  return {
214
- ok: false,
215
- message: `none of ${read.join(", ")} carries an \`if (!dev)\` guard on \`$app/environment\` whose own branch refuses (\`error(404\` or \`throw\`), once comments are stripped and string contents masked \u2014 the matching twin would ship`
349
+ ok: true,
350
+ message: `every route under ${MATCH_ROUTE_DIR} is covered by dev guard source \u2014 ${[...new Set(covers)].join(", ")} (source text only; the deployed build is checked at the dev-guard step)`
216
351
  };
217
352
  }
353
+ async function twinUids(sitePath) {
354
+ let parsed;
355
+ try {
356
+ parsed = JSON.parse(await readFile(join(sitePath, HARNESS_JSON_RELATIVE), "utf-8"));
357
+ } catch {
358
+ return ["home"];
359
+ }
360
+ const pages = parsed?.pages;
361
+ if (!pages || typeof pages !== "object") return ["home"];
362
+ const uids = Object.values(pages).map((p) => p?.uid).filter((u) => typeof u === "string" && u.length > 0);
363
+ return uids.length > 0 ? [...new Set(uids)] : ["home"];
364
+ }
218
365
  var PROBE_TIMEOUT_MS = 15e3;
219
366
  var defaultProbe = async (url) => {
220
367
  const res = await fetch(url, {
@@ -223,7 +370,7 @@ var defaultProbe = async (url) => {
223
370
  });
224
371
  return { status: res.status, body: await res.text() };
225
372
  };
226
- async function launch(site, deps = {}) {
373
+ async function launch(site, deps) {
227
374
  const label = siteLabel(site);
228
375
  const bootstrap = deps.bootstrap ?? selfUpdating;
229
376
  const audit = deps.audit ?? runAudits;
@@ -268,20 +415,21 @@ async function launch(site, deps = {}) {
268
415
  bestPractices: rawScores.bestPractices ?? 0,
269
416
  seo: rawScores.seo ?? 0
270
417
  };
271
- const websites = await listWebsites(base);
418
+ const websites = await deps.roster();
272
419
  const target = websites.find((w) => siteSlug(w.name) === siteSlug(label));
273
420
  if (!target) {
274
421
  steps.push({
275
422
  name: "audit",
276
- result: { kind: "error", message: `no Websites row matched site "${label}"` }
423
+ result: { kind: "error", message: `no site row matched site "${label}"` }
277
424
  });
278
425
  return stop();
279
426
  }
280
427
  const origin = target.url.replace(/\/+$/, "");
281
- let twin;
428
+ const uids = await twinUids(site.path);
429
+ const twins = [];
282
430
  let control;
283
431
  try {
284
- twin = await probe(`${origin}/dev/match/home`);
432
+ for (const uid of uids) twins.push({ uid, res: await probe(`${origin}/dev/match/${uid}`) });
285
433
  control = await probe(`${origin}/health`);
286
434
  } catch (err) {
287
435
  steps.push({ name: "dev-guard", result: errorOf(err) });
@@ -297,32 +445,34 @@ async function launch(site, deps = {}) {
297
445
  });
298
446
  return stop();
299
447
  }
300
- const unguardedTell = twin.body.match(UNGUARDED_TWIN_MARKER);
301
- if (unguardedTell) {
302
- steps.push({
303
- name: "dev-guard",
304
- result: {
305
- kind: "error",
306
- message: `${origin}/dev/match/home answered ${twin.status} carrying the twin route's OWN "${unguardedTell[0]}" message \u2014 the twin is LIVE and merely has no assembly for the uid "home". That is not evidence of a dev guard.`
307
- }
308
- });
309
- return stop();
310
- }
311
- if (twin.status !== 404 || !SITE_404_MARKER.test(twin.body)) {
312
- steps.push({
313
- name: "dev-guard",
314
- result: {
315
- kind: "error",
316
- message: twin.status === 404 ? `${origin}/dev/match/home 404s, but not with this site's own error page \u2014 cannot tell the guard from a dead route` : `${origin}/dev/match/home answered ${twin.status} \u2014 the matching twin is live in production`
317
- }
318
- });
319
- return stop();
448
+ for (const { uid, res } of twins) {
449
+ const unguardedTell = res.body.match(UNGUARDED_TWIN_MARKER);
450
+ if (unguardedTell) {
451
+ steps.push({
452
+ name: "dev-guard",
453
+ result: {
454
+ kind: "error",
455
+ message: `${origin}/dev/match/${uid} answered ${res.status} carrying the twin route's OWN "${unguardedTell[0]}" message \u2014 the twin is LIVE and merely has no assembly for the uid "${uid}". That is not evidence of a dev guard.`
456
+ }
457
+ });
458
+ return stop();
459
+ }
460
+ if (res.status !== 404 || !SITE_404_MARKER.test(res.body)) {
461
+ steps.push({
462
+ name: "dev-guard",
463
+ result: {
464
+ kind: "error",
465
+ message: res.status === 404 ? `${origin}/dev/match/${uid} 404s, but not with this site's own error page \u2014 cannot tell the guard from a dead route` : `${origin}/dev/match/${uid} answered ${res.status} \u2014 the matching twin is live in production`
466
+ }
467
+ });
468
+ return stop();
469
+ }
320
470
  }
321
471
  steps.push({
322
472
  name: "dev-guard",
323
473
  result: {
324
474
  kind: "probe",
325
- message: `${origin}/dev/match/home 404 (site error page), /health 200`
475
+ message: `${uids.map((u) => `${origin}/dev/match/${u}`).join(", ")} 404 (site error page), /health 200`
326
476
  }
327
477
  });
328
478
  try {
@@ -345,10 +495,10 @@ async function launch(site, deps = {}) {
345
495
  const slug = siteSlug(target.name);
346
496
  let report;
347
497
  try {
348
- const existing = await findReportByPeriod(base, target.id, "Launch", period);
498
+ const existing = await findReportForPeriod(deps.reportMirror, target.id, "Launch", period);
349
499
  if (existing) {
350
500
  await updateReportScores(base, existing.id, scores, today);
351
- await deps.reportMirror?.patch(existing.id, {
501
+ await deps.reportMirror.patch(existing.id, {
352
502
  lighthouse_performance: scores.performance,
353
503
  lighthouse_accessibility: scores.accessibility,
354
504
  lighthouse_best_practices: scores.bestPractices,
@@ -357,11 +507,9 @@ async function launch(site, deps = {}) {
357
507
  });
358
508
  report = existing;
359
509
  } else {
360
- report = await createDraft(
361
- base,
362
- draftInputFor(target, scores, today, period),
363
- deps.reportMirror?.created
364
- );
510
+ report = await createReportDraft(draftInputFor(target, scores, today, period), {
511
+ create: deps.reportMirror.create
512
+ });
365
513
  }
366
514
  } catch (err) {
367
515
  steps.push({ name: "draft", result: errorOf(err) });
@@ -387,7 +535,7 @@ async function launch(site, deps = {}) {
387
535
  `${slug}-${today.toISOString().slice(0, 10)}.html`,
388
536
  "text/html"
389
537
  );
390
- await deps.reportMirror?.body(report.id, html);
538
+ await deps.reportMirror.body(report.id, html);
391
539
  } catch (uploadErr) {
392
540
  console.warn(
393
541
  `\u26A0 Launch preview upload skipped for ${target.name}: ${uploadErr instanceof Error ? uploadErr.message : String(uploadErr)}`
@@ -454,9 +602,11 @@ async function runLaunchCommand(site, opts) {
454
602
  if (!target) {
455
603
  return { output: `No site resolved for "${site}".`, code: 1 };
456
604
  }
457
- const { makeReportMirror } = await import("./report-mirror-HDTOJE64.js");
458
- const { makeSiteMirror } = await import("./site-mirror-WON4FTJ2.js");
605
+ const { makeReportMirror } = await import("./report-mirror-4QM57LMS.js");
606
+ const { makeSiteMirror } = await import("./site-mirror-WR7ACXOV.js");
607
+ const { readFleetRoster } = await import("./roster-GDNSIRAK.js");
459
608
  const result = await launch(target, {
609
+ roster: () => readFleetRoster(),
460
610
  reportMirror: await makeReportMirror(),
461
611
  siteMirror: await makeSiteMirror()
462
612
  });
@@ -466,4 +616,4 @@ export {
466
616
  formatStep,
467
617
  runLaunchCommand
468
618
  };
469
- //# sourceMappingURL=launch-UD36AHUN.js.map
619
+ //# sourceMappingURL=launch-7N3X2MXB.js.map