@reddoorla/maintenance 0.89.0 → 0.90.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/{announce-OJFAS5JT.js → announce-NDTLRQCN.js} +3 -3
  2. package/dist/{blux-EATHOHKK.js → blux-YGBGS24U.js} +5 -5
  3. package/dist/blux-YGBGS24U.js.map +1 -0
  4. package/dist/{chunk-3VQWSE3F.js → chunk-A6T2R63Z.js} +27 -5
  5. package/dist/chunk-A6T2R63Z.js.map +1 -0
  6. package/dist/{chunk-62CMMGEO.js → chunk-GSWTT2J6.js} +20 -5
  7. package/dist/chunk-GSWTT2J6.js.map +1 -0
  8. package/dist/{chunk-VNB5XBQ4.js → chunk-L5M6G65K.js} +1 -1
  9. package/dist/chunk-L5M6G65K.js.map +1 -0
  10. package/dist/{chunk-73UFRZKY.js → chunk-MLT4QY5X.js} +105 -2
  11. package/dist/chunk-MLT4QY5X.js.map +1 -0
  12. package/dist/{chunk-AEXJDCJN.js → chunk-QD427NIO.js} +5 -5
  13. package/dist/{chunk-62NYED6E.js → chunk-UXJZU23T.js} +3 -3
  14. package/dist/{chunk-O3GT46R2.js → chunk-YLYXW5PH.js} +14 -2
  15. package/dist/{chunk-O3GT46R2.js.map → chunk-YLYXW5PH.js.map} +1 -1
  16. package/dist/cli/bin.js +16 -16
  17. package/dist/cli/commands/audit.js +6 -6
  18. package/dist/configs/eslint.js +5 -1
  19. package/dist/configs/eslint.js.map +1 -1
  20. package/dist/configs/playwright-a11y.js +1 -1
  21. package/dist/{db-DAJX7NNW.js → db-LOSJ74ZJ.js} +1 -1
  22. package/dist/{digest-T6TAZNLF.js → digest-CS6KLCZB.js} +3 -3
  23. package/dist/digest-collectors-NI2M3UTC.js +1 -1
  24. package/dist/{ensure-site-NSNY2QHN.js → ensure-site-FFDUMY6E.js} +2 -2
  25. package/dist/{forms-notify-target-LYSKME5L.js → forms-notify-target-IHJX7NWA.js} +3 -3
  26. package/dist/{github-signals-4YML6NY5.js → github-signals-FCLNHKMF.js} +2 -2
  27. package/dist/{health-mirror-7LKC7Q5Z.js → health-mirror-GMSF3Z5R.js} +2 -2
  28. package/dist/images/index.d.ts +55 -0
  29. package/dist/images/index.js +16 -0
  30. package/dist/images/index.js.map +1 -0
  31. package/dist/index.js +9 -9
  32. package/dist/{init-NHKADHB6.js → init-NXZ4NXTL.js} +7 -7
  33. package/dist/{launch-VQJ4Z35C.js → launch-5V7RLUV7.js} +8 -8
  34. package/dist/notify-4HP4GZ2H.js +1 -1
  35. package/dist/orchestrate-6HROYTM6.js +1 -1
  36. package/dist/preflight-LIN5NCYU.js +1 -1
  37. package/dist/{prismic-ci-PZ5LCPWT.js → prismic-ci-6YGRIOHT.js} +5 -5
  38. package/dist/{prismic-models-6OYYZUR5.js → prismic-models-VNGIKS2B.js} +3 -3
  39. package/dist/{prospect-audit-DBBXL7EG.js → prospect-audit-JCWTKJTS.js} +1 -1
  40. package/dist/recipes/sync-configs.d.ts +8 -1
  41. package/dist/recipes/sync-configs.js +4 -2
  42. package/dist/{report-2N4PXO3L.js → report-AAY2HZZR.js} +8 -8
  43. package/dist/{report-mirror-3ENU6OOK.js → report-mirror-GMNSH5HF.js} +2 -2
  44. package/dist/{self-updating-NTCCWJYZ.js → self-updating-VQIW24RZ.js} +3 -3
  45. package/dist/selftest-CUX2FIQD.js +1 -1
  46. package/dist/{site-mirror-RQTEAID5.js → site-mirror-GCFLBBWK.js} +2 -2
  47. package/dist/{submissions-TEHPBSZJ.js → submissions-7LGJJSDL.js} +1 -1
  48. package/dist/{sync-configs-LVBITPLU.js → sync-configs-PVRLZRKL.js} +6 -12
  49. package/dist/sync-configs-PVRLZRKL.js.map +1 -0
  50. package/package.json +5 -1
  51. package/dist/blux-EATHOHKK.js.map +0 -1
  52. package/dist/chunk-3VQWSE3F.js.map +0 -1
  53. package/dist/chunk-62CMMGEO.js.map +0 -1
  54. package/dist/chunk-73UFRZKY.js.map +0 -1
  55. package/dist/chunk-VNB5XBQ4.js.map +0 -1
  56. package/dist/sync-configs-LVBITPLU.js.map +0 -1
  57. /package/dist/{announce-OJFAS5JT.js.map → announce-NDTLRQCN.js.map} +0 -0
  58. /package/dist/{chunk-AEXJDCJN.js.map → chunk-QD427NIO.js.map} +0 -0
  59. /package/dist/{chunk-62NYED6E.js.map → chunk-UXJZU23T.js.map} +0 -0
  60. /package/dist/{db-DAJX7NNW.js.map → db-LOSJ74ZJ.js.map} +0 -0
  61. /package/dist/{digest-T6TAZNLF.js.map → digest-CS6KLCZB.js.map} +0 -0
  62. /package/dist/{ensure-site-NSNY2QHN.js.map → ensure-site-FFDUMY6E.js.map} +0 -0
  63. /package/dist/{forms-notify-target-LYSKME5L.js.map → forms-notify-target-IHJX7NWA.js.map} +0 -0
  64. /package/dist/{github-signals-4YML6NY5.js.map → github-signals-FCLNHKMF.js.map} +0 -0
  65. /package/dist/{health-mirror-7LKC7Q5Z.js.map → health-mirror-GMSF3Z5R.js.map} +0 -0
  66. /package/dist/{init-NHKADHB6.js.map → init-NXZ4NXTL.js.map} +0 -0
  67. /package/dist/{launch-VQJ4Z35C.js.map → launch-5V7RLUV7.js.map} +0 -0
  68. /package/dist/{prismic-ci-PZ5LCPWT.js.map → prismic-ci-6YGRIOHT.js.map} +0 -0
  69. /package/dist/{prismic-models-6OYYZUR5.js.map → prismic-models-VNGIKS2B.js.map} +0 -0
  70. /package/dist/{prospect-audit-DBBXL7EG.js.map → prospect-audit-JCWTKJTS.js.map} +0 -0
  71. /package/dist/{report-2N4PXO3L.js.map → report-AAY2HZZR.js.map} +0 -0
  72. /package/dist/{report-mirror-3ENU6OOK.js.map → report-mirror-GMNSH5HF.js.map} +0 -0
  73. /package/dist/{self-updating-NTCCWJYZ.js.map → self-updating-VQIW24RZ.js.map} +0 -0
  74. /package/dist/{site-mirror-RQTEAID5.js.map → site-mirror-GCFLBBWK.js.map} +0 -0
  75. /package/dist/{submissions-TEHPBSZJ.js.map → submissions-7LGJJSDL.js.map} +0 -0
