@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.
- package/README.md +41 -7
- package/dist/{announce-CLQYX5I4.js → announce-5ZD2SBGD.js} +39 -31
- package/dist/announce-5ZD2SBGD.js.map +1 -0
- package/dist/attachments-JFGFQRXQ.js +10 -0
- package/dist/{blux-4KNXUP2K.js → blux-NXQLMS4W.js} +1 -1
- package/dist/{bump-deps-C5G2EFBB.js → bump-deps-775VLDYB.js} +6 -6
- package/dist/{chunk-FUWFLAWQ.js → chunk-3RLDX3Q2.js} +5 -5
- package/dist/{chunk-XHHMM5HX.js → chunk-43SW3FGW.js} +63 -1
- package/dist/chunk-43SW3FGW.js.map +1 -0
- package/dist/{chunk-R53VL3RI.js → chunk-5CJVUPJU.js} +1 -1
- package/dist/{chunk-R53VL3RI.js.map → chunk-5CJVUPJU.js.map} +1 -1
- package/dist/{chunk-S7RYFUIK.js → chunk-6PGXKN6F.js} +2 -2
- package/dist/{chunk-HTABUCF4.js → chunk-6THEZQLA.js} +3 -3
- package/dist/chunk-A5QKNOXW.js +72 -0
- package/dist/chunk-A5QKNOXW.js.map +1 -0
- package/dist/chunk-ASLDCWBF.js +41 -0
- package/dist/chunk-ASLDCWBF.js.map +1 -0
- package/dist/{chunk-CWXTNPNZ.js → chunk-AYDQQBNG.js} +3 -3
- package/dist/chunk-AYDQQBNG.js.map +1 -0
- package/dist/{chunk-WVNDEYXL.js → chunk-BINFZQ2T.js} +57 -6
- package/dist/chunk-BINFZQ2T.js.map +1 -0
- package/dist/{chunk-2NQUCS7O.js → chunk-BIYQN7FH.js} +3 -1
- package/dist/{chunk-2NQUCS7O.js.map → chunk-BIYQN7FH.js.map} +1 -1
- package/dist/{chunk-YLYXW5PH.js → chunk-CXICCLNM.js} +34 -4
- package/dist/chunk-CXICCLNM.js.map +1 -0
- package/dist/{chunk-BYGPUUCT.js → chunk-DRNZVORX.js} +66 -30
- package/dist/chunk-DRNZVORX.js.map +1 -0
- package/dist/{chunk-LM2NHRCJ.js → chunk-DYTYPKFN.js} +4 -4
- package/dist/chunk-DYTYPKFN.js.map +1 -0
- package/dist/{chunk-DFKBTBO3.js → chunk-EN6CTBUN.js} +35 -6
- package/dist/chunk-EN6CTBUN.js.map +1 -0
- package/dist/{chunk-5EEMTJMT.js → chunk-FHFXJ3EM.js} +8 -6
- package/dist/chunk-FHFXJ3EM.js.map +1 -0
- package/dist/{chunk-Z2K4JPQ3.js → chunk-FP6HOW6J.js} +10 -7
- package/dist/chunk-FP6HOW6J.js.map +1 -0
- package/dist/{chunk-2LYOAB2E.js → chunk-HSMN35LU.js} +2 -2
- package/dist/chunk-ICSRWW5Q.js +148 -0
- package/dist/chunk-ICSRWW5Q.js.map +1 -0
- package/dist/{chunk-FSGICFXB.js → chunk-IDBPII6G.js} +17 -5
- package/dist/chunk-IDBPII6G.js.map +1 -0
- package/dist/{chunk-C3IQQKXL.js → chunk-IOTOOTII.js} +121 -1
- package/dist/{chunk-C3IQQKXL.js.map → chunk-IOTOOTII.js.map} +1 -1
- package/dist/{chunk-BCKEP5S6.js → chunk-JHJNNJLG.js} +2 -2
- package/dist/{chunk-TO7DJYLZ.js → chunk-L3S3QZXL.js} +178 -39
- package/dist/chunk-L3S3QZXL.js.map +1 -0
- package/dist/{chunk-WSJ7RO54.js → chunk-LAG6IP7Y.js} +23 -5
- package/dist/chunk-LAG6IP7Y.js.map +1 -0
- package/dist/{chunk-WJMPCVOR.js → chunk-LAJ3FF54.js} +12 -4
- package/dist/chunk-LAJ3FF54.js.map +1 -0
- package/dist/{chunk-2ZAZ7ETT.js → chunk-LDHRIQUW.js} +32 -18
- package/dist/chunk-LDHRIQUW.js.map +1 -0
- package/dist/{chunk-6R56OKJZ.js → chunk-LF2TJN4X.js} +2 -2
- package/dist/chunk-LF2TJN4X.js.map +1 -0
- package/dist/{chunk-ZQV7UQNE.js → chunk-LUF52EIY.js} +2 -2
- package/dist/{chunk-5UINJNAJ.js → chunk-LZMAG73U.js} +34 -21
- package/dist/chunk-LZMAG73U.js.map +1 -0
- package/dist/{chunk-VSGMCCGQ.js → chunk-MMSMZC7S.js} +2 -2
- package/dist/chunk-MVKNU4QD.js +37 -0
- package/dist/chunk-MVKNU4QD.js.map +1 -0
- package/dist/{chunk-XPJQXSC4.js → chunk-P7323YVW.js} +27 -5
- package/dist/chunk-P7323YVW.js.map +1 -0
- package/dist/{chunk-KJRVMMM3.js → chunk-PARKXDXI.js} +36 -5
- package/dist/chunk-PARKXDXI.js.map +1 -0
- package/dist/{chunk-4763KQ6O.js → chunk-PXRN2MER.js} +2 -2
- package/dist/{chunk-WMBLR5VA.js → chunk-PZZ6HM5T.js} +3 -3
- package/dist/{chunk-TR3HFH6J.js → chunk-QFSL2L2B.js} +67 -10
- package/dist/chunk-QFSL2L2B.js.map +1 -0
- package/dist/chunk-RQJFGK3A.js +51 -0
- package/dist/chunk-RQJFGK3A.js.map +1 -0
- package/dist/{chunk-3Z6X3BHU.js → chunk-TC4GANMX.js} +53 -150
- package/dist/chunk-TC4GANMX.js.map +1 -0
- package/dist/{chunk-F3JWOPTG.js → chunk-TEMQPSCM.js} +45 -105
- package/dist/chunk-TEMQPSCM.js.map +1 -0
- package/dist/chunk-TJLKWQOX.js +52 -0
- package/dist/chunk-TJLKWQOX.js.map +1 -0
- package/dist/{chunk-CJ2RMTT7.js → chunk-TV76A6GN.js} +2 -2
- package/dist/{chunk-KZRR4NFG.js → chunk-TVZ6QCOE.js} +3 -3
- package/dist/{chunk-BVEDKMNG.js → chunk-U2ZI6G7H.js} +29 -11
- package/dist/chunk-U2ZI6G7H.js.map +1 -0
- package/dist/chunk-UPE6D4AT.js +69 -0
- package/dist/chunk-UPE6D4AT.js.map +1 -0
- package/dist/{chunk-R5IMFAFR.js → chunk-VMGHQUTV.js} +7 -16
- package/dist/chunk-VMGHQUTV.js.map +1 -0
- package/dist/chunk-VQMAAQ5M.js +53 -0
- package/dist/chunk-VQMAAQ5M.js.map +1 -0
- package/dist/{chunk-AVEQUR44.js → chunk-WMF5S2MB.js} +60 -17
- package/dist/chunk-WMF5S2MB.js.map +1 -0
- package/dist/{chunk-SVAAONYB.js → chunk-WQLNUEZL.js} +12 -2
- package/dist/{chunk-SVAAONYB.js.map → chunk-WQLNUEZL.js.map} +1 -1
- package/dist/{chunk-XN37VTDB.js → chunk-X56LAKPR.js} +3 -3
- package/dist/chunk-X56LAKPR.js.map +1 -0
- package/dist/{chunk-ZCL7C5LH.js → chunk-Y6FCXRIC.js} +1661 -387
- package/dist/chunk-Y6FCXRIC.js.map +1 -0
- package/dist/{chunk-2SLED3NB.js → chunk-YDZ7XGPZ.js} +1 -1
- package/dist/{chunk-2SLED3NB.js.map → chunk-YDZ7XGPZ.js.map} +1 -1
- package/dist/{chunk-IY6256GK.js → chunk-YJBSB4LP.js} +6 -1
- package/dist/chunk-YJBSB4LP.js.map +1 -0
- package/dist/{chunk-BI2VI6EM.js → chunk-YXWBM26P.js} +2 -2
- package/dist/{chunk-QF6IQQFP.js → chunk-Z7FDJ35L.js} +18 -12
- package/dist/chunk-Z7FDJ35L.js.map +1 -0
- package/dist/cli/bin.js +111 -51
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/commands/audit.d.ts +33 -3
- package/dist/cli/commands/audit.js +28 -25
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/client-DGTO65WB.js +11 -0
- package/dist/configs/playwright-a11y.d.ts +11 -1
- package/dist/configs/playwright-a11y.js +3 -1
- package/dist/{convert-to-pnpm-YTFREUJK.js → convert-to-pnpm-KLWA53N5.js} +6 -6
- package/dist/{db-XKZYDCKM.js → db-II5WAK4D.js} +45 -20
- package/dist/db-II5WAK4D.js.map +1 -0
- package/dist/deadletter-G4M3HSVM.js +17 -0
- package/dist/{digest-7UBGUBRK.js → digest-CWKK2DMR.js} +56 -32
- package/dist/digest-CWKK2DMR.js.map +1 -0
- package/dist/{digest-collectors-DJFN5ZDK.js → digest-collectors-CYTN2EUX.js} +17 -12
- package/dist/{digest-state-3KHZF7GD.js → digest-state-ZDPKR7MW.js} +18 -2
- package/dist/digest-state-ZDPKR7MW.js.map +1 -0
- package/dist/ensure-site-2QZHFVQ3.js +70 -0
- package/dist/ensure-site-2QZHFVQ3.js.map +1 -0
- package/dist/ensure-site-JEKV2ODE.js +105 -0
- package/dist/ensure-site-JEKV2ODE.js.map +1 -0
- package/dist/{ensure-site-OAAE5YE2.js → ensure-site-OO4UPWNQ.js} +49 -44
- package/dist/ensure-site-OO4UPWNQ.js.map +1 -0
- package/dist/fleet-events-CkOZpMVC.d.ts +435 -0
- package/dist/{fleet-state-UEVZ3X3J.js → fleet-state-RJROYXKO.js} +19 -7
- package/dist/{forms-notify-target-UC6PF3AE.js → forms-notify-target-X6UEOI2M.js} +19 -15
- package/dist/forms-notify-target-X6UEOI2M.js.map +1 -0
- package/dist/{freeze-A6MUCZU4.js → freeze-GUQ43EAU.js} +2 -2
- package/dist/{github-signals-TX5FPYP6.js → github-signals-QIRTHHET.js} +22 -17
- package/dist/github-signals-QIRTHHET.js.map +1 -0
- package/dist/{header-image-PSPT7CUM.js → header-image-H7ZJAV26.js} +15 -18
- package/dist/header-image-H7ZJAV26.js.map +1 -0
- package/dist/{health-endpoint-KVCJYWET.js → health-endpoint-BJ6BKRHF.js} +8 -7
- package/dist/{health-endpoint-KVCJYWET.js.map → health-endpoint-BJ6BKRHF.js.map} +1 -1
- package/dist/{health-mirror-XJAKA3EY.js → health-mirror-KU3G7V2Y.js} +10 -10
- package/dist/{import-airtable-TAKSN4NV.js → import-airtable-UBF5GYAL.js} +3 -3
- package/dist/index.d.ts +158 -419
- package/dist/index.js +91 -46
- package/dist/index.js.map +1 -1
- package/dist/{init-FFE4FCO2.js → init-GOWDA5QS.js} +19 -18
- package/dist/{init-FFE4FCO2.js.map → init-GOWDA5QS.js.map} +1 -1
- package/dist/{launch-UD36AHUN.js → launch-7N3X2MXB.js} +229 -79
- package/dist/launch-7N3X2MXB.js.map +1 -0
- package/dist/{lighthouse-VHI77PFB.js → lighthouse-52WSPZ5D.js} +2 -2
- package/dist/lighthouse-airtable-M45OPVRV.js +14 -0
- package/dist/match-harness-GBCDSVPS.js +417 -0
- package/dist/match-harness-GBCDSVPS.js.map +1 -0
- package/dist/migrate-XZ7U5DFC.js +7 -0
- package/dist/{notify-IISTHNBR.js → notify-K3WVH3DM.js} +4 -4
- package/dist/{onboard-TM2KESGF.js → onboard-JQQIMQW7.js} +6 -6
- package/dist/{orchestrate-HYVQPRCE.js → orchestrate-L2A5BZFY.js} +13 -10
- package/dist/parity-2JGVUCZD.js +14 -0
- package/dist/{pipeline-YROAY6DT.js → pipeline-UUPXOS2J.js} +3 -3
- package/dist/{preflight-RYIP54NY.js → preflight-O7Q6FWHU.js} +35 -11
- package/dist/preflight-O7Q6FWHU.js.map +1 -0
- package/dist/{prismic-ci-6GKKZGB5.js → prismic-ci-NAPWOXXD.js} +39 -9
- package/dist/prismic-ci-NAPWOXXD.js.map +1 -0
- package/dist/{prismic-models-P6FWWVRS.js → prismic-models-LL6ORTQ2.js} +20 -17
- package/dist/prismic-models-LL6ORTQ2.js.map +1 -0
- package/dist/prospect/types.d.ts +72 -0
- package/dist/prospect/types.js +1 -1
- package/dist/{prospect-audit-PRHU53HS.js → prospect-audit-FMPGQIRQ.js} +16 -7
- package/dist/prospect-audit-FMPGQIRQ.js.map +1 -0
- package/dist/{prospect-audits-R3LWF6U7.js → prospect-audits-IZVQY3OQ.js} +4 -2
- package/dist/protection-audit-YXJKFU6O.js +413 -0
- package/dist/protection-audit-YXJKFU6O.js.map +1 -0
- package/dist/recipes/sync-configs.js +3 -3
- package/dist/{render-YGNGTX3W.js → render-MHUUHPLN.js} +36 -9
- package/dist/render-MHUUHPLN.js.map +1 -0
- package/dist/{render-from-row-IFSBHWDH.js → render-from-row-75JTED2Z.js} +6 -4
- package/dist/{renovate-dispatch-U5Q52SKT.js → renovate-dispatch-2IHAZDVA.js} +14 -9
- package/dist/{renovate-dispatch-U5Q52SKT.js.map → renovate-dispatch-2IHAZDVA.js.map} +1 -1
- package/dist/{replay-PCSQOGCZ.js → replay-4FVFOMHH.js} +10 -23
- package/dist/replay-4FVFOMHH.js.map +1 -0
- package/dist/{report-LQS4ECTM.js → report-IAHXN5CW.js} +103 -57
- package/dist/report-IAHXN5CW.js.map +1 -0
- package/dist/{report-mirror-HDTOJE64.js → report-mirror-4QM57LMS.js} +34 -12
- package/dist/report-mirror-4QM57LMS.js.map +1 -0
- package/dist/roster-GDNSIRAK.js +19 -0
- package/dist/roster-GDNSIRAK.js.map +1 -0
- package/dist/{schema-A4WCPIF4.js → schema-KWUQEZ5O.js} +1 -1
- package/dist/schema-KWUQEZ5O.js.map +1 -0
- package/dist/{self-updating-MWXIZLL7.js → self-updating-ZUWPGYUP.js} +8 -7
- package/dist/{self-updating-MWXIZLL7.js.map → self-updating-ZUWPGYUP.js.map} +1 -1
- package/dist/{selftest-VXTHRPRN.js → selftest-G4W3LIBQ.js} +21 -17
- package/dist/{selftest-VXTHRPRN.js.map → selftest-G4W3LIBQ.js.map} +1 -1
- package/dist/site-create-ZU3ACBTO.js +45 -0
- package/dist/site-create-ZU3ACBTO.js.map +1 -0
- package/dist/site-lookup-DTOLJ4EA.js +27 -0
- package/dist/site-lookup-DTOLJ4EA.js.map +1 -0
- package/dist/{site-mirror-WON4FTJ2.js → site-mirror-WR7ACXOV.js} +26 -12
- package/dist/site-mirror-WR7ACXOV.js.map +1 -0
- package/dist/{smoke-suite-7DGITCTZ.js → smoke-suite-WAUPI6EJ.js} +8 -7
- package/dist/{smoke-suite-7DGITCTZ.js.map → smoke-suite-WAUPI6EJ.js.map} +1 -1
- package/dist/{submissions-OVZPVBYG.js → submissions-2SHCFOKD.js} +12 -7
- package/dist/submissions-2SHCFOKD.js.map +1 -0
- package/dist/{submissions-3I3GAQAX.js → submissions-JDZP35JM.js} +49 -9
- package/dist/submissions-JDZP35JM.js.map +1 -0
- package/dist/{svelte-codemods-WSV2FGNG.js → svelte-codemods-VOLOKKFI.js} +6 -6
- package/dist/{sync-K3PKHVLH.js → sync-F4USL4K5.js} +6 -6
- package/dist/{sync-configs-RRIHNLIJ.js → sync-configs-OXSWKVZ2.js} +6 -6
- package/dist/turso-KQKBBQCK.js +24 -0
- package/dist/turso-KQKBBQCK.js.map +1 -0
- package/dist/{upgrade-VTD6V4HS.js → upgrade-EVAL3JTO.js} +6 -6
- package/dist/util/git.d.ts +49 -10
- package/dist/util/git.js +1 -1
- package/dist/{webflow-IRKOIT7S.js → webflow-624FEBFD.js} +4 -4
- package/dist/{websites-TB4TCAWM.js → websites-Y6FN2XFD.js} +27 -20
- package/dist/{write-audits-to-airtable-53EVXKMU.js → write-audits-to-airtable-TI3JMWSY.js} +7 -5
- package/package.json +3 -2
- package/dist/airtable-JGCPS7JH.js +0 -9
- package/dist/announce-CLQYX5I4.js.map +0 -1
- package/dist/attachments-NLZIJ5NU.js +0 -9
- package/dist/chunk-2ZAZ7ETT.js.map +0 -1
- package/dist/chunk-3Z6X3BHU.js.map +0 -1
- package/dist/chunk-5EEMTJMT.js.map +0 -1
- package/dist/chunk-5GUJ36TL.js +0 -53
- package/dist/chunk-5GUJ36TL.js.map +0 -1
- package/dist/chunk-5UINJNAJ.js.map +0 -1
- package/dist/chunk-6R56OKJZ.js.map +0 -1
- package/dist/chunk-AVEQUR44.js.map +0 -1
- package/dist/chunk-BVEDKMNG.js.map +0 -1
- package/dist/chunk-BYGPUUCT.js.map +0 -1
- package/dist/chunk-CWXTNPNZ.js.map +0 -1
- package/dist/chunk-DFKBTBO3.js.map +0 -1
- package/dist/chunk-F3JWOPTG.js.map +0 -1
- package/dist/chunk-FSGICFXB.js.map +0 -1
- package/dist/chunk-GASBX52O.js +0 -12
- package/dist/chunk-GASBX52O.js.map +0 -1
- package/dist/chunk-IY6256GK.js.map +0 -1
- package/dist/chunk-KJRVMMM3.js.map +0 -1
- package/dist/chunk-LM2NHRCJ.js.map +0 -1
- package/dist/chunk-QF6IQQFP.js.map +0 -1
- package/dist/chunk-R5IMFAFR.js.map +0 -1
- package/dist/chunk-TO7DJYLZ.js.map +0 -1
- package/dist/chunk-TR3HFH6J.js.map +0 -1
- package/dist/chunk-WJMPCVOR.js.map +0 -1
- package/dist/chunk-WSJ7RO54.js.map +0 -1
- package/dist/chunk-WVNDEYXL.js.map +0 -1
- package/dist/chunk-XHHMM5HX.js.map +0 -1
- package/dist/chunk-XN37VTDB.js.map +0 -1
- package/dist/chunk-XPJQXSC4.js.map +0 -1
- package/dist/chunk-YFAXOD7Z.js +0 -42
- package/dist/chunk-YFAXOD7Z.js.map +0 -1
- package/dist/chunk-YLYXW5PH.js.map +0 -1
- package/dist/chunk-Z2K4JPQ3.js.map +0 -1
- package/dist/chunk-ZCL7C5LH.js.map +0 -1
- package/dist/client-G2WGWPCA.js +0 -11
- package/dist/db-XKZYDCKM.js.map +0 -1
- package/dist/digest-7UBGUBRK.js.map +0 -1
- package/dist/digest-state-3KHZF7GD.js.map +0 -1
- package/dist/ensure-site-OAAE5YE2.js.map +0 -1
- package/dist/fleet-events-cF2Om88w.d.ts +0 -24
- package/dist/forms-notify-target-UC6PF3AE.js.map +0 -1
- package/dist/github-signals-TX5FPYP6.js.map +0 -1
- package/dist/header-image-PSPT7CUM.js.map +0 -1
- package/dist/launch-UD36AHUN.js.map +0 -1
- package/dist/lighthouse-airtable-YMH4UA7R.js +0 -12
- package/dist/match-harness-QRG6XZAR.js +0 -70
- package/dist/match-harness-QRG6XZAR.js.map +0 -1
- package/dist/migrate-Y7R4CESL.js +0 -7
- package/dist/parity-CAJ477PS.js +0 -14
- package/dist/preflight-RYIP54NY.js.map +0 -1
- package/dist/prismic-ci-6GKKZGB5.js.map +0 -1
- package/dist/prismic-models-P6FWWVRS.js.map +0 -1
- package/dist/prospect-audit-PRHU53HS.js.map +0 -1
- package/dist/protection-audit-SJO53MEQ.js +0 -168
- package/dist/protection-audit-SJO53MEQ.js.map +0 -1
- package/dist/render-YGNGTX3W.js.map +0 -1
- package/dist/replay-PCSQOGCZ.js.map +0 -1
- package/dist/report-LQS4ECTM.js.map +0 -1
- package/dist/report-mirror-HDTOJE64.js.map +0 -1
- package/dist/schema-A4WCPIF4.js.map +0 -1
- package/dist/site-mirror-WON4FTJ2.js.map +0 -1
- package/dist/submissions-3I3GAQAX.js.map +0 -1
- package/dist/submissions-OVZPVBYG.js.map +0 -1
- /package/dist/{airtable-JGCPS7JH.js.map → attachments-JFGFQRXQ.js.map} +0 -0
- /package/dist/{blux-4KNXUP2K.js.map → blux-NXQLMS4W.js.map} +0 -0
- /package/dist/{bump-deps-C5G2EFBB.js.map → bump-deps-775VLDYB.js.map} +0 -0
- /package/dist/{chunk-FUWFLAWQ.js.map → chunk-3RLDX3Q2.js.map} +0 -0
- /package/dist/{chunk-S7RYFUIK.js.map → chunk-6PGXKN6F.js.map} +0 -0
- /package/dist/{chunk-HTABUCF4.js.map → chunk-6THEZQLA.js.map} +0 -0
- /package/dist/{chunk-2LYOAB2E.js.map → chunk-HSMN35LU.js.map} +0 -0
- /package/dist/{chunk-BCKEP5S6.js.map → chunk-JHJNNJLG.js.map} +0 -0
- /package/dist/{chunk-ZQV7UQNE.js.map → chunk-LUF52EIY.js.map} +0 -0
- /package/dist/{chunk-VSGMCCGQ.js.map → chunk-MMSMZC7S.js.map} +0 -0
- /package/dist/{chunk-4763KQ6O.js.map → chunk-PXRN2MER.js.map} +0 -0
- /package/dist/{chunk-WMBLR5VA.js.map → chunk-PZZ6HM5T.js.map} +0 -0
- /package/dist/{chunk-CJ2RMTT7.js.map → chunk-TV76A6GN.js.map} +0 -0
- /package/dist/{chunk-KZRR4NFG.js.map → chunk-TVZ6QCOE.js.map} +0 -0
- /package/dist/{chunk-BI2VI6EM.js.map → chunk-YXWBM26P.js.map} +0 -0
- /package/dist/{attachments-NLZIJ5NU.js.map → client-DGTO65WB.js.map} +0 -0
- /package/dist/{convert-to-pnpm-YTFREUJK.js.map → convert-to-pnpm-KLWA53N5.js.map} +0 -0
- /package/dist/{client-G2WGWPCA.js.map → deadletter-G4M3HSVM.js.map} +0 -0
- /package/dist/{digest-collectors-DJFN5ZDK.js.map → digest-collectors-CYTN2EUX.js.map} +0 -0
- /package/dist/{fleet-state-UEVZ3X3J.js.map → fleet-state-RJROYXKO.js.map} +0 -0
- /package/dist/{freeze-A6MUCZU4.js.map → freeze-GUQ43EAU.js.map} +0 -0
- /package/dist/{health-mirror-XJAKA3EY.js.map → health-mirror-KU3G7V2Y.js.map} +0 -0
- /package/dist/{import-airtable-TAKSN4NV.js.map → import-airtable-UBF5GYAL.js.map} +0 -0
- /package/dist/{lighthouse-VHI77PFB.js.map → lighthouse-52WSPZ5D.js.map} +0 -0
- /package/dist/{lighthouse-airtable-YMH4UA7R.js.map → lighthouse-airtable-M45OPVRV.js.map} +0 -0
- /package/dist/{migrate-Y7R4CESL.js.map → migrate-XZ7U5DFC.js.map} +0 -0
- /package/dist/{notify-IISTHNBR.js.map → notify-K3WVH3DM.js.map} +0 -0
- /package/dist/{onboard-TM2KESGF.js.map → onboard-JQQIMQW7.js.map} +0 -0
- /package/dist/{orchestrate-HYVQPRCE.js.map → orchestrate-L2A5BZFY.js.map} +0 -0
- /package/dist/{parity-CAJ477PS.js.map → parity-2JGVUCZD.js.map} +0 -0
- /package/dist/{pipeline-YROAY6DT.js.map → pipeline-UUPXOS2J.js.map} +0 -0
- /package/dist/{prospect-audits-R3LWF6U7.js.map → prospect-audits-IZVQY3OQ.js.map} +0 -0
- /package/dist/{render-from-row-IFSBHWDH.js.map → render-from-row-75JTED2Z.js.map} +0 -0
- /package/dist/{svelte-codemods-WSV2FGNG.js.map → svelte-codemods-VOLOKKFI.js.map} +0 -0
- /package/dist/{sync-K3PKHVLH.js.map → sync-F4USL4K5.js.map} +0 -0
- /package/dist/{sync-configs-RRIHNLIJ.js.map → sync-configs-OXSWKVZ2.js.map} +0 -0
- /package/dist/{upgrade-VTD6V4HS.js.map → upgrade-EVAL3JTO.js.map} +0 -0
- /package/dist/{webflow-IRKOIT7S.js.map → webflow-624FEBFD.js.map} +0 -0
- /package/dist/{websites-TB4TCAWM.js.map → websites-Y6FN2XFD.js.map} +0 -0
- /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-
|
|
5
|
+
} from "./chunk-DYTYPKFN.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveSites
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-FP6HOW6J.js";
|
|
9
9
|
import {
|
|
10
10
|
init
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
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-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
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-
|
|
24
|
+
import "./chunk-L3S3QZXL.js";
|
|
24
25
|
import "./chunk-LKGVSM2O.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-MVKNU4QD.js";
|
|
27
|
+
import "./chunk-43SW3FGW.js";
|
|
27
28
|
import "./chunk-Z3JXLULD.js";
|
|
28
|
-
import "./chunk-
|
|
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-
|
|
39
|
+
import "./chunk-WMF5S2MB.js";
|
|
39
40
|
import "./chunk-NMAWXBJA.js";
|
|
40
|
-
import "./chunk-
|
|
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-
|
|
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":"
|
|
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
|
-
|
|
3
|
-
|
|
2
|
+
HARNESS_JSON_RELATIVE,
|
|
3
|
+
UNGUARDED_TWIN_TELL
|
|
4
|
+
} from "./chunk-Y6FCXRIC.js";
|
|
4
5
|
import {
|
|
5
6
|
selfUpdating
|
|
6
|
-
} from "./chunk-
|
|
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-
|
|
12
|
-
import "./chunk-
|
|
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-
|
|
20
|
+
} from "./chunk-FP6HOW6J.js";
|
|
17
21
|
import {
|
|
22
|
+
createReportDraft,
|
|
23
|
+
findReportForPeriod,
|
|
18
24
|
queueDraft
|
|
19
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-UPE6D4AT.js";
|
|
26
|
+
import "./chunk-TJLKWQOX.js";
|
|
20
27
|
import {
|
|
21
|
-
createDraft,
|
|
22
|
-
findReportByPeriod,
|
|
23
28
|
updateReportScores
|
|
24
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
52
|
+
} from "./chunk-L3S3QZXL.js";
|
|
46
53
|
import "./chunk-LKGVSM2O.js";
|
|
47
|
-
import "./chunk-
|
|
48
|
-
import "./chunk-
|
|
54
|
+
import "./chunk-MVKNU4QD.js";
|
|
55
|
+
import "./chunk-43SW3FGW.js";
|
|
49
56
|
import "./chunk-Z3JXLULD.js";
|
|
50
|
-
import "./chunk-
|
|
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-
|
|
67
|
+
import "./chunk-WMF5S2MB.js";
|
|
61
68
|
import "./chunk-6VAL7XJT.js";
|
|
62
69
|
import "./chunk-NMAWXBJA.js";
|
|
63
|
-
import "./chunk-
|
|
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 =
|
|
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
|
|
77
|
-
|
|
78
|
-
"
|
|
79
|
-
"
|
|
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
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
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
|
-
|
|
200
|
-
if (
|
|
201
|
-
|
|
202
|
-
|
|
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 (
|
|
342
|
+
if (unguarded.length > 0) {
|
|
208
343
|
return {
|
|
209
344
|
ok: false,
|
|
210
|
-
message: `${MATCH_ROUTE_DIR}
|
|
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:
|
|
215
|
-
message: `
|
|
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
|
|
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
|
|
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
|
-
|
|
428
|
+
const uids = await twinUids(site.path);
|
|
429
|
+
const twins = [];
|
|
282
430
|
let control;
|
|
283
431
|
try {
|
|
284
|
-
|
|
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
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
361
|
-
|
|
362
|
-
|
|
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
|
|
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-
|
|
458
|
-
const { makeSiteMirror } = await import("./site-mirror-
|
|
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-
|
|
619
|
+
//# sourceMappingURL=launch-7N3X2MXB.js.map
|