@salesforce/storefront-next-dev 1.4.0-alpha.1 → 1.4.1-alpha.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 (136) hide show
  1. package/README.md +13 -2
  2. package/dist/assets.js +25 -0
  3. package/dist/audit/catalog/categories/best-practices/CATEGORY.md +21 -0
  4. package/dist/audit/catalog/categories/best-practices/rules/commerce-api-client.md +20 -0
  5. package/dist/audit/catalog/categories/best-practices/rules/error-boundaries.md +19 -0
  6. package/dist/audit/catalog/categories/best-practices/rules/production-integrations.md +20 -0
  7. package/dist/audit/catalog/categories/best-practices/rules/route-revalidation.md +19 -0
  8. package/dist/audit/catalog/categories/best-practices/rules/server-data-loading.md +19 -0
  9. package/dist/audit/catalog/categories/performance/CATEGORY.md +18 -0
  10. package/dist/audit/catalog/categories/performance/rules/app-config-size.js +15 -0
  11. package/dist/audit/catalog/categories/performance/rules/app-config-size.md +22 -0
  12. package/dist/audit/catalog/categories/performance/rules/cache-control.js +59 -0
  13. package/dist/audit/catalog/categories/performance/rules/cache-control.md +20 -0
  14. package/dist/audit/catalog/categories/performance/rules/cls-budget.js +13 -0
  15. package/dist/audit/catalog/categories/performance/rules/cls-budget.md +20 -0
  16. package/dist/audit/catalog/categories/performance/rules/content-encoding.js +35 -0
  17. package/dist/audit/catalog/categories/performance/rules/content-encoding.md +20 -0
  18. package/dist/audit/catalog/categories/performance/rules/dom-size.js +18 -0
  19. package/dist/audit/catalog/categories/performance/rules/dom-size.md +22 -0
  20. package/dist/audit/catalog/categories/performance/rules/html-document-size.js +15 -0
  21. package/dist/audit/catalog/categories/performance/rules/html-document-size.md +20 -0
  22. package/dist/audit/catalog/categories/performance/rules/image-dimensions.js +141 -0
  23. package/dist/audit/catalog/categories/performance/rules/image-dimensions.md +22 -0
  24. package/dist/audit/catalog/categories/performance/rules/image-transformation.js +117 -0
  25. package/dist/audit/catalog/categories/performance/rules/image-transformation.md +22 -0
  26. package/dist/audit/catalog/categories/performance/rules/javascript-size.js +126 -0
  27. package/dist/audit/catalog/categories/performance/rules/javascript-size.md +20 -0
  28. package/dist/audit/catalog/categories/performance/rules/large-images.js +187 -0
  29. package/dist/audit/catalog/categories/performance/rules/large-images.md +22 -0
  30. package/dist/audit/catalog/categories/performance/rules/lcp-budget.js +13 -0
  31. package/dist/audit/catalog/categories/performance/rules/lcp-budget.md +20 -0
  32. package/dist/audit/catalog/categories/performance/rules/lcp-image-priority.js +227 -0
  33. package/dist/audit/catalog/categories/performance/rules/lcp-image-priority.md +27 -0
  34. package/dist/audit/catalog/categories/performance/rules/page-data-size.js +15 -0
  35. package/dist/audit/catalog/categories/performance/rules/page-data-size.md +22 -0
  36. package/dist/audit/catalog/categories/performance/rules/reduce-javascript-on-load.js +97 -0
  37. package/dist/audit/catalog/categories/performance/rules/reduce-javascript-on-load.md +73 -0
  38. package/dist/audit/catalog/categories/performance/rules/render-blocking-font-size.js +201 -0
  39. package/dist/audit/catalog/categories/performance/rules/render-blocking-font-size.md +20 -0
  40. package/dist/audit/catalog/categories/performance/rules/server-request-waterfall.md +85 -0
  41. package/dist/audit/catalog/categories/performance/rules/tbt-budget.js +13 -0
  42. package/dist/audit/catalog/categories/performance/rules/tbt-budget.md +20 -0
  43. package/dist/audit/catalog/categories/performance/rules/third-party-fonts.js +265 -0
  44. package/dist/audit/catalog/categories/performance/rules/third-party-fonts.md +20 -0
  45. package/dist/audit/catalog/categories/performance/rules/ttfb-budget.js +17 -0
  46. package/dist/audit/catalog/categories/performance/rules/ttfb-budget.md +20 -0
  47. package/dist/audit/catalog/categories/security/CATEGORY.md +17 -0
  48. package/dist/audit/catalog/categories/security/rules/browser-hardening-headers.js +37 -0
  49. package/dist/audit/catalog/categories/security/rules/browser-hardening-headers.md +20 -0
  50. package/dist/audit/catalog/categories/security/rules/content-security-policy.js +40 -0
  51. package/dist/audit/catalog/categories/security/rules/content-security-policy.md +20 -0
  52. package/dist/audit/catalog/categories/security/rules/csp-runtime-compatibility.md +24 -0
  53. package/dist/audit/catalog/categories/security/rules/dependency-vulnerabilities.md +19 -0
  54. package/dist/audit/catalog/categories/security/rules/dynamic-code-execution.md +19 -0
  55. package/dist/audit/catalog/categories/security/rules/hardcoded-credentials.md +19 -0
  56. package/dist/audit/catalog/categories/security/rules/html-config-secrets.js +46 -0
  57. package/dist/audit/catalog/categories/security/rules/html-config-secrets.md +22 -0
  58. package/dist/audit/catalog/categories/security/rules/protected-route-authorization.md +19 -0
  59. package/dist/audit/catalog/categories/security/rules/public-client-secrets.md +20 -0
  60. package/dist/audit/catalog/categories/security/rules/raw-html-sinks.md +20 -0
  61. package/dist/audit/catalog/categories/security/rules/strict-transport-security.js +183 -0
  62. package/dist/audit/catalog/categories/security/rules/strict-transport-security.md +24 -0
  63. package/dist/audit/catalog/categories/seo/CATEGORY.md +17 -0
  64. package/dist/audit/catalog/categories/seo/rules/canonical-url.md +20 -0
  65. package/dist/audit/catalog/categories/seo/rules/locale-alternates.md +19 -0
  66. package/dist/audit/catalog/categories/seo/rules/meta-description.md +19 -0
  67. package/dist/audit/catalog/categories/seo/rules/page-title.md +19 -0
  68. package/dist/audit/catalog/categories/seo/rules/robots-indexing.md +20 -0
  69. package/dist/audit/catalog/categories/seo/rules/structured-data.md +19 -0
  70. package/dist/audit/instructions/evaluate-rule.md +42 -0
  71. package/dist/audit/schemas/audit-result.schema.json +1237 -0
  72. package/dist/audit/ui/assets/banner-brand-default-CDRB3_S0.png +0 -0
  73. package/dist/audit/ui/assets/banner-group-public-default-BGRJzVY8.png +0 -0
  74. package/dist/audit/ui/assets/banner-user-default-BW81Ba3z.png +0 -0
  75. package/dist/audit/ui/assets/bg-info@2x-CzpP0vaE.png +0 -0
  76. package/dist/audit/ui/assets/einstein-figure-B1xFOo8O.svg +1 -0
  77. package/dist/audit/ui/assets/group_avatar_160-CrxVHlYA.png +0 -0
  78. package/dist/audit/ui/assets/group_avatar_200-CSLS8I0r.png +0 -0
  79. package/dist/audit/ui/assets/index-BKCWlO9b.css +1 -0
  80. package/dist/audit/ui/assets/index-CUPt8e4A.js +44 -0
  81. package/dist/audit/ui/assets/profile_avatar_160-CtQTUBo0.png +0 -0
  82. package/dist/audit/ui/assets/profile_avatar_200-DAztxshF.png +0 -0
  83. package/dist/audit/ui/assets/symbols-BRmpfDbO.svg +1 -0
  84. package/dist/audit/ui/assets/symbols-D0Ne6690.svg +1 -0
  85. package/dist/audit/ui/einstein.png +0 -0
  86. package/dist/audit/ui/index.html +13 -0
  87. package/dist/audit.js +1896 -0
  88. package/dist/cartridge-services/index.d.ts +5 -0
  89. package/dist/cartridge-services/index.d.ts.map +1 -1
  90. package/dist/cartridge-services/index.js +94 -7
  91. package/dist/cartridge-services/index.js.map +1 -1
  92. package/dist/catalog.js +89 -0
  93. package/dist/commands/audit/catalog.js +27 -0
  94. package/dist/commands/audit/finalize.js +42 -0
  95. package/dist/commands/audit/prepare.js +84 -0
  96. package/dist/commands/audit/progress.js +51 -0
  97. package/dist/commands/audit/serve.js +63 -0
  98. package/dist/commands/config/aggregate-extensions.js +1 -0
  99. package/dist/commands/create-bundle.js +2 -1
  100. package/dist/commands/create-instructions.js +1 -0
  101. package/dist/commands/create-storefront.js +1 -0
  102. package/dist/commands/deploy-cartridge.js +11 -3
  103. package/dist/commands/dev.js +2 -0
  104. package/dist/commands/extensions/create.js +1 -0
  105. package/dist/commands/extensions/install.js +1 -0
  106. package/dist/commands/extensions/list.js +1 -0
  107. package/dist/commands/extensions/remove.js +1 -0
  108. package/dist/commands/generate-cartridge.js +49 -5
  109. package/dist/commands/locales/aggregate-extensions.js +1 -0
  110. package/dist/commands/prepare-local.js +1 -0
  111. package/dist/commands/preview.js +2 -0
  112. package/dist/commands/push.js +3 -1
  113. package/dist/commands/validate-cartridge.js +13 -4
  114. package/dist/config.js +13 -2
  115. package/dist/document-size.js +231 -0
  116. package/dist/events.js +688 -0
  117. package/dist/flags2.js +34 -0
  118. package/dist/generate-cartridge.js +41 -6
  119. package/dist/har.js +205 -0
  120. package/dist/images.js +146 -0
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/live.js +277 -0
  123. package/dist/logger.js +1 -4
  124. package/dist/measured-run.js +91 -0
  125. package/dist/metric-budget.js +125 -0
  126. package/dist/mrt/ssr.mjs +19 -19
  127. package/dist/mrt/ssr.mjs.map +1 -1
  128. package/dist/mrt/streamingHandler.mjs +26 -26
  129. package/dist/mrt/streamingHandler.mjs.map +1 -1
  130. package/dist/package.js +5 -0
  131. package/dist/sanitize.js +185 -0
  132. package/dist/schema.js +121 -0
  133. package/dist/server.js +8 -60
  134. package/dist/server2.js +185 -0
  135. package/dist/ts-import.js +57 -0
  136. package/package.json +21 -4