@@ -91,7 +91,7 @@ async function runGitHubSignalsCommand(opts, deps = {}) {
91
91
  );
92
92
  const sweptAt = (/* @__PURE__ */ new Date()).toISOString();
93
93
  const makeMirror = deps.makeMirror ?? (async () => {
94
- const { makeHealthMirrorBestEffort } = await import("./health-mirror-7LKC7Q5Z.js");
94
+ const { makeHealthMirrorBestEffort } = await import("./health-mirror-GMSF3Z5R.js");
95
95
  return makeHealthMirrorBestEffort();
96
96
  });
97
97
  const mirror = await makeMirror();
@@ -156,4 +156,4 @@ export {
156
156
  githubSignalsExitCode,
157
157
  runGitHubSignalsCommand
158
158
  };
159
- //# sourceMappingURL=github-signals-4YML6NY5.js.map
159
+ //# sourceMappingURL=github-signals-FCLNHKMF.js.map
@@ -2,10 +2,10 @@ import {
2
2
  mirrorHealthFields,
3
3
  mirrorScheduleFields
4
4
  } from "./chunk-QBAAZY7W.js";
5
+ import "./chunk-P6AORG32.js";
5
6
  import {
6
7
  TURSO_IS_AUTHORITATIVE
7
8
  } from "./chunk-SVAAONYB.js";
8
- import "./chunk-P6AORG32.js";
9
9
  import "./chunk-F3JWOPTG.js";
10
10
  import "./chunk-VAD43MOR.js";
11
11
  import "./chunk-7NYN2P6I.js";
@@ -43,4 +43,4 @@ export {
43
43
  makeHealthMirrorBestEffort,
44
44
  makeScheduleMirrorBestEffort
45
45
  };
