@growth-labs/conformance 0.1.0 → 0.2.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/CHANGELOG.md +23 -0
- package/README.md +51 -6
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/policy.d.ts +21 -2
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +48 -10
- package/dist/policy.js.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +512 -15
- package/dist/runner.js.map +1 -1
- package/dist/schema.d.ts +503 -12
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +42 -1
- package/dist/schema.js.map +1 -1
- package/fixtures/negative/required-negative-fixtures.json +131 -0
- package/fixtures/valid/public-article.json +56 -2
- package/package.json +1 -1
- package/src/index.ts +13 -0
- package/src/policy.ts +70 -11
- package/src/runner.ts +584 -14
- package/src/schema.ts +49 -1
package/dist/schema.d.ts
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const EVIDENCE_SCHEMA_VERSION = "growth-labs.conformance.
|
|
2
|
+
export declare const EVIDENCE_SCHEMA_VERSION = "growth-labs.conformance.v2";
|
|
3
|
+
export declare const REQUIRED_FUNCTIONAL_PROBE_NAMES: readonly ["oauth", "media", "images", "analytics", "embeds", "error-pages"];
|
|
3
4
|
export declare const REQUIRED_NEGATIVE_FIXTURE_CODES: {
|
|
4
5
|
readonly 'csp-unsafe-inline': "security.csp.unsafe_inline";
|
|
6
|
+
readonly 'missing-coop': "security.header.missing";
|
|
7
|
+
readonly 'missing-corp': "security.header.missing";
|
|
8
|
+
readonly 'hsts-below-one-year': "security.hsts.max_age_too_low";
|
|
9
|
+
readonly 'csp-wildcard-default-src': "security.csp.default_src_wildcard";
|
|
10
|
+
readonly 'csp-unsafe-eval': "security.csp.unsafe_eval";
|
|
11
|
+
readonly 'csp-inline-executable-without-nonce-or-hash': "security.csp.inline_executable_without_nonce_or_hash";
|
|
12
|
+
readonly 'conflicting-duplicate-security-header': "security.header.conflicting_values";
|
|
13
|
+
readonly 'missing-functional-probe-receipt': "security.functional_probe.missing";
|
|
14
|
+
readonly 'missing-csp-report-receipt': "security.csp_report.missing";
|
|
15
|
+
readonly 'failed-csp-report-receipt': "security.csp_report.failed";
|
|
5
16
|
readonly 'headers-static-only-while-ssr-missing': "security.headers.static_only_for_ssr";
|
|
6
17
|
readonly 'undeclared-na': "publication.na.undeclared";
|
|
7
18
|
readonly 'stringified-is-accessible-for-free': "structured_data.is_accessible_for_free.stringified";
|
|
@@ -89,6 +100,122 @@ export declare const cacheVariantSchema: z.ZodObject<{
|
|
|
89
100
|
contentClass?: "html" | "markdown" | "feed" | "asset" | undefined;
|
|
90
101
|
vary?: string[] | undefined;
|
|
91
102
|
}>;
|
|
103
|
+
export declare const securityFunctionalProbeReceiptSchema: z.ZodObject<{
|
|
104
|
+
name: z.ZodString;
|
|
105
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
106
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
107
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
108
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, "strip", z.ZodTypeAny, {
|
|
110
|
+
name: string;
|
|
111
|
+
status: "pass" | "fail" | "na";
|
|
112
|
+
capabilityBoundary?: string | undefined;
|
|
113
|
+
evidence?: string | undefined;
|
|
114
|
+
checkedAt?: string | undefined;
|
|
115
|
+
}, {
|
|
116
|
+
name: string;
|
|
117
|
+
status: "pass" | "fail" | "na";
|
|
118
|
+
capabilityBoundary?: string | undefined;
|
|
119
|
+
evidence?: string | undefined;
|
|
120
|
+
checkedAt?: string | undefined;
|
|
121
|
+
}>;
|
|
122
|
+
export declare const cspReportReceiptSchema: z.ZodObject<{
|
|
123
|
+
name: z.ZodString;
|
|
124
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
125
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
126
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
127
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
128
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
129
|
+
}, "strip", z.ZodTypeAny, {
|
|
130
|
+
name: string;
|
|
131
|
+
status: "pass" | "fail" | "na";
|
|
132
|
+
capabilityBoundary?: string | undefined;
|
|
133
|
+
evidence?: string | undefined;
|
|
134
|
+
checkedAt?: string | undefined;
|
|
135
|
+
endpoint?: string | undefined;
|
|
136
|
+
}, {
|
|
137
|
+
name: string;
|
|
138
|
+
status: "pass" | "fail" | "na";
|
|
139
|
+
capabilityBoundary?: string | undefined;
|
|
140
|
+
evidence?: string | undefined;
|
|
141
|
+
checkedAt?: string | undefined;
|
|
142
|
+
endpoint?: string | undefined;
|
|
143
|
+
}>;
|
|
144
|
+
export declare const securityReceiptsSchema: z.ZodDefault<z.ZodObject<{
|
|
145
|
+
functionalProbes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
146
|
+
name: z.ZodString;
|
|
147
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
148
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
149
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
150
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
151
|
+
}, "strip", z.ZodTypeAny, {
|
|
152
|
+
name: string;
|
|
153
|
+
status: "pass" | "fail" | "na";
|
|
154
|
+
capabilityBoundary?: string | undefined;
|
|
155
|
+
evidence?: string | undefined;
|
|
156
|
+
checkedAt?: string | undefined;
|
|
157
|
+
}, {
|
|
158
|
+
name: string;
|
|
159
|
+
status: "pass" | "fail" | "na";
|
|
160
|
+
capabilityBoundary?: string | undefined;
|
|
161
|
+
evidence?: string | undefined;
|
|
162
|
+
checkedAt?: string | undefined;
|
|
163
|
+
}>, "many">>;
|
|
164
|
+
cspReports: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
165
|
+
name: z.ZodString;
|
|
166
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
167
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
168
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
169
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
170
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
171
|
+
}, "strip", z.ZodTypeAny, {
|
|
172
|
+
name: string;
|
|
173
|
+
status: "pass" | "fail" | "na";
|
|
174
|
+
capabilityBoundary?: string | undefined;
|
|
175
|
+
evidence?: string | undefined;
|
|
176
|
+
checkedAt?: string | undefined;
|
|
177
|
+
endpoint?: string | undefined;
|
|
178
|
+
}, {
|
|
179
|
+
name: string;
|
|
180
|
+
status: "pass" | "fail" | "na";
|
|
181
|
+
capabilityBoundary?: string | undefined;
|
|
182
|
+
evidence?: string | undefined;
|
|
183
|
+
checkedAt?: string | undefined;
|
|
184
|
+
endpoint?: string | undefined;
|
|
185
|
+
}>, "many">>;
|
|
186
|
+
}, "strip", z.ZodTypeAny, {
|
|
187
|
+
functionalProbes: {
|
|
188
|
+
name: string;
|
|
189
|
+
status: "pass" | "fail" | "na";
|
|
190
|
+
capabilityBoundary?: string | undefined;
|
|
191
|
+
evidence?: string | undefined;
|
|
192
|
+
checkedAt?: string | undefined;
|
|
193
|
+
}[];
|
|
194
|
+
cspReports: {
|
|
195
|
+
name: string;
|
|
196
|
+
status: "pass" | "fail" | "na";
|
|
197
|
+
capabilityBoundary?: string | undefined;
|
|
198
|
+
evidence?: string | undefined;
|
|
199
|
+
checkedAt?: string | undefined;
|
|
200
|
+
endpoint?: string | undefined;
|
|
201
|
+
}[];
|
|
202
|
+
}, {
|
|
203
|
+
functionalProbes?: {
|
|
204
|
+
name: string;
|
|
205
|
+
status: "pass" | "fail" | "na";
|
|
206
|
+
capabilityBoundary?: string | undefined;
|
|
207
|
+
evidence?: string | undefined;
|
|
208
|
+
checkedAt?: string | undefined;
|
|
209
|
+
}[] | undefined;
|
|
210
|
+
cspReports?: {
|
|
211
|
+
name: string;
|
|
212
|
+
status: "pass" | "fail" | "na";
|
|
213
|
+
capabilityBoundary?: string | undefined;
|
|
214
|
+
evidence?: string | undefined;
|
|
215
|
+
checkedAt?: string | undefined;
|
|
216
|
+
endpoint?: string | undefined;
|
|
217
|
+
}[] | undefined;
|
|
218
|
+
}>>;
|
|
92
219
|
export declare const buildEvidenceSchema: z.ZodObject<{
|
|
93
220
|
commitSha: z.ZodOptional<z.ZodString>;
|
|
94
221
|
artifactId: z.ZodOptional<z.ZodString>;
|
|
@@ -213,6 +340,81 @@ export declare const conformanceFixtureSchema: z.ZodObject<{
|
|
|
213
340
|
contentClass?: "html" | "markdown" | "feed" | "asset" | undefined;
|
|
214
341
|
vary?: string[] | undefined;
|
|
215
342
|
}>, "many">>;
|
|
343
|
+
securityReceipts: z.ZodDefault<z.ZodObject<{
|
|
344
|
+
functionalProbes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
345
|
+
name: z.ZodString;
|
|
346
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
347
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
348
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
349
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
350
|
+
}, "strip", z.ZodTypeAny, {
|
|
351
|
+
name: string;
|
|
352
|
+
status: "pass" | "fail" | "na";
|
|
353
|
+
capabilityBoundary?: string | undefined;
|
|
354
|
+
evidence?: string | undefined;
|
|
355
|
+
checkedAt?: string | undefined;
|
|
356
|
+
}, {
|
|
357
|
+
name: string;
|
|
358
|
+
status: "pass" | "fail" | "na";
|
|
359
|
+
capabilityBoundary?: string | undefined;
|
|
360
|
+
evidence?: string | undefined;
|
|
361
|
+
checkedAt?: string | undefined;
|
|
362
|
+
}>, "many">>;
|
|
363
|
+
cspReports: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
364
|
+
name: z.ZodString;
|
|
365
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
366
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
367
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
368
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
369
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
370
|
+
}, "strip", z.ZodTypeAny, {
|
|
371
|
+
name: string;
|
|
372
|
+
status: "pass" | "fail" | "na";
|
|
373
|
+
capabilityBoundary?: string | undefined;
|
|
374
|
+
evidence?: string | undefined;
|
|
375
|
+
checkedAt?: string | undefined;
|
|
376
|
+
endpoint?: string | undefined;
|
|
377
|
+
}, {
|
|
378
|
+
name: string;
|
|
379
|
+
status: "pass" | "fail" | "na";
|
|
380
|
+
capabilityBoundary?: string | undefined;
|
|
381
|
+
evidence?: string | undefined;
|
|
382
|
+
checkedAt?: string | undefined;
|
|
383
|
+
endpoint?: string | undefined;
|
|
384
|
+
}>, "many">>;
|
|
385
|
+
}, "strip", z.ZodTypeAny, {
|
|
386
|
+
functionalProbes: {
|
|
387
|
+
name: string;
|
|
388
|
+
status: "pass" | "fail" | "na";
|
|
389
|
+
capabilityBoundary?: string | undefined;
|
|
390
|
+
evidence?: string | undefined;
|
|
391
|
+
checkedAt?: string | undefined;
|
|
392
|
+
}[];
|
|
393
|
+
cspReports: {
|
|
394
|
+
name: string;
|
|
395
|
+
status: "pass" | "fail" | "na";
|
|
396
|
+
capabilityBoundary?: string | undefined;
|
|
397
|
+
evidence?: string | undefined;
|
|
398
|
+
checkedAt?: string | undefined;
|
|
399
|
+
endpoint?: string | undefined;
|
|
400
|
+
}[];
|
|
401
|
+
}, {
|
|
402
|
+
functionalProbes?: {
|
|
403
|
+
name: string;
|
|
404
|
+
status: "pass" | "fail" | "na";
|
|
405
|
+
capabilityBoundary?: string | undefined;
|
|
406
|
+
evidence?: string | undefined;
|
|
407
|
+
checkedAt?: string | undefined;
|
|
408
|
+
}[] | undefined;
|
|
409
|
+
cspReports?: {
|
|
410
|
+
name: string;
|
|
411
|
+
status: "pass" | "fail" | "na";
|
|
412
|
+
capabilityBoundary?: string | undefined;
|
|
413
|
+
evidence?: string | undefined;
|
|
414
|
+
checkedAt?: string | undefined;
|
|
415
|
+
endpoint?: string | undefined;
|
|
416
|
+
}[] | undefined;
|
|
417
|
+
}>>;
|
|
216
418
|
buildEvidence: z.ZodOptional<z.ZodObject<{
|
|
217
419
|
commitSha: z.ZodOptional<z.ZodString>;
|
|
218
420
|
artifactId: z.ZodOptional<z.ZodString>;
|
|
@@ -273,6 +475,23 @@ export declare const conformanceFixtureSchema: z.ZodObject<{
|
|
|
273
475
|
vary: string[];
|
|
274
476
|
url?: string | undefined;
|
|
275
477
|
}[];
|
|
478
|
+
securityReceipts: {
|
|
479
|
+
functionalProbes: {
|
|
480
|
+
name: string;
|
|
481
|
+
status: "pass" | "fail" | "na";
|
|
482
|
+
capabilityBoundary?: string | undefined;
|
|
483
|
+
evidence?: string | undefined;
|
|
484
|
+
checkedAt?: string | undefined;
|
|
485
|
+
}[];
|
|
486
|
+
cspReports: {
|
|
487
|
+
name: string;
|
|
488
|
+
status: "pass" | "fail" | "na";
|
|
489
|
+
capabilityBoundary?: string | undefined;
|
|
490
|
+
evidence?: string | undefined;
|
|
491
|
+
checkedAt?: string | undefined;
|
|
492
|
+
endpoint?: string | undefined;
|
|
493
|
+
}[];
|
|
494
|
+
};
|
|
276
495
|
buildEvidence?: {
|
|
277
496
|
packageVersions: Record<string, string>;
|
|
278
497
|
staticHeaderPolicy: boolean;
|
|
@@ -319,6 +538,23 @@ export declare const conformanceFixtureSchema: z.ZodObject<{
|
|
|
319
538
|
contentClass?: "html" | "markdown" | "feed" | "asset" | undefined;
|
|
320
539
|
vary?: string[] | undefined;
|
|
321
540
|
}[] | undefined;
|
|
541
|
+
securityReceipts?: {
|
|
542
|
+
functionalProbes?: {
|
|
543
|
+
name: string;
|
|
544
|
+
status: "pass" | "fail" | "na";
|
|
545
|
+
capabilityBoundary?: string | undefined;
|
|
546
|
+
evidence?: string | undefined;
|
|
547
|
+
checkedAt?: string | undefined;
|
|
548
|
+
}[] | undefined;
|
|
549
|
+
cspReports?: {
|
|
550
|
+
name: string;
|
|
551
|
+
status: "pass" | "fail" | "na";
|
|
552
|
+
capabilityBoundary?: string | undefined;
|
|
553
|
+
evidence?: string | undefined;
|
|
554
|
+
checkedAt?: string | undefined;
|
|
555
|
+
endpoint?: string | undefined;
|
|
556
|
+
}[] | undefined;
|
|
557
|
+
} | undefined;
|
|
322
558
|
buildEvidence?: {
|
|
323
559
|
commitSha?: string | undefined;
|
|
324
560
|
artifactId?: string | undefined;
|
|
@@ -416,7 +652,7 @@ export declare const evidenceSummarySchema: z.ZodObject<{
|
|
|
416
652
|
findings: number;
|
|
417
653
|
}>;
|
|
418
654
|
export declare const siteEvidenceBundleSchema: z.ZodObject<{
|
|
419
|
-
schemaVersion: z.ZodLiteral<"growth-labs.conformance.
|
|
655
|
+
schemaVersion: z.ZodLiteral<"growth-labs.conformance.v2">;
|
|
420
656
|
generatedAt: z.ZodString;
|
|
421
657
|
fixtureId: z.ZodString;
|
|
422
658
|
site: z.ZodString;
|
|
@@ -509,12 +745,104 @@ export declare const siteEvidenceBundleSchema: z.ZodObject<{
|
|
|
509
745
|
evidence?: string | undefined;
|
|
510
746
|
remediation?: string | undefined;
|
|
511
747
|
}>, "many">;
|
|
748
|
+
securityReceipts: z.ZodDefault<z.ZodObject<{
|
|
749
|
+
functionalProbes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
750
|
+
name: z.ZodString;
|
|
751
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
752
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
753
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
754
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
755
|
+
}, "strip", z.ZodTypeAny, {
|
|
756
|
+
name: string;
|
|
757
|
+
status: "pass" | "fail" | "na";
|
|
758
|
+
capabilityBoundary?: string | undefined;
|
|
759
|
+
evidence?: string | undefined;
|
|
760
|
+
checkedAt?: string | undefined;
|
|
761
|
+
}, {
|
|
762
|
+
name: string;
|
|
763
|
+
status: "pass" | "fail" | "na";
|
|
764
|
+
capabilityBoundary?: string | undefined;
|
|
765
|
+
evidence?: string | undefined;
|
|
766
|
+
checkedAt?: string | undefined;
|
|
767
|
+
}>, "many">>;
|
|
768
|
+
cspReports: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
769
|
+
name: z.ZodString;
|
|
770
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
771
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
772
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
773
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
774
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
775
|
+
}, "strip", z.ZodTypeAny, {
|
|
776
|
+
name: string;
|
|
777
|
+
status: "pass" | "fail" | "na";
|
|
778
|
+
capabilityBoundary?: string | undefined;
|
|
779
|
+
evidence?: string | undefined;
|
|
780
|
+
checkedAt?: string | undefined;
|
|
781
|
+
endpoint?: string | undefined;
|
|
782
|
+
}, {
|
|
783
|
+
name: string;
|
|
784
|
+
status: "pass" | "fail" | "na";
|
|
785
|
+
capabilityBoundary?: string | undefined;
|
|
786
|
+
evidence?: string | undefined;
|
|
787
|
+
checkedAt?: string | undefined;
|
|
788
|
+
endpoint?: string | undefined;
|
|
789
|
+
}>, "many">>;
|
|
790
|
+
}, "strip", z.ZodTypeAny, {
|
|
791
|
+
functionalProbes: {
|
|
792
|
+
name: string;
|
|
793
|
+
status: "pass" | "fail" | "na";
|
|
794
|
+
capabilityBoundary?: string | undefined;
|
|
795
|
+
evidence?: string | undefined;
|
|
796
|
+
checkedAt?: string | undefined;
|
|
797
|
+
}[];
|
|
798
|
+
cspReports: {
|
|
799
|
+
name: string;
|
|
800
|
+
status: "pass" | "fail" | "na";
|
|
801
|
+
capabilityBoundary?: string | undefined;
|
|
802
|
+
evidence?: string | undefined;
|
|
803
|
+
checkedAt?: string | undefined;
|
|
804
|
+
endpoint?: string | undefined;
|
|
805
|
+
}[];
|
|
806
|
+
}, {
|
|
807
|
+
functionalProbes?: {
|
|
808
|
+
name: string;
|
|
809
|
+
status: "pass" | "fail" | "na";
|
|
810
|
+
capabilityBoundary?: string | undefined;
|
|
811
|
+
evidence?: string | undefined;
|
|
812
|
+
checkedAt?: string | undefined;
|
|
813
|
+
}[] | undefined;
|
|
814
|
+
cspReports?: {
|
|
815
|
+
name: string;
|
|
816
|
+
status: "pass" | "fail" | "na";
|
|
817
|
+
capabilityBoundary?: string | undefined;
|
|
818
|
+
evidence?: string | undefined;
|
|
819
|
+
checkedAt?: string | undefined;
|
|
820
|
+
endpoint?: string | undefined;
|
|
821
|
+
}[] | undefined;
|
|
822
|
+
}>>;
|
|
512
823
|
}, "strip", z.ZodTypeAny, {
|
|
513
824
|
url: string;
|
|
514
825
|
status: "pass" | "fail";
|
|
515
826
|
generatedAt: string;
|
|
516
827
|
site: string;
|
|
517
828
|
environment: string;
|
|
829
|
+
securityReceipts: {
|
|
830
|
+
functionalProbes: {
|
|
831
|
+
name: string;
|
|
832
|
+
status: "pass" | "fail" | "na";
|
|
833
|
+
capabilityBoundary?: string | undefined;
|
|
834
|
+
evidence?: string | undefined;
|
|
835
|
+
checkedAt?: string | undefined;
|
|
836
|
+
}[];
|
|
837
|
+
cspReports: {
|
|
838
|
+
name: string;
|
|
839
|
+
status: "pass" | "fail" | "na";
|
|
840
|
+
capabilityBoundary?: string | undefined;
|
|
841
|
+
evidence?: string | undefined;
|
|
842
|
+
checkedAt?: string | undefined;
|
|
843
|
+
endpoint?: string | undefined;
|
|
844
|
+
}[];
|
|
845
|
+
};
|
|
518
846
|
findings: {
|
|
519
847
|
code: string;
|
|
520
848
|
message: string;
|
|
@@ -523,7 +851,7 @@ export declare const siteEvidenceBundleSchema: z.ZodObject<{
|
|
|
523
851
|
evidence?: string | undefined;
|
|
524
852
|
remediation?: string | undefined;
|
|
525
853
|
}[];
|
|
526
|
-
schemaVersion: "growth-labs.conformance.
|
|
854
|
+
schemaVersion: "growth-labs.conformance.v2";
|
|
527
855
|
fixtureId: string;
|
|
528
856
|
summary: {
|
|
529
857
|
pass: number;
|
|
@@ -557,7 +885,7 @@ export declare const siteEvidenceBundleSchema: z.ZodObject<{
|
|
|
557
885
|
evidence?: string | undefined;
|
|
558
886
|
remediation?: string | undefined;
|
|
559
887
|
}[];
|
|
560
|
-
schemaVersion: "growth-labs.conformance.
|
|
888
|
+
schemaVersion: "growth-labs.conformance.v2";
|
|
561
889
|
fixtureId: string;
|
|
562
890
|
summary: {
|
|
563
891
|
pass: number;
|
|
@@ -577,9 +905,26 @@ export declare const siteEvidenceBundleSchema: z.ZodObject<{
|
|
|
577
905
|
remediation?: string | undefined;
|
|
578
906
|
}[];
|
|
579
907
|
}[];
|
|
908
|
+
securityReceipts?: {
|
|
909
|
+
functionalProbes?: {
|
|
910
|
+
name: string;
|
|
911
|
+
status: "pass" | "fail" | "na";
|
|
912
|
+
capabilityBoundary?: string | undefined;
|
|
913
|
+
evidence?: string | undefined;
|
|
914
|
+
checkedAt?: string | undefined;
|
|
915
|
+
}[] | undefined;
|
|
916
|
+
cspReports?: {
|
|
917
|
+
name: string;
|
|
918
|
+
status: "pass" | "fail" | "na";
|
|
919
|
+
capabilityBoundary?: string | undefined;
|
|
920
|
+
evidence?: string | undefined;
|
|
921
|
+
checkedAt?: string | undefined;
|
|
922
|
+
endpoint?: string | undefined;
|
|
923
|
+
}[] | undefined;
|
|
924
|
+
} | undefined;
|
|
580
925
|
}>;
|
|
581
926
|
export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
582
|
-
schemaVersion: z.ZodLiteral<"growth-labs.conformance.
|
|
927
|
+
schemaVersion: z.ZodLiteral<"growth-labs.conformance.v2">;
|
|
583
928
|
generatedAt: z.ZodString;
|
|
584
929
|
status: z.ZodEnum<["pass", "fail"]>;
|
|
585
930
|
summary: z.ZodObject<{
|
|
@@ -603,7 +948,7 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
603
948
|
sites: number;
|
|
604
949
|
}>;
|
|
605
950
|
sites: z.ZodArray<z.ZodObject<{
|
|
606
|
-
schemaVersion: z.ZodLiteral<"growth-labs.conformance.
|
|
951
|
+
schemaVersion: z.ZodLiteral<"growth-labs.conformance.v2">;
|
|
607
952
|
generatedAt: z.ZodString;
|
|
608
953
|
fixtureId: z.ZodString;
|
|
609
954
|
site: z.ZodString;
|
|
@@ -696,12 +1041,104 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
696
1041
|
evidence?: string | undefined;
|
|
697
1042
|
remediation?: string | undefined;
|
|
698
1043
|
}>, "many">;
|
|
1044
|
+
securityReceipts: z.ZodDefault<z.ZodObject<{
|
|
1045
|
+
functionalProbes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
1046
|
+
name: z.ZodString;
|
|
1047
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
1048
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
1049
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
1050
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
1051
|
+
}, "strip", z.ZodTypeAny, {
|
|
1052
|
+
name: string;
|
|
1053
|
+
status: "pass" | "fail" | "na";
|
|
1054
|
+
capabilityBoundary?: string | undefined;
|
|
1055
|
+
evidence?: string | undefined;
|
|
1056
|
+
checkedAt?: string | undefined;
|
|
1057
|
+
}, {
|
|
1058
|
+
name: string;
|
|
1059
|
+
status: "pass" | "fail" | "na";
|
|
1060
|
+
capabilityBoundary?: string | undefined;
|
|
1061
|
+
evidence?: string | undefined;
|
|
1062
|
+
checkedAt?: string | undefined;
|
|
1063
|
+
}>, "many">>;
|
|
1064
|
+
cspReports: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
1065
|
+
name: z.ZodString;
|
|
1066
|
+
status: z.ZodEnum<["pass", "fail", "na"]>;
|
|
1067
|
+
checkedAt: z.ZodOptional<z.ZodString>;
|
|
1068
|
+
evidence: z.ZodOptional<z.ZodString>;
|
|
1069
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
1070
|
+
capabilityBoundary: z.ZodOptional<z.ZodString>;
|
|
1071
|
+
}, "strip", z.ZodTypeAny, {
|
|
1072
|
+
name: string;
|
|
1073
|
+
status: "pass" | "fail" | "na";
|
|
1074
|
+
capabilityBoundary?: string | undefined;
|
|
1075
|
+
evidence?: string | undefined;
|
|
1076
|
+
checkedAt?: string | undefined;
|
|
1077
|
+
endpoint?: string | undefined;
|
|
1078
|
+
}, {
|
|
1079
|
+
name: string;
|
|
1080
|
+
status: "pass" | "fail" | "na";
|
|
1081
|
+
capabilityBoundary?: string | undefined;
|
|
1082
|
+
evidence?: string | undefined;
|
|
1083
|
+
checkedAt?: string | undefined;
|
|
1084
|
+
endpoint?: string | undefined;
|
|
1085
|
+
}>, "many">>;
|
|
1086
|
+
}, "strip", z.ZodTypeAny, {
|
|
1087
|
+
functionalProbes: {
|
|
1088
|
+
name: string;
|
|
1089
|
+
status: "pass" | "fail" | "na";
|
|
1090
|
+
capabilityBoundary?: string | undefined;
|
|
1091
|
+
evidence?: string | undefined;
|
|
1092
|
+
checkedAt?: string | undefined;
|
|
1093
|
+
}[];
|
|
1094
|
+
cspReports: {
|
|
1095
|
+
name: string;
|
|
1096
|
+
status: "pass" | "fail" | "na";
|
|
1097
|
+
capabilityBoundary?: string | undefined;
|
|
1098
|
+
evidence?: string | undefined;
|
|
1099
|
+
checkedAt?: string | undefined;
|
|
1100
|
+
endpoint?: string | undefined;
|
|
1101
|
+
}[];
|
|
1102
|
+
}, {
|
|
1103
|
+
functionalProbes?: {
|
|
1104
|
+
name: string;
|
|
1105
|
+
status: "pass" | "fail" | "na";
|
|
1106
|
+
capabilityBoundary?: string | undefined;
|
|
1107
|
+
evidence?: string | undefined;
|
|
1108
|
+
checkedAt?: string | undefined;
|
|
1109
|
+
}[] | undefined;
|
|
1110
|
+
cspReports?: {
|
|
1111
|
+
name: string;
|
|
1112
|
+
status: "pass" | "fail" | "na";
|
|
1113
|
+
capabilityBoundary?: string | undefined;
|
|
1114
|
+
evidence?: string | undefined;
|
|
1115
|
+
checkedAt?: string | undefined;
|
|
1116
|
+
endpoint?: string | undefined;
|
|
1117
|
+
}[] | undefined;
|
|
1118
|
+
}>>;
|
|
699
1119
|
}, "strip", z.ZodTypeAny, {
|
|
700
1120
|
url: string;
|
|
701
1121
|
status: "pass" | "fail";
|
|
702
1122
|
generatedAt: string;
|
|
703
1123
|
site: string;
|
|
704
1124
|
environment: string;
|
|
1125
|
+
securityReceipts: {
|
|
1126
|
+
functionalProbes: {
|
|
1127
|
+
name: string;
|
|
1128
|
+
status: "pass" | "fail" | "na";
|
|
1129
|
+
capabilityBoundary?: string | undefined;
|
|
1130
|
+
evidence?: string | undefined;
|
|
1131
|
+
checkedAt?: string | undefined;
|
|
1132
|
+
}[];
|
|
1133
|
+
cspReports: {
|
|
1134
|
+
name: string;
|
|
1135
|
+
status: "pass" | "fail" | "na";
|
|
1136
|
+
capabilityBoundary?: string | undefined;
|
|
1137
|
+
evidence?: string | undefined;
|
|
1138
|
+
checkedAt?: string | undefined;
|
|
1139
|
+
endpoint?: string | undefined;
|
|
1140
|
+
}[];
|
|
1141
|
+
};
|
|
705
1142
|
findings: {
|
|
706
1143
|
code: string;
|
|
707
1144
|
message: string;
|
|
@@ -710,7 +1147,7 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
710
1147
|
evidence?: string | undefined;
|
|
711
1148
|
remediation?: string | undefined;
|
|
712
1149
|
}[];
|
|
713
|
-
schemaVersion: "growth-labs.conformance.
|
|
1150
|
+
schemaVersion: "growth-labs.conformance.v2";
|
|
714
1151
|
fixtureId: string;
|
|
715
1152
|
summary: {
|
|
716
1153
|
pass: number;
|
|
@@ -744,7 +1181,7 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
744
1181
|
evidence?: string | undefined;
|
|
745
1182
|
remediation?: string | undefined;
|
|
746
1183
|
}[];
|
|
747
|
-
schemaVersion: "growth-labs.conformance.
|
|
1184
|
+
schemaVersion: "growth-labs.conformance.v2";
|
|
748
1185
|
fixtureId: string;
|
|
749
1186
|
summary: {
|
|
750
1187
|
pass: number;
|
|
@@ -764,11 +1201,28 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
764
1201
|
remediation?: string | undefined;
|
|
765
1202
|
}[];
|
|
766
1203
|
}[];
|
|
1204
|
+
securityReceipts?: {
|
|
1205
|
+
functionalProbes?: {
|
|
1206
|
+
name: string;
|
|
1207
|
+
status: "pass" | "fail" | "na";
|
|
1208
|
+
capabilityBoundary?: string | undefined;
|
|
1209
|
+
evidence?: string | undefined;
|
|
1210
|
+
checkedAt?: string | undefined;
|
|
1211
|
+
}[] | undefined;
|
|
1212
|
+
cspReports?: {
|
|
1213
|
+
name: string;
|
|
1214
|
+
status: "pass" | "fail" | "na";
|
|
1215
|
+
capabilityBoundary?: string | undefined;
|
|
1216
|
+
evidence?: string | undefined;
|
|
1217
|
+
checkedAt?: string | undefined;
|
|
1218
|
+
endpoint?: string | undefined;
|
|
1219
|
+
}[] | undefined;
|
|
1220
|
+
} | undefined;
|
|
767
1221
|
}>, "many">;
|
|
768
1222
|
}, "strip", z.ZodTypeAny, {
|
|
769
1223
|
status: "pass" | "fail";
|
|
770
1224
|
generatedAt: string;
|
|
771
|
-
schemaVersion: "growth-labs.conformance.
|
|
1225
|
+
schemaVersion: "growth-labs.conformance.v2";
|
|
772
1226
|
summary: {
|
|
773
1227
|
pass: number;
|
|
774
1228
|
fail: number;
|
|
@@ -782,6 +1236,23 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
782
1236
|
generatedAt: string;
|
|
783
1237
|
site: string;
|
|
784
1238
|
environment: string;
|
|
1239
|
+
securityReceipts: {
|
|
1240
|
+
functionalProbes: {
|
|
1241
|
+
name: string;
|
|
1242
|
+
status: "pass" | "fail" | "na";
|
|
1243
|
+
capabilityBoundary?: string | undefined;
|
|
1244
|
+
evidence?: string | undefined;
|
|
1245
|
+
checkedAt?: string | undefined;
|
|
1246
|
+
}[];
|
|
1247
|
+
cspReports: {
|
|
1248
|
+
name: string;
|
|
1249
|
+
status: "pass" | "fail" | "na";
|
|
1250
|
+
capabilityBoundary?: string | undefined;
|
|
1251
|
+
evidence?: string | undefined;
|
|
1252
|
+
checkedAt?: string | undefined;
|
|
1253
|
+
endpoint?: string | undefined;
|
|
1254
|
+
}[];
|
|
1255
|
+
};
|
|
785
1256
|
findings: {
|
|
786
1257
|
code: string;
|
|
787
1258
|
message: string;
|
|
@@ -790,7 +1261,7 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
790
1261
|
evidence?: string | undefined;
|
|
791
1262
|
remediation?: string | undefined;
|
|
792
1263
|
}[];
|
|
793
|
-
schemaVersion: "growth-labs.conformance.
|
|
1264
|
+
schemaVersion: "growth-labs.conformance.v2";
|
|
794
1265
|
fixtureId: string;
|
|
795
1266
|
summary: {
|
|
796
1267
|
pass: number;
|
|
@@ -814,7 +1285,7 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
814
1285
|
}, {
|
|
815
1286
|
status: "pass" | "fail";
|
|
816
1287
|
generatedAt: string;
|
|
817
|
-
schemaVersion: "growth-labs.conformance.
|
|
1288
|
+
schemaVersion: "growth-labs.conformance.v2";
|
|
818
1289
|
summary: {
|
|
819
1290
|
pass: number;
|
|
820
1291
|
fail: number;
|
|
@@ -836,7 +1307,7 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
836
1307
|
evidence?: string | undefined;
|
|
837
1308
|
remediation?: string | undefined;
|
|
838
1309
|
}[];
|
|
839
|
-
schemaVersion: "growth-labs.conformance.
|
|
1310
|
+
schemaVersion: "growth-labs.conformance.v2";
|
|
840
1311
|
fixtureId: string;
|
|
841
1312
|
summary: {
|
|
842
1313
|
pass: number;
|
|
@@ -856,6 +1327,23 @@ export declare const fleetEvidenceBundleSchema: z.ZodObject<{
|
|
|
856
1327
|
remediation?: string | undefined;
|
|
857
1328
|
}[];
|
|
858
1329
|
}[];
|
|
1330
|
+
securityReceipts?: {
|
|
1331
|
+
functionalProbes?: {
|
|
1332
|
+
name: string;
|
|
1333
|
+
status: "pass" | "fail" | "na";
|
|
1334
|
+
capabilityBoundary?: string | undefined;
|
|
1335
|
+
evidence?: string | undefined;
|
|
1336
|
+
checkedAt?: string | undefined;
|
|
1337
|
+
}[] | undefined;
|
|
1338
|
+
cspReports?: {
|
|
1339
|
+
name: string;
|
|
1340
|
+
status: "pass" | "fail" | "na";
|
|
1341
|
+
capabilityBoundary?: string | undefined;
|
|
1342
|
+
evidence?: string | undefined;
|
|
1343
|
+
checkedAt?: string | undefined;
|
|
1344
|
+
endpoint?: string | undefined;
|
|
1345
|
+
}[] | undefined;
|
|
1346
|
+
} | undefined;
|
|
859
1347
|
}[];
|
|
860
1348
|
}>;
|
|
861
1349
|
export type Audience = z.infer<typeof audienceSchema>;
|
|
@@ -864,6 +1352,9 @@ export type HeaderMap = z.infer<typeof headerMapSchema>;
|
|
|
864
1352
|
export type SurfaceResponse = z.infer<typeof surfaceResponseSchema>;
|
|
865
1353
|
export type PublicationSurfaceEvidence = z.infer<typeof publicationSurfaceSchema>;
|
|
866
1354
|
export type CacheVariant = z.infer<typeof cacheVariantSchema>;
|
|
1355
|
+
export type SecurityFunctionalProbeReceipt = z.infer<typeof securityFunctionalProbeReceiptSchema>;
|
|
1356
|
+
export type CspReportReceipt = z.infer<typeof cspReportReceiptSchema>;
|
|
1357
|
+
export type SecurityReceipts = z.infer<typeof securityReceiptsSchema>;
|
|
867
1358
|
export type BuildEvidence = z.infer<typeof buildEvidenceSchema>;
|
|
868
1359
|
export type ConformanceFixtureInput = z.input<typeof conformanceFixtureSchema>;
|
|
869
1360
|
export type ConformanceFixture = z.infer<typeof conformanceFixtureSchema>;
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,uBAAuB,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|