@@ -0,0 +1,1237 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "type": "string",
7
+ "const": "1.0"
8
+ },
9
+ "run": {
10
+ "type": "object",
11
+ "properties": {
12
+ "id": {
13
+ "type": "string"
14
+ },
15
+ "generatedAt": {
16
+ "type": "string"
17
+ },
18
+ "toolVersion": {
19
+ "type": "string"
20
+ }
21
+ },
22
+ "required": [
23
+ "id",
24
+ "generatedAt",
25
+ "toolVersion"
26
+ ],
27
+ "additionalProperties": false
28
+ },
29
+ "project": {
30
+ "type": "object",
31
+ "properties": {
32
+ "name": {
33
+ "type": "string"
34
+ }
35
+ },
36
+ "additionalProperties": false
37
+ },
38
+ "pages": {
39
+ "type": "array",
40
+ "items": {
41
+ "type": "object",
42
+ "properties": {
43
+ "label": {
44
+ "type": "string"
45
+ },
46
+ "url": {
47
+ "type": "string"
48
+ },
49
+ "playhouse": {
50
+ "type": "object",
51
+ "properties": {
52
+ "archiveDir": {
53
+ "type": "string"
54
+ },
55
+ "version": {
56
+ "type": "string"
57
+ },
58
+ "lighthouseVersion": {
59
+ "type": "string"
60
+ },
61
+ "artifacts": {
62
+ "type": "object",
63
+ "propertyNames": {
64
+ "type": "string"
65
+ },
66
+ "additionalProperties": {
67
+ "$ref": "#/$defs/__schema0"
68
+ }
69
+ }
70
+ },
71
+ "required": [
72
+ "archiveDir",
73
+ "version",
74
+ "lighthouseVersion",
75
+ "artifacts"
76
+ ],
77
+ "additionalProperties": false
78
+ }
79
+ },
80
+ "required": [
81
+ "label",
82
+ "url",
83
+ "playhouse"
84
+ ],
85
+ "additionalProperties": false
86
+ }
87
+ },
88
+ "catalog": {
89
+ "type": "object",
90
+ "properties": {
91
+ "categories": {
92
+ "type": "array",
93
+ "items": {
94
+ "type": "object",
95
+ "properties": {
96
+ "id": {
97
+ "type": "string"
98
+ },
99
+ "title": {
100
+ "type": "string"
101
+ },
102
+ "ruleIds": {
103
+ "type": "array",
104
+ "items": {
105
+ "type": "string"
106
+ }
107
+ }
108
+ },
109
+ "required": [
110
+ "id",
111
+ "title",
112
+ "ruleIds"
113
+ ],
114
+ "additionalProperties": false
115
+ }
116
+ },
117
+ "ruleIds": {
118
+ "type": "array",
119
+ "items": {
120
+ "type": "string"
121
+ }
122
+ }
123
+ },
124
+ "required": [
125
+ "categories",
126
+ "ruleIds"
127
+ ],
128
+ "additionalProperties": false
129
+ },
130
+ "evaluations": {
131
+ "type": "array",
132
+ "items": {
133
+ "type": "object",
134
+ "properties": {
135
+ "ruleId": {
136
+ "type": "string"
137
+ },
138
+ "disposition": {
139
+ "type": "string",
140
+ "enum": [
141
+ "pass",
142
+ "finding",
143
+ "not-applicable",
144
+ "not-verified"
145
+ ]
146
+ },
147
+ "title": {
148
+ "type": "string"
149
+ },
150
+ "description": {
151
+ "type": "string"
152
+ },
153
+ "severity": {
154
+ "type": "string",
155
+ "enum": [
156
+ "critical",
157
+ "high",
158
+ "medium",
159
+ "low",
160
+ "info"
161
+ ]
162
+ },
163
+ "summary": {
164
+ "type": "string"
165
+ },
166
+ "remediation": {
167
+ "type": "string"
168
+ },
169
+ "evidence": {
170
+ "type": "array",
171
+ "items": {
172
+ "oneOf": [
173
+ {
174
+ "type": "object",
175
+ "properties": {
176
+ "type": {
177
+ "type": "string",
178
+ "const": "source"
179
+ },
180
+ "file": {
181
+ "type": "string"
182
+ },
183
+ "line": {
184
+ "type": "integer",
185
+ "exclusiveMinimum": 0,
186
+ "maximum": 9007199254740991
187
+ },
188
+ "excerpt": {
189
+ "type": "string"
190
+ }
191
+ },
192
+ "required": [
193
+ "type",
194
+ "file"
195
+ ],
196
+ "additionalProperties": false
197
+ },
198
+ {
199
+ "type": "object",
200
+ "properties": {
201
+ "type": {
202
+ "type": "string",
203
+ "const": "playhouse"
204
+ },
205
+ "page": {
206
+ "type": "string"
207
+ },
208
+ "artifact": {
209
+ "type": "string"
210
+ },
211
+ "pointer": {
212
+ "type": "string"
213
+ },
214
+ "value": {
215
+ "anyOf": [
216
+ {
217
+ "type": "string"
218
+ },
219
+ {
220
+ "type": "number"
221
+ },
222
+ {
223
+ "type": "boolean"
224
+ }
225
+ ]
226
+ }
227
+ },
228
+ "required": [
229
+ "type",
230
+ "page",
231
+ "artifact"
232
+ ],
233
+ "additionalProperties": false
234
+ },
235
+ {
236
+ "type": "object",
237
+ "properties": {
238
+ "type": {
239
+ "type": "string",
240
+ "const": "manual"
241
+ },
242
+ "description": {
243
+ "type": "string"
244
+ },
245
+ "location": {
246
+ "type": "string"
247
+ }
248
+ },
249
+ "required": [
250
+ "type",
251
+ "description"
252
+ ],
253
+ "additionalProperties": false
254
+ }
255
+ ]
256
+ }
257
+ },
258
+ "method": {
259
+ "type": "string",
260
+ "enum": [
261
+ "script",
262
+ "ai"
263
+ ]
264
+ },
265
+ "waterfall": {
266
+ "type": "object",
267
+ "properties": {
268
+ "pages": {
269
+ "type": "array",
270
+ "items": {
271
+ "type": "object",
272
+ "properties": {
273
+ "page": {
274
+ "type": "string"
275
+ },
276
+ "route": {
277
+ "type": "string"
278
+ },
279
+ "summary": {
280
+ "type": "string"
281
+ },
282
+ "steps": {
283
+ "minItems": 1,
284
+ "maxItems": 60,
285
+ "type": "array",
286
+ "items": {
287
+ "type": "object",
288
+ "properties": {
289
+ "id": {
290
+ "type": "string",
291
+ "pattern": "^[a-z0-9-]+$"
292
+ },
293
+ "kind": {
294
+ "type": "string",
295
+ "enum": [
296
+ "middleware",
297
+ "loader",
298
+ "api",
299
+ "render"
300
+ ]
301
+ },
302
+ "label": {
303
+ "type": "string",
304
+ "minLength": 1
305
+ },
306
+ "service": {
307
+ "type": "string",
308
+ "enum": [
309
+ "scapi",
310
+ "slas",
311
+ "ocapi",
312
+ "einstein",
313
+ "data-store",
314
+ "other"
315
+ ]
316
+ },
317
+ "source": {
318
+ "type": "object",
319
+ "properties": {
320
+ "file": {
321
+ "type": "string"
322
+ },
323
+ "line": {
324
+ "type": "integer",
325
+ "exclusiveMinimum": 0,
326
+ "maximum": 9007199254740991
327
+ }
328
+ },
329
+ "required": [
330
+ "file"
331
+ ],
332
+ "additionalProperties": false
333
+ },
334
+ "after": {
335
+ "default": [],
336
+ "type": "array",
337
+ "items": {
338
+ "type": "string"
339
+ }
340
+ },
341
+ "blocking": {
342
+ "type": "boolean"
343
+ },
344
+ "conditional": {
345
+ "type": "string"
346
+ },
347
+ "note": {
348
+ "type": "string"
349
+ },
350
+ "critical": {
351
+ "type": "boolean"
352
+ },
353
+ "opportunity": {
354
+ "type": "string",
355
+ "enum": [
356
+ "parallelize",
357
+ "scapi-hook",
358
+ "stream"
359
+ ]
360
+ }
361
+ },
362
+ "required": [
363
+ "id",
364
+ "kind",
365
+ "label",
366
+ "source",
367
+ "after",
368
+ "blocking"
369
+ ],
370
+ "additionalProperties": false
371
+ }
372
+ }
373
+ },
374
+ "required": [
375
+ "page",
376
+ "route",
377
+ "summary",
378
+ "steps"
379
+ ],
380
+ "additionalProperties": false
381
+ }
382
+ }
383
+ },
384
+ "required": [
385
+ "pages"
386
+ ],
387
+ "additionalProperties": false
388
+ },
389
+ "recommendations": {
390
+ "maxItems": 30,
391
+ "type": "array",
392
+ "items": {
393
+ "type": "object",
394
+ "properties": {
395
+ "pages": {
396
+ "minItems": 1,
397
+ "type": "array",
398
+ "items": {
399
+ "type": "string"
400
+ }
401
+ },
402
+ "title": {
403
+ "type": "string",
404
+ "minLength": 1,
405
+ "maxLength": 140
406
+ },
407
+ "change": {
408
+ "type": "string",
409
+ "enum": [
410
+ "lazy-component",
411
+ "dynamic-import",
412
+ "narrower-import",
413
+ "replace",
414
+ "remove"
415
+ ]
416
+ },
417
+ "target": {
418
+ "type": "string",
419
+ "minLength": 1
420
+ },
421
+ "trigger": {
422
+ "type": "string",
423
+ "enum": [
424
+ "interaction",
425
+ "visible",
426
+ "navigation",
427
+ "idle"
428
+ ]
429
+ },
430
+ "how": {
431
+ "type": "string",
432
+ "minLength": 1,
433
+ "maxLength": 1200
434
+ },
435
+ "files": {
436
+ "minItems": 1,
437
+ "maxItems": 10,
438
+ "type": "array",
439
+ "items": {
440
+ "type": "object",
441
+ "properties": {
442
+ "file": {
443
+ "type": "string"
444
+ },
445
+ "line": {
446
+ "type": "integer",
447
+ "exclusiveMinimum": 0,
448
+ "maximum": 9007199254740991
449
+ }
450
+ },
451
+ "required": [
452
+ "file"
453
+ ],
454
+ "additionalProperties": false
455
+ }
456
+ },
457
+ "savings": {
458
+ "type": "array",
459
+ "items": {
460
+ "type": "object",
461
+ "properties": {
462
+ "page": {
463
+ "type": "string"
464
+ },
465
+ "bytes": {
466
+ "type": "integer",
467
+ "minimum": 0,
468
+ "maximum": 9007199254740991
469
+ },
470
+ "upTo": {
471
+ "type": "boolean"
472
+ }
473
+ },
474
+ "required": [
475
+ "page",
476
+ "bytes",
477
+ "upTo"
478
+ ],
479
+ "additionalProperties": false
480
+ }
481
+ }
482
+ },
483
+ "required": [
484
+ "pages",
485
+ "title",
486
+ "change",
487
+ "target",
488
+ "how",
489
+ "files"
490
+ ],
491
+ "additionalProperties": false
492
+ }
493
+ }
494
+ },
495
+ "required": [
496
+ "ruleId",
497
+ "disposition",
498
+ "title",
499
+ "summary",
500
+ "evidence"
501
+ ],
502
+ "additionalProperties": false
503
+ }
504
+ },
505
+ "observations": {
506
+ "default": [],
507
+ "type": "array",
508
+ "items": {
509
+ "type": "object",
510
+ "properties": {
511
+ "title": {
512
+ "type": "string"
513
+ },
514
+ "category": {
515
+ "type": "string"
516
+ },
517
+ "summary": {
518
+ "type": "string"
519
+ },
520
+ "evidence": {
521
+ "type": "array",
522
+ "items": {
523
+ "oneOf": [
524
+ {
525
+ "type": "object",
526
+ "properties": {
527
+ "type": {
528
+ "type": "string",
529
+ "const": "source"
530
+ },
531
+ "file": {
532
+ "type": "string"
533
+ },
534
+ "line": {
535
+ "type": "integer",
536
+ "exclusiveMinimum": 0,
537
+ "maximum": 9007199254740991
538
+ },
539
+ "excerpt": {
540
+ "type": "string"
541
+ }
542
+ },
543
+ "required": [
544
+ "type",
545
+ "file"
546
+ ],
547
+ "additionalProperties": false
548
+ },
549
+ {
550
+ "type": "object",
551
+ "properties": {
552
+ "type": {
553
+ "type": "string",
554
+ "const": "playhouse"
555
+ },
556
+ "page": {
557
+ "type": "string"
558
+ },
559
+ "artifact": {
560
+ "type": "string"
561
+ },
562
+ "pointer": {
563
+ "type": "string"
564
+ },
565
+ "value": {
566
+ "anyOf": [
567
+ {
568
+ "type": "string"
569
+ },
570
+ {
571
+ "type": "number"
572
+ },
573
+ {
574
+ "type": "boolean"
575
+ }
576
+ ]
577
+ }
578
+ },
579
+ "required": [
580
+ "type",
581
+ "page",
582
+ "artifact"
583
+ ],
584
+ "additionalProperties": false
585
+ },
586
+ {
587
+ "type": "object",
588
+ "properties": {
589
+ "type": {
590
+ "type": "string",
591
+ "const": "manual"
592
+ },
593
+ "description": {
594
+ "type": "string"
595
+ },
596
+ "location": {
597
+ "type": "string"
598
+ }
599
+ },
600
+ "required": [
601
+ "type",
602
+ "description"
603
+ ],
604
+ "additionalProperties": false
605
+ }
606
+ ]
607
+ }
608
+ }
609
+ },
610
+ "required": [
611
+ "title",
612
+ "summary",
613
+ "evidence"
614
+ ],
615
+ "additionalProperties": false
616
+ }
617
+ },
618
+ "coverage": {
619
+ "type": "array",
620
+ "items": {
621
+ "type": "object",
622
+ "properties": {
623
+ "category": {
624
+ "type": "string"
625
+ },
626
+ "ruleId": {
627
+ "type": "string"
628
+ },
629
+ "page": {
630
+ "type": "string"
631
+ },
632
+ "status": {
633
+ "type": "string",
634
+ "enum": [
635
+ "covered",
636
+ "partial",
637
+ "missing"
638
+ ]
639
+ },
640
+ "note": {
641
+ "type": "string"
642
+ }
643
+ },
644
+ "required": [
645
+ "status",
646
+ "note"
647
+ ],
648
+ "additionalProperties": false
649
+ }
650
+ },
651
+ "summary": {
652
+ "type": "object",
653
+ "properties": {
654
+ "guidance": {
655
+ "type": "string",
656
+ "enum": [
657
+ "go",
658
+ "go-with-fixes",
659
+ "no-go"
660
+ ]
661
+ },
662
+ "narrative": {
663
+ "type": "string"
664
+ },
665
+ "highlights": {
666
+ "default": [],
667
+ "maxItems": 6,
668
+ "type": "array",
669
+ "items": {
670
+ "type": "string"
671
+ }
672
+ }
673
+ },
674
+ "required": [
675
+ "guidance",
676
+ "narrative",
677
+ "highlights"
678
+ ],
679
+ "additionalProperties": false
680
+ },
681
+ "bundle": {
682
+ "type": "object",
683
+ "properties": {
684
+ "schemaVersion": {
685
+ "type": "number",
686
+ "const": 2
687
+ },
688
+ "status": {
689
+ "type": "string",
690
+ "enum": [
691
+ "complete",
692
+ "partial",
693
+ "unavailable"
694
+ ]
695
+ },
696
+ "notes": {
697
+ "type": "array",
698
+ "items": {
699
+ "type": "string"
700
+ }
701
+ },
702
+ "build": {
703
+ "anyOf": [
704
+ {
705
+ "type": "object",
706
+ "properties": {
707
+ "packageManager": {
708
+ "type": "string"
709
+ },
710
+ "durationMs": {
711
+ "type": "object",
712
+ "properties": {
713
+ "analyze": {
714
+ "anyOf": [
715
+ {
716
+ "type": "number"
717
+ },
718
+ {
719
+ "type": "null"
720
+ }
721
+ ]
722
+ },
723
+ "plain": {
724
+ "anyOf": [
725
+ {
726
+ "type": "number"
727
+ },
728
+ {
729
+ "type": "null"
730
+ }
731
+ ]
732
+ }
733
+ },
734
+ "required": [
735
+ "analyze",
736
+ "plain"
737
+ ],
738
+ "additionalProperties": false
739
+ },
740
+ "visualizer": {
741
+ "anyOf": [
742
+ {
743
+ "type": "string"
744
+ },
745
+ {
746
+ "type": "null"
747
+ }
748
+ ]
749
+ },
750
+ "chunks": {
751
+ "type": "integer",
752
+ "minimum": 0,
753
+ "maximum": 9007199254740991
754
+ },
755
+ "withMaps": {
756
+ "type": "integer",
757
+ "minimum": 0,
758
+ "maximum": 9007199254740991
759
+ },
760
+ "bytes": {
761
+ "type": "integer",
762
+ "minimum": 0,
763
+ "maximum": 9007199254740991
764
+ },
765
+ "attribution": {
766
+ "type": "object",
767
+ "properties": {
768
+ "modules": {
769
+ "type": "integer",
770
+ "minimum": 0,
771
+ "maximum": 9007199254740991
772
+ },
773
+ "unmappedModules": {
774
+ "type": "integer",
775
+ "minimum": 0,
776
+ "maximum": 9007199254740991
777
+ },
778
+ "preloadLists": {
779
+ "type": "integer",
780
+ "minimum": 0,
781
+ "maximum": 9007199254740991
782
+ },
783
+ "routerManifest": {
784
+ "type": "integer",
785
+ "minimum": 0,
786
+ "maximum": 9007199254740991
787
+ },
788
+ "glue": {
789
+ "type": "integer",
790
+ "minimum": 0,
791
+ "maximum": 9007199254740991
792
+ }
793
+ },
794
+ "required": [
795
+ "modules",
796
+ "unmappedModules",
797
+ "preloadLists",
798
+ "routerManifest",
799
+ "glue"
800
+ ],
801
+ "additionalProperties": false
802
+ }
803
+ },
804
+ "required": [
805
+ "packageManager",
806
+ "durationMs",
807
+ "visualizer",
808
+ "chunks",
809
+ "withMaps",
810
+ "bytes",
811
+ "attribution"
812
+ ],
813
+ "additionalProperties": false
814
+ },
815
+ {
816
+ "type": "null"
817
+ }
818
+ ]
819
+ },
820
+ "pages": {
821
+ "type": "array",
822
+ "items": {
823
+ "type": "object",
824
+ "properties": {
825
+ "page": {
826
+ "type": "string"
827
+ },
828
+ "runId": {
829
+ "type": "string"
830
+ },
831
+ "lighthouseArtifact": {
832
+ "type": "string"
833
+ },
834
+ "observedLoadMs": {
835
+ "anyOf": [
836
+ {
837
+ "type": "number"
838
+ },
839
+ {
840
+ "type": "null"
841
+ }
842
+ ]
843
+ },
844
+ "live": {
845
+ "type": "object",
846
+ "properties": {
847
+ "scripts": {
848
+ "type": "integer",
849
+ "minimum": 0,
850
+ "maximum": 9007199254740991
851
+ },
852
+ "decodedBytes": {
853
+ "type": "integer",
854
+ "minimum": 0,
855
+ "maximum": 9007199254740991
856
+ },
857
+ "transferBytes": {
858
+ "type": "integer",
859
+ "minimum": 0,
860
+ "maximum": 9007199254740991
861
+ },
862
+ "beforeLoad": {
863
+ "type": "integer",
864
+ "minimum": 0,
865
+ "maximum": 9007199254740991
866
+ },
867
+ "beforeLoadDecodedBytes": {
868
+ "type": "integer",
869
+ "minimum": 0,
870
+ "maximum": 9007199254740991
871
+ },
872
+ "beforeLoadTransferBytes": {
873
+ "type": "integer",
874
+ "minimum": 0,
875
+ "maximum": 9007199254740991
876
+ }
877
+ },
878
+ "required": [
879
+ "scripts",
880
+ "decodedBytes",
881
+ "transferBytes",
882
+ "beforeLoad",
883
+ "beforeLoadDecodedBytes",
884
+ "beforeLoadTransferBytes"
885
+ ],
886
+ "additionalProperties": false
887
+ },
888
+ "route": {
889
+ "anyOf": [
890
+ {
891
+ "type": "object",
892
+ "properties": {
893
+ "ids": {
894
+ "minItems": 1,
895
+ "type": "array",
896
+ "items": {
897
+ "type": "string"
898
+ }
899
+ },
900
+ "source": {
901
+ "type": "string",
902
+ "enum": [
903
+ "page",
904
+ "url"
905
+ ]
906
+ }
907
+ },
908
+ "required": [
909
+ "ids",
910
+ "source"
911
+ ],
912
+ "additionalProperties": false
913
+ },
914
+ {
915
+ "type": "null"
916
+ }
917
+ ]
918
+ },
919
+ "local": {
920
+ "anyOf": [
921
+ {
922
+ "type": "object",
923
+ "properties": {
924
+ "chunks": {
925
+ "type": "integer",
926
+ "minimum": 0,
927
+ "maximum": 9007199254740991
928
+ },
929
+ "bytes": {
930
+ "type": "integer",
931
+ "minimum": 0,
932
+ "maximum": 9007199254740991
933
+ },
934
+ "largest": {
935
+ "type": "array",
936
+ "items": {
937
+ "type": "object",
938
+ "properties": {
939
+ "file": {
940
+ "type": "string"
941
+ },
942
+ "bytes": {
943
+ "type": "integer",
944
+ "minimum": 0,
945
+ "maximum": 9007199254740991
946
+ },
947
+ "owners": {
948
+ "type": "array",
949
+ "items": {
950
+ "type": "object",
951
+ "properties": {
952
+ "name": {
953
+ "type": "string"
954
+ },
955
+ "bytes": {
956
+ "type": "integer",
957
+ "minimum": 0,
958
+ "maximum": 9007199254740991
959
+ }
960
+ },
961
+ "required": [
962
+ "name",
963
+ "bytes"
964
+ ],
965
+ "additionalProperties": false
966
+ }
967
+ }
968
+ },
969
+ "required": [
970
+ "file",
971
+ "bytes",
972
+ "owners"
973
+ ],
974
+ "additionalProperties": false
975
+ }
976
+ },
977
+ "packages": {
978
+ "type": "array",
979
+ "items": {
980
+ "type": "object",
981
+ "properties": {
982
+ "name": {
983
+ "type": "string"
984
+ },
985
+ "kind": {
986
+ "type": "string",
987
+ "enum": [
988
+ "npm",
989
+ "project",
990
+ "build"
991
+ ]
992
+ },
993
+ "bytes": {
994
+ "type": "integer",
995
+ "minimum": 0,
996
+ "maximum": 9007199254740991
997
+ },
998
+ "modules": {
999
+ "type": "integer",
1000
+ "minimum": 0,
1001
+ "maximum": 9007199254740991
1002
+ },
1003
+ "largestModules": {
1004
+ "type": "array",
1005
+ "items": {
1006
+ "type": "object",
1007
+ "properties": {
1008
+ "file": {
1009
+ "type": "string"
1010
+ },
1011
+ "bytes": {
1012
+ "type": "integer",
1013
+ "minimum": 0,
1014
+ "maximum": 9007199254740991
1015
+ }
1016
+ },
1017
+ "required": [
1018
+ "file",
1019
+ "bytes"
1020
+ ],
1021
+ "additionalProperties": false
1022
+ }
1023
+ },
1024
+ "versions": {
1025
+ "type": "array",
1026
+ "items": {
1027
+ "type": "string"
1028
+ }
1029
+ },
1030
+ "importers": {
1031
+ "type": "array",
1032
+ "items": {
1033
+ "type": "object",
1034
+ "properties": {
1035
+ "file": {
1036
+ "type": "string"
1037
+ },
1038
+ "line": {
1039
+ "type": "integer",
1040
+ "exclusiveMinimum": 0,
1041
+ "maximum": 9007199254740991
1042
+ },
1043
+ "excerpt": {
1044
+ "type": "string"
1045
+ }
1046
+ },
1047
+ "required": [
1048
+ "file"
1049
+ ],
1050
+ "additionalProperties": false
1051
+ }
1052
+ },
1053
+ "importerCount": {
1054
+ "type": "integer",
1055
+ "minimum": 0,
1056
+ "maximum": 9007199254740991
1057
+ },
1058
+ "deferrableBytes": {
1059
+ "type": "integer",
1060
+ "minimum": 0,
1061
+ "maximum": 9007199254740991
1062
+ }
1063
+ },
1064
+ "required": [
1065
+ "name",
1066
+ "kind",
1067
+ "bytes",
1068
+ "modules",
1069
+ "largestModules",
1070
+ "importers",
1071
+ "importerCount"
1072
+ ],
1073
+ "additionalProperties": false
1074
+ }
1075
+ },
1076
+ "candidates": {
1077
+ "type": "array",
1078
+ "items": {
1079
+ "type": "object",
1080
+ "properties": {
1081
+ "importer": {
1082
+ "type": "object",
1083
+ "properties": {
1084
+ "file": {
1085
+ "type": "string"
1086
+ },
1087
+ "line": {
1088
+ "type": "integer",
1089
+ "exclusiveMinimum": 0,
1090
+ "maximum": 9007199254740991
1091
+ },
1092
+ "excerpt": {
1093
+ "type": "string"
1094
+ }
1095
+ },
1096
+ "required": [
1097
+ "file"
1098
+ ],
1099
+ "additionalProperties": false
1100
+ },
1101
+ "target": {
1102
+ "type": "string"
1103
+ },
1104
+ "package": {
1105
+ "type": "string"
1106
+ },
1107
+ "savedBytes": {
1108
+ "type": "integer",
1109
+ "minimum": 0,
1110
+ "maximum": 9007199254740991
1111
+ },
1112
+ "savedModules": {
1113
+ "type": "integer",
1114
+ "exclusiveMinimum": 0,
1115
+ "maximum": 9007199254740991
1116
+ },
1117
+ "lazyElsewhere": {
1118
+ "type": "array",
1119
+ "items": {
1120
+ "type": "string"
1121
+ }
1122
+ }
1123
+ },
1124
+ "required": [
1125
+ "importer",
1126
+ "target",
1127
+ "package",
1128
+ "savedBytes",
1129
+ "savedModules"
1130
+ ],
1131
+ "additionalProperties": false
1132
+ }
1133
+ }
1134
+ },
1135
+ "required": [
1136
+ "chunks",
1137
+ "bytes",
1138
+ "largest",
1139
+ "packages",
1140
+ "candidates"
1141
+ ],
1142
+ "additionalProperties": false
1143
+ },
1144
+ {
1145
+ "type": "null"
1146
+ }
1147
+ ]
1148
+ }
1149
+ },
1150
+ "required": [
1151
+ "page",
1152
+ "runId",
1153
+ "lighthouseArtifact",
1154
+ "observedLoadMs",
1155
+ "live",
1156
+ "route",
1157
+ "local"
1158
+ ],
1159
+ "additionalProperties": false
1160
+ }
1161
+ },
1162
+ "skipped": {
1163
+ "type": "array",
1164
+ "items": {
1165
+ "type": "object",
1166
+ "properties": {
1167
+ "page": {
1168
+ "type": "string"
1169
+ },
1170
+ "reason": {
1171
+ "type": "string"
1172
+ }
1173
+ },
1174
+ "required": [
1175
+ "page",
1176
+ "reason"
1177
+ ],
1178
+ "additionalProperties": false
1179
+ }
1180
+ }
1181
+ },
1182
+ "required": [
1183
+ "schemaVersion",
1184
+ "status",
1185
+ "notes",
1186
+ "build",
1187
+ "pages",
1188
+ "skipped"
1189
+ ],
1190
+ "additionalProperties": false
1191
+ }
1192
+ },
1193
+ "required": [
1194
+ "schemaVersion",
1195
+ "run",
1196
+ "project",
1197
+ "pages",
1198
+ "catalog",
1199
+ "evaluations",
1200
+ "observations",
1201
+ "coverage"
1202
+ ],
1203
+ "additionalProperties": false,
1204
+ "$defs": {
1205
+ "__schema0": {
1206
+ "anyOf": [
1207
+ {
1208
+ "type": "string"
1209
+ },
1210
+ {
1211
+ "type": "number"
1212
+ },
1213
+ {
1214
+ "type": "boolean"
1215
+ },
1216
+ {
1217
+ "type": "null"
1218
+ },
1219
+ {
1220
+ "type": "array",
1221
+ "items": {
1222
+ "$ref": "#/$defs/__schema0"
1223
+ }
1224
+ },
1225
+ {
1226
+ "type": "object",
1227
+ "propertyNames": {
1228
+ "type": "string"
1229
+ },
1230
+ "additionalProperties": {
1231
+ "$ref": "#/$defs/__schema0"
1232
+ }
1233
+ }
1234
+ ]
1235
+ }
1236
+ }
1237
+ }