@eightmedia/flightcheck 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +691 -0
  3. package/README.md +106 -2
  4. package/dist/analyze/fixManifest.d.ts +65 -0
  5. package/dist/analyze/fixManifest.d.ts.map +1 -0
  6. package/dist/analyze/fixManifest.js +588 -0
  7. package/dist/analyze/report.d.ts +283 -0
  8. package/dist/analyze/report.d.ts.map +1 -0
  9. package/dist/analyze/report.js +726 -0
  10. package/dist/analyze/reportTier1.d.ts +46 -0
  11. package/dist/analyze/reportTier1.d.ts.map +1 -0
  12. package/dist/analyze/reportTier1.js +251 -0
  13. package/dist/analyze/stack.d.ts +33 -0
  14. package/dist/analyze/stack.d.ts.map +1 -0
  15. package/dist/analyze/stack.js +188 -0
  16. package/dist/analyze/structuredReport.d.ts +62 -0
  17. package/dist/analyze/structuredReport.d.ts.map +1 -0
  18. package/dist/analyze/structuredReport.js +524 -0
  19. package/dist/analyze.d.ts +3 -0
  20. package/dist/analyze.d.ts.map +1 -0
  21. package/dist/analyze.js +40 -0
  22. package/dist/checks/agent-ready.d.ts +63 -0
  23. package/dist/checks/agent-ready.d.ts.map +1 -0
  24. package/dist/checks/agent-ready.js +219 -0
  25. package/dist/checks/analyze.d.ts +15 -0
  26. package/dist/checks/analyze.d.ts.map +1 -0
  27. package/dist/checks/analyze.js +63 -0
  28. package/dist/checks/crawl.d.ts +28 -0
  29. package/dist/checks/crawl.d.ts.map +1 -0
  30. package/dist/checks/crawl.js +86 -0
  31. package/dist/checks/dns.d.ts +25 -0
  32. package/dist/checks/dns.d.ts.map +1 -0
  33. package/dist/checks/dns.js +80 -0
  34. package/dist/checks/index.d.ts +24 -0
  35. package/dist/checks/index.d.ts.map +1 -0
  36. package/dist/checks/index.js +12 -0
  37. package/dist/checks/issues.d.ts +8 -0
  38. package/dist/checks/issues.d.ts.map +1 -0
  39. package/dist/checks/issues.js +3 -0
  40. package/dist/checks/redirect.d.ts +38 -0
  41. package/dist/checks/redirect.d.ts.map +1 -0
  42. package/dist/checks/redirect.js +209 -0
  43. package/dist/checks/registry.d.ts +8 -0
  44. package/dist/checks/registry.d.ts.map +1 -0
  45. package/dist/checks/registry.js +275 -0
  46. package/dist/checks/robots-txt.d.ts +16 -0
  47. package/dist/checks/robots-txt.d.ts.map +1 -0
  48. package/dist/checks/robots-txt.js +99 -0
  49. package/dist/checks/runner.d.ts +9 -0
  50. package/dist/checks/runner.d.ts.map +1 -0
  51. package/dist/checks/runner.js +110 -0
  52. package/dist/checks/security-headers.d.ts +12 -0
  53. package/dist/checks/security-headers.d.ts.map +1 -0
  54. package/dist/checks/security-headers.js +53 -0
  55. package/dist/checks/sitemap.d.ts +36 -0
  56. package/dist/checks/sitemap.d.ts.map +1 -0
  57. package/dist/checks/sitemap.js +140 -0
  58. package/dist/checks/types.d.ts +72 -0
  59. package/dist/checks/types.d.ts.map +1 -0
  60. package/dist/checks/types.js +20 -0
  61. package/dist/cli.d.ts +3 -0
  62. package/dist/cli.d.ts.map +1 -0
  63. package/dist/cli.js +125 -0
  64. package/dist/crawler/checkGroups.d.ts +7 -0
  65. package/dist/crawler/checkGroups.d.ts.map +1 -0
  66. package/dist/crawler/checkGroups.js +29 -0
  67. package/dist/crawler/crawlState.d.ts +7 -0
  68. package/dist/crawler/crawlState.d.ts.map +1 -0
  69. package/dist/crawler/crawlState.js +6 -0
  70. package/dist/crawler/defaults.d.ts +11 -0
  71. package/dist/crawler/defaults.d.ts.map +1 -0
  72. package/dist/crawler/defaults.js +10 -0
  73. package/dist/crawler/extractors.d.ts +5 -0
  74. package/dist/crawler/extractors.d.ts.map +1 -0
  75. package/dist/crawler/extractors.js +169 -0
  76. package/dist/crawler/jsAssets.d.ts +2 -0
  77. package/dist/crawler/jsAssets.d.ts.map +1 -0
  78. package/dist/crawler/jsAssets.js +22 -0
  79. package/dist/crawler/outputPaths.d.ts +14 -0
  80. package/dist/crawler/outputPaths.d.ts.map +1 -0
  81. package/dist/crawler/outputPaths.js +51 -0
  82. package/dist/crawler/reporter.d.ts +3 -0
  83. package/dist/crawler/reporter.d.ts.map +1 -0
  84. package/dist/crawler/reporter.js +12 -0
  85. package/dist/crawler/robots.d.ts +5 -0
  86. package/dist/crawler/robots.d.ts.map +1 -0
  87. package/dist/crawler/robots.js +29 -0
  88. package/dist/crawler/runCrawler.d.ts +22 -0
  89. package/dist/crawler/runCrawler.d.ts.map +1 -0
  90. package/dist/crawler/runCrawler.js +172 -0
  91. package/dist/crawler/schema.d.ts +87 -0
  92. package/dist/crawler/schema.d.ts.map +1 -0
  93. package/dist/crawler/schema.js +44 -0
  94. package/dist/crawler/secrets.d.ts +4 -0
  95. package/dist/crawler/secrets.d.ts.map +1 -0
  96. package/dist/crawler/secrets.js +70 -0
  97. package/dist/crawler/sitemap.d.ts +8 -0
  98. package/dist/crawler/sitemap.d.ts.map +1 -0
  99. package/dist/crawler/sitemap.js +105 -0
  100. package/dist/crawler/stack.d.ts +3 -0
  101. package/dist/crawler/stack.d.ts.map +1 -0
  102. package/dist/crawler/stack.js +1 -0
  103. package/dist/crawler/stackDetect.d.ts +24 -0
  104. package/dist/crawler/stackDetect.d.ts.map +1 -0
  105. package/dist/crawler/stackDetect.js +604 -0
  106. package/dist/crawler/tier1Extractors.d.ts +5 -0
  107. package/dist/crawler/tier1Extractors.d.ts.map +1 -0
  108. package/dist/crawler/tier1Extractors.js +255 -0
  109. package/dist/crawler/tracking.d.ts +8 -0
  110. package/dist/crawler/tracking.d.ts.map +1 -0
  111. package/dist/crawler/tracking.js +50 -0
  112. package/dist/crawler/urlUtils.d.ts +12 -0
  113. package/dist/crawler/urlUtils.d.ts.map +1 -0
  114. package/dist/crawler/urlUtils.js +53 -0
  115. package/dist/index.d.ts +14 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +7 -0
  118. package/docs/agent-fixes.md +17 -0
  119. package/docs/agent-ready.md +44 -0
  120. package/docs/analyze.md +103 -0
  121. package/docs/check-api.md +142 -0
  122. package/docs/checks.md +116 -0
  123. package/docs/crawler.md +158 -0
  124. package/docs/index.md +24 -0
  125. package/docs/qc-checks-plan.md +796 -0
  126. package/docs/stack.md +99 -0
  127. package/package.json +86 -4
