@reddoorla/maintenance 0.71.0 → 0.72.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 +15 -14
- package/dist/airtable-U2GTDTK5.js +9 -0
- package/dist/{announce-3JE5FKW7.js → announce-HJCGEVJA.js} +6 -6
- package/dist/{bump-deps-K3JMLMBB.js → bump-deps-GZEJAUKI.js} +2 -2
- package/dist/{chunk-52TDNN7K.js → chunk-7P7YETHG.js} +4 -4
- package/dist/{chunk-MPRLMGJU.js → chunk-APTAITXZ.js} +2 -2
- package/dist/{chunk-M7HOQ4W7.js → chunk-BHE5CUWI.js} +9 -4
- package/dist/chunk-BHE5CUWI.js.map +1 -0
- package/dist/{chunk-5QC5KJHR.js → chunk-BJCA7O4A.js} +2 -2
- package/dist/{chunk-YWRQEDB3.js → chunk-BWKK2ZXS.js} +15 -6
- package/dist/chunk-BWKK2ZXS.js.map +1 -0
- package/dist/{chunk-WN4NEHE7.js → chunk-D4FVAIEJ.js} +5 -14
- package/dist/chunk-D4FVAIEJ.js.map +1 -0
- package/dist/{chunk-Y7LZHPDF.js → chunk-GI4M2AMO.js} +2 -2
- package/dist/{chunk-J2SHWT2O.js → chunk-GYNRZCM6.js} +7 -2
- package/dist/{chunk-J2SHWT2O.js.map → chunk-GYNRZCM6.js.map} +1 -1
- package/dist/{chunk-F6OE6MGQ.js → chunk-HR5SONJC.js} +2 -2
- package/dist/{chunk-AYM2EFSK.js → chunk-JCITWZQR.js} +14 -14
- package/dist/chunk-JCITWZQR.js.map +1 -0
- package/dist/{chunk-CMQMNFFJ.js → chunk-JGLAWXUC.js} +3 -3
- package/dist/{chunk-VR246V3G.js → chunk-KLB2OLPW.js} +6 -6
- package/dist/chunk-KLB2OLPW.js.map +1 -0
- package/dist/{chunk-2PWQ6MPG.js → chunk-KLVMJYZZ.js} +2 -2
- package/dist/{chunk-KOAGMTRI.js → chunk-KRHPS3R4.js} +3 -3
- package/dist/{chunk-LPMQXS2N.js → chunk-LJPCMXR7.js} +1 -2
- package/dist/chunk-LJPCMXR7.js.map +1 -0
- package/dist/{chunk-6J25IIAI.js → chunk-NRISG4XD.js} +150 -66
- package/dist/chunk-NRISG4XD.js.map +1 -0
- package/dist/{chunk-PSJQE6T6.js → chunk-SQJ53Z7R.js} +4 -4
- package/dist/cli/bin.js +18 -18
- package/dist/cli/commands/audit.js +8 -8
- package/dist/configs/playwright-a11y.d.ts +1 -1
- package/dist/configs/playwright-a11y.js +1 -3
- package/dist/{convert-to-pnpm-6F4RAFEJ.js → convert-to-pnpm-SVFDLXZS.js} +2 -2
- package/dist/{digest-GZCZYJKC.js → digest-VX7Q4MNF.js} +8 -8
- package/dist/{ensure-site-H5VMBPLF.js → ensure-site-O7G5ZJS7.js} +2 -2
- package/dist/forms/index.d.ts +3 -2
- package/dist/forms/index.js +15 -8
- package/dist/forms/index.js.map +1 -1
- package/dist/{github-signals-SQECQNST.js → github-signals-QVW2LB7N.js} +5 -5
- package/dist/{health-endpoint-QXWM6GW2.js → health-endpoint-IYR5VBUT.js} +2 -2
- package/dist/index.d.ts +4 -3
- package/dist/index.js +13 -13
- package/dist/index.js.map +1 -1
- package/dist/{init-KQOIPLVT.js → init-CU6PVZRG.js} +5 -5
- package/dist/{launch-RX4VI7F2.js → launch-JWXCTJRG.js} +9 -9
- package/dist/{lighthouse-airtable-TTXULEGU.js → lighthouse-airtable-J5TLASJC.js} +3 -3
- package/dist/{onboard-TFBL62J3.js → onboard-6UQE5QIO.js} +2 -2
- package/dist/{orchestrate-DYA4XAQJ.js → orchestrate-ZDH24Z6Y.js} +5 -5
- package/dist/{preflight-S3GYME3Q.js → preflight-BNTMWTPG.js} +7 -7
- package/dist/{renovate-dispatch-MZPAWVBL.js → renovate-dispatch-C3ALLACX.js} +2 -2
- package/dist/{report-BLZ67QAQ.js → report-YLFSGNWR.js} +8 -8
- package/dist/{self-updating-GSH427XP.js → self-updating-64FNRQB5.js} +2 -2
- package/dist/{selftest-KPTL6KC4.js → selftest-7DPNGL6R.js} +12 -9
- package/dist/selftest-7DPNGL6R.js.map +1 -0
- package/dist/{smoke-suite-GP3W57JP.js → smoke-suite-TWILWDSF.js} +2 -2
- package/dist/{svelte-codemods-GYZZX742.js → svelte-codemods-RVDTTXFD.js} +2 -2
- package/dist/{sync-configs-CQNOTJ2B.js → sync-configs-BUUD6L5Q.js} +2 -2
- package/dist/{upgrade-RTAJZD56.js → upgrade-HHKWYJRN.js} +2 -2
- package/dist/{websites-SVI4KYSH.js → websites-EH2ULELZ.js} +2 -2
- package/dist/{write-audits-to-airtable-3XFNWMUE.js → write-audits-to-airtable-LZDYTNX5.js} +4 -4
- package/package.json +1 -1
- package/dist/airtable-2PJ4NSAV.js +0 -9
- package/dist/chunk-6J25IIAI.js.map +0 -1
- package/dist/chunk-AYM2EFSK.js.map +0 -1
- package/dist/chunk-LPMQXS2N.js.map +0 -1
- package/dist/chunk-M7HOQ4W7.js.map +0 -1
- package/dist/chunk-VR246V3G.js.map +0 -1
- package/dist/chunk-WN4NEHE7.js.map +0 -1
- package/dist/chunk-YWRQEDB3.js.map +0 -1
- package/dist/selftest-KPTL6KC4.js.map +0 -1
- /package/dist/{airtable-2PJ4NSAV.js.map → airtable-U2GTDTK5.js.map} +0 -0
- /package/dist/{announce-3JE5FKW7.js.map → announce-HJCGEVJA.js.map} +0 -0
- /package/dist/{bump-deps-K3JMLMBB.js.map → bump-deps-GZEJAUKI.js.map} +0 -0
- /package/dist/{chunk-52TDNN7K.js.map → chunk-7P7YETHG.js.map} +0 -0
- /package/dist/{chunk-MPRLMGJU.js.map → chunk-APTAITXZ.js.map} +0 -0
- /package/dist/{chunk-5QC5KJHR.js.map → chunk-BJCA7O4A.js.map} +0 -0
- /package/dist/{chunk-Y7LZHPDF.js.map → chunk-GI4M2AMO.js.map} +0 -0
- /package/dist/{chunk-F6OE6MGQ.js.map → chunk-HR5SONJC.js.map} +0 -0
- /package/dist/{chunk-CMQMNFFJ.js.map → chunk-JGLAWXUC.js.map} +0 -0
- /package/dist/{chunk-2PWQ6MPG.js.map → chunk-KLVMJYZZ.js.map} +0 -0
- /package/dist/{chunk-KOAGMTRI.js.map → chunk-KRHPS3R4.js.map} +0 -0
- /package/dist/{chunk-PSJQE6T6.js.map → chunk-SQJ53Z7R.js.map} +0 -0
- /package/dist/{convert-to-pnpm-6F4RAFEJ.js.map → convert-to-pnpm-SVFDLXZS.js.map} +0 -0
- /package/dist/{digest-GZCZYJKC.js.map → digest-VX7Q4MNF.js.map} +0 -0
- /package/dist/{ensure-site-H5VMBPLF.js.map → ensure-site-O7G5ZJS7.js.map} +0 -0
- /package/dist/{github-signals-SQECQNST.js.map → github-signals-QVW2LB7N.js.map} +0 -0
- /package/dist/{health-endpoint-QXWM6GW2.js.map → health-endpoint-IYR5VBUT.js.map} +0 -0
- /package/dist/{init-KQOIPLVT.js.map → init-CU6PVZRG.js.map} +0 -0
- /package/dist/{launch-RX4VI7F2.js.map → launch-JWXCTJRG.js.map} +0 -0
- /package/dist/{lighthouse-airtable-TTXULEGU.js.map → lighthouse-airtable-J5TLASJC.js.map} +0 -0
- /package/dist/{onboard-TFBL62J3.js.map → onboard-6UQE5QIO.js.map} +0 -0
- /package/dist/{orchestrate-DYA4XAQJ.js.map → orchestrate-ZDH24Z6Y.js.map} +0 -0
- /package/dist/{preflight-S3GYME3Q.js.map → preflight-BNTMWTPG.js.map} +0 -0
- /package/dist/{renovate-dispatch-MZPAWVBL.js.map → renovate-dispatch-C3ALLACX.js.map} +0 -0
- /package/dist/{report-BLZ67QAQ.js.map → report-YLFSGNWR.js.map} +0 -0
- /package/dist/{self-updating-GSH427XP.js.map → self-updating-64FNRQB5.js.map} +0 -0
- /package/dist/{smoke-suite-GP3W57JP.js.map → smoke-suite-TWILWDSF.js.map} +0 -0
- /package/dist/{svelte-codemods-GYZZX742.js.map → svelte-codemods-RVDTTXFD.js.map} +0 -0
- /package/dist/{sync-configs-CQNOTJ2B.js.map → sync-configs-BUUD6L5Q.js.map} +0 -0
- /package/dist/{upgrade-RTAJZD56.js.map → upgrade-HHKWYJRN.js.map} +0 -0
- /package/dist/{websites-SVI4KYSH.js.map → websites-EH2ULELZ.js.map} +0 -0
- /package/dist/{write-audits-to-airtable-3XFNWMUE.js.map → write-audits-to-airtable-LZDYTNX5.js.map} +0 -0
package/README.md
CHANGED
|
@@ -368,20 +368,21 @@ This repo's Netlify site hosts the whole dashboard + forms surface: the Resend d
|
|
|
368
368
|
|
|
369
369
|
**2. Set env vars** in Site settings → Environment variables:
|
|
370
370
|
|
|
371
|
-
| Variable | Value
|
|
372
|
-
| ----------------------- |
|
|
373
|
-
| `AIRTABLE_PAT` | Same PAT used by the CLI (read+write on the Websites + Reports tables)
|
|
374
|
-
| `AIRTABLE_BASE_ID` | `appHG8nLOzULzXOER`
|
|
375
|
-
| `RESEND_WEBHOOK_SECRET` | Generated by Resend in step 4 — paste back here after creating the endpoint
|
|
376
|
-
| `TURSO_DATABASE_URL` | `libsql://<db>-<org>.turso.io` — submissions + spam counters live here; the dashboard + forms functions 500 without it
|
|
377
|
-
| `TURSO_AUTH_TOKEN` | Auth token for that Turso url (required for a remote `libsql://` url)
|
|
378
|
-
| `FORMS_INGEST_TOKEN` | Shared secret gating `POST /api/forms/:slug` — the SAME value is set on each fleet site
|
|
379
|
-
| `
|
|
380
|
-
| `
|
|
381
|
-
| `
|
|
382
|
-
| `
|
|
383
|
-
|
|
384
|
-
|
|
371
|
+
| Variable | Value |
|
|
372
|
+
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
373
|
+
| `AIRTABLE_PAT` | Same PAT used by the CLI (read+write on the Websites + Reports tables) |
|
|
374
|
+
| `AIRTABLE_BASE_ID` | `appHG8nLOzULzXOER` |
|
|
375
|
+
| `RESEND_WEBHOOK_SECRET` | Generated by Resend in step 4 — paste back here after creating the endpoint |
|
|
376
|
+
| `TURSO_DATABASE_URL` | `libsql://<db>-<org>.turso.io` — submissions + spam counters live here; the dashboard + forms functions 500 without it |
|
|
377
|
+
| `TURSO_AUTH_TOKEN` | Auth token for that Turso url (required for a remote `libsql://` url) |
|
|
378
|
+
| `FORMS_INGEST_TOKEN` | Shared secret gating `POST /api/forms/:slug` — the SAME value is set on each fleet site |
|
|
379
|
+
| `TURNSTILE_SECRET_KEY` | Cloudflare Turnstile secret for central spam verification. **Optional** — absent → Turnstile is disabled and fails open (the heuristic classifier is then the only defense). The per-site `PUBLIC_TURNSTILE_SITE_KEY` lives on each fleet site, not here |
|
|
380
|
+
| `DASHBOARD_PASSWORD` | Basic-auth password gating the cockpit, per-site dashboards, and every action endpoint — the dashboard is unauthable without it |
|
|
381
|
+
| `DASHBOARD_BASE_URL` | Public base URL of this deploy (e.g. `https://<your-site>.netlify.app`) — used to build absolute links such as report approve URLs |
|
|
382
|
+
| `RENOVATE_TOKEN` | GitHub PAT with `actions:write` — powers the dashboard's "Trigger Renovate" button (the button 502s without it) |
|
|
383
|
+
| `GH_TOKEN` | GitHub token for the dashboard's request-path REST calls (fleet-refresh dispatch + GitHub-sourced signals) |
|
|
384
|
+
|
|
385
|
+
> The first seven vars cover the webhook + forms ingest (`TURNSTILE_SECRET_KEY` optional); `DASHBOARD_PASSWORD` / `DASHBOARD_BASE_URL` / `RENOVATE_TOKEN` / `GH_TOKEN` are additionally required by the operator **dashboard** this same deploy serves (cockpit at `/`, per-site at `/s/:slug`).
|
|
385
386
|
|
|
386
387
|
**3. Trigger a deploy** (Deploys → Trigger deploy → Deploy site). When it goes green, curl the health endpoint:
|
|
387
388
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
scoresFromRow
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SQJ53Z7R.js";
|
|
4
4
|
import {
|
|
5
5
|
fetchGaUsers,
|
|
6
6
|
fetchSearch,
|
|
7
7
|
readGaConfig
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-NRISG4XD.js";
|
|
9
9
|
import {
|
|
10
10
|
queueDraft
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KLVMJYZZ.js";
|
|
12
12
|
import {
|
|
13
13
|
defaultReportSubject
|
|
14
14
|
} from "./chunk-GECESMVS.js";
|
|
@@ -20,13 +20,13 @@ import {
|
|
|
20
20
|
resolveCopy,
|
|
21
21
|
updateReportScores,
|
|
22
22
|
uploadAttachment
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-JCITWZQR.js";
|
|
24
24
|
import "./chunk-U5SZ4FOP.js";
|
|
25
25
|
import {
|
|
26
26
|
listWebsites,
|
|
27
27
|
siteSlug,
|
|
28
28
|
updateAnalyticsHealth
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-BWKK2ZXS.js";
|
|
30
30
|
import {
|
|
31
31
|
openBase,
|
|
32
32
|
readAirtableConfig
|
|
@@ -183,4 +183,4 @@ export {
|
|
|
183
183
|
formatAnnounceResult,
|
|
184
184
|
runAnnounceCommand
|
|
185
185
|
};
|
|
186
|
-
//# sourceMappingURL=announce-
|
|
186
|
+
//# sourceMappingURL=announce-HJCGEVJA.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-4NAOR44V.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveSites
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-GI4M2AMO.js";
|
|
12
12
|
import {
|
|
13
13
|
bumpDeps
|
|
14
14
|
} from "./chunk-D3DQFC32.js";
|
|
@@ -57,4 +57,4 @@ async function runBumpDepsCommand(site, opts) {
|
|
|
57
57
|
export {
|
|
58
58
|
runBumpDepsCommand
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=bump-deps-
|
|
60
|
+
//# sourceMappingURL=bump-deps-GZEJAUKI.js.map
|
|
@@ -12,18 +12,18 @@ import {
|
|
|
12
12
|
renderReportHtml,
|
|
13
13
|
resolveCopy,
|
|
14
14
|
stampSent
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-JCITWZQR.js";
|
|
16
16
|
import {
|
|
17
17
|
defaultResendClient
|
|
18
18
|
} from "./chunk-WEKL2HYJ.js";
|
|
19
19
|
import {
|
|
20
20
|
recordFleetEventsBestEffort
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-GYNRZCM6.js";
|
|
22
22
|
import {
|
|
23
23
|
listWebsites,
|
|
24
24
|
siteSlug,
|
|
25
25
|
updateLaunched
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-BWKK2ZXS.js";
|
|
27
27
|
import {
|
|
28
28
|
openBase,
|
|
29
29
|
readAirtableConfig
|
|
@@ -331,4 +331,4 @@ export {
|
|
|
331
331
|
parseAddresses,
|
|
332
332
|
isProbablyEmail
|
|
333
333
|
};
|
|
334
|
-
//# sourceMappingURL=chunk-
|
|
334
|
+
//# sourceMappingURL=chunk-7P7YETHG.js.map
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from "./chunk-XKOZUVK2.js";
|
|
22
22
|
import {
|
|
23
23
|
runAudits
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-BHE5CUWI.js";
|
|
25
25
|
import {
|
|
26
26
|
siteLabel
|
|
27
27
|
} from "./chunk-XXTZBPUY.js";
|
|
@@ -143,4 +143,4 @@ export {
|
|
|
143
143
|
DEFAULT_INIT_STEPS,
|
|
144
144
|
init
|
|
145
145
|
};
|
|
146
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-APTAITXZ.js.map
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
import {
|
|
20
20
|
a11yRoutes,
|
|
21
21
|
smokeRoutes
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-LJPCMXR7.js";
|
|
23
23
|
|
|
24
24
|
// src/audits/deps.ts
|
|
25
25
|
import { readFile } from "fs/promises";
|
|
@@ -496,7 +496,10 @@ async function dependabotAudit(deps, repo, label) {
|
|
|
496
496
|
let alerts;
|
|
497
497
|
try {
|
|
498
498
|
alerts = await deps.listAlerts(repo);
|
|
499
|
-
} catch {
|
|
499
|
+
} catch (e) {
|
|
500
|
+
console.error(
|
|
501
|
+
`[security] ${label}: dependabot API failed \u2014 degraded to pnpm audit: ${e instanceof Error ? e.message : String(e)}`
|
|
502
|
+
);
|
|
500
503
|
return null;
|
|
501
504
|
}
|
|
502
505
|
const counts = { low: 0, moderate: 0, high: 0, critical: 0 };
|
|
@@ -1391,6 +1394,7 @@ async function defaultBrowserRunner() {
|
|
|
1391
1394
|
}
|
|
1392
1395
|
|
|
1393
1396
|
// src/audits/netlify-deploy.ts
|
|
1397
|
+
var NETLIFY_FETCH_TIMEOUT_MS = 15e3;
|
|
1394
1398
|
var READY_STATES = /* @__PURE__ */ new Set(["ready"]);
|
|
1395
1399
|
var FAILED_STATES = /* @__PURE__ */ new Set(["error", "failed", "rejected"]);
|
|
1396
1400
|
function isReadyState(state) {
|
|
@@ -1415,7 +1419,8 @@ function defaultNetlifyDeployDeps(token, now, fetchImpl = fetch) {
|
|
|
1415
1419
|
let res;
|
|
1416
1420
|
try {
|
|
1417
1421
|
res = await fetchImpl(url, {
|
|
1418
|
-
headers: { Authorization: `Bearer ${token}` }
|
|
1422
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
1423
|
+
signal: AbortSignal.timeout(NETLIFY_FETCH_TIMEOUT_MS)
|
|
1419
1424
|
});
|
|
1420
1425
|
} catch {
|
|
1421
1426
|
return { ok: false };
|
|
@@ -1890,4 +1895,4 @@ export {
|
|
|
1890
1895
|
runAudits,
|
|
1891
1896
|
runAuditsAcross
|
|
1892
1897
|
};
|
|
1893
|
-
//# sourceMappingURL=chunk-
|
|
1898
|
+
//# sourceMappingURL=chunk-BHE5CUWI.js.map
|