46
- //# sourceMappingURL=health-mirror-7LKC7Q5Z.js.map
46
+ //# sourceMappingURL=health-mirror-GMSF3Z5R.js.map
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Prismic image helpers for fleet sites.
3
+ *
4
+ * Dependency-free on purpose: consuming sites import this subpath directly, so
5
+ * it must never reach a central-only devDep. The image field is accepted
6
+ * structurally rather than as `@prismicio/client`'s `ImageField`, which keeps
7
+ * `@prismicio/client` out of this package's dependency graph while still
8
+ * type-checking at the call site — a real `ImageField` satisfies the shape.
9
+ */
10
+ /**
11
+ * The srcset widths `<PrismicImage>` emits when no `widths` prop is given.
12
+ * Mirrors `DEFAULT_WIDTHS` in `@prismicio/client`'s `asImageWidthSrcSet()`.
13
+ */
14
+ declare const PRISMIC_DEFAULT_WIDTHS: readonly [640, 828, 1200, 2048, 3840];
15
+ /** The structural shape `cappedWidths()` needs from a Prismic image field. */
16
+ type ImageFieldLike = {
17
+ dimensions?: {
18
+ width?: number | null;
19
+ } | null;
20
+ } | null;
21
+ /**
22
+ * Build a srcset width list that never exceeds the image's own pixel width.
23
+ *
24
+ * Prismic advertises every default width regardless of how big the source asset
25
+ * actually is. Because fleet sites also set `sizes` (or fall back to the `100vw`
26
+ * default), browsers on wide or retina screens genuinely pick those top
27
+ * candidates — so a 558px photo gets upscaled ~7x on demand, and a 40px logo by
28
+ * 96x. Those variants are always a cache MISS, are expensive for Prismic to
29
+ * generate, and are the ones that surface as slow or failed images in production
30
+ * while the same asset's smaller variants serve fine.
31
+ *
32
+ * Capping at the native width keeps the rendered result identical — upscaling
33
+ * adds no detail — while removing the expensive transforms entirely.
34
+ *
35
+ * Sources already at or above the widest candidate keep the default list
36
+ * untouched: appending their native width there would *add* a candidate wider
37
+ * than any previously offered, making large images heavier rather than lighter.
38
+ *
39
+ * @example
40
+ * ```svelte
41
+ * <PrismicImage
42
+ * field={slice.primary.image}
43
+ * widths={cappedWidths(slice.primary.image)}
44
+ * sizes="(min-width: 768px) 50vw, 100vw"
45
+ * />
46
+ * ```
47
+ *
48
+ * @param field - The Prismic image field being rendered. An empty or
49
+ * dimensionless field falls back to the candidate list unchanged.
50
+ * @param widths - Candidate widths to filter. Defaults to Prismic's own list.
51
+ * @returns Widths no larger than the source, ascending.
52
+ */
53
+ declare function cappedWidths(field: ImageFieldLike | undefined, widths?: readonly number[]): number[];
54
+
55
+ export { type ImageFieldLike, PRISMIC_DEFAULT_WIDTHS, cappedWidths };
@@ -0,0 +1,16 @@
1
+ // src/images/index.ts
2
+ var PRISMIC_DEFAULT_WIDTHS = [640, 828, 1200, 2048, 3840];
3
+ function cappedWidths(field, widths = PRISMIC_DEFAULT_WIDTHS) {
4
+ const candidates = [...widths];
5
+ const native = field?.dimensions?.width;
6
+ if (typeof native !== "number" || !Number.isFinite(native) || native <= 0) {
7
+ return candidates;
8
+ }
9
+ if (native >= Math.max(...candidates)) return candidates;
10
+ return [...candidates.filter((w) => w < native), native];
11
+ }
12
+ export {
13
+ PRISMIC_DEFAULT_WIDTHS,
14
+ cappedWidths
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/images/index.ts"],"sourcesContent":["/**\n * Prismic image helpers for fleet sites.\n *\n * Dependency-free on purpose: consuming sites import this subpath directly, so\n * it must never reach a central-only devDep. The image field is accepted\n * structurally rather than as `@prismicio/client`'s `ImageField`, which keeps\n * `@prismicio/client` out of this package's dependency graph while still\n * type-checking at the call site — a real `ImageField` satisfies the shape.\n */\n\n/**\n * The srcset widths `<PrismicImage>` emits when no `widths` prop is given.\n * Mirrors `DEFAULT_WIDTHS` in `@prismicio/client`'s `asImageWidthSrcSet()`.\n */\nexport const PRISMIC_DEFAULT_WIDTHS = [640, 828, 1200, 2048, 3840] as const;\n\n/** The structural shape `cappedWidths()` needs from a Prismic image field. */\nexport type ImageFieldLike = {\n dimensions?: { width?: number | null } | null;\n} | null;\n\n/**\n * Build a srcset width list that never exceeds the image's own pixel width.\n *\n * Prismic advertises every default width regardless of how big the source asset\n * actually is. Because fleet sites also set `sizes` (or fall back to the `100vw`\n * default), browsers on wide or retina screens genuinely pick those top\n * candidates — so a 558px photo gets upscaled ~7x on demand, and a 40px logo by\n * 96x. Those variants are always a cache MISS, are expensive for Prismic to\n * generate, and are the ones that surface as slow or failed images in production\n * while the same asset's smaller variants serve fine.\n *\n * Capping at the native width keeps the rendered result identical — upscaling\n * adds no detail — while removing the expensive transforms entirely.\n *\n * Sources already at or above the widest candidate keep the default list\n * untouched: appending their native width there would *add* a candidate wider\n * than any previously offered, making large images heavier rather than lighter.\n *\n * @example\n * ```svelte\n * <PrismicImage\n * field={slice.primary.image}\n * widths={cappedWidths(slice.primary.image)}\n * sizes=\"(min-width: 768px) 50vw, 100vw\"\n * />\n * ```\n *\n * @param field - The Prismic image field being rendered. An empty or\n * dimensionless field falls back to the candidate list unchanged.\n * @param widths - Candidate widths to filter. Defaults to Prismic's own list.\n * @returns Widths no larger than the source, ascending.\n */\nexport function cappedWidths(\n field: ImageFieldLike | undefined,\n widths: readonly number[] = PRISMIC_DEFAULT_WIDTHS,\n): number[] {\n const candidates = [...widths];\n const native = field?.dimensions?.width;\n\n if (typeof native !== \"number\" || !Number.isFinite(native) || native <= 0) {\n return candidates;\n }\n if (native >= Math.max(...candidates)) return candidates;\n\n return [...candidates.filter((w) => w < native), native];\n}\n"],"mappings":";AAcO,IAAM,yBAAyB,CAAC,KAAK,KAAK,MAAM,MAAM,IAAI;AAuC1D,SAAS,aACd,OACA,SAA4B,wBAClB;AACV,QAAM,aAAa,CAAC,GAAG,MAAM;AAC7B,QAAM,SAAS,OAAO,YAAY;AAElC,MAAI,OAAO,WAAW,YAAY,CAAC,OAAO,SAAS,MAAM,KAAK,UAAU,GAAG;AACzE,WAAO;AAAA,EACT;AACA,MAAI,UAAU,KAAK,IAAI,GAAG,UAAU,EAAG,QAAO;AAE9C,SAAO,CAAC,GAAG,WAAW,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,MAAM;AACzD;","names":[]}
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  DEFAULT_INIT_STEPS,
11
11
  a11yFixturesPage,
12
12
  init
13
- } from "./chunk-62NYED6E.js";
13
+ } from "./chunk-UXJZU23T.js";
14
14
  import {
15
15
  convertToPnpm
16
16
  } from "./chunk-XIDUYLSR.js";