@@ -0,0 +1,283 @@
1
+ import { z } from "zod";
2
+ import { type BuildMarkdownOptions, type CrawlIssueCounts, type Tier1ReportData } from "./reportTier1.js";
3
+ import { type StackProfile } from "./stack.js";
4
+ export type { Tier1ReportData, BuildMarkdownOptions } from "./reportTier1.js";
5
+ declare const recordSchema: z.ZodObject<{
6
+ url: z.ZodString;
7
+ status: z.ZodNullable<z.ZodNumber>;
8
+ h1: z.ZodString;
9
+ title: z.ZodString;
10
+ metaTitle: z.ZodString;
11
+ metaDescription: z.ZodString;
12
+ robots: z.ZodString;
13
+ template: z.ZodDefault<z.ZodOptional<z.ZodString>>;
14
+ mainCount: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
15
+ charset: z.ZodString;
16
+ language: z.ZodString;
17
+ colorScheme: z.ZodString;
18
+ themeColor: z.ZodString;
19
+ doctype: z.ZodString;
20
+ viewport: z.ZodString;
21
+ canonical: z.ZodString;
22
+ favicon: z.ZodString;
23
+ icons: z.ZodArray<z.ZodObject<{
24
+ rel: z.ZodString;
25
+ href: z.ZodString;
26
+ type: z.ZodString;
27
+ sizes: z.ZodString;
28
+ media: z.ZodString;
29
+ }, z.core.$strip>>;
30
+ og: z.ZodObject<{
31
+ title: z.ZodString;
32
+ description: z.ZodString;
33
+ image: z.ZodString;
34
+ url: z.ZodString;
35
+ type: z.ZodString;
36
+ siteName: z.ZodString;
37
+ }, z.core.$strip>;
38
+ twitter: z.ZodObject<{
39
+ card: z.ZodString;
40
+ title: z.ZodString;
41
+ description: z.ZodString;
42
+ image: z.ZodString;
43
+ }, z.core.$strip>;
44
+ tracking: z.ZodObject<{
45
+ tagManager: z.ZodArray<z.ZodObject<{
46
+ provider: z.ZodString;
47
+ id: z.ZodString;
48
+ }, z.core.$strip>>;
49
+ analytics: z.ZodArray<z.ZodObject<{
50
+ provider: z.ZodString;
51
+ id: z.ZodString;
52
+ }, z.core.$strip>>;
53
+ }, z.core.$strip>;
54
+ stack: z.ZodOptional<z.ZodObject<{
55
+ detections: z.ZodArray<z.ZodObject<{
56
+ name: z.ZodString;
57
+ categories: z.ZodArray<z.ZodString>;
58
+ confidence: z.ZodEnum<{
59
+ high: "high";
60
+ medium: "medium";
61
+ low: "low";
62
+ }>;
63
+ evidence: z.ZodArray<z.ZodString>;
64
+ website: z.ZodOptional<z.ZodString>;
65
+ version: z.ZodOptional<z.ZodString>;
66
+ detector: z.ZodOptional<z.ZodLiteral<"flightcheck-v1">>;
67
+ }, z.core.$strip>>;
68
+ }, z.core.$strip>>;
69
+ security: z.ZodOptional<z.ZodObject<{
70
+ secrets: z.ZodArray<z.ZodObject<{
71
+ type: z.ZodString;
72
+ provider: z.ZodString;
73
+ severity: z.ZodEnum<{
74
+ critical: "critical";
75
+ review: "review";
76
+ }>;
77
+ masked: z.ZodString;
78
+ source: z.ZodString;
79
+ }, z.core.$strip>>;
80
+ scannedAssets: z.ZodNumber;
81
+ }, z.core.$strip>>;
82
+ images: z.ZodOptional<z.ZodObject<{
83
+ issues: z.ZodArray<z.ZodObject<{
84
+ id: z.ZodString;
85
+ severity: z.ZodEnum<{
86
+ critical: "critical";
87
+ error: "error";
88
+ warning: "warning";
89
+ review: "review";
90
+ }>;
91
+ message: z.ZodString;
92
+ }, z.core.$strip>>;
93
+ }, z.core.$strip>>;
94
+ a11yStatic: z.ZodOptional<z.ZodObject<{
95
+ issues: z.ZodArray<z.ZodObject<{
96
+ id: z.ZodString;
97
+ severity: z.ZodEnum<{
98
+ critical: "critical";
99
+ error: "error";
100
+ warning: "warning";
101
+ review: "review";
102
+ }>;
103
+ message: z.ZodString;
104
+ }, z.core.$strip>>;
105
+ }, z.core.$strip>>;
106
+ note: z.ZodOptional<z.ZodString>;
107
+ error: z.ZodOptional<z.ZodString>;
108
+ }, z.core.$strip>;
109
+ export declare const reportSchema: z.ZodArray<z.ZodObject<{
110
+ url: z.ZodString;
111
+ status: z.ZodNullable<z.ZodNumber>;
112
+ h1: z.ZodString;
113
+ title: z.ZodString;
114
+ metaTitle: z.ZodString;
115
+ metaDescription: z.ZodString;
116
+ robots: z.ZodString;
117
+ template: z.ZodDefault<z.ZodOptional<z.ZodString>>;
118
+ mainCount: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
119
+ charset: z.ZodString;
120
+ language: z.ZodString;
121
+ colorScheme: z.ZodString;
122
+ themeColor: z.ZodString;
123
+ doctype: z.ZodString;
124
+ viewport: z.ZodString;
125
+ canonical: z.ZodString;
126
+ favicon: z.ZodString;
127
+ icons: z.ZodArray<z.ZodObject<{
128
+ rel: z.ZodString;
129
+ href: z.ZodString;
130
+ type: z.ZodString;
131
+ sizes: z.ZodString;
132
+ media: z.ZodString;
133
+ }, z.core.$strip>>;
134
+ og: z.ZodObject<{
135
+ title: z.ZodString;
136
+ description: z.ZodString;
137
+ image: z.ZodString;
138
+ url: z.ZodString;
139
+ type: z.ZodString;
140
+ siteName: z.ZodString;
141
+ }, z.core.$strip>;
142
+ twitter: z.ZodObject<{
143
+ card: z.ZodString;
144
+ title: z.ZodString;
145
+ description: z.ZodString;
146
+ image: z.ZodString;
147
+ }, z.core.$strip>;
148
+ tracking: z.ZodObject<{
149
+ tagManager: z.ZodArray<z.ZodObject<{
150
+ provider: z.ZodString;
151
+ id: z.ZodString;
152
+ }, z.core.$strip>>;
153
+ analytics: z.ZodArray<z.ZodObject<{
154
+ provider: z.ZodString;
155
+ id: z.ZodString;
156
+ }, z.core.$strip>>;
157
+ }, z.core.$strip>;
158
+ stack: z.ZodOptional<z.ZodObject<{
159
+ detections: z.ZodArray<z.ZodObject<{
160
+ name: z.ZodString;
161
+ categories: z.ZodArray<z.ZodString>;
162
+ confidence: z.ZodEnum<{
163
+ high: "high";
164
+ medium: "medium";
165
+ low: "low";
166
+ }>;
167
+ evidence: z.ZodArray<z.ZodString>;
168
+ website: z.ZodOptional<z.ZodString>;
169
+ version: z.ZodOptional<z.ZodString>;
170
+ detector: z.ZodOptional<z.ZodLiteral<"flightcheck-v1">>;
171
+ }, z.core.$strip>>;
172
+ }, z.core.$strip>>;
173
+ security: z.ZodOptional<z.ZodObject<{
174
+ secrets: z.ZodArray<z.ZodObject<{
175
+ type: z.ZodString;
176
+ provider: z.ZodString;
177
+ severity: z.ZodEnum<{
178
+ critical: "critical";
179
+ review: "review";
180
+ }>;
181
+ masked: z.ZodString;
182
+ source: z.ZodString;
183
+ }, z.core.$strip>>;
184
+ scannedAssets: z.ZodNumber;
185
+ }, z.core.$strip>>;
186
+ images: z.ZodOptional<z.ZodObject<{
187
+ issues: z.ZodArray<z.ZodObject<{
188
+ id: z.ZodString;
189
+ severity: z.ZodEnum<{
190
+ critical: "critical";
191
+ error: "error";
192
+ warning: "warning";
193
+ review: "review";
194
+ }>;
195
+ message: z.ZodString;
196
+ }, z.core.$strip>>;
197
+ }, z.core.$strip>>;
198
+ a11yStatic: z.ZodOptional<z.ZodObject<{
199
+ issues: z.ZodArray<z.ZodObject<{
200
+ id: z.ZodString;
201
+ severity: z.ZodEnum<{
202
+ critical: "critical";
203
+ error: "error";
204
+ warning: "warning";
205
+ review: "review";
206
+ }>;
207
+ message: z.ZodString;
208
+ }, z.core.$strip>>;
209
+ }, z.core.$strip>>;
210
+ note: z.ZodOptional<z.ZodString>;
211
+ error: z.ZodOptional<z.ZodString>;
212
+ }, z.core.$strip>>;
213
+ export type ReportRecord = z.infer<typeof recordSchema>;
214
+ export declare function parseReport(json: unknown): ReportRecord[];
215
+ type UrlTodoItem = {
216
+ url: string;
217
+ status: number | null;
218
+ template: string;
219
+ missingFields: string[];
220
+ warnings: string[];
221
+ warningKeys: string[];
222
+ tier1IssueKeys: string[];
223
+ imageIssues: {
224
+ id: string;
225
+ severity: string;
226
+ message: string;
227
+ }[];
228
+ a11yStaticIssues: {
229
+ id: string;
230
+ severity: string;
231
+ message: string;
232
+ }[];
233
+ mainLandmarkTodos: string[];
234
+ mainCount?: number | null;
235
+ note?: string;
236
+ error?: string;
237
+ };
238
+ export type RemainingA11yIssue = {
239
+ id: string;
240
+ message: string;
241
+ };
242
+ export type PageFix = {
243
+ item: UrlTodoItem;
244
+ remainingTodos: string[];
245
+ /** SEO fields still missing after site-wide and template coverage is removed. */
246
+ remainingFields: string[];
247
+ /** Best-practice warning keys (template, robots, landmark) still open after coverage. */
248
+ remainingWarningKeys: string[];
249
+ /** Accessibility issues (image alt, heading skip, lang, etc.) still open after coverage. Landmarks live in remainingWarningKeys. */
250
+ remainingA11yIssues: RemainingA11yIssue[];
251
+ };
252
+ export type ReportAnalysis = {
253
+ allItems: UrlTodoItem[];
254
+ totalPages: number;
255
+ redirectOnly: boolean;
256
+ siteWideFields: Set<string>;
257
+ siteWideWarningKeys: Set<string>;
258
+ siteWideTier1Keys: Set<string>;
259
+ siteWideFixTodos: string[];
260
+ templateGroups: Map<string, UrlTodoItem[]>;
261
+ templateFieldMap: Map<string, Set<string>>;
262
+ templateWarningKeyMap: Map<string, Set<string>>;
263
+ templateTier1KeyMap: Map<string, Set<string>>;
264
+ coveredFieldsByTemplate: Map<string, Set<string>>;
265
+ coveredWarningKeysByTemplate: Map<string, Set<string>>;
266
+ coveredTier1KeysByTemplate: Map<string, Set<string>>;
267
+ pageFixes: PageFix[];
268
+ securityPages: Array<{
269
+ url: string;
270
+ secrets: Array<{
271
+ type: string;
272
+ provider: string;
273
+ severity: string;
274
+ masked: string;
275
+ source: string;
276
+ }>;
277
+ }>;
278
+ stackProfile: StackProfile;
279
+ crawlIssueCounts: CrawlIssueCounts;
280
+ };
281
+ export declare function buildReportAnalysis(records: ReportRecord[], tier1?: Tier1ReportData, options?: BuildMarkdownOptions): Promise<ReportAnalysis>;
282
+ export declare function buildMarkdown(inputPath: string, records: ReportRecord[], includeOnlyErrors: boolean, tier1?: Tier1ReportData, options?: BuildMarkdownOptions): Promise<string>;
283
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/analyze/report.ts"],"names":[],"mappings":"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"}