lighthouse 13.4.1 → 13.5.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/build-tracker.config.js +1 -1
- package/cli/test/smokehouse/lighthouse-runners/bundle.js +3 -3
- package/cli/test/smokehouse/lighthouse-runners/devtools-mcp.js +2 -1
- package/core/audits/accessibility/accesskeys.js +1 -1
- package/core/audits/accessibility/aria-allowed-attr.js +1 -1
- package/core/audits/accessibility/aria-allowed-role.js +1 -1
- package/core/audits/accessibility/aria-command-name.js +1 -1
- package/core/audits/accessibility/aria-conditional-attr.js +1 -1
- package/core/audits/accessibility/aria-deprecated-role.js +1 -1
- package/core/audits/accessibility/aria-dialog-name.js +1 -1
- package/core/audits/accessibility/aria-hidden-body.js +1 -1
- package/core/audits/accessibility/aria-hidden-focus.js +1 -1
- package/core/audits/accessibility/aria-input-field-name.js +1 -1
- package/core/audits/accessibility/aria-meter-name.js +1 -1
- package/core/audits/accessibility/aria-progressbar-name.js +1 -1
- package/core/audits/accessibility/aria-prohibited-attr.js +1 -1
- package/core/audits/accessibility/aria-required-attr.js +1 -1
- package/core/audits/accessibility/aria-required-children.js +1 -1
- package/core/audits/accessibility/aria-required-parent.js +1 -1
- package/core/audits/accessibility/aria-roles.js +1 -1
- package/core/audits/accessibility/aria-text.js +1 -1
- package/core/audits/accessibility/aria-toggle-field-name.js +1 -1
- package/core/audits/accessibility/aria-tooltip-name.js +1 -1
- package/core/audits/accessibility/aria-treeitem-name.js +1 -1
- package/core/audits/accessibility/aria-valid-attr-value.js +1 -1
- package/core/audits/accessibility/aria-valid-attr.js +1 -1
- package/core/audits/accessibility/autocomplete-valid.js +1 -1
- package/core/audits/accessibility/button-name.js +1 -1
- package/core/audits/accessibility/bypass.js +1 -1
- package/core/audits/accessibility/color-contrast.js +1 -1
- package/core/audits/accessibility/definition-list.js +1 -1
- package/core/audits/accessibility/dlitem.js +1 -1
- package/core/audits/accessibility/document-title.js +1 -1
- package/core/audits/accessibility/duplicate-id-aria.js +1 -1
- package/core/audits/accessibility/empty-heading.js +1 -1
- package/core/audits/accessibility/form-field-multiple-labels.js +1 -1
- package/core/audits/accessibility/frame-title.js +1 -1
- package/core/audits/accessibility/heading-order.js +1 -1
- package/core/audits/accessibility/html-has-lang.js +1 -1
- package/core/audits/accessibility/html-lang-valid.js +1 -1
- package/core/audits/accessibility/html-xml-lang-mismatch.js +1 -1
- package/core/audits/accessibility/identical-links-same-purpose.js +1 -1
- package/core/audits/accessibility/image-alt.js +1 -1
- package/core/audits/accessibility/image-redundant-alt.js +1 -1
- package/core/audits/accessibility/input-button-name.js +1 -1
- package/core/audits/accessibility/input-image-alt.js +1 -1
- package/core/audits/accessibility/label-content-name-mismatch.js +1 -1
- package/core/audits/accessibility/label.js +1 -1
- package/core/audits/accessibility/landmark-one-main.js +1 -1
- package/core/audits/accessibility/link-in-text-block.js +1 -1
- package/core/audits/accessibility/link-name.js +1 -1
- package/core/audits/accessibility/list.js +1 -1
- package/core/audits/accessibility/listitem.js +1 -1
- package/core/audits/accessibility/meta-refresh.js +1 -1
- package/core/audits/accessibility/meta-viewport.js +1 -1
- package/core/audits/accessibility/object-alt.js +1 -1
- package/core/audits/accessibility/presentation-role-conflict.js +1 -1
- package/core/audits/accessibility/select-name.js +1 -1
- package/core/audits/accessibility/skip-link.js +1 -1
- package/core/audits/accessibility/svg-img-alt.js +1 -1
- package/core/audits/accessibility/tabindex.js +1 -1
- package/core/audits/accessibility/table-duplicate-name.js +1 -1
- package/core/audits/accessibility/table-fake-caption.js +1 -1
- package/core/audits/accessibility/target-size.js +1 -1
- package/core/audits/accessibility/td-has-header.js +1 -1
- package/core/audits/accessibility/td-headers-attr.js +1 -1
- package/core/audits/accessibility/th-has-data-cells.js +1 -1
- package/core/audits/accessibility/valid-lang.js +1 -1
- package/core/audits/accessibility/video-caption.js +1 -1
- package/core/audits/agentic/ard-schema.d.ts +19 -0
- package/core/audits/agentic/ard-schema.js +135 -0
- package/core/audits/baseline.d.ts +23 -10
- package/core/audits/deprecations.js +1 -2
- package/core/audits/webmcp-form-coverage.js +3 -1
- package/core/audits/webmcp-registered-tools.d.ts +2 -0
- package/core/audits/webmcp-registered-tools.js +16 -1
- package/core/audits/webmcp-schema-validity.js +1 -1
- package/core/computed/metrics/interactive.js +1 -1
- package/core/computed/metrics/lantern-metric.js +1 -1
- package/core/computed/trace-engine-result.d.ts +3 -3
- package/core/computed/trace-engine-result.js +4 -4
- package/core/computed/unused-javascript-summary.d.ts +0 -1
- package/core/computed/unused-javascript-summary.js +0 -1
- package/core/config/agentic-browsing-config.d.ts +2 -0
- package/core/config/agentic-browsing-config.js +13 -1
- package/core/config/default-config.js +13 -1
- package/core/config/validation.js +6 -0
- package/core/gather/driver/execution-context.js +0 -2
- package/core/gather/driver/navigation.d.ts +1 -0
- package/core/gather/driver/navigation.js +35 -7
- package/core/gather/driver/wait-for-condition.d.ts +5 -7
- package/core/gather/driver/wait-for-condition.js +15 -9
- package/core/gather/fetcher.d.ts +9 -2
- package/core/gather/fetcher.js +30 -4
- package/core/gather/gatherers/accessibility.js +1 -3
- package/core/gather/gatherers/agentic/ard.d.ts +30 -0
- package/core/gather/gatherers/agentic/ard.js +125 -0
- package/core/gather/gatherers/anchor-elements.js +0 -2
- package/core/gather/gatherers/full-page-screenshot.js +0 -4
- package/core/gather/gatherers/iframe-elements.js +0 -2
- package/core/gather/gatherers/image-elements.js +1 -13
- package/core/gather/gatherers/inputs.js +0 -2
- package/core/gather/gatherers/link-elements.js +0 -2
- package/core/gather/gatherers/meta-elements.js +0 -3
- package/core/gather/gatherers/seo/robots-txt.d.ts +1 -0
- package/core/gather/gatherers/seo/robots-txt.js +3 -0
- package/core/gather/gatherers/stacks.d.ts +1 -1
- package/core/gather/gatherers/stacks.js +1 -3
- package/core/gather/gatherers/trace-elements.js +1 -3
- package/core/gather/gatherers/viewport-dimensions.js +0 -2
- package/core/gather/navigation-runner.d.ts +3 -1
- package/core/gather/navigation-runner.js +6 -3
- package/core/gather/session.js +1 -0
- package/core/index.cjs +5 -5
- package/core/index.d.cts +5 -5
- package/core/lib/arbitrary-equality-map.d.ts +2 -2
- package/core/lib/arbitrary-equality-map.js +1 -1
- package/core/lib/baseline/web-features-data.json +52 -28
- package/core/lib/baseline/web-features-metadata.json +1 -1
- package/core/lib/deprecation-description.js +1 -1
- package/core/lib/page-functions.d.ts +0 -3
- package/core/lib/page-functions.js +0 -3
- package/core/lib/rect-helpers.js +0 -8
- package/core/runner.js +21 -0
- package/core/user-flow.d.ts +3 -0
- package/core/user-flow.js +12 -0
- package/dist/report/bundle.esm.js +10 -3
- package/dist/report/flow.js +20 -13
- package/dist/report/standalone.js +10 -3
- package/package.json +19 -14
- package/report/assets/styles.css +7 -0
- package/report/renderer/components.js +1 -1
- package/report/renderer/details-renderer.js +7 -5
- package/report/renderer/drop-down-menu.d.ts +2 -2
- package/report/renderer/drop-down-menu.js +1 -1
- package/report/renderer/report-renderer.js +24 -3
- package/report/renderer/report-utils.js +1 -1
- package/report/renderer/snippet-renderer.d.ts +4 -4
- package/report/renderer/snippet-renderer.js +3 -3
- package/report/renderer/text-encoding.js +2 -2
- package/shared/localization/locales/ar-XB.json +111 -72
- package/shared/localization/locales/ar.json +113 -74
- package/shared/localization/locales/bg.json +112 -73
- package/shared/localization/locales/ca.json +112 -73
- package/shared/localization/locales/cs.json +112 -73
- package/shared/localization/locales/da.json +112 -73
- package/shared/localization/locales/de.json +112 -73
- package/shared/localization/locales/el.json +112 -73
- package/shared/localization/locales/en-GB.json +111 -72
- package/shared/localization/locales/en-US.json +102 -66
- package/shared/localization/locales/en-XA.json +111 -72
- package/shared/localization/locales/en-XL.json +102 -66
- package/shared/localization/locales/es-419.json +112 -73
- package/shared/localization/locales/es.json +112 -73
- package/shared/localization/locales/fi.json +112 -73
- package/shared/localization/locales/fil.json +112 -73
- package/shared/localization/locales/fr.json +112 -73
- package/shared/localization/locales/he.json +112 -73
- package/shared/localization/locales/hi.json +112 -73
- package/shared/localization/locales/hr.json +112 -73
- package/shared/localization/locales/hu.json +112 -73
- package/shared/localization/locales/id.json +112 -73
- package/shared/localization/locales/it.json +113 -74
- package/shared/localization/locales/ja.json +112 -73
- package/shared/localization/locales/ko.json +112 -73
- package/shared/localization/locales/lt.json +112 -73
- package/shared/localization/locales/lv.json +112 -73
- package/shared/localization/locales/nl.json +112 -73
- package/shared/localization/locales/no.json +112 -73
- package/shared/localization/locales/pl.json +112 -73
- package/shared/localization/locales/pt-PT.json +112 -73
- package/shared/localization/locales/pt.json +112 -73
- package/shared/localization/locales/ro.json +112 -73
- package/shared/localization/locales/ru.json +112 -73
- package/shared/localization/locales/sk.json +112 -73
- package/shared/localization/locales/sl.json +112 -73
- package/shared/localization/locales/sr-Latn.json +112 -73
- package/shared/localization/locales/sr.json +112 -73
- package/shared/localization/locales/sv.json +124 -85
- package/shared/localization/locales/ta.json +112 -73
- package/shared/localization/locales/te.json +112 -73
- package/shared/localization/locales/th.json +112 -73
- package/shared/localization/locales/tr.json +113 -74
- package/shared/localization/locales/uk.json +112 -73
- package/shared/localization/locales/vi.json +112 -73
- package/shared/localization/locales/zh-HK.json +112 -73
- package/shared/localization/locales/zh-TW.json +113 -74
- package/shared/localization/locales/zh.json +113 -74
- package/shared/util.d.ts +6 -0
- package/shared/util.js +9 -0
- package/third-party/ard/LICENSE +201 -0
- package/third-party/ard/README.md +27 -0
- package/third-party/ard/ard-test.d.ts +2 -0
- package/third-party/ard/ard-test.js +358 -0
- package/third-party/ard/ard.d.ts +34 -0
- package/third-party/ard/ard.js +204 -0
- package/third-party/ard/schema-validator.d.ts +20 -0
- package/third-party/ard/schema-validator.js +1700 -0
- package/third-party/ard/spec/schemas/ai-catalog.schema.json +292 -0
- package/tsconfig.json +1 -0
- package/types/artifacts.d.ts +14 -0
|
@@ -0,0 +1,1700 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// auto-generated by build/build-ard-schema.js
|
|
8
|
+
/* eslint-disable */
|
|
9
|
+
// @ts-nocheck
|
|
10
|
+
|
|
11
|
+
import {fullFormats} from 'ajv-formats/dist/formats.js';
|
|
12
|
+
|
|
13
|
+
"use strict";
|
|
14
|
+
export const validate = validate20;
|
|
15
|
+
export default validate20;
|
|
16
|
+
const schema31 = {
|
|
17
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
18
|
+
"$id": "https://raw.githubusercontent.com/ards-project/ard-spec/main/spec/schemas/ai-catalog.schema.json",
|
|
19
|
+
"title": "AICatalogManifest",
|
|
20
|
+
"description": "JSON Schema for the ai-catalog.json capability manifest, defining how AI artifacts are advertised.",
|
|
21
|
+
"type": "object",
|
|
22
|
+
"required": [
|
|
23
|
+
"specVersion",
|
|
24
|
+
"entries"
|
|
25
|
+
],
|
|
26
|
+
"properties": {
|
|
27
|
+
"specVersion": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"description": "Version of the ai-catalog specification used in this manifest.",
|
|
30
|
+
"enum": [
|
|
31
|
+
"1.0"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
"host": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"description": "Information about the catalog publisher or hosting entity.",
|
|
37
|
+
"required": [
|
|
38
|
+
"displayName"
|
|
39
|
+
],
|
|
40
|
+
"properties": {
|
|
41
|
+
"displayName": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"description": "Human-readable name of the host."
|
|
44
|
+
},
|
|
45
|
+
"identifier": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"description": "Cryptographic or verifiable identifier of the host (e.g. did:web:domain.com)."
|
|
48
|
+
},
|
|
49
|
+
"documentationUrl": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"format": "uri",
|
|
52
|
+
"description": "URL to publisher documentation."
|
|
53
|
+
},
|
|
54
|
+
"logoUrl": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"format": "uri",
|
|
57
|
+
"description": "URL to the publisher's logo image."
|
|
58
|
+
},
|
|
59
|
+
"trustManifest": {
|
|
60
|
+
"$ref": "#/$defs/trustManifest"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"additionalProperties": false
|
|
64
|
+
},
|
|
65
|
+
"entries": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"description": "List of AI agent or capability catalog entries.",
|
|
68
|
+
"items": {
|
|
69
|
+
"$ref": "#/$defs/catalogEntry"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"additionalProperties": false,
|
|
74
|
+
"$defs": {
|
|
75
|
+
"catalogEntry": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"description": "A single AI capability entry within the catalog.",
|
|
78
|
+
"required": [
|
|
79
|
+
"identifier",
|
|
80
|
+
"displayName",
|
|
81
|
+
"type"
|
|
82
|
+
],
|
|
83
|
+
"oneOf": [
|
|
84
|
+
{
|
|
85
|
+
"required": [
|
|
86
|
+
"url"
|
|
87
|
+
],
|
|
88
|
+
"not": {
|
|
89
|
+
"required": [
|
|
90
|
+
"data"
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"required": [
|
|
96
|
+
"data"
|
|
97
|
+
],
|
|
98
|
+
"not": {
|
|
99
|
+
"required": [
|
|
100
|
+
"url"
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"properties": {
|
|
106
|
+
"identifier": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"pattern": "^urn:air:[a-zA-Z0-9.-]+(:[a-zA-Z0-9._-]+)+$",
|
|
109
|
+
"description": "RFC 8141-compliant unique logical URN formatted as: urn:air:<publisher>:<namespace>:<agent-name>"
|
|
110
|
+
},
|
|
111
|
+
"displayName": {
|
|
112
|
+
"type": "string",
|
|
113
|
+
"description": "Human-friendly display name."
|
|
114
|
+
},
|
|
115
|
+
"type": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"description": "IANA Media Type indicating the specific protocol wrapper or payload structure (e.g. application/mcp-server-card+json)."
|
|
118
|
+
},
|
|
119
|
+
"url": {
|
|
120
|
+
"type": "string",
|
|
121
|
+
"format": "uri",
|
|
122
|
+
"description": "HTTP URL reference to retrieve the full artifact document."
|
|
123
|
+
},
|
|
124
|
+
"data": {
|
|
125
|
+
"type": "object",
|
|
126
|
+
"description": "Embedded JSON object containing the complete artifact specification inline."
|
|
127
|
+
},
|
|
128
|
+
"description": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"description": "Brief natural-language description of the capability."
|
|
131
|
+
},
|
|
132
|
+
"tags": {
|
|
133
|
+
"type": "array",
|
|
134
|
+
"items": {
|
|
135
|
+
"type": "string"
|
|
136
|
+
},
|
|
137
|
+
"description": "Tags or keywords for basic categorizing and filtering."
|
|
138
|
+
},
|
|
139
|
+
"capabilities": {
|
|
140
|
+
"type": "array",
|
|
141
|
+
"items": {
|
|
142
|
+
"type": "string"
|
|
143
|
+
},
|
|
144
|
+
"description": "Explicit high-performance indexing tags representing skills, tools, or functions (e.g. ['WeatherTool', 'ForecastTool'])."
|
|
145
|
+
},
|
|
146
|
+
"representativeQueries": {
|
|
147
|
+
"type": "array",
|
|
148
|
+
"minItems": 2,
|
|
149
|
+
"maxItems": 5,
|
|
150
|
+
"items": {
|
|
151
|
+
"type": "string"
|
|
152
|
+
},
|
|
153
|
+
"description": "Representative natural-language search queries used for indexing and vector embedding generation."
|
|
154
|
+
},
|
|
155
|
+
"version": {
|
|
156
|
+
"type": "string",
|
|
157
|
+
"description": "Semantic version of the capability."
|
|
158
|
+
},
|
|
159
|
+
"updatedAt": {
|
|
160
|
+
"type": "string",
|
|
161
|
+
"format": "date-time",
|
|
162
|
+
"description": "ISO 8601 timestamp of the last modification."
|
|
163
|
+
},
|
|
164
|
+
"metadata": {
|
|
165
|
+
"type": "object",
|
|
166
|
+
"description": "Arbitrary key-value pairs for custom extensions.",
|
|
167
|
+
"additionalProperties": {
|
|
168
|
+
"type": [
|
|
169
|
+
"string",
|
|
170
|
+
"number",
|
|
171
|
+
"boolean",
|
|
172
|
+
"null"
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"trustManifest": {
|
|
177
|
+
"$ref": "#/$defs/trustManifest"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"trustManifest": {
|
|
182
|
+
"type": "object",
|
|
183
|
+
"description": "Zero-trust security, identity, and compliance envelope metadata.",
|
|
184
|
+
"required": [
|
|
185
|
+
"identity"
|
|
186
|
+
],
|
|
187
|
+
"properties": {
|
|
188
|
+
"identity": {
|
|
189
|
+
"type": "string",
|
|
190
|
+
"description": "Globally unique cryptographic workload identifier principal (e.g. SPIFFE ID or DID URI)."
|
|
191
|
+
},
|
|
192
|
+
"identityType": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"enum": [
|
|
195
|
+
"spiffe",
|
|
196
|
+
"did",
|
|
197
|
+
"https",
|
|
198
|
+
"other"
|
|
199
|
+
],
|
|
200
|
+
"description": "Hint representing the cryptographic format of the identity."
|
|
201
|
+
},
|
|
202
|
+
"trustSchema": {
|
|
203
|
+
"$ref": "#/$defs/trustSchema"
|
|
204
|
+
},
|
|
205
|
+
"attestations": {
|
|
206
|
+
"type": "array",
|
|
207
|
+
"description": "List of verifiable claims (SOC 2 audits, compliance statements, HIPAA checks).",
|
|
208
|
+
"items": {
|
|
209
|
+
"type": "object",
|
|
210
|
+
"required": [
|
|
211
|
+
"type",
|
|
212
|
+
"uri",
|
|
213
|
+
"mediaType"
|
|
214
|
+
],
|
|
215
|
+
"properties": {
|
|
216
|
+
"type": {
|
|
217
|
+
"type": "string",
|
|
218
|
+
"description": "Attestation standard type (e.g., SOC2-Type2, HIPAA)."
|
|
219
|
+
},
|
|
220
|
+
"uri": {
|
|
221
|
+
"type": "string",
|
|
222
|
+
"format": "uri",
|
|
223
|
+
"description": "Location of the attestation certificate or document."
|
|
224
|
+
},
|
|
225
|
+
"mediaType": {
|
|
226
|
+
"type": "string",
|
|
227
|
+
"description": "Format of the attestation document (e.g. application/pdf, text/html)."
|
|
228
|
+
},
|
|
229
|
+
"digest": {
|
|
230
|
+
"type": "string",
|
|
231
|
+
"description": "Cryptographic sha256 digest for document integrity verification."
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"additionalProperties": false
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"provenance": {
|
|
238
|
+
"type": "array",
|
|
239
|
+
"description": "Cryptographic lineage trail of the artifact.",
|
|
240
|
+
"items": {
|
|
241
|
+
"type": "object",
|
|
242
|
+
"required": [
|
|
243
|
+
"relation",
|
|
244
|
+
"sourceId"
|
|
245
|
+
],
|
|
246
|
+
"properties": {
|
|
247
|
+
"relation": {
|
|
248
|
+
"type": "string",
|
|
249
|
+
"enum": [
|
|
250
|
+
"derivedFrom",
|
|
251
|
+
"publishedFrom",
|
|
252
|
+
"copiedFrom"
|
|
253
|
+
],
|
|
254
|
+
"description": "Lineage relation."
|
|
255
|
+
},
|
|
256
|
+
"sourceId": {
|
|
257
|
+
"type": "string",
|
|
258
|
+
"description": "Identifier of the source artifact."
|
|
259
|
+
},
|
|
260
|
+
"sourceDigest": {
|
|
261
|
+
"type": "string",
|
|
262
|
+
"description": "Optional sha256 digest for safety."
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
"additionalProperties": false
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"signature": {
|
|
269
|
+
"type": "string",
|
|
270
|
+
"description": "Detached JWS signature generated over the fields of the trustManifest."
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
"additionalProperties": false
|
|
274
|
+
},
|
|
275
|
+
"trustSchema": {
|
|
276
|
+
"type": "object",
|
|
277
|
+
"description": "Describes the trust framework applied to the artifact.",
|
|
278
|
+
"required": [
|
|
279
|
+
"identifier",
|
|
280
|
+
"version"
|
|
281
|
+
],
|
|
282
|
+
"properties": {
|
|
283
|
+
"identifier": {
|
|
284
|
+
"type": "string",
|
|
285
|
+
"description": "Unique identifier of the trust schema/framework (e.g. URN)."
|
|
286
|
+
},
|
|
287
|
+
"version": {
|
|
288
|
+
"type": "string",
|
|
289
|
+
"description": "Version of the trust schema/framework."
|
|
290
|
+
},
|
|
291
|
+
"governanceUri": {
|
|
292
|
+
"type": "string",
|
|
293
|
+
"format": "uri",
|
|
294
|
+
"description": "URI pointing to the governance policy document."
|
|
295
|
+
},
|
|
296
|
+
"verificationMethods": {
|
|
297
|
+
"type": "array",
|
|
298
|
+
"items": {
|
|
299
|
+
"type": "string"
|
|
300
|
+
},
|
|
301
|
+
"description": "Verification methods supported by the schema (e.g., ['did', 'x509', 'dns-01'])."
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"additionalProperties": false
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
const formats0 = fullFormats.uri;
|
|
309
|
+
const schema32 = {
|
|
310
|
+
"type": "object",
|
|
311
|
+
"description": "Zero-trust security, identity, and compliance envelope metadata.",
|
|
312
|
+
"required": [
|
|
313
|
+
"identity"
|
|
314
|
+
],
|
|
315
|
+
"properties": {
|
|
316
|
+
"identity": {
|
|
317
|
+
"type": "string",
|
|
318
|
+
"description": "Globally unique cryptographic workload identifier principal (e.g. SPIFFE ID or DID URI)."
|
|
319
|
+
},
|
|
320
|
+
"identityType": {
|
|
321
|
+
"type": "string",
|
|
322
|
+
"enum": [
|
|
323
|
+
"spiffe",
|
|
324
|
+
"did",
|
|
325
|
+
"https",
|
|
326
|
+
"other"
|
|
327
|
+
],
|
|
328
|
+
"description": "Hint representing the cryptographic format of the identity."
|
|
329
|
+
},
|
|
330
|
+
"trustSchema": {
|
|
331
|
+
"$ref": "#/$defs/trustSchema"
|
|
332
|
+
},
|
|
333
|
+
"attestations": {
|
|
334
|
+
"type": "array",
|
|
335
|
+
"description": "List of verifiable claims (SOC 2 audits, compliance statements, HIPAA checks).",
|
|
336
|
+
"items": {
|
|
337
|
+
"type": "object",
|
|
338
|
+
"required": [
|
|
339
|
+
"type",
|
|
340
|
+
"uri",
|
|
341
|
+
"mediaType"
|
|
342
|
+
],
|
|
343
|
+
"properties": {
|
|
344
|
+
"type": {
|
|
345
|
+
"type": "string",
|
|
346
|
+
"description": "Attestation standard type (e.g., SOC2-Type2, HIPAA)."
|
|
347
|
+
},
|
|
348
|
+
"uri": {
|
|
349
|
+
"type": "string",
|
|
350
|
+
"format": "uri",
|
|
351
|
+
"description": "Location of the attestation certificate or document."
|
|
352
|
+
},
|
|
353
|
+
"mediaType": {
|
|
354
|
+
"type": "string",
|
|
355
|
+
"description": "Format of the attestation document (e.g. application/pdf, text/html)."
|
|
356
|
+
},
|
|
357
|
+
"digest": {
|
|
358
|
+
"type": "string",
|
|
359
|
+
"description": "Cryptographic sha256 digest for document integrity verification."
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
"additionalProperties": false
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
"provenance": {
|
|
366
|
+
"type": "array",
|
|
367
|
+
"description": "Cryptographic lineage trail of the artifact.",
|
|
368
|
+
"items": {
|
|
369
|
+
"type": "object",
|
|
370
|
+
"required": [
|
|
371
|
+
"relation",
|
|
372
|
+
"sourceId"
|
|
373
|
+
],
|
|
374
|
+
"properties": {
|
|
375
|
+
"relation": {
|
|
376
|
+
"type": "string",
|
|
377
|
+
"enum": [
|
|
378
|
+
"derivedFrom",
|
|
379
|
+
"publishedFrom",
|
|
380
|
+
"copiedFrom"
|
|
381
|
+
],
|
|
382
|
+
"description": "Lineage relation."
|
|
383
|
+
},
|
|
384
|
+
"sourceId": {
|
|
385
|
+
"type": "string",
|
|
386
|
+
"description": "Identifier of the source artifact."
|
|
387
|
+
},
|
|
388
|
+
"sourceDigest": {
|
|
389
|
+
"type": "string",
|
|
390
|
+
"description": "Optional sha256 digest for safety."
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
"additionalProperties": false
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
"signature": {
|
|
397
|
+
"type": "string",
|
|
398
|
+
"description": "Detached JWS signature generated over the fields of the trustManifest."
|
|
399
|
+
}
|
|
400
|
+
},
|
|
401
|
+
"additionalProperties": false
|
|
402
|
+
};
|
|
403
|
+
const schema33 = {
|
|
404
|
+
"type": "object",
|
|
405
|
+
"description": "Describes the trust framework applied to the artifact.",
|
|
406
|
+
"required": [
|
|
407
|
+
"identifier",
|
|
408
|
+
"version"
|
|
409
|
+
],
|
|
410
|
+
"properties": {
|
|
411
|
+
"identifier": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"description": "Unique identifier of the trust schema/framework (e.g. URN)."
|
|
414
|
+
},
|
|
415
|
+
"version": {
|
|
416
|
+
"type": "string",
|
|
417
|
+
"description": "Version of the trust schema/framework."
|
|
418
|
+
},
|
|
419
|
+
"governanceUri": {
|
|
420
|
+
"type": "string",
|
|
421
|
+
"format": "uri",
|
|
422
|
+
"description": "URI pointing to the governance policy document."
|
|
423
|
+
},
|
|
424
|
+
"verificationMethods": {
|
|
425
|
+
"type": "array",
|
|
426
|
+
"items": {
|
|
427
|
+
"type": "string"
|
|
428
|
+
},
|
|
429
|
+
"description": "Verification methods supported by the schema (e.g., ['did', 'x509', 'dns-01'])."
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
"additionalProperties": false
|
|
433
|
+
};
|
|
434
|
+
|
|
435
|
+
function validate21(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}) {
|
|
436
|
+
let vErrors = null;
|
|
437
|
+
let errors = 0;
|
|
438
|
+
const evaluated0 = validate21.evaluated;
|
|
439
|
+
if (evaluated0.dynamicProps) {
|
|
440
|
+
evaluated0.props = undefined;
|
|
441
|
+
}
|
|
442
|
+
if (evaluated0.dynamicItems) {
|
|
443
|
+
evaluated0.items = undefined;
|
|
444
|
+
}
|
|
445
|
+
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
446
|
+
if (data.identity === undefined) {
|
|
447
|
+
const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "identity"},message:"must have required property '"+"identity"+"'"};
|
|
448
|
+
if (vErrors === null) {
|
|
449
|
+
vErrors = [err0];
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
vErrors.push(err0);
|
|
453
|
+
}
|
|
454
|
+
errors++;
|
|
455
|
+
}
|
|
456
|
+
for (const key0 in data) {
|
|
457
|
+
if (!((((((key0 === "identity") || (key0 === "identityType")) || (key0 === "trustSchema")) || (key0 === "attestations")) || (key0 === "provenance")) || (key0 === "signature"))) {
|
|
458
|
+
const err1 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};
|
|
459
|
+
if (vErrors === null) {
|
|
460
|
+
vErrors = [err1];
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
vErrors.push(err1);
|
|
464
|
+
}
|
|
465
|
+
errors++;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
if (data.identity !== undefined) {
|
|
469
|
+
if (typeof data.identity !== "string") {
|
|
470
|
+
const err2 = {instancePath:instancePath+"/identity",schemaPath:"#/properties/identity/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
471
|
+
if (vErrors === null) {
|
|
472
|
+
vErrors = [err2];
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
vErrors.push(err2);
|
|
476
|
+
}
|
|
477
|
+
errors++;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
if (data.identityType !== undefined) {
|
|
481
|
+
let data1 = data.identityType;
|
|
482
|
+
if (typeof data1 !== "string") {
|
|
483
|
+
const err3 = {instancePath:instancePath+"/identityType",schemaPath:"#/properties/identityType/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
484
|
+
if (vErrors === null) {
|
|
485
|
+
vErrors = [err3];
|
|
486
|
+
}
|
|
487
|
+
else {
|
|
488
|
+
vErrors.push(err3);
|
|
489
|
+
}
|
|
490
|
+
errors++;
|
|
491
|
+
}
|
|
492
|
+
if (!((((data1 === "spiffe") || (data1 === "did")) || (data1 === "https")) || (data1 === "other"))) {
|
|
493
|
+
const err4 = {instancePath:instancePath+"/identityType",schemaPath:"#/properties/identityType/enum",keyword:"enum",params:{allowedValues: schema32.properties.identityType.enum},message:"must be equal to one of the allowed values"};
|
|
494
|
+
if (vErrors === null) {
|
|
495
|
+
vErrors = [err4];
|
|
496
|
+
}
|
|
497
|
+
else {
|
|
498
|
+
vErrors.push(err4);
|
|
499
|
+
}
|
|
500
|
+
errors++;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
if (data.trustSchema !== undefined) {
|
|
504
|
+
let data2 = data.trustSchema;
|
|
505
|
+
if (data2 && typeof data2 == "object" && !Array.isArray(data2)) {
|
|
506
|
+
if (data2.identifier === undefined) {
|
|
507
|
+
const err5 = {instancePath:instancePath+"/trustSchema",schemaPath:"#/$defs/trustSchema/required",keyword:"required",params:{missingProperty: "identifier"},message:"must have required property '"+"identifier"+"'"};
|
|
508
|
+
if (vErrors === null) {
|
|
509
|
+
vErrors = [err5];
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
vErrors.push(err5);
|
|
513
|
+
}
|
|
514
|
+
errors++;
|
|
515
|
+
}
|
|
516
|
+
if (data2.version === undefined) {
|
|
517
|
+
const err6 = {instancePath:instancePath+"/trustSchema",schemaPath:"#/$defs/trustSchema/required",keyword:"required",params:{missingProperty: "version"},message:"must have required property '"+"version"+"'"};
|
|
518
|
+
if (vErrors === null) {
|
|
519
|
+
vErrors = [err6];
|
|
520
|
+
}
|
|
521
|
+
else {
|
|
522
|
+
vErrors.push(err6);
|
|
523
|
+
}
|
|
524
|
+
errors++;
|
|
525
|
+
}
|
|
526
|
+
for (const key1 in data2) {
|
|
527
|
+
if (!((((key1 === "identifier") || (key1 === "version")) || (key1 === "governanceUri")) || (key1 === "verificationMethods"))) {
|
|
528
|
+
const err7 = {instancePath:instancePath+"/trustSchema",schemaPath:"#/$defs/trustSchema/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"};
|
|
529
|
+
if (vErrors === null) {
|
|
530
|
+
vErrors = [err7];
|
|
531
|
+
}
|
|
532
|
+
else {
|
|
533
|
+
vErrors.push(err7);
|
|
534
|
+
}
|
|
535
|
+
errors++;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
if (data2.identifier !== undefined) {
|
|
539
|
+
if (typeof data2.identifier !== "string") {
|
|
540
|
+
const err8 = {instancePath:instancePath+"/trustSchema/identifier",schemaPath:"#/$defs/trustSchema/properties/identifier/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
541
|
+
if (vErrors === null) {
|
|
542
|
+
vErrors = [err8];
|
|
543
|
+
}
|
|
544
|
+
else {
|
|
545
|
+
vErrors.push(err8);
|
|
546
|
+
}
|
|
547
|
+
errors++;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
if (data2.version !== undefined) {
|
|
551
|
+
if (typeof data2.version !== "string") {
|
|
552
|
+
const err9 = {instancePath:instancePath+"/trustSchema/version",schemaPath:"#/$defs/trustSchema/properties/version/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
553
|
+
if (vErrors === null) {
|
|
554
|
+
vErrors = [err9];
|
|
555
|
+
}
|
|
556
|
+
else {
|
|
557
|
+
vErrors.push(err9);
|
|
558
|
+
}
|
|
559
|
+
errors++;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
if (data2.governanceUri !== undefined) {
|
|
563
|
+
let data5 = data2.governanceUri;
|
|
564
|
+
if (typeof data5 === "string") {
|
|
565
|
+
if (!(formats0(data5))) {
|
|
566
|
+
const err10 = {instancePath:instancePath+"/trustSchema/governanceUri",schemaPath:"#/$defs/trustSchema/properties/governanceUri/format",keyword:"format",params:{format: "uri"},message:"must match format \""+"uri"+"\""};
|
|
567
|
+
if (vErrors === null) {
|
|
568
|
+
vErrors = [err10];
|
|
569
|
+
}
|
|
570
|
+
else {
|
|
571
|
+
vErrors.push(err10);
|
|
572
|
+
}
|
|
573
|
+
errors++;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
else {
|
|
577
|
+
const err11 = {instancePath:instancePath+"/trustSchema/governanceUri",schemaPath:"#/$defs/trustSchema/properties/governanceUri/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
578
|
+
if (vErrors === null) {
|
|
579
|
+
vErrors = [err11];
|
|
580
|
+
}
|
|
581
|
+
else {
|
|
582
|
+
vErrors.push(err11);
|
|
583
|
+
}
|
|
584
|
+
errors++;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
if (data2.verificationMethods !== undefined) {
|
|
588
|
+
let data6 = data2.verificationMethods;
|
|
589
|
+
if (Array.isArray(data6)) {
|
|
590
|
+
const len0 = data6.length;
|
|
591
|
+
for (let i0=0; i0<len0; i0++) {
|
|
592
|
+
if (typeof data6[i0] !== "string") {
|
|
593
|
+
const err12 = {instancePath:instancePath+"/trustSchema/verificationMethods/" + i0,schemaPath:"#/$defs/trustSchema/properties/verificationMethods/items/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
594
|
+
if (vErrors === null) {
|
|
595
|
+
vErrors = [err12];
|
|
596
|
+
}
|
|
597
|
+
else {
|
|
598
|
+
vErrors.push(err12);
|
|
599
|
+
}
|
|
600
|
+
errors++;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
else {
|
|
605
|
+
const err13 = {instancePath:instancePath+"/trustSchema/verificationMethods",schemaPath:"#/$defs/trustSchema/properties/verificationMethods/type",keyword:"type",params:{type: "array"},message:"must be array"};
|
|
606
|
+
if (vErrors === null) {
|
|
607
|
+
vErrors = [err13];
|
|
608
|
+
}
|
|
609
|
+
else {
|
|
610
|
+
vErrors.push(err13);
|
|
611
|
+
}
|
|
612
|
+
errors++;
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
const err14 = {instancePath:instancePath+"/trustSchema",schemaPath:"#/$defs/trustSchema/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
618
|
+
if (vErrors === null) {
|
|
619
|
+
vErrors = [err14];
|
|
620
|
+
}
|
|
621
|
+
else {
|
|
622
|
+
vErrors.push(err14);
|
|
623
|
+
}
|
|
624
|
+
errors++;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
if (data.attestations !== undefined) {
|
|
628
|
+
let data8 = data.attestations;
|
|
629
|
+
if (Array.isArray(data8)) {
|
|
630
|
+
const len1 = data8.length;
|
|
631
|
+
for (let i1=0; i1<len1; i1++) {
|
|
632
|
+
let data9 = data8[i1];
|
|
633
|
+
if (data9 && typeof data9 == "object" && !Array.isArray(data9)) {
|
|
634
|
+
if (data9.type === undefined) {
|
|
635
|
+
const err15 = {instancePath:instancePath+"/attestations/" + i1,schemaPath:"#/properties/attestations/items/required",keyword:"required",params:{missingProperty: "type"},message:"must have required property '"+"type"+"'"};
|
|
636
|
+
if (vErrors === null) {
|
|
637
|
+
vErrors = [err15];
|
|
638
|
+
}
|
|
639
|
+
else {
|
|
640
|
+
vErrors.push(err15);
|
|
641
|
+
}
|
|
642
|
+
errors++;
|
|
643
|
+
}
|
|
644
|
+
if (data9.uri === undefined) {
|
|
645
|
+
const err16 = {instancePath:instancePath+"/attestations/" + i1,schemaPath:"#/properties/attestations/items/required",keyword:"required",params:{missingProperty: "uri"},message:"must have required property '"+"uri"+"'"};
|
|
646
|
+
if (vErrors === null) {
|
|
647
|
+
vErrors = [err16];
|
|
648
|
+
}
|
|
649
|
+
else {
|
|
650
|
+
vErrors.push(err16);
|
|
651
|
+
}
|
|
652
|
+
errors++;
|
|
653
|
+
}
|
|
654
|
+
if (data9.mediaType === undefined) {
|
|
655
|
+
const err17 = {instancePath:instancePath+"/attestations/" + i1,schemaPath:"#/properties/attestations/items/required",keyword:"required",params:{missingProperty: "mediaType"},message:"must have required property '"+"mediaType"+"'"};
|
|
656
|
+
if (vErrors === null) {
|
|
657
|
+
vErrors = [err17];
|
|
658
|
+
}
|
|
659
|
+
else {
|
|
660
|
+
vErrors.push(err17);
|
|
661
|
+
}
|
|
662
|
+
errors++;
|
|
663
|
+
}
|
|
664
|
+
for (const key2 in data9) {
|
|
665
|
+
if (!((((key2 === "type") || (key2 === "uri")) || (key2 === "mediaType")) || (key2 === "digest"))) {
|
|
666
|
+
const err18 = {instancePath:instancePath+"/attestations/" + i1,schemaPath:"#/properties/attestations/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key2},message:"must NOT have additional properties"};
|
|
667
|
+
if (vErrors === null) {
|
|
668
|
+
vErrors = [err18];
|
|
669
|
+
}
|
|
670
|
+
else {
|
|
671
|
+
vErrors.push(err18);
|
|
672
|
+
}
|
|
673
|
+
errors++;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
if (data9.type !== undefined) {
|
|
677
|
+
if (typeof data9.type !== "string") {
|
|
678
|
+
const err19 = {instancePath:instancePath+"/attestations/" + i1+"/type",schemaPath:"#/properties/attestations/items/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
679
|
+
if (vErrors === null) {
|
|
680
|
+
vErrors = [err19];
|
|
681
|
+
}
|
|
682
|
+
else {
|
|
683
|
+
vErrors.push(err19);
|
|
684
|
+
}
|
|
685
|
+
errors++;
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
if (data9.uri !== undefined) {
|
|
689
|
+
let data11 = data9.uri;
|
|
690
|
+
if (typeof data11 === "string") {
|
|
691
|
+
if (!(formats0(data11))) {
|
|
692
|
+
const err20 = {instancePath:instancePath+"/attestations/" + i1+"/uri",schemaPath:"#/properties/attestations/items/properties/uri/format",keyword:"format",params:{format: "uri"},message:"must match format \""+"uri"+"\""};
|
|
693
|
+
if (vErrors === null) {
|
|
694
|
+
vErrors = [err20];
|
|
695
|
+
}
|
|
696
|
+
else {
|
|
697
|
+
vErrors.push(err20);
|
|
698
|
+
}
|
|
699
|
+
errors++;
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
else {
|
|
703
|
+
const err21 = {instancePath:instancePath+"/attestations/" + i1+"/uri",schemaPath:"#/properties/attestations/items/properties/uri/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
704
|
+
if (vErrors === null) {
|
|
705
|
+
vErrors = [err21];
|
|
706
|
+
}
|
|
707
|
+
else {
|
|
708
|
+
vErrors.push(err21);
|
|
709
|
+
}
|
|
710
|
+
errors++;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
if (data9.mediaType !== undefined) {
|
|
714
|
+
if (typeof data9.mediaType !== "string") {
|
|
715
|
+
const err22 = {instancePath:instancePath+"/attestations/" + i1+"/mediaType",schemaPath:"#/properties/attestations/items/properties/mediaType/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
716
|
+
if (vErrors === null) {
|
|
717
|
+
vErrors = [err22];
|
|
718
|
+
}
|
|
719
|
+
else {
|
|
720
|
+
vErrors.push(err22);
|
|
721
|
+
}
|
|
722
|
+
errors++;
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
if (data9.digest !== undefined) {
|
|
726
|
+
if (typeof data9.digest !== "string") {
|
|
727
|
+
const err23 = {instancePath:instancePath+"/attestations/" + i1+"/digest",schemaPath:"#/properties/attestations/items/properties/digest/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
728
|
+
if (vErrors === null) {
|
|
729
|
+
vErrors = [err23];
|
|
730
|
+
}
|
|
731
|
+
else {
|
|
732
|
+
vErrors.push(err23);
|
|
733
|
+
}
|
|
734
|
+
errors++;
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
else {
|
|
739
|
+
const err24 = {instancePath:instancePath+"/attestations/" + i1,schemaPath:"#/properties/attestations/items/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
740
|
+
if (vErrors === null) {
|
|
741
|
+
vErrors = [err24];
|
|
742
|
+
}
|
|
743
|
+
else {
|
|
744
|
+
vErrors.push(err24);
|
|
745
|
+
}
|
|
746
|
+
errors++;
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
else {
|
|
751
|
+
const err25 = {instancePath:instancePath+"/attestations",schemaPath:"#/properties/attestations/type",keyword:"type",params:{type: "array"},message:"must be array"};
|
|
752
|
+
if (vErrors === null) {
|
|
753
|
+
vErrors = [err25];
|
|
754
|
+
}
|
|
755
|
+
else {
|
|
756
|
+
vErrors.push(err25);
|
|
757
|
+
}
|
|
758
|
+
errors++;
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
if (data.provenance !== undefined) {
|
|
762
|
+
let data14 = data.provenance;
|
|
763
|
+
if (Array.isArray(data14)) {
|
|
764
|
+
const len2 = data14.length;
|
|
765
|
+
for (let i2=0; i2<len2; i2++) {
|
|
766
|
+
let data15 = data14[i2];
|
|
767
|
+
if (data15 && typeof data15 == "object" && !Array.isArray(data15)) {
|
|
768
|
+
if (data15.relation === undefined) {
|
|
769
|
+
const err26 = {instancePath:instancePath+"/provenance/" + i2,schemaPath:"#/properties/provenance/items/required",keyword:"required",params:{missingProperty: "relation"},message:"must have required property '"+"relation"+"'"};
|
|
770
|
+
if (vErrors === null) {
|
|
771
|
+
vErrors = [err26];
|
|
772
|
+
}
|
|
773
|
+
else {
|
|
774
|
+
vErrors.push(err26);
|
|
775
|
+
}
|
|
776
|
+
errors++;
|
|
777
|
+
}
|
|
778
|
+
if (data15.sourceId === undefined) {
|
|
779
|
+
const err27 = {instancePath:instancePath+"/provenance/" + i2,schemaPath:"#/properties/provenance/items/required",keyword:"required",params:{missingProperty: "sourceId"},message:"must have required property '"+"sourceId"+"'"};
|
|
780
|
+
if (vErrors === null) {
|
|
781
|
+
vErrors = [err27];
|
|
782
|
+
}
|
|
783
|
+
else {
|
|
784
|
+
vErrors.push(err27);
|
|
785
|
+
}
|
|
786
|
+
errors++;
|
|
787
|
+
}
|
|
788
|
+
for (const key3 in data15) {
|
|
789
|
+
if (!(((key3 === "relation") || (key3 === "sourceId")) || (key3 === "sourceDigest"))) {
|
|
790
|
+
const err28 = {instancePath:instancePath+"/provenance/" + i2,schemaPath:"#/properties/provenance/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key3},message:"must NOT have additional properties"};
|
|
791
|
+
if (vErrors === null) {
|
|
792
|
+
vErrors = [err28];
|
|
793
|
+
}
|
|
794
|
+
else {
|
|
795
|
+
vErrors.push(err28);
|
|
796
|
+
}
|
|
797
|
+
errors++;
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
if (data15.relation !== undefined) {
|
|
801
|
+
let data16 = data15.relation;
|
|
802
|
+
if (typeof data16 !== "string") {
|
|
803
|
+
const err29 = {instancePath:instancePath+"/provenance/" + i2+"/relation",schemaPath:"#/properties/provenance/items/properties/relation/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
804
|
+
if (vErrors === null) {
|
|
805
|
+
vErrors = [err29];
|
|
806
|
+
}
|
|
807
|
+
else {
|
|
808
|
+
vErrors.push(err29);
|
|
809
|
+
}
|
|
810
|
+
errors++;
|
|
811
|
+
}
|
|
812
|
+
if (!(((data16 === "derivedFrom") || (data16 === "publishedFrom")) || (data16 === "copiedFrom"))) {
|
|
813
|
+
const err30 = {instancePath:instancePath+"/provenance/" + i2+"/relation",schemaPath:"#/properties/provenance/items/properties/relation/enum",keyword:"enum",params:{allowedValues: schema32.properties.provenance.items.properties.relation.enum},message:"must be equal to one of the allowed values"};
|
|
814
|
+
if (vErrors === null) {
|
|
815
|
+
vErrors = [err30];
|
|
816
|
+
}
|
|
817
|
+
else {
|
|
818
|
+
vErrors.push(err30);
|
|
819
|
+
}
|
|
820
|
+
errors++;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
if (data15.sourceId !== undefined) {
|
|
824
|
+
if (typeof data15.sourceId !== "string") {
|
|
825
|
+
const err31 = {instancePath:instancePath+"/provenance/" + i2+"/sourceId",schemaPath:"#/properties/provenance/items/properties/sourceId/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
826
|
+
if (vErrors === null) {
|
|
827
|
+
vErrors = [err31];
|
|
828
|
+
}
|
|
829
|
+
else {
|
|
830
|
+
vErrors.push(err31);
|
|
831
|
+
}
|
|
832
|
+
errors++;
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
if (data15.sourceDigest !== undefined) {
|
|
836
|
+
if (typeof data15.sourceDigest !== "string") {
|
|
837
|
+
const err32 = {instancePath:instancePath+"/provenance/" + i2+"/sourceDigest",schemaPath:"#/properties/provenance/items/properties/sourceDigest/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
838
|
+
if (vErrors === null) {
|
|
839
|
+
vErrors = [err32];
|
|
840
|
+
}
|
|
841
|
+
else {
|
|
842
|
+
vErrors.push(err32);
|
|
843
|
+
}
|
|
844
|
+
errors++;
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
else {
|
|
849
|
+
const err33 = {instancePath:instancePath+"/provenance/" + i2,schemaPath:"#/properties/provenance/items/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
850
|
+
if (vErrors === null) {
|
|
851
|
+
vErrors = [err33];
|
|
852
|
+
}
|
|
853
|
+
else {
|
|
854
|
+
vErrors.push(err33);
|
|
855
|
+
}
|
|
856
|
+
errors++;
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
else {
|
|
861
|
+
const err34 = {instancePath:instancePath+"/provenance",schemaPath:"#/properties/provenance/type",keyword:"type",params:{type: "array"},message:"must be array"};
|
|
862
|
+
if (vErrors === null) {
|
|
863
|
+
vErrors = [err34];
|
|
864
|
+
}
|
|
865
|
+
else {
|
|
866
|
+
vErrors.push(err34);
|
|
867
|
+
}
|
|
868
|
+
errors++;
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
if (data.signature !== undefined) {
|
|
872
|
+
if (typeof data.signature !== "string") {
|
|
873
|
+
const err35 = {instancePath:instancePath+"/signature",schemaPath:"#/properties/signature/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
874
|
+
if (vErrors === null) {
|
|
875
|
+
vErrors = [err35];
|
|
876
|
+
}
|
|
877
|
+
else {
|
|
878
|
+
vErrors.push(err35);
|
|
879
|
+
}
|
|
880
|
+
errors++;
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
else {
|
|
885
|
+
const err36 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
886
|
+
if (vErrors === null) {
|
|
887
|
+
vErrors = [err36];
|
|
888
|
+
}
|
|
889
|
+
else {
|
|
890
|
+
vErrors.push(err36);
|
|
891
|
+
}
|
|
892
|
+
errors++;
|
|
893
|
+
}
|
|
894
|
+
validate21.errors = vErrors;
|
|
895
|
+
return errors === 0;
|
|
896
|
+
}
|
|
897
|
+
validate21.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};
|
|
898
|
+
|
|
899
|
+
const schema34 = {
|
|
900
|
+
"type": "object",
|
|
901
|
+
"description": "A single AI capability entry within the catalog.",
|
|
902
|
+
"required": [
|
|
903
|
+
"identifier",
|
|
904
|
+
"displayName",
|
|
905
|
+
"type"
|
|
906
|
+
],
|
|
907
|
+
"oneOf": [
|
|
908
|
+
{
|
|
909
|
+
"required": [
|
|
910
|
+
"url"
|
|
911
|
+
],
|
|
912
|
+
"not": {
|
|
913
|
+
"required": [
|
|
914
|
+
"data"
|
|
915
|
+
]
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
"required": [
|
|
920
|
+
"data"
|
|
921
|
+
],
|
|
922
|
+
"not": {
|
|
923
|
+
"required": [
|
|
924
|
+
"url"
|
|
925
|
+
]
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
],
|
|
929
|
+
"properties": {
|
|
930
|
+
"identifier": {
|
|
931
|
+
"type": "string",
|
|
932
|
+
"pattern": "^urn:air:[a-zA-Z0-9.-]+(:[a-zA-Z0-9._-]+)+$",
|
|
933
|
+
"description": "RFC 8141-compliant unique logical URN formatted as: urn:air:<publisher>:<namespace>:<agent-name>"
|
|
934
|
+
},
|
|
935
|
+
"displayName": {
|
|
936
|
+
"type": "string",
|
|
937
|
+
"description": "Human-friendly display name."
|
|
938
|
+
},
|
|
939
|
+
"type": {
|
|
940
|
+
"type": "string",
|
|
941
|
+
"description": "IANA Media Type indicating the specific protocol wrapper or payload structure (e.g. application/mcp-server-card+json)."
|
|
942
|
+
},
|
|
943
|
+
"url": {
|
|
944
|
+
"type": "string",
|
|
945
|
+
"format": "uri",
|
|
946
|
+
"description": "HTTP URL reference to retrieve the full artifact document."
|
|
947
|
+
},
|
|
948
|
+
"data": {
|
|
949
|
+
"type": "object",
|
|
950
|
+
"description": "Embedded JSON object containing the complete artifact specification inline."
|
|
951
|
+
},
|
|
952
|
+
"description": {
|
|
953
|
+
"type": "string",
|
|
954
|
+
"description": "Brief natural-language description of the capability."
|
|
955
|
+
},
|
|
956
|
+
"tags": {
|
|
957
|
+
"type": "array",
|
|
958
|
+
"items": {
|
|
959
|
+
"type": "string"
|
|
960
|
+
},
|
|
961
|
+
"description": "Tags or keywords for basic categorizing and filtering."
|
|
962
|
+
},
|
|
963
|
+
"capabilities": {
|
|
964
|
+
"type": "array",
|
|
965
|
+
"items": {
|
|
966
|
+
"type": "string"
|
|
967
|
+
},
|
|
968
|
+
"description": "Explicit high-performance indexing tags representing skills, tools, or functions (e.g. ['WeatherTool', 'ForecastTool'])."
|
|
969
|
+
},
|
|
970
|
+
"representativeQueries": {
|
|
971
|
+
"type": "array",
|
|
972
|
+
"minItems": 2,
|
|
973
|
+
"maxItems": 5,
|
|
974
|
+
"items": {
|
|
975
|
+
"type": "string"
|
|
976
|
+
},
|
|
977
|
+
"description": "Representative natural-language search queries used for indexing and vector embedding generation."
|
|
978
|
+
},
|
|
979
|
+
"version": {
|
|
980
|
+
"type": "string",
|
|
981
|
+
"description": "Semantic version of the capability."
|
|
982
|
+
},
|
|
983
|
+
"updatedAt": {
|
|
984
|
+
"type": "string",
|
|
985
|
+
"format": "date-time",
|
|
986
|
+
"description": "ISO 8601 timestamp of the last modification."
|
|
987
|
+
},
|
|
988
|
+
"metadata": {
|
|
989
|
+
"type": "object",
|
|
990
|
+
"description": "Arbitrary key-value pairs for custom extensions.",
|
|
991
|
+
"additionalProperties": {
|
|
992
|
+
"type": [
|
|
993
|
+
"string",
|
|
994
|
+
"number",
|
|
995
|
+
"boolean",
|
|
996
|
+
"null"
|
|
997
|
+
]
|
|
998
|
+
}
|
|
999
|
+
},
|
|
1000
|
+
"trustManifest": {
|
|
1001
|
+
"$ref": "#/$defs/trustManifest"
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
};
|
|
1005
|
+
const pattern4 = new RegExp("^urn:air:[a-zA-Z0-9.-]+(:[a-zA-Z0-9._-]+)+$", "u");
|
|
1006
|
+
const formats10 = fullFormats["date-time"];
|
|
1007
|
+
|
|
1008
|
+
function validate23(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}) {
|
|
1009
|
+
let vErrors = null;
|
|
1010
|
+
let errors = 0;
|
|
1011
|
+
const evaluated0 = validate23.evaluated;
|
|
1012
|
+
if (evaluated0.dynamicProps) {
|
|
1013
|
+
evaluated0.props = undefined;
|
|
1014
|
+
}
|
|
1015
|
+
if (evaluated0.dynamicItems) {
|
|
1016
|
+
evaluated0.items = undefined;
|
|
1017
|
+
}
|
|
1018
|
+
const _errs1 = errors;
|
|
1019
|
+
let valid0 = false;
|
|
1020
|
+
let passing0 = null;
|
|
1021
|
+
const _errs2 = errors;
|
|
1022
|
+
const _errs3 = errors;
|
|
1023
|
+
const _errs4 = errors;
|
|
1024
|
+
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
1025
|
+
let missing0;
|
|
1026
|
+
if ((data.data === undefined) && (missing0 = "data")) {
|
|
1027
|
+
const err0 = {};
|
|
1028
|
+
if (vErrors === null) {
|
|
1029
|
+
vErrors = [err0];
|
|
1030
|
+
}
|
|
1031
|
+
else {
|
|
1032
|
+
vErrors.push(err0);
|
|
1033
|
+
}
|
|
1034
|
+
errors++;
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
var valid1 = _errs4 === errors;
|
|
1038
|
+
if (valid1) {
|
|
1039
|
+
const err1 = {instancePath,schemaPath:"#/oneOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};
|
|
1040
|
+
if (vErrors === null) {
|
|
1041
|
+
vErrors = [err1];
|
|
1042
|
+
}
|
|
1043
|
+
else {
|
|
1044
|
+
vErrors.push(err1);
|
|
1045
|
+
}
|
|
1046
|
+
errors++;
|
|
1047
|
+
}
|
|
1048
|
+
else {
|
|
1049
|
+
errors = _errs3;
|
|
1050
|
+
if (vErrors !== null) {
|
|
1051
|
+
if (_errs3) {
|
|
1052
|
+
vErrors.length = _errs3;
|
|
1053
|
+
}
|
|
1054
|
+
else {
|
|
1055
|
+
vErrors = null;
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
1060
|
+
if (data.url === undefined) {
|
|
1061
|
+
const err2 = {instancePath,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty: "url"},message:"must have required property '"+"url"+"'"};
|
|
1062
|
+
if (vErrors === null) {
|
|
1063
|
+
vErrors = [err2];
|
|
1064
|
+
}
|
|
1065
|
+
else {
|
|
1066
|
+
vErrors.push(err2);
|
|
1067
|
+
}
|
|
1068
|
+
errors++;
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
var _valid0 = _errs2 === errors;
|
|
1072
|
+
if (_valid0) {
|
|
1073
|
+
valid0 = true;
|
|
1074
|
+
passing0 = 0;
|
|
1075
|
+
}
|
|
1076
|
+
const _errs5 = errors;
|
|
1077
|
+
const _errs6 = errors;
|
|
1078
|
+
const _errs7 = errors;
|
|
1079
|
+
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
1080
|
+
let missing1;
|
|
1081
|
+
if ((data.url === undefined) && (missing1 = "url")) {
|
|
1082
|
+
const err3 = {};
|
|
1083
|
+
if (vErrors === null) {
|
|
1084
|
+
vErrors = [err3];
|
|
1085
|
+
}
|
|
1086
|
+
else {
|
|
1087
|
+
vErrors.push(err3);
|
|
1088
|
+
}
|
|
1089
|
+
errors++;
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
var valid2 = _errs7 === errors;
|
|
1093
|
+
if (valid2) {
|
|
1094
|
+
const err4 = {instancePath,schemaPath:"#/oneOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};
|
|
1095
|
+
if (vErrors === null) {
|
|
1096
|
+
vErrors = [err4];
|
|
1097
|
+
}
|
|
1098
|
+
else {
|
|
1099
|
+
vErrors.push(err4);
|
|
1100
|
+
}
|
|
1101
|
+
errors++;
|
|
1102
|
+
}
|
|
1103
|
+
else {
|
|
1104
|
+
errors = _errs6;
|
|
1105
|
+
if (vErrors !== null) {
|
|
1106
|
+
if (_errs6) {
|
|
1107
|
+
vErrors.length = _errs6;
|
|
1108
|
+
}
|
|
1109
|
+
else {
|
|
1110
|
+
vErrors = null;
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
1115
|
+
if (data.data === undefined) {
|
|
1116
|
+
const err5 = {instancePath,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty: "data"},message:"must have required property '"+"data"+"'"};
|
|
1117
|
+
if (vErrors === null) {
|
|
1118
|
+
vErrors = [err5];
|
|
1119
|
+
}
|
|
1120
|
+
else {
|
|
1121
|
+
vErrors.push(err5);
|
|
1122
|
+
}
|
|
1123
|
+
errors++;
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
var _valid0 = _errs5 === errors;
|
|
1127
|
+
if (_valid0 && valid0) {
|
|
1128
|
+
valid0 = false;
|
|
1129
|
+
passing0 = [passing0, 1];
|
|
1130
|
+
}
|
|
1131
|
+
else {
|
|
1132
|
+
if (_valid0) {
|
|
1133
|
+
valid0 = true;
|
|
1134
|
+
passing0 = 1;
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
if (!valid0) {
|
|
1138
|
+
const err6 = {instancePath,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};
|
|
1139
|
+
if (vErrors === null) {
|
|
1140
|
+
vErrors = [err6];
|
|
1141
|
+
}
|
|
1142
|
+
else {
|
|
1143
|
+
vErrors.push(err6);
|
|
1144
|
+
}
|
|
1145
|
+
errors++;
|
|
1146
|
+
}
|
|
1147
|
+
else {
|
|
1148
|
+
errors = _errs1;
|
|
1149
|
+
if (vErrors !== null) {
|
|
1150
|
+
if (_errs1) {
|
|
1151
|
+
vErrors.length = _errs1;
|
|
1152
|
+
}
|
|
1153
|
+
else {
|
|
1154
|
+
vErrors = null;
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
1159
|
+
if (data.identifier === undefined) {
|
|
1160
|
+
const err7 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "identifier"},message:"must have required property '"+"identifier"+"'"};
|
|
1161
|
+
if (vErrors === null) {
|
|
1162
|
+
vErrors = [err7];
|
|
1163
|
+
}
|
|
1164
|
+
else {
|
|
1165
|
+
vErrors.push(err7);
|
|
1166
|
+
}
|
|
1167
|
+
errors++;
|
|
1168
|
+
}
|
|
1169
|
+
if (data.displayName === undefined) {
|
|
1170
|
+
const err8 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "displayName"},message:"must have required property '"+"displayName"+"'"};
|
|
1171
|
+
if (vErrors === null) {
|
|
1172
|
+
vErrors = [err8];
|
|
1173
|
+
}
|
|
1174
|
+
else {
|
|
1175
|
+
vErrors.push(err8);
|
|
1176
|
+
}
|
|
1177
|
+
errors++;
|
|
1178
|
+
}
|
|
1179
|
+
if (data.type === undefined) {
|
|
1180
|
+
const err9 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "type"},message:"must have required property '"+"type"+"'"};
|
|
1181
|
+
if (vErrors === null) {
|
|
1182
|
+
vErrors = [err9];
|
|
1183
|
+
}
|
|
1184
|
+
else {
|
|
1185
|
+
vErrors.push(err9);
|
|
1186
|
+
}
|
|
1187
|
+
errors++;
|
|
1188
|
+
}
|
|
1189
|
+
if (data.identifier !== undefined) {
|
|
1190
|
+
let data0 = data.identifier;
|
|
1191
|
+
if (typeof data0 === "string") {
|
|
1192
|
+
if (!pattern4.test(data0)) {
|
|
1193
|
+
const err10 = {instancePath:instancePath+"/identifier",schemaPath:"#/properties/identifier/pattern",keyword:"pattern",params:{pattern: "^urn:air:[a-zA-Z0-9.-]+(:[a-zA-Z0-9._-]+)+$"},message:"must match pattern \""+"^urn:air:[a-zA-Z0-9.-]+(:[a-zA-Z0-9._-]+)+$"+"\""};
|
|
1194
|
+
if (vErrors === null) {
|
|
1195
|
+
vErrors = [err10];
|
|
1196
|
+
}
|
|
1197
|
+
else {
|
|
1198
|
+
vErrors.push(err10);
|
|
1199
|
+
}
|
|
1200
|
+
errors++;
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
else {
|
|
1204
|
+
const err11 = {instancePath:instancePath+"/identifier",schemaPath:"#/properties/identifier/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1205
|
+
if (vErrors === null) {
|
|
1206
|
+
vErrors = [err11];
|
|
1207
|
+
}
|
|
1208
|
+
else {
|
|
1209
|
+
vErrors.push(err11);
|
|
1210
|
+
}
|
|
1211
|
+
errors++;
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
if (data.displayName !== undefined) {
|
|
1215
|
+
if (typeof data.displayName !== "string") {
|
|
1216
|
+
const err12 = {instancePath:instancePath+"/displayName",schemaPath:"#/properties/displayName/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1217
|
+
if (vErrors === null) {
|
|
1218
|
+
vErrors = [err12];
|
|
1219
|
+
}
|
|
1220
|
+
else {
|
|
1221
|
+
vErrors.push(err12);
|
|
1222
|
+
}
|
|
1223
|
+
errors++;
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
if (data.type !== undefined) {
|
|
1227
|
+
if (typeof data.type !== "string") {
|
|
1228
|
+
const err13 = {instancePath:instancePath+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1229
|
+
if (vErrors === null) {
|
|
1230
|
+
vErrors = [err13];
|
|
1231
|
+
}
|
|
1232
|
+
else {
|
|
1233
|
+
vErrors.push(err13);
|
|
1234
|
+
}
|
|
1235
|
+
errors++;
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
if (data.url !== undefined) {
|
|
1239
|
+
let data3 = data.url;
|
|
1240
|
+
if (typeof data3 === "string") {
|
|
1241
|
+
if (!(formats0(data3))) {
|
|
1242
|
+
const err14 = {instancePath:instancePath+"/url",schemaPath:"#/properties/url/format",keyword:"format",params:{format: "uri"},message:"must match format \""+"uri"+"\""};
|
|
1243
|
+
if (vErrors === null) {
|
|
1244
|
+
vErrors = [err14];
|
|
1245
|
+
}
|
|
1246
|
+
else {
|
|
1247
|
+
vErrors.push(err14);
|
|
1248
|
+
}
|
|
1249
|
+
errors++;
|
|
1250
|
+
}
|
|
1251
|
+
}
|
|
1252
|
+
else {
|
|
1253
|
+
const err15 = {instancePath:instancePath+"/url",schemaPath:"#/properties/url/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1254
|
+
if (vErrors === null) {
|
|
1255
|
+
vErrors = [err15];
|
|
1256
|
+
}
|
|
1257
|
+
else {
|
|
1258
|
+
vErrors.push(err15);
|
|
1259
|
+
}
|
|
1260
|
+
errors++;
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1263
|
+
if (data.data !== undefined) {
|
|
1264
|
+
let data4 = data.data;
|
|
1265
|
+
if (!(data4 && typeof data4 == "object" && !Array.isArray(data4))) {
|
|
1266
|
+
const err16 = {instancePath:instancePath+"/data",schemaPath:"#/properties/data/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
1267
|
+
if (vErrors === null) {
|
|
1268
|
+
vErrors = [err16];
|
|
1269
|
+
}
|
|
1270
|
+
else {
|
|
1271
|
+
vErrors.push(err16);
|
|
1272
|
+
}
|
|
1273
|
+
errors++;
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
if (data.description !== undefined) {
|
|
1277
|
+
if (typeof data.description !== "string") {
|
|
1278
|
+
const err17 = {instancePath:instancePath+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1279
|
+
if (vErrors === null) {
|
|
1280
|
+
vErrors = [err17];
|
|
1281
|
+
}
|
|
1282
|
+
else {
|
|
1283
|
+
vErrors.push(err17);
|
|
1284
|
+
}
|
|
1285
|
+
errors++;
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
if (data.tags !== undefined) {
|
|
1289
|
+
let data6 = data.tags;
|
|
1290
|
+
if (Array.isArray(data6)) {
|
|
1291
|
+
const len0 = data6.length;
|
|
1292
|
+
for (let i0=0; i0<len0; i0++) {
|
|
1293
|
+
if (typeof data6[i0] !== "string") {
|
|
1294
|
+
const err18 = {instancePath:instancePath+"/tags/" + i0,schemaPath:"#/properties/tags/items/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1295
|
+
if (vErrors === null) {
|
|
1296
|
+
vErrors = [err18];
|
|
1297
|
+
}
|
|
1298
|
+
else {
|
|
1299
|
+
vErrors.push(err18);
|
|
1300
|
+
}
|
|
1301
|
+
errors++;
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
else {
|
|
1306
|
+
const err19 = {instancePath:instancePath+"/tags",schemaPath:"#/properties/tags/type",keyword:"type",params:{type: "array"},message:"must be array"};
|
|
1307
|
+
if (vErrors === null) {
|
|
1308
|
+
vErrors = [err19];
|
|
1309
|
+
}
|
|
1310
|
+
else {
|
|
1311
|
+
vErrors.push(err19);
|
|
1312
|
+
}
|
|
1313
|
+
errors++;
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
if (data.capabilities !== undefined) {
|
|
1317
|
+
let data8 = data.capabilities;
|
|
1318
|
+
if (Array.isArray(data8)) {
|
|
1319
|
+
const len1 = data8.length;
|
|
1320
|
+
for (let i1=0; i1<len1; i1++) {
|
|
1321
|
+
if (typeof data8[i1] !== "string") {
|
|
1322
|
+
const err20 = {instancePath:instancePath+"/capabilities/" + i1,schemaPath:"#/properties/capabilities/items/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1323
|
+
if (vErrors === null) {
|
|
1324
|
+
vErrors = [err20];
|
|
1325
|
+
}
|
|
1326
|
+
else {
|
|
1327
|
+
vErrors.push(err20);
|
|
1328
|
+
}
|
|
1329
|
+
errors++;
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
else {
|
|
1334
|
+
const err21 = {instancePath:instancePath+"/capabilities",schemaPath:"#/properties/capabilities/type",keyword:"type",params:{type: "array"},message:"must be array"};
|
|
1335
|
+
if (vErrors === null) {
|
|
1336
|
+
vErrors = [err21];
|
|
1337
|
+
}
|
|
1338
|
+
else {
|
|
1339
|
+
vErrors.push(err21);
|
|
1340
|
+
}
|
|
1341
|
+
errors++;
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1344
|
+
if (data.representativeQueries !== undefined) {
|
|
1345
|
+
let data10 = data.representativeQueries;
|
|
1346
|
+
if (Array.isArray(data10)) {
|
|
1347
|
+
if (data10.length > 5) {
|
|
1348
|
+
const err22 = {instancePath:instancePath+"/representativeQueries",schemaPath:"#/properties/representativeQueries/maxItems",keyword:"maxItems",params:{limit: 5},message:"must NOT have more than 5 items"};
|
|
1349
|
+
if (vErrors === null) {
|
|
1350
|
+
vErrors = [err22];
|
|
1351
|
+
}
|
|
1352
|
+
else {
|
|
1353
|
+
vErrors.push(err22);
|
|
1354
|
+
}
|
|
1355
|
+
errors++;
|
|
1356
|
+
}
|
|
1357
|
+
if (data10.length < 2) {
|
|
1358
|
+
const err23 = {instancePath:instancePath+"/representativeQueries",schemaPath:"#/properties/representativeQueries/minItems",keyword:"minItems",params:{limit: 2},message:"must NOT have fewer than 2 items"};
|
|
1359
|
+
if (vErrors === null) {
|
|
1360
|
+
vErrors = [err23];
|
|
1361
|
+
}
|
|
1362
|
+
else {
|
|
1363
|
+
vErrors.push(err23);
|
|
1364
|
+
}
|
|
1365
|
+
errors++;
|
|
1366
|
+
}
|
|
1367
|
+
const len2 = data10.length;
|
|
1368
|
+
for (let i2=0; i2<len2; i2++) {
|
|
1369
|
+
if (typeof data10[i2] !== "string") {
|
|
1370
|
+
const err24 = {instancePath:instancePath+"/representativeQueries/" + i2,schemaPath:"#/properties/representativeQueries/items/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1371
|
+
if (vErrors === null) {
|
|
1372
|
+
vErrors = [err24];
|
|
1373
|
+
}
|
|
1374
|
+
else {
|
|
1375
|
+
vErrors.push(err24);
|
|
1376
|
+
}
|
|
1377
|
+
errors++;
|
|
1378
|
+
}
|
|
1379
|
+
}
|
|
1380
|
+
}
|
|
1381
|
+
else {
|
|
1382
|
+
const err25 = {instancePath:instancePath+"/representativeQueries",schemaPath:"#/properties/representativeQueries/type",keyword:"type",params:{type: "array"},message:"must be array"};
|
|
1383
|
+
if (vErrors === null) {
|
|
1384
|
+
vErrors = [err25];
|
|
1385
|
+
}
|
|
1386
|
+
else {
|
|
1387
|
+
vErrors.push(err25);
|
|
1388
|
+
}
|
|
1389
|
+
errors++;
|
|
1390
|
+
}
|
|
1391
|
+
}
|
|
1392
|
+
if (data.version !== undefined) {
|
|
1393
|
+
if (typeof data.version !== "string") {
|
|
1394
|
+
const err26 = {instancePath:instancePath+"/version",schemaPath:"#/properties/version/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1395
|
+
if (vErrors === null) {
|
|
1396
|
+
vErrors = [err26];
|
|
1397
|
+
}
|
|
1398
|
+
else {
|
|
1399
|
+
vErrors.push(err26);
|
|
1400
|
+
}
|
|
1401
|
+
errors++;
|
|
1402
|
+
}
|
|
1403
|
+
}
|
|
1404
|
+
if (data.updatedAt !== undefined) {
|
|
1405
|
+
let data13 = data.updatedAt;
|
|
1406
|
+
if (typeof data13 === "string") {
|
|
1407
|
+
if (!(formats10.validate(data13))) {
|
|
1408
|
+
const err27 = {instancePath:instancePath+"/updatedAt",schemaPath:"#/properties/updatedAt/format",keyword:"format",params:{format: "date-time"},message:"must match format \""+"date-time"+"\""};
|
|
1409
|
+
if (vErrors === null) {
|
|
1410
|
+
vErrors = [err27];
|
|
1411
|
+
}
|
|
1412
|
+
else {
|
|
1413
|
+
vErrors.push(err27);
|
|
1414
|
+
}
|
|
1415
|
+
errors++;
|
|
1416
|
+
}
|
|
1417
|
+
}
|
|
1418
|
+
else {
|
|
1419
|
+
const err28 = {instancePath:instancePath+"/updatedAt",schemaPath:"#/properties/updatedAt/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1420
|
+
if (vErrors === null) {
|
|
1421
|
+
vErrors = [err28];
|
|
1422
|
+
}
|
|
1423
|
+
else {
|
|
1424
|
+
vErrors.push(err28);
|
|
1425
|
+
}
|
|
1426
|
+
errors++;
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
if (data.metadata !== undefined) {
|
|
1430
|
+
let data14 = data.metadata;
|
|
1431
|
+
if (data14 && typeof data14 == "object" && !Array.isArray(data14)) {
|
|
1432
|
+
for (const key0 in data14) {
|
|
1433
|
+
let data15 = data14[key0];
|
|
1434
|
+
if ((((typeof data15 !== "string") && (!((typeof data15 == "number") && (isFinite(data15))))) && (typeof data15 !== "boolean")) && (data15 !== null)) {
|
|
1435
|
+
const err29 = {instancePath:instancePath+"/metadata/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/properties/metadata/additionalProperties/type",keyword:"type",params:{type: schema34.properties.metadata.additionalProperties.type},message:"must be string,number,boolean,null"};
|
|
1436
|
+
if (vErrors === null) {
|
|
1437
|
+
vErrors = [err29];
|
|
1438
|
+
}
|
|
1439
|
+
else {
|
|
1440
|
+
vErrors.push(err29);
|
|
1441
|
+
}
|
|
1442
|
+
errors++;
|
|
1443
|
+
}
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
else {
|
|
1447
|
+
const err30 = {instancePath:instancePath+"/metadata",schemaPath:"#/properties/metadata/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
1448
|
+
if (vErrors === null) {
|
|
1449
|
+
vErrors = [err30];
|
|
1450
|
+
}
|
|
1451
|
+
else {
|
|
1452
|
+
vErrors.push(err30);
|
|
1453
|
+
}
|
|
1454
|
+
errors++;
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
if (data.trustManifest !== undefined) {
|
|
1458
|
+
if (!(validate21(data.trustManifest, {instancePath:instancePath+"/trustManifest",parentData:data,parentDataProperty:"trustManifest",rootData,dynamicAnchors}))) {
|
|
1459
|
+
vErrors = vErrors === null ? validate21.errors : vErrors.concat(validate21.errors);
|
|
1460
|
+
errors = vErrors.length;
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
else {
|
|
1465
|
+
const err31 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
1466
|
+
if (vErrors === null) {
|
|
1467
|
+
vErrors = [err31];
|
|
1468
|
+
}
|
|
1469
|
+
else {
|
|
1470
|
+
vErrors.push(err31);
|
|
1471
|
+
}
|
|
1472
|
+
errors++;
|
|
1473
|
+
}
|
|
1474
|
+
validate23.errors = vErrors;
|
|
1475
|
+
return errors === 0;
|
|
1476
|
+
}
|
|
1477
|
+
validate23.evaluated = {"props":{"identifier":true,"displayName":true,"type":true,"url":true,"data":true,"description":true,"tags":true,"capabilities":true,"representativeQueries":true,"version":true,"updatedAt":true,"metadata":true,"trustManifest":true},"dynamicProps":false,"dynamicItems":false};
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
function validate20(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}) {
|
|
1481
|
+
/*# sourceURL="https://raw.githubusercontent.com/ards-project/ard-spec/main/spec/schemas/ai-catalog.schema.json" */;
|
|
1482
|
+
let vErrors = null;
|
|
1483
|
+
let errors = 0;
|
|
1484
|
+
const evaluated0 = validate20.evaluated;
|
|
1485
|
+
if (evaluated0.dynamicProps) {
|
|
1486
|
+
evaluated0.props = undefined;
|
|
1487
|
+
}
|
|
1488
|
+
if (evaluated0.dynamicItems) {
|
|
1489
|
+
evaluated0.items = undefined;
|
|
1490
|
+
}
|
|
1491
|
+
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
1492
|
+
if (data.specVersion === undefined) {
|
|
1493
|
+
const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "specVersion"},message:"must have required property '"+"specVersion"+"'"};
|
|
1494
|
+
if (vErrors === null) {
|
|
1495
|
+
vErrors = [err0];
|
|
1496
|
+
}
|
|
1497
|
+
else {
|
|
1498
|
+
vErrors.push(err0);
|
|
1499
|
+
}
|
|
1500
|
+
errors++;
|
|
1501
|
+
}
|
|
1502
|
+
if (data.entries === undefined) {
|
|
1503
|
+
const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "entries"},message:"must have required property '"+"entries"+"'"};
|
|
1504
|
+
if (vErrors === null) {
|
|
1505
|
+
vErrors = [err1];
|
|
1506
|
+
}
|
|
1507
|
+
else {
|
|
1508
|
+
vErrors.push(err1);
|
|
1509
|
+
}
|
|
1510
|
+
errors++;
|
|
1511
|
+
}
|
|
1512
|
+
for (const key0 in data) {
|
|
1513
|
+
if (!(((key0 === "specVersion") || (key0 === "host")) || (key0 === "entries"))) {
|
|
1514
|
+
const err2 = {instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};
|
|
1515
|
+
if (vErrors === null) {
|
|
1516
|
+
vErrors = [err2];
|
|
1517
|
+
}
|
|
1518
|
+
else {
|
|
1519
|
+
vErrors.push(err2);
|
|
1520
|
+
}
|
|
1521
|
+
errors++;
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
if (data.specVersion !== undefined) {
|
|
1525
|
+
let data0 = data.specVersion;
|
|
1526
|
+
if (typeof data0 !== "string") {
|
|
1527
|
+
const err3 = {instancePath:instancePath+"/specVersion",schemaPath:"#/properties/specVersion/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1528
|
+
if (vErrors === null) {
|
|
1529
|
+
vErrors = [err3];
|
|
1530
|
+
}
|
|
1531
|
+
else {
|
|
1532
|
+
vErrors.push(err3);
|
|
1533
|
+
}
|
|
1534
|
+
errors++;
|
|
1535
|
+
}
|
|
1536
|
+
if (!(data0 === "1.0")) {
|
|
1537
|
+
const err4 = {instancePath:instancePath+"/specVersion",schemaPath:"#/properties/specVersion/enum",keyword:"enum",params:{allowedValues: schema31.properties.specVersion.enum},message:"must be equal to one of the allowed values"};
|
|
1538
|
+
if (vErrors === null) {
|
|
1539
|
+
vErrors = [err4];
|
|
1540
|
+
}
|
|
1541
|
+
else {
|
|
1542
|
+
vErrors.push(err4);
|
|
1543
|
+
}
|
|
1544
|
+
errors++;
|
|
1545
|
+
}
|
|
1546
|
+
}
|
|
1547
|
+
if (data.host !== undefined) {
|
|
1548
|
+
let data1 = data.host;
|
|
1549
|
+
if (data1 && typeof data1 == "object" && !Array.isArray(data1)) {
|
|
1550
|
+
if (data1.displayName === undefined) {
|
|
1551
|
+
const err5 = {instancePath:instancePath+"/host",schemaPath:"#/properties/host/required",keyword:"required",params:{missingProperty: "displayName"},message:"must have required property '"+"displayName"+"'"};
|
|
1552
|
+
if (vErrors === null) {
|
|
1553
|
+
vErrors = [err5];
|
|
1554
|
+
}
|
|
1555
|
+
else {
|
|
1556
|
+
vErrors.push(err5);
|
|
1557
|
+
}
|
|
1558
|
+
errors++;
|
|
1559
|
+
}
|
|
1560
|
+
for (const key1 in data1) {
|
|
1561
|
+
if (!(((((key1 === "displayName") || (key1 === "identifier")) || (key1 === "documentationUrl")) || (key1 === "logoUrl")) || (key1 === "trustManifest"))) {
|
|
1562
|
+
const err6 = {instancePath:instancePath+"/host",schemaPath:"#/properties/host/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"};
|
|
1563
|
+
if (vErrors === null) {
|
|
1564
|
+
vErrors = [err6];
|
|
1565
|
+
}
|
|
1566
|
+
else {
|
|
1567
|
+
vErrors.push(err6);
|
|
1568
|
+
}
|
|
1569
|
+
errors++;
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
if (data1.displayName !== undefined) {
|
|
1573
|
+
if (typeof data1.displayName !== "string") {
|
|
1574
|
+
const err7 = {instancePath:instancePath+"/host/displayName",schemaPath:"#/properties/host/properties/displayName/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1575
|
+
if (vErrors === null) {
|
|
1576
|
+
vErrors = [err7];
|
|
1577
|
+
}
|
|
1578
|
+
else {
|
|
1579
|
+
vErrors.push(err7);
|
|
1580
|
+
}
|
|
1581
|
+
errors++;
|
|
1582
|
+
}
|
|
1583
|
+
}
|
|
1584
|
+
if (data1.identifier !== undefined) {
|
|
1585
|
+
if (typeof data1.identifier !== "string") {
|
|
1586
|
+
const err8 = {instancePath:instancePath+"/host/identifier",schemaPath:"#/properties/host/properties/identifier/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1587
|
+
if (vErrors === null) {
|
|
1588
|
+
vErrors = [err8];
|
|
1589
|
+
}
|
|
1590
|
+
else {
|
|
1591
|
+
vErrors.push(err8);
|
|
1592
|
+
}
|
|
1593
|
+
errors++;
|
|
1594
|
+
}
|
|
1595
|
+
}
|
|
1596
|
+
if (data1.documentationUrl !== undefined) {
|
|
1597
|
+
let data4 = data1.documentationUrl;
|
|
1598
|
+
if (typeof data4 === "string") {
|
|
1599
|
+
if (!(formats0(data4))) {
|
|
1600
|
+
const err9 = {instancePath:instancePath+"/host/documentationUrl",schemaPath:"#/properties/host/properties/documentationUrl/format",keyword:"format",params:{format: "uri"},message:"must match format \""+"uri"+"\""};
|
|
1601
|
+
if (vErrors === null) {
|
|
1602
|
+
vErrors = [err9];
|
|
1603
|
+
}
|
|
1604
|
+
else {
|
|
1605
|
+
vErrors.push(err9);
|
|
1606
|
+
}
|
|
1607
|
+
errors++;
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
else {
|
|
1611
|
+
const err10 = {instancePath:instancePath+"/host/documentationUrl",schemaPath:"#/properties/host/properties/documentationUrl/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1612
|
+
if (vErrors === null) {
|
|
1613
|
+
vErrors = [err10];
|
|
1614
|
+
}
|
|
1615
|
+
else {
|
|
1616
|
+
vErrors.push(err10);
|
|
1617
|
+
}
|
|
1618
|
+
errors++;
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
if (data1.logoUrl !== undefined) {
|
|
1622
|
+
let data5 = data1.logoUrl;
|
|
1623
|
+
if (typeof data5 === "string") {
|
|
1624
|
+
if (!(formats0(data5))) {
|
|
1625
|
+
const err11 = {instancePath:instancePath+"/host/logoUrl",schemaPath:"#/properties/host/properties/logoUrl/format",keyword:"format",params:{format: "uri"},message:"must match format \""+"uri"+"\""};
|
|
1626
|
+
if (vErrors === null) {
|
|
1627
|
+
vErrors = [err11];
|
|
1628
|
+
}
|
|
1629
|
+
else {
|
|
1630
|
+
vErrors.push(err11);
|
|
1631
|
+
}
|
|
1632
|
+
errors++;
|
|
1633
|
+
}
|
|
1634
|
+
}
|
|
1635
|
+
else {
|
|
1636
|
+
const err12 = {instancePath:instancePath+"/host/logoUrl",schemaPath:"#/properties/host/properties/logoUrl/type",keyword:"type",params:{type: "string"},message:"must be string"};
|
|
1637
|
+
if (vErrors === null) {
|
|
1638
|
+
vErrors = [err12];
|
|
1639
|
+
}
|
|
1640
|
+
else {
|
|
1641
|
+
vErrors.push(err12);
|
|
1642
|
+
}
|
|
1643
|
+
errors++;
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
if (data1.trustManifest !== undefined) {
|
|
1647
|
+
if (!(validate21(data1.trustManifest, {instancePath:instancePath+"/host/trustManifest",parentData:data1,parentDataProperty:"trustManifest",rootData,dynamicAnchors}))) {
|
|
1648
|
+
vErrors = vErrors === null ? validate21.errors : vErrors.concat(validate21.errors);
|
|
1649
|
+
errors = vErrors.length;
|
|
1650
|
+
}
|
|
1651
|
+
}
|
|
1652
|
+
}
|
|
1653
|
+
else {
|
|
1654
|
+
const err13 = {instancePath:instancePath+"/host",schemaPath:"#/properties/host/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
1655
|
+
if (vErrors === null) {
|
|
1656
|
+
vErrors = [err13];
|
|
1657
|
+
}
|
|
1658
|
+
else {
|
|
1659
|
+
vErrors.push(err13);
|
|
1660
|
+
}
|
|
1661
|
+
errors++;
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
if (data.entries !== undefined) {
|
|
1665
|
+
let data7 = data.entries;
|
|
1666
|
+
if (Array.isArray(data7)) {
|
|
1667
|
+
const len0 = data7.length;
|
|
1668
|
+
for (let i0=0; i0<len0; i0++) {
|
|
1669
|
+
if (!(validate23(data7[i0], {instancePath:instancePath+"/entries/" + i0,parentData:data7,parentDataProperty:i0,rootData,dynamicAnchors}))) {
|
|
1670
|
+
vErrors = vErrors === null ? validate23.errors : vErrors.concat(validate23.errors);
|
|
1671
|
+
errors = vErrors.length;
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
else {
|
|
1676
|
+
const err14 = {instancePath:instancePath+"/entries",schemaPath:"#/properties/entries/type",keyword:"type",params:{type: "array"},message:"must be array"};
|
|
1677
|
+
if (vErrors === null) {
|
|
1678
|
+
vErrors = [err14];
|
|
1679
|
+
}
|
|
1680
|
+
else {
|
|
1681
|
+
vErrors.push(err14);
|
|
1682
|
+
}
|
|
1683
|
+
errors++;
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
else {
|
|
1688
|
+
const err15 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"};
|
|
1689
|
+
if (vErrors === null) {
|
|
1690
|
+
vErrors = [err15];
|
|
1691
|
+
}
|
|
1692
|
+
else {
|
|
1693
|
+
vErrors.push(err15);
|
|
1694
|
+
}
|
|
1695
|
+
errors++;
|
|
1696
|
+
}
|
|
1697
|
+
validate20.errors = vErrors;
|
|
1698
|
+
return errors === 0;
|
|
1699
|
+
}
|
|
1700
|
+
validate20.evaluated = {"props":true,"dynamicProps":false,"dynamicItems":false};
|