@@ -44,13 +44,13 @@ import {
44
44
  import {
45
45
  isPendingApproval
46
46
  } from "./chunk-F3JWOPTG.js";
47
- import "./chunk-BRYXFH77.js";
48
- import "./chunk-NYUYNYQL.js";
49
47
  import {
50
48
  checklistFor,
51
49
  gatingFields,
52
50
  isHealthGateClear
53
51
  } from "./chunk-VAD43MOR.js";
52
+ import "./chunk-BRYXFH77.js";
53
+ import "./chunk-NYUYNYQL.js";
54
54
  import {
55
55
  fromAirtableBase
56
56
  } from "./chunk-PR343K7F.js";
@@ -84,9 +84,9 @@ import {
84
84
  import "./chunk-WEKL2HYJ.js";
85
85
  import {
86
86
  syncConfigs
87
- } from "./chunk-3VQWSE3F.js";
87
+ } from "./chunk-A6T2R63Z.js";
88
88
  import "./chunk-3G25KIWW.js";
89
- import "./chunk-73UFRZKY.js";
89
+ import "./chunk-MLT4QY5X.js";
90
90
  import "./chunk-OTGB6YQO.js";
91
91
  import {
92
92
  ALL_AUDIT_NAMES,
@@ -96,7 +96,7 @@ import {
96
96
  runAudits,
97
97
  runAuditsAcross,
98
98
  securityAudit
99
- } from "./chunk-AEXJDCJN.js";
99
+ } from "./chunk-QD427NIO.js";
100
100
  import "./chunk-LKGVSM2O.js";
101
101
  import "./chunk-GASBX52O.js";
102
102
  import "./chunk-XHHMM5HX.js";
@@ -105,8 +105,9 @@ import {
105
105
  localPath
106
106
  } from "./chunk-Z3JXLULD.js";
107
107
  import "./chunk-W45FZEGE.js";
108
- import "./chunk-RARREDQE.js";
109
108
  import "./chunk-WS6NU475.js";
109
+ import "./chunk-UDRHAQT7.js";
110
+ import "./chunk-RARREDQE.js";
110
111
  import "./chunk-MFHS7IQ2.js";
111
112
  import "./chunk-A3WDWNN5.js";
112
113
  import {
@@ -116,13 +117,12 @@ import "./chunk-XTK5VIQB.js";
116
117
  import {
117
118
  lighthouseAudit
118
119
  } from "./chunk-2NQUCS7O.js";
119
- import "./chunk-UDRHAQT7.js";
120
120
  import "./chunk-PTDMVGKL.js";
121
121
  import "./chunk-LBYOLBW7.js";
122
122
  import "./chunk-XXTZBPUY.js";
123
123
  import "./chunk-6VAL7XJT.js";
124
124
  import "./chunk-NMAWXBJA.js";
125
- import "./chunk-O3GT46R2.js";
125
+ import "./chunk-YLYXW5PH.js";
126
126
 
127
127
  // src/recipes/index.ts
128
128
  var ALL_RECIPE_NAMES = [
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-Q47DU255.js";
9
9
  import {
10
10
  init
11
- } from "./chunk-62NYED6E.js";
11
+ } from "./chunk-UXJZU23T.js";
12
12
  import "./chunk-XIDUYLSR.js";
13
13
  import "./chunk-IYSEC543.js";
14
14
  import "./chunk-J7SZQUCW.js";
@@ -16,28 +16,28 @@ import "./chunk-BQRFQSGY.js";
16
16
  import "./chunk-Y53WOQIJ.js";
17
17
  import "./chunk-7RJ2HMMJ.js";
18
18
  import "./chunk-R53VL3RI.js";
19
- import "./chunk-3VQWSE3F.js";
19
+ import "./chunk-A6T2R63Z.js";
20
20
  import "./chunk-3G25KIWW.js";
21
- import "./chunk-73UFRZKY.js";
21
+ import "./chunk-MLT4QY5X.js";
22
22
  import "./chunk-OTGB6YQO.js";
23
- import "./chunk-AEXJDCJN.js";
23
+ import "./chunk-QD427NIO.js";
24
24
  import "./chunk-LKGVSM2O.js";
25
25
  import "./chunk-GASBX52O.js";
26
26
  import "./chunk-XHHMM5HX.js";
27
27
  import "./chunk-Z3JXLULD.js";
28
+ import "./chunk-UDRHAQT7.js";
28
29
  import "./chunk-RARREDQE.js";
29
30
  import "./chunk-A3WDWNN5.js";
30
31
  import "./chunk-2OP4JKIQ.js";
31
32
  import "./chunk-XTK5VIQB.js";
32
33
  import "./chunk-2NQUCS7O.js";
33
- import "./chunk-UDRHAQT7.js";
34
34
  import "./chunk-PTDMVGKL.js";
35
35
  import "./chunk-LBYOLBW7.js";
36
36
  import {
37
37
  siteLabel
38
38
  } from "./chunk-XXTZBPUY.js";
39
39
  import "./chunk-NMAWXBJA.js";
40
- import "./chunk-O3GT46R2.js";
40
+ import "./chunk-YLYXW5PH.js";
41
41
 
42
42
  // src/cli/commands/init.ts
43
43
  import { resolve } from "path";
@@ -110,4 +110,4 @@ async function runInitCommand(site, opts) {
110
110
  export {
111
111
  runInitCommand
112
112
  };
113
- //# sourceMappingURL=init-NHKADHB6.js.map
113
+ //# sourceMappingURL=init-NXZ4NXTL.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  selfUpdating
3
- } from "./chunk-62CMMGEO.js";
3
+ } from "./chunk-GSWTT2J6.js";
4
4
  import "./chunk-MNDIED4M.js";
5
5
  import {
6
6
  writeAuditsToAirtable
@@ -39,20 +39,20 @@ import {
39
39
  listWebsites,
40
40
  siteSlug
41
41
  } from "./chunk-7NYN2P6I.js";
42
- import "./chunk-73UFRZKY.js";
42
+ import "./chunk-MLT4QY5X.js";
43
43
  import {
44
44
  runAudits
45
- } from "./chunk-AEXJDCJN.js";
45
+ } from "./chunk-QD427NIO.js";
46
46
  import "./chunk-LKGVSM2O.js";
47
47
  import "./chunk-GASBX52O.js";
48
48
  import "./chunk-XHHMM5HX.js";
49
49
  import "./chunk-Z3JXLULD.js";
50
+ import "./chunk-UDRHAQT7.js";
50
51
  import "./chunk-RARREDQE.js";
51
52
  import "./chunk-A3WDWNN5.js";
52
53
  import "./chunk-2OP4JKIQ.js";
53
54
  import "./chunk-XTK5VIQB.js";
54
55
  import "./chunk-2NQUCS7O.js";
55
- import "./chunk-UDRHAQT7.js";
56
56
  import "./chunk-PTDMVGKL.js";
57
57
  import "./chunk-LBYOLBW7.js";
58
58
  import {
@@ -60,7 +60,7 @@ import {
60
60
  } from "./chunk-XXTZBPUY.js";
61
61
  import "./chunk-6VAL7XJT.js";
62
62
  import "./chunk-NMAWXBJA.js";
63
- import "./chunk-O3GT46R2.js";
63
+ import "./chunk-YLYXW5PH.js";
64
64
 
65
65
  // src/cli/commands/launch.ts
66
66
  import { resolve } from "path";
@@ -241,8 +241,8 @@ async function runLaunchCommand(site, opts) {
241
241
  if (!target) {
242
242
  return { output: `No site resolved for "${site}".`, code: 1 };
243
243
  }
244
- const { makeReportMirror } = await import("./report-mirror-3ENU6OOK.js");
245
- const { makeSiteMirror } = await import("./site-mirror-RQTEAID5.js");
244
+ const { makeReportMirror } = await import("./report-mirror-GMNSH5HF.js");
245
+ const { makeSiteMirror } = await import("./site-mirror-GCFLBBWK.js");
246
246
  const result = await launch(target, {
247
247
  reportMirror: await makeReportMirror(),
248
248
  siteMirror: await makeSiteMirror()
@@ -252,4 +252,4 @@ async function runLaunchCommand(site, opts) {
252
252
  export {
253
253
  runLaunchCommand
254
254
  };
255
- //# sourceMappingURL=launch-VQJ4Z35C.js.map
255
+ //# sourceMappingURL=launch-5V7RLUV7.js.map
@@ -7,8 +7,8 @@ import {
7
7
  resolveRecipients
8
8
  } from "./chunk-SJOXWJ5Y.js";
9
9
  import "./chunk-JRHIFA5R.js";
10
- import "./chunk-NO74DXDP.js";
11
10
  import "./chunk-5ML7FMBD.js";
11
+ import "./chunk-NO74DXDP.js";
12
12
  import "./chunk-BGTYPVLT.js";
13
13
  import "./chunk-2OP4JKIQ.js";
14
14
  export {
@@ -17,8 +17,8 @@ import "./chunk-BGTYPVLT.js";
17
17
  import "./chunk-7NYN2P6I.js";
18
18
  import "./chunk-WEKL2HYJ.js";
19
19
  import "./chunk-W45FZEGE.js";
20
- import "./chunk-RARREDQE.js";
21
20
  import "./chunk-WS6NU475.js";
21
+ import "./chunk-RARREDQE.js";
22
22
  import "./chunk-MFHS7IQ2.js";
23
23
  import "./chunk-6VAL7XJT.js";
24
24
  export {
@@ -15,8 +15,8 @@ import "./chunk-BGTYPVLT.js";
15
15
  import "./chunk-7NYN2P6I.js";
16
16
  import "./chunk-WEKL2HYJ.js";
17
17
  import "./chunk-W45FZEGE.js";
18
- import "./chunk-RARREDQE.js";
19
18
  import "./chunk-WS6NU475.js";
19
+ import "./chunk-RARREDQE.js";
20
20
  import "./chunk-MFHS7IQ2.js";
21
21
  import "./chunk-6VAL7XJT.js";
22
22
 
@@ -1,10 +1,10 @@
1
- import {
2
- runRecipeOverSites
3
- } from "./chunk-VPJ7N6P7.js";
4
1
  import {
5
2
  noWorkingTreeFailure,
6
3
  readPrismicConfig
7
- } from "./chunk-VNB5XBQ4.js";
4
+ } from "./chunk-L5M6G65K.js";
5
+ import {
6
+ runRecipeOverSites
7
+ } from "./chunk-VPJ7N6P7.js";
8
8
  import {
9
9
  appendSkipNotice,
10
10
  fleetWorkdir,
@@ -444,4 +444,4 @@ export {
444
444
  formatPrismicCiResults,
445
445
  runPrismicCiCommand
446
446
  };
447
- //# sourceMappingURL=prismic-ci-PZ5LCPWT.js.map
447
+ //# sourceMappingURL=prismic-ci-6YGRIOHT.js.map
@@ -10,7 +10,7 @@ import {
10
10
  resolvePrismicToken,
11
11
  sendModel,
12
12
  writeModelFile
13
- } from "./chunk-VNB5XBQ4.js";
13
+ } from "./chunk-L5M6G65K.js";
14
14
  import {
15
15
  appendSkipNotice,
16
16
  fleetWorkdir,
@@ -169,7 +169,7 @@ var defaultDeps = () => ({
169
169
  const { listWebsites, updatePrismicModels } = await import("./websites-D6WYFAES.js");
170
170
  const base = openBase(readAirtableConfig());
171
171
  const websites = await listWebsites(base);
172
- const { makeSiteMirror } = await import("./site-mirror-RQTEAID5.js");
172
+ const { makeSiteMirror } = await import("./site-mirror-GCFLBBWK.js");
173
173
  const mirror = await makeSiteMirror();
174
174
  return {
175
175
  websites: websites.map((w) => ({ id: w.id, name: w.name })),
@@ -1022,4 +1022,4 @@ export {
1022
1022
  sweepRowWriteback,
1023
1023
  writeSweepToAirtable
1024
1024
  };
1025
- //# sourceMappingURL=prismic-models-6OYYZUR5.js.map
1025
+ //# sourceMappingURL=prismic-models-VNGIKS2B.js.map
@@ -192,4 +192,4 @@ async function runProspectAuditCommand(url, opts) {
192
192
  export {
193
193
  runProspectAuditCommand
194
194
  };
195
- //# sourceMappingURL=prospect-audit-DBBXL7EG.js.map
195
+ //# sourceMappingURL=prospect-audit-JCWTKJTS.js.map
@@ -1,5 +1,11 @@
1
1
  import { C as ConfigName, S as Site, b as RecipeResult } from '../types-OIQZ5hWN.js';
2
2
 
3
+ type ConfigTemplate = {
4
+ config: ConfigName;
5
+ path: string;
6
+ contents: string;
7
+ };
8
+
3
9
  type SyncConfigsOptions = {
4
10
  which?: ConfigName[];
5
11
  };
@@ -9,6 +15,7 @@ type SyncConfigsOptions = {
9
15
  * against drift between this array and the union. */
10
16
  declare const ALL_CONFIG_NAMES: ConfigName[];
11
17
  declare function isConfigName(value: string): value is ConfigName;
18
+ declare function planTemplateDiffs(cwd: string, templates: ConfigTemplate[]): Promise<ConfigTemplate[]>;
12
19
  declare function syncConfigs(site: Site, opts?: SyncConfigsOptions): Promise<RecipeResult>;
13
20
 
14
- export { ALL_CONFIG_NAMES, type SyncConfigsOptions, isConfigName, syncConfigs };
21
+ export { ALL_CONFIG_NAMES, type SyncConfigsOptions, isConfigName, planTemplateDiffs, syncConfigs };
@@ -1,15 +1,17 @@
1
1
  import {
2
2
  ALL_CONFIG_NAMES,
3
3
  isConfigName,
4
+ planTemplateDiffs,
4
5
  syncConfigs
5
- } from "../chunk-3VQWSE3F.js";
6
+ } from "../chunk-A6T2R63Z.js";
6
7
  import "../chunk-3G25KIWW.js";
7
- import "../chunk-73UFRZKY.js";
8
+ import "../chunk-MLT4QY5X.js";
8
9
  import "../chunk-XTK5VIQB.js";
9
10
  import "../chunk-XXTZBPUY.js";
10
11
  export {
11
12
  ALL_CONFIG_NAMES,
12
13
  isConfigName,
14
+ planTemplateDiffs,
13
15
  syncConfigs
14
16
  };
15
17
  //# sourceMappingURL=sync-configs.js.map
@@ -78,12 +78,12 @@ function dashboardBaseUrl() {
78
78
  }
79
79
  async function runReportCommand(slug, opts) {
80
80
  if (opts.digest) {
81
- const { runDigest } = await import("./digest-T6TAZNLF.js");
81
+ const { runDigest } = await import("./digest-CS6KLCZB.js");
82
82
  return runDigest({ baseUrl: dashboardBaseUrl() });
83
83
  }
84
84
  if (opts.sendReady) {
85
85
  const { sendApprovedReports } = await import("./orchestrate-6HROYTM6.js");
86
- const { makeSiteMirror } = await import("./site-mirror-RQTEAID5.js");
86
+ const { makeSiteMirror } = await import("./site-mirror-GCFLBBWK.js");
87
87
  const { mirrorWrite } = await import("./freeze-A6MUCZU4.js");
88
88
  const { openDb, readDbConfig } = await import("./client-JYKPVCJX.js");
89
89
  const { mirrorReportPatch } = await import("./fleet-state-3LQUQHYD.js");
@@ -145,9 +145,9 @@ async function runReportCommand(slug, opts) {
145
145
  }
146
146
  async function runDueDraft() {
147
147
  const base = openBase(readAirtableConfig());
148
- const { makeScheduleMirrorBestEffort } = await import("./health-mirror-7LKC7Q5Z.js");
149
- const { makeReportMirror } = await import("./report-mirror-3ENU6OOK.js");
150
- const { makeSiteMirror } = await import("./site-mirror-RQTEAID5.js");
148
+ const { makeScheduleMirrorBestEffort } = await import("./health-mirror-GMSF3Z5R.js");
149
+ const { makeReportMirror } = await import("./report-mirror-GMNSH5HF.js");
150
+ const { makeSiteMirror } = await import("./site-mirror-GCFLBBWK.js");
151
151
  const result = await draftDueReports(
152
152
  base,
153
153
  /* @__PURE__ */ new Date(),
@@ -337,8 +337,8 @@ async function runSingleSiteDraft(slug, opts) {
337
337
  if (!site) {
338
338
  throw Object.assign(new Error(`No Websites row matched slug "${slug}"`), { exitCode: 2 });
339
339
  }
340
- const reportMirror = opts.previewOnly ? null : await (await import("./report-mirror-3ENU6OOK.js")).makeReportMirror();
341
- const siteMirror = opts.previewOnly ? null : await (await import("./site-mirror-RQTEAID5.js")).makeSiteMirror();
340
+ const reportMirror = opts.previewOnly ? null : await (await import("./report-mirror-GMNSH5HF.js")).makeReportMirror();
341
+ const siteMirror = opts.previewOnly ? null : await (await import("./site-mirror-GCFLBBWK.js")).makeSiteMirror();
342
342
  const result = await draftReportForSite(opts.previewOnly ? null : base, site, opts.reportType, {
343
343
  previewOnly: opts.previewOnly,
344
344
  // Only forced on. Left undefined, draftReportForSite keeps its default
@@ -366,4 +366,4 @@ export {
366
366
  runReportCommand,
367
367
  writeNextDueDates
368
368
  };
369
- //# sourceMappingURL=report-2N4PXO3L.js.map
369
+ //# sourceMappingURL=report-AAY2HZZR.js.map
@@ -3,10 +3,10 @@ import {
3
3
  mirrorReportPatch,
4
4
  storeRenderedHtml
5
5
  } from "./chunk-QBAAZY7W.js";
6
+ import "./chunk-P6AORG32.js";
6
7
  import {
7
8
  TURSO_IS_AUTHORITATIVE
8
9
  } from "./chunk-SVAAONYB.js";
9
- import "./chunk-P6AORG32.js";
10
10
  import "./chunk-F3JWOPTG.js";
11
11
  import "./chunk-VAD43MOR.js";
12
12
  import "./chunk-7NYN2P6I.js";
@@ -52,4 +52,4 @@ async function makeReportMirror(open = () => openDb(readDbConfig()), strict = TU
52
52
  export {
53
53
  makeReportMirror
54
54
  };
55
- //# sourceMappingURL=report-mirror-3ENU6OOK.js.map
55
+ //# sourceMappingURL=report-mirror-GMNSH5HF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  selfUpdating
3
- } from "./chunk-62CMMGEO.js";
3
+ } from "./chunk-GSWTT2J6.js";
4
4
  import "./chunk-MNDIED4M.js";
5
5
  import {
6
6
  runRecipeOverSites
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  resolveSites
15
15
  } from "./chunk-Q47DU255.js";
16
- import "./chunk-73UFRZKY.js";
16
+ import "./chunk-MLT4QY5X.js";
17
17
  import "./chunk-GASBX52O.js";
18
18
  import "./chunk-XHHMM5HX.js";
19
19
  import "./chunk-Z3JXLULD.js";
@@ -62,4 +62,4 @@ async function runSelfUpdatingCommand(site, opts) {
62
62
  export {
63
63
  runSelfUpdatingCommand
64
64
  };
65
- //# sourceMappingURL=self-updating-NTCCWJYZ.js.map
65
+ //# sourceMappingURL=self-updating-VQIW24RZ.js.map
@@ -41,8 +41,8 @@ import {
41
41
  defaultResendClient
42
42
  } from "./chunk-WEKL2HYJ.js";
43
43
  import "./chunk-W45FZEGE.js";
44
- import "./chunk-RARREDQE.js";
45
44
  import "./chunk-WS6NU475.js";
45
+ import "./chunk-RARREDQE.js";
46
46
  import "./chunk-MFHS7IQ2.js";
47
47
  import "./chunk-6VAL7XJT.js";
48
48
 
@@ -3,10 +3,10 @@ import {
3
3
  mirrorSiteFields,
4
4
  mirrorSiteInsert
5
5
  } from "./chunk-QBAAZY7W.js";
6
+ import "./chunk-P6AORG32.js";
6
7
  import {
7
8
  TURSO_IS_AUTHORITATIVE
8
9
  } from "./chunk-SVAAONYB.js";
9
- import "./chunk-P6AORG32.js";
10
10
  import "./chunk-F3JWOPTG.js";
11
11
  import "./chunk-VAD43MOR.js";
12
12
  import "./chunk-7NYN2P6I.js";
@@ -59,4 +59,4 @@ async function makeSiteMirror(open = () => openDb(readDbConfig()), strict = TURS
59
59
  export {
60
60
  makeSiteMirror
61
61
  };
62
- //# sourceMappingURL=site-mirror-RQTEAID5.js.map
62
+ //# sourceMappingURL=site-mirror-GCFLBBWK.js.map
@@ -119,4 +119,4 @@ export {
119
119
  rescoreNewSubmissions,
120
120
  runSubmissionsCommand
121
121
  };
122
- //# sourceMappingURL=submissions-TEHPBSZJ.js.map
122
+ //# sourceMappingURL=submissions-7LGJJSDL.js.map
@@ -14,13 +14,14 @@ import {
14
14
  CANONICAL_GITIGNORE_ENTRIES,
15
15
  isConfigName,
16
16
  mergeGitignore,
17
+ planTemplateDiffs,
17
18
  syncConfigs
18
- } from "./chunk-3VQWSE3F.js";
19
+ } from "./chunk-A6T2R63Z.js";
19
20
  import "./chunk-3G25KIWW.js";
20
21
  import {
21
22
  ALL_TEMPLATES,
22
23
  templatesByName
23
- } from "./chunk-73UFRZKY.js";
24
+ } from "./chunk-MLT4QY5X.js";
24
25
  import "./chunk-Z3JXLULD.js";
25
26
  import "./chunk-RARREDQE.js";
26
27
  import "./chunk-XTK5VIQB.js";
@@ -57,15 +58,8 @@ async function dryPlanGitignore(cwd) {
57
58
  async function dryPlan(cwd, which) {
58
59
  const includeGitignore = which ? which.includes("gitignore") : true;
59
60
  const templateTargets = which ? templatesByName(which.filter((c) => c !== "gitignore")) : ALL_TEMPLATES;
60
- const lines = [];
61
- for (const t of templateTargets) {
62
- let existing = "";
63
- try {
64
- existing = await readFile(join(cwd, t.path), "utf-8");
65
- } catch {
66
- }
67
- if (existing !== t.contents) lines.push(`would update ${t.path} (config: ${t.config})`);
68
- }
61
+ const diffs = await planTemplateDiffs(cwd, templateTargets);
62
+ const lines = diffs.map((t) => `would update ${t.path} (config: ${t.config})`);
69
63
  if (includeGitignore) {
70
64
  const gi = await dryPlanGitignore(cwd);
71
65
  if (gi) lines.push(gi);
@@ -113,4 +107,4 @@ async function runSyncConfigsCommand(site, opts) {
113
107
  export {
114
108
  runSyncConfigsCommand
115
109
  };
116
- //# sourceMappingURL=sync-configs-LVBITPLU.js.map
110
+ //# sourceMappingURL=sync-configs-PVRLZRKL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/sync-configs.ts"],"sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport {\n syncConfigs,\n ALL_CONFIG_NAMES,\n isConfigName,\n planTemplateDiffs,\n} from \"../../recipes/sync-configs.js\";\nimport { ALL_TEMPLATES, templatesByName } from \"../../recipes/sync-configs/templates.js\";\nimport {\n CANONICAL_GITIGNORE_ENTRIES,\n mergeGitignore,\n} from \"../../recipes/sync-configs/gitignore.js\";\nimport type { ConfigName, RecipeResult } from \"../../types.js\";\nimport { resolveSites } from \"../fleet/resolve-sites.js\";\nimport { prepareFleetSites, appendSkipNotice, type SkippedSite } from \"../fleet/prepare-sites.js\";\nimport { runRecipeOverSites } from \"../fleet/run-recipe-over-sites.js\";\nimport { fleetWorkdir } from \"../../util/fleet-workdir.js\";\n\nexport type SyncConfigsCommandOptions = {\n only?: string;\n dry?: boolean;\n fleet?: string;\n workdir?: string;\n cwd?: string;\n};\n\nfunction parseOnly(value?: string): ConfigName[] | undefined {\n if (!value) return undefined;\n const names = value.split(\",\").map((s) => s.trim());\n for (const n of names) {\n if (!isConfigName(n)) {\n throw Object.assign(\n new Error(`unknown config in --only: \"${n}\". Valid: ${ALL_CONFIG_NAMES.join(\", \")}`),\n { exitCode: 2 },\n );\n }\n }\n return names as ConfigName[];\n}\n\nasync function dryPlanGitignore(cwd: string): Promise<string | null> {\n let existing: string | null;\n try {\n existing = await readFile(join(cwd, \".gitignore\"), \"utf-8\");\n } catch {\n return \"would create .gitignore\";\n }\n const merge = mergeGitignore(existing, CANONICAL_GITIGNORE_ENTRIES);\n if (merge.added.length === 0) return null;\n return `would update .gitignore (${merge.added.length} canonical entries to add)`;\n}\n\nasync function dryPlan(cwd: string, which?: ConfigName[]): Promise<string> {\n const includeGitignore = which ? which.includes(\"gitignore\") : true;\n const templateTargets = which\n ? templatesByName(which.filter((c): c is ConfigName => c !== \"gitignore\"))\n : ALL_TEMPLATES;\n\n // Ask the recipe's own planner rather than re-deriving drift here. svelte.config\n // and netlify.toml are compliance-checked, not byte-matched, so a local\n // `existing !== contents` comparison reported files the real run leaves alone —\n // and a preview that disagrees with the command it previews is worse than none.\n const diffs = await planTemplateDiffs(cwd, templateTargets);\n const lines = diffs.map((t) => `would update ${t.path} (config: ${t.config})`);\n if (includeGitignore) {\n const gi = await dryPlanGitignore(cwd);\n if (gi) lines.push(gi);\n }\n return lines.length === 0 ? \"no changes needed\" : lines.join(\"\\n\");\n}\n\nfunction formatResult(r: RecipeResult): string {\n if (r.status === \"noop\") return `[${r.site}] noop: ${r.notes ?? \"all configs in sync\"}`;\n return `[${r.site}] applied: ${r.commits.length} commit(s)\\n${r.notes ?? \"\"}`;\n}\n\nexport async function runSyncConfigsCommand(\n site: string | undefined,\n opts: SyncConfigsCommandOptions,\n): Promise<{ output: string; code: number }> {\n const which = parseOnly(opts.only);\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 if (opts.dry) {\n const blocks: string[] = [];\n for (const s of sites) {\n blocks.push(`[${s.name || s.path}]\\n` + (await dryPlan(s.path, which)));\n }\n return { output: appendSkipNotice(blocks.join(\"\\n\\n\"), skipped), code: 0 };\n }\n\n const results = await runRecipeOverSites(\"sync-configs\", sites, (s) =>\n syncConfigs(s, which ? { which } : {}),\n );\n\n const output = results.map(formatResult).join(\"\\n\");\n const code = results.some((r) => r.status === \"failed\") ? 1 : 0;\n return { output: appendSkipNotice(output, skipped), code };\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reddoorla/maintenance",
3
- "version": "0.89.0",
3
+ "version": "0.90.1",
4
4
  "description": "Canonical maintenance configs, audits, and recipes for the reddoor stack.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -33,6 +33,10 @@
33
33
  "types": "./dist/client/index.d.ts",
34
34
  "import": "./dist/client/index.js"
35
35
  },
36
+ "./images": {
37
+ "types": "./dist/images/index.d.ts",
38
+ "import": "./dist/images/index.js"
39
+ },
36
40
  "./configs/lighthouse": {
37
41
  "types": "./dist/configs/lighthouse.d.ts",
38
42
  "import": "./dist/configs/lighthouse.js"