@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.
- package/README.md +8 -0
- package/dist/airtable-ZBUPQJSC.js +9 -0
- package/dist/{announce-GIAYN67S.js → announce-I2Z4JN3I.js} +58 -30
- package/dist/announce-I2Z4JN3I.js.map +1 -0
- package/dist/attachments-NLZIJ5NU.js +9 -0
- package/dist/{bump-deps-SWJB6H5V.js → bump-deps-CGVELRLK.js} +9 -9
- package/dist/{chunk-SDUJIANJ.js → chunk-2NJQLSEU.js} +3 -3
- package/dist/chunk-2NQUCS7O.js +243 -0
- package/dist/chunk-2NQUCS7O.js.map +1 -0
- package/dist/{chunk-ZTPPCHDB.js → chunk-3G25KIWW.js} +4 -4
- package/dist/{chunk-DTTIFYAM.js → chunk-3JQ2FO3D.js} +44 -405
- package/dist/chunk-3JQ2FO3D.js.map +1 -0
- package/dist/chunk-3SF7D4DY.js +359 -0
- package/dist/chunk-3SF7D4DY.js.map +1 -0
- package/dist/{chunk-37S6L6G4.js → chunk-5UINJNAJ.js} +72 -2
- package/dist/chunk-5UINJNAJ.js.map +1 -0
- package/dist/{chunk-THEFTZ7F.js → chunk-62CMMGEO.js} +5 -5
- package/dist/{chunk-FDIFTIXC.js → chunk-6TWWY7ZU.js} +2 -2
- package/dist/{chunk-PBWDDDQH.js → chunk-7BZUOZPU.js} +2 -2
- package/dist/{chunk-577HCGZO.js → chunk-7NYN2P6I.js} +44 -26
- package/dist/chunk-7NYN2P6I.js.map +1 -0
- package/dist/{chunk-UYCAF77E.js → chunk-7RJ2HMMJ.js} +3 -3
- package/dist/{chunk-Q276MZ7E.js → chunk-7UAYMAKR.js} +2 -2
- package/dist/{chunk-MGR2H7F4.js → chunk-BBUSGEES.js} +58 -45
- package/dist/chunk-BBUSGEES.js.map +1 -0
- package/dist/chunk-BNM5POSJ.js +284 -0
- package/dist/chunk-BNM5POSJ.js.map +1 -0
- package/dist/{chunk-R6FPFMOS.js → chunk-BQRFQSGY.js} +3 -3
- package/dist/{chunk-NWB4O5EY.js → chunk-C6CLRKPV.js} +5 -5
- package/dist/chunk-C6CLRKPV.js.map +1 -0
- package/dist/{chunk-7J53SUT6.js → chunk-CROKUHJB.js} +4 -4
- package/dist/chunk-DEWJMMG3.js +274 -0
- package/dist/chunk-DEWJMMG3.js.map +1 -0
- package/dist/{chunk-SEEA6RXF.js → chunk-DJZWYIPP.js} +2 -2
- package/dist/chunk-DJZWYIPP.js.map +1 -0
- package/dist/chunk-EVBCK2KC.js +68 -0
- package/dist/chunk-EVBCK2KC.js.map +1 -0
- package/dist/chunk-F3JWOPTG.js +202 -0
- package/dist/chunk-F3JWOPTG.js.map +1 -0
- package/dist/{chunk-GZNBCHAZ.js → chunk-HEWSRXYV.js} +4 -4
- package/dist/chunk-HHMMUR4P.js +335 -0
- package/dist/chunk-HHMMUR4P.js.map +1 -0
- package/dist/chunk-HSI6Q7MI.js +1238 -0
- package/dist/chunk-HSI6Q7MI.js.map +1 -0
- package/dist/{chunk-MPBXOJ3N.js → chunk-IY6256GK.js} +33 -2
- package/dist/chunk-IY6256GK.js.map +1 -0
- package/dist/{chunk-LS6QPANO.js → chunk-IYSEC543.js} +2 -2
- package/dist/{chunk-DC5H7KEQ.js → chunk-JHGHLKFS.js} +2 -2
- package/dist/{chunk-4DHQCN5H.js → chunk-LBYOLBW7.js} +17 -2
- package/dist/chunk-LBYOLBW7.js.map +1 -0
- package/dist/{chunk-6QRLRT3P.js → chunk-MT2JINSS.js} +16 -265
- package/dist/chunk-MT2JINSS.js.map +1 -0
- package/dist/{chunk-TP5M2NQB.js → chunk-NCMZMLY7.js} +3 -3
- package/dist/{chunk-COZPL62X.js → chunk-NDWYJLRF.js} +24 -139
- package/dist/chunk-NDWYJLRF.js.map +1 -0
- package/dist/{chunk-3YXDSCM6.js → chunk-NXNPDCF3.js} +29 -11
- package/dist/chunk-NXNPDCF3.js.map +1 -0
- package/dist/chunk-NYUYNYQL.js +48 -0
- package/dist/chunk-NYUYNYQL.js.map +1 -0
- package/dist/chunk-P6AORG32.js +415 -0
- package/dist/chunk-P6AORG32.js.map +1 -0
- package/dist/chunk-PTDMVGKL.js +31 -0
- package/dist/chunk-PTDMVGKL.js.map +1 -0
- package/dist/{chunk-D4FVAIEJ.js → chunk-PZR4EBPY.js} +5 -2
- package/dist/chunk-PZR4EBPY.js.map +1 -0
- package/dist/{chunk-LTB6KVJW.js → chunk-SDDPUAWH.js} +13 -11
- package/dist/{chunk-LTB6KVJW.js.map → chunk-SDDPUAWH.js.map} +1 -1
- package/dist/{chunk-WYYQK4D3.js → chunk-TD2NNXLZ.js} +13 -13
- package/dist/{chunk-ZMIPG6TR.js → chunk-TVL5MVUF.js} +4 -4
- package/dist/chunk-UDRHAQT7.js +172 -0
- package/dist/chunk-UDRHAQT7.js.map +1 -0
- package/dist/chunk-VAD43MOR.js +72 -0
- package/dist/chunk-VAD43MOR.js.map +1 -0
- package/dist/chunk-VSBFM7DS.js +229 -0
- package/dist/chunk-VSBFM7DS.js.map +1 -0
- package/dist/{chunk-VRWUL4TR.js → chunk-XHHMM5HX.js} +2 -2
- package/dist/{chunk-RJB3QUSP.js → chunk-XIDUYLSR.js} +3 -3
- package/dist/{chunk-QG6OSL4M.js → chunk-XUGSZP7Z.js} +2 -2
- package/dist/{chunk-S56JQJ4F.js → chunk-Y53WOQIJ.js} +3 -3
- package/dist/{chunk-62VF32IC.js → chunk-YFAXOD7Z.js} +10 -6
- package/dist/chunk-YFAXOD7Z.js.map +1 -0
- package/dist/{chunk-ICXV25N7.js → chunk-Z3KYFUN6.js} +3 -3
- package/dist/chunk-ZBDZTJUO.js +129 -0
- package/dist/chunk-ZBDZTJUO.js.map +1 -0
- package/dist/chunk-ZGBEIWSC.js +146 -0
- package/dist/chunk-ZGBEIWSC.js.map +1 -0
- package/dist/cli/bin.js +51 -28
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/commands/audit.d.ts +30 -1
- package/dist/cli/commands/audit.js +69 -33
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/client-AUE3XUPO.js +11 -0
- package/dist/{convert-to-pnpm-AT52NWZB.js → convert-to-pnpm-QFJOEP5V.js} +9 -9
- package/dist/db-UXNIZ2RG.js +217 -0
- package/dist/db-UXNIZ2RG.js.map +1 -0
- package/dist/{digest-UVHYZUYE.js → digest-FW6QMZZJ.js} +26 -22
- package/dist/{digest-UVHYZUYE.js.map → digest-FW6QMZZJ.js.map} +1 -1
- package/dist/dump-P6EBSIOH.js +68 -0
- package/dist/dump-P6EBSIOH.js.map +1 -0
- package/dist/email-KJXASVH5.js +195 -0
- package/dist/email-KJXASVH5.js.map +1 -0
- package/dist/{ensure-site-S25MDDHW.js → ensure-site-4DCEBAPM.js} +25 -16
- package/dist/ensure-site-4DCEBAPM.js.map +1 -0
- package/dist/fleet-events-cF2Om88w.d.ts +24 -0
- package/dist/fleet-state-7TJ2GYT2.js +39 -0
- package/dist/{forms-notify-target-TWN4EH6K.js → forms-notify-target-2EAWCWBW.js} +42 -133
- package/dist/forms-notify-target-2EAWCWBW.js.map +1 -0
- package/dist/{github-signals-G4ILZAJ6.js → github-signals-E2WPYTBK.js} +42 -21
- package/dist/github-signals-E2WPYTBK.js.map +1 -0
- package/dist/{header-image-T7XD37JL.js → header-image-6IC53W27.js} +36 -13
- package/dist/header-image-6IC53W27.js.map +1 -0
- package/dist/header-images-SQBCE5OD.js +88 -0
- package/dist/header-images-SQBCE5OD.js.map +1 -0
- package/dist/{health-endpoint-242WG2OJ.js → health-endpoint-RFXL2F4A.js} +9 -9
- package/dist/health-mirror-L5JBEJVA.js +41 -0
- package/dist/health-mirror-L5JBEJVA.js.map +1 -0
- package/dist/import-airtable-OHVY344G.js +37 -0
- package/dist/index.d.ts +324 -21
- package/dist/index.js +215 -76
- package/dist/index.js.map +1 -1
- package/dist/{init-JN26NTWF.js → init-XRAQZYID.js} +21 -18
- package/dist/{init-JN26NTWF.js.map → init-XRAQZYID.js.map} +1 -1
- package/dist/{launch-JA7Z4CIM.js → launch-IX4Y5JJC.js} +65 -30
- package/dist/launch-IX4Y5JJC.js.map +1 -0
- package/dist/lighthouse-VHI77PFB.js +11 -0
- package/dist/{lighthouse-airtable-BIPM26SZ.js → lighthouse-airtable-3GUWHETW.js} +3 -3
- package/dist/mailchimp-XYCTEEJY.js +72 -0
- package/dist/mailchimp-XYCTEEJY.js.map +1 -0
- package/dist/migrate-GQH237A6.js +7 -0
- package/dist/migrate-GQH237A6.js.map +1 -0
- package/dist/notify-C645PGD5.js +22 -0
- package/dist/notify-C645PGD5.js.map +1 -0
- package/dist/{onboard-53CITIM7.js → onboard-O4IAHJMO.js} +9 -9
- package/dist/orchestrate-YLWQ6KK2.js +31 -0
- package/dist/orchestrate-YLWQ6KK2.js.map +1 -0
- package/dist/parity-56KA2DGR.js +12 -0
- package/dist/parity-56KA2DGR.js.map +1 -0
- package/dist/pipeline-3AANZFCR.js +12 -0
- package/dist/pipeline-3AANZFCR.js.map +1 -0
- package/dist/{preflight-3XPDUHFJ.js → preflight-TNORKGCX.js} +17 -13
- package/dist/{preflight-3XPDUHFJ.js.map → preflight-TNORKGCX.js.map} +1 -1
- package/dist/{prismic-ci-UTQ6LRR3.js → prismic-ci-G2AK53VL.js} +12 -12
- package/dist/{prismic-models-PVES6R5V.js → prismic-models-O6Z3OK3A.js} +18 -13
- package/dist/prismic-models-O6Z3OK3A.js.map +1 -0
- package/dist/prospect/types.d.ts +267 -0
- package/dist/prospect/types.js +1 -0
- package/dist/prospect/types.js.map +1 -0
- package/dist/prospect-audit-KSXUNQ5J.js +174 -0
- package/dist/prospect-audit-KSXUNQ5J.js.map +1 -0
- package/dist/prospect-audits-3PMIO73D.js +19 -0
- package/dist/prospect-audits-3PMIO73D.js.map +1 -0
- package/dist/{protection-audit-64PLLBLI.js → protection-audit-SJO53MEQ.js} +3 -3
- package/dist/recipes/sync-configs.js +3 -3
- package/dist/render-IFOGFB5T.js +10 -0
- package/dist/render-IFOGFB5T.js.map +1 -0
- package/dist/render-from-row-BWSOIYDS.js +17 -0
- package/dist/render-from-row-BWSOIYDS.js.map +1 -0
- package/dist/{renovate-dispatch-ICJGSFCE.js → renovate-dispatch-6GQWTRKX.js} +12 -12
- package/dist/{renovate-dispatch-ICJGSFCE.js.map → renovate-dispatch-6GQWTRKX.js.map} +1 -1
- package/dist/replay-C2LXMJZP.js +66 -0
- package/dist/replay-C2LXMJZP.js.map +1 -0
- package/dist/{report-6CKSWJNG.js → report-R3E3Y7HR.js} +100 -32
- package/dist/report-R3E3Y7HR.js.map +1 -0
- package/dist/report-mirror-4MNORYQ4.js +49 -0
- package/dist/report-mirror-4MNORYQ4.js.map +1 -0
- package/dist/reports/header-image/assets/headline-announcement.png +0 -0
- package/dist/reports/header-image/assets/headline-launch.png +0 -0
- package/dist/reports/header-image/assets/headline-maintenance.png +0 -0
- package/dist/reports/header-image/assets/headline-testing.png +0 -0
- package/dist/reports/header-image/assets/plate-clean.png +0 -0
- package/dist/rerender-3FM6DNRH.js +32 -0
- package/dist/rerender-3FM6DNRH.js.map +1 -0
- package/dist/{self-updating-PPQVV6UA.js → self-updating-UCIWESAX.js} +9 -9
- package/dist/{selftest-CQ6NOX52.js → selftest-VGHWPN72.js} +31 -24
- package/dist/selftest-VGHWPN72.js.map +1 -0
- package/dist/site-mirror-NIREX5ME.js +52 -0
- package/dist/site-mirror-NIREX5ME.js.map +1 -0
- package/dist/smoke-B2GQOSIZ.js +20 -0
- package/dist/smoke-B2GQOSIZ.js.map +1 -0
- package/dist/{smoke-suite-TMCSOYRK.js → smoke-suite-U3UKD3NS.js} +9 -9
- package/dist/{submissions-GJ6ITBRH.js → submissions-IQEJX6FK.js} +3 -3
- package/dist/{svelte-codemods-ZOBDHIES.js → svelte-codemods-GOKXTBHW.js} +9 -9
- package/dist/sync-CTUVXMCK.js +44 -0
- package/dist/sync-CTUVXMCK.js.map +1 -0
- package/dist/{sync-configs-CJXUX6MD.js → sync-configs-SPTLFJCC.js} +9 -9
- package/dist/{upgrade-WLX27UPC.js → upgrade-W6ZR3FJH.js} +9 -9
- package/dist/webhook-VOGOW3W6.js +38 -0
- package/dist/webhook-VOGOW3W6.js.map +1 -0
- package/dist/{websites-SADZR4XQ.js → websites-D6WYFAES.js} +6 -2
- package/dist/websites-D6WYFAES.js.map +1 -0
- package/dist/{write-audits-to-airtable-7PH75YWY.js → write-audits-to-airtable-CMKHGJNQ.js} +4 -4
- package/dist/write-audits-to-airtable-CMKHGJNQ.js.map +1 -0
- package/package.json +9 -2
- package/dist/airtable-HRKSA7V4.js +0 -9
- package/dist/announce-GIAYN67S.js.map +0 -1
- package/dist/chunk-37S6L6G4.js.map +0 -1
- package/dist/chunk-3YXDSCM6.js.map +0 -1
- package/dist/chunk-4DHQCN5H.js.map +0 -1
- package/dist/chunk-4SOCPK7A.js +0 -108
- package/dist/chunk-4SOCPK7A.js.map +0 -1
- package/dist/chunk-577HCGZO.js.map +0 -1
- package/dist/chunk-62VF32IC.js.map +0 -1
- package/dist/chunk-6QRLRT3P.js.map +0 -1
- package/dist/chunk-COZPL62X.js.map +0 -1
- package/dist/chunk-D4FVAIEJ.js.map +0 -1
- package/dist/chunk-DTTIFYAM.js.map +0 -1
- package/dist/chunk-MGR2H7F4.js.map +0 -1
- package/dist/chunk-MPBXOJ3N.js.map +0 -1
- package/dist/chunk-NWB4O5EY.js.map +0 -1
- package/dist/chunk-SEEA6RXF.js.map +0 -1
- package/dist/chunk-U5SZ4FOP.js +0 -26
- package/dist/chunk-U5SZ4FOP.js.map +0 -1
- package/dist/client-X5WUJWDE.js +0 -11
- package/dist/db-JSIZYT23.js +0 -23
- package/dist/db-JSIZYT23.js.map +0 -1
- package/dist/ensure-site-S25MDDHW.js.map +0 -1
- package/dist/forms-notify-target-TWN4EH6K.js.map +0 -1
- package/dist/github-signals-G4ILZAJ6.js.map +0 -1
- package/dist/header-image-T7XD37JL.js.map +0 -1
- package/dist/launch-JA7Z4CIM.js.map +0 -1
- package/dist/migrate-LJUFGXQZ.js +0 -7
- package/dist/orchestrate-KDNXZQX7.js +0 -27
- package/dist/prismic-models-PVES6R5V.js.map +0 -1
- package/dist/report-6CKSWJNG.js.map +0 -1
- package/dist/reports/header-image/assets/plate.png +0 -0
- package/dist/selftest-CQ6NOX52.js.map +0 -1
- /package/dist/{airtable-HRKSA7V4.js.map → airtable-ZBUPQJSC.js.map} +0 -0
- /package/dist/{client-X5WUJWDE.js.map → attachments-NLZIJ5NU.js.map} +0 -0
- /package/dist/{bump-deps-SWJB6H5V.js.map → bump-deps-CGVELRLK.js.map} +0 -0
- /package/dist/{chunk-SDUJIANJ.js.map → chunk-2NJQLSEU.js.map} +0 -0
- /package/dist/{chunk-ZTPPCHDB.js.map → chunk-3G25KIWW.js.map} +0 -0
- /package/dist/{chunk-THEFTZ7F.js.map → chunk-62CMMGEO.js.map} +0 -0
- /package/dist/{chunk-FDIFTIXC.js.map → chunk-6TWWY7ZU.js.map} +0 -0
- /package/dist/{chunk-PBWDDDQH.js.map → chunk-7BZUOZPU.js.map} +0 -0
- /package/dist/{chunk-UYCAF77E.js.map → chunk-7RJ2HMMJ.js.map} +0 -0
- /package/dist/{chunk-Q276MZ7E.js.map → chunk-7UAYMAKR.js.map} +0 -0
- /package/dist/{chunk-R6FPFMOS.js.map → chunk-BQRFQSGY.js.map} +0 -0
- /package/dist/{chunk-7J53SUT6.js.map → chunk-CROKUHJB.js.map} +0 -0
- /package/dist/{chunk-GZNBCHAZ.js.map → chunk-HEWSRXYV.js.map} +0 -0
- /package/dist/{chunk-LS6QPANO.js.map → chunk-IYSEC543.js.map} +0 -0
- /package/dist/{chunk-DC5H7KEQ.js.map → chunk-JHGHLKFS.js.map} +0 -0
- /package/dist/{chunk-TP5M2NQB.js.map → chunk-NCMZMLY7.js.map} +0 -0
- /package/dist/{chunk-WYYQK4D3.js.map → chunk-TD2NNXLZ.js.map} +0 -0
- /package/dist/{chunk-ZMIPG6TR.js.map → chunk-TVL5MVUF.js.map} +0 -0
- /package/dist/{chunk-VRWUL4TR.js.map → chunk-XHHMM5HX.js.map} +0 -0
- /package/dist/{chunk-RJB3QUSP.js.map → chunk-XIDUYLSR.js.map} +0 -0
- /package/dist/{chunk-QG6OSL4M.js.map → chunk-XUGSZP7Z.js.map} +0 -0
- /package/dist/{chunk-S56JQJ4F.js.map → chunk-Y53WOQIJ.js.map} +0 -0
- /package/dist/{chunk-ICXV25N7.js.map → chunk-Z3KYFUN6.js.map} +0 -0
- /package/dist/{lighthouse-airtable-BIPM26SZ.js.map → client-AUE3XUPO.js.map} +0 -0
- /package/dist/{convert-to-pnpm-AT52NWZB.js.map → convert-to-pnpm-QFJOEP5V.js.map} +0 -0
- /package/dist/{migrate-LJUFGXQZ.js.map → fleet-state-7TJ2GYT2.js.map} +0 -0
- /package/dist/{health-endpoint-242WG2OJ.js.map → health-endpoint-RFXL2F4A.js.map} +0 -0
- /package/dist/{orchestrate-KDNXZQX7.js.map → import-airtable-OHVY344G.js.map} +0 -0
- /package/dist/{websites-SADZR4XQ.js.map → lighthouse-VHI77PFB.js.map} +0 -0
- /package/dist/{write-audits-to-airtable-7PH75YWY.js.map → lighthouse-airtable-3GUWHETW.js.map} +0 -0
- /package/dist/{onboard-53CITIM7.js.map → onboard-O4IAHJMO.js.map} +0 -0
- /package/dist/{prismic-ci-UTQ6LRR3.js.map → prismic-ci-G2AK53VL.js.map} +0 -0
- /package/dist/{protection-audit-64PLLBLI.js.map → protection-audit-SJO53MEQ.js.map} +0 -0
- /package/dist/{self-updating-PPQVV6UA.js.map → self-updating-UCIWESAX.js.map} +0 -0
- /package/dist/{smoke-suite-TMCSOYRK.js.map → smoke-suite-U3UKD3NS.js.map} +0 -0
- /package/dist/{submissions-GJ6ITBRH.js.map → submissions-IQEJX6FK.js.map} +0 -0
- /package/dist/{svelte-codemods-ZOBDHIES.js.map → svelte-codemods-GOKXTBHW.js.map} +0 -0
- /package/dist/{sync-configs-CJXUX6MD.js.map → sync-configs-SPTLFJCC.js.map} +0 -0
- /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-
|
|
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
|
|
836
|
-
import { join as
|
|
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
|
|
595
|
+
async function readJsonMaybe(path) {
|
|
839
596
|
try {
|
|
840
|
-
const raw = await
|
|
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
|
|
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 =
|
|
975
|
-
await
|
|
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 =
|
|
978
|
-
await
|
|
979
|
-
const resultsPath =
|
|
980
|
-
await
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
|
|
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)
|
|
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-
|
|
1905
|
+
//# sourceMappingURL=chunk-3JQ2FO3D.js.map
|