@grantex/sdk 0.5.1 → 0.7.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 (185) hide show
  1. package/LICENSE +185 -0
  2. package/NOTICE +16 -0
  3. package/README.md +34 -2
  4. package/dist/authorization-details.d.ts +86 -0
  5. package/dist/authorization-details.d.ts.map +1 -0
  6. package/dist/authorization-details.js +209 -0
  7. package/dist/authorization-details.js.map +1 -0
  8. package/dist/canonical.d.ts +47 -0
  9. package/dist/canonical.d.ts.map +1 -0
  10. package/dist/canonical.js +163 -0
  11. package/dist/canonical.js.map +1 -0
  12. package/dist/caps/index.d.ts +19 -0
  13. package/dist/caps/index.d.ts.map +1 -0
  14. package/dist/caps/index.js +19 -0
  15. package/dist/caps/index.js.map +1 -0
  16. package/dist/caps/limits.d.ts +40 -0
  17. package/dist/caps/limits.d.ts.map +1 -0
  18. package/dist/caps/limits.js +109 -0
  19. package/dist/caps/limits.js.map +1 -0
  20. package/dist/caps/memory.d.ts +15 -0
  21. package/dist/caps/memory.d.ts.map +1 -0
  22. package/dist/caps/memory.js +57 -0
  23. package/dist/caps/memory.js.map +1 -0
  24. package/dist/caps/meter.d.ts +107 -0
  25. package/dist/caps/meter.d.ts.map +1 -0
  26. package/dist/caps/meter.js +200 -0
  27. package/dist/caps/meter.js.map +1 -0
  28. package/dist/caps/postgres.d.ts +64 -0
  29. package/dist/caps/postgres.d.ts.map +1 -0
  30. package/dist/caps/postgres.js +221 -0
  31. package/dist/caps/postgres.js.map +1 -0
  32. package/dist/caps/redis.d.ts +45 -0
  33. package/dist/caps/redis.d.ts.map +1 -0
  34. package/dist/caps/redis.js +173 -0
  35. package/dist/caps/redis.js.map +1 -0
  36. package/dist/client.d.ts +12 -0
  37. package/dist/client.d.ts.map +1 -1
  38. package/dist/client.js +517 -57
  39. package/dist/client.js.map +1 -1
  40. package/dist/decisions/action.d.ts +51 -0
  41. package/dist/decisions/action.d.ts.map +1 -0
  42. package/dist/decisions/action.js +237 -0
  43. package/dist/decisions/action.js.map +1 -0
  44. package/dist/decisions/index.d.ts +11 -0
  45. package/dist/decisions/index.d.ts.map +1 -0
  46. package/dist/decisions/index.js +8 -0
  47. package/dist/decisions/index.js.map +1 -0
  48. package/dist/decisions/verify.d.ts +103 -0
  49. package/dist/decisions/verify.d.ts.map +1 -0
  50. package/dist/decisions/verify.js +277 -0
  51. package/dist/decisions/verify.js.map +1 -0
  52. package/dist/denials.d.ts +132 -0
  53. package/dist/denials.d.ts.map +1 -0
  54. package/dist/denials.js +129 -0
  55. package/dist/denials.js.map +1 -0
  56. package/dist/evidence/build.d.ts +63 -0
  57. package/dist/evidence/build.d.ts.map +1 -0
  58. package/dist/evidence/build.js +201 -0
  59. package/dist/evidence/build.js.map +1 -0
  60. package/dist/evidence/canonical.d.ts +3 -0
  61. package/dist/evidence/canonical.d.ts.map +1 -0
  62. package/dist/evidence/canonical.js +3 -0
  63. package/dist/evidence/canonical.js.map +1 -0
  64. package/dist/evidence/checks.d.ts +13 -0
  65. package/dist/evidence/checks.d.ts.map +1 -0
  66. package/dist/evidence/checks.js +406 -0
  67. package/dist/evidence/checks.js.map +1 -0
  68. package/dist/evidence/document.d.ts +8 -0
  69. package/dist/evidence/document.d.ts.map +1 -0
  70. package/dist/evidence/document.js +298 -0
  71. package/dist/evidence/document.js.map +1 -0
  72. package/dist/evidence/hashing.d.ts +37 -0
  73. package/dist/evidence/hashing.d.ts.map +1 -0
  74. package/dist/evidence/hashing.js +106 -0
  75. package/dist/evidence/hashing.js.map +1 -0
  76. package/dist/evidence/index.d.ts +24 -0
  77. package/dist/evidence/index.d.ts.map +1 -0
  78. package/dist/evidence/index.js +24 -0
  79. package/dist/evidence/index.js.map +1 -0
  80. package/dist/evidence/result.d.ts +88 -0
  81. package/dist/evidence/result.d.ts.map +1 -0
  82. package/dist/evidence/result.js +88 -0
  83. package/dist/evidence/result.js.map +1 -0
  84. package/dist/evidence/schema-1.0.d.ts +2 -0
  85. package/dist/evidence/schema-1.0.d.ts.map +1 -0
  86. package/dist/evidence/schema-1.0.js +1398 -0
  87. package/dist/evidence/schema-1.0.js.map +1 -0
  88. package/dist/evidence/schema.d.ts +13 -0
  89. package/dist/evidence/schema.d.ts.map +1 -0
  90. package/dist/evidence/schema.js +264 -0
  91. package/dist/evidence/schema.js.map +1 -0
  92. package/dist/evidence/signature.d.ts +23 -0
  93. package/dist/evidence/signature.d.ts.map +1 -0
  94. package/dist/evidence/signature.js +136 -0
  95. package/dist/evidence/signature.js.map +1 -0
  96. package/dist/evidence/trace.d.ts +23 -0
  97. package/dist/evidence/trace.d.ts.map +1 -0
  98. package/dist/evidence/trace.js +69 -0
  99. package/dist/evidence/trace.js.map +1 -0
  100. package/dist/evidence/verify.d.ts +29 -0
  101. package/dist/evidence/verify.d.ts.map +1 -0
  102. package/dist/evidence/verify.js +163 -0
  103. package/dist/evidence/verify.js.map +1 -0
  104. package/dist/http.d.ts +12 -1
  105. package/dist/http.d.ts.map +1 -1
  106. package/dist/http.js +11 -5
  107. package/dist/http.js.map +1 -1
  108. package/dist/index.d.ts +16 -3
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +16 -2
  111. package/dist/index.js.map +1 -1
  112. package/dist/manifest.d.ts +178 -9
  113. package/dist/manifest.d.ts.map +1 -1
  114. package/dist/manifest.js +379 -16
  115. package/dist/manifest.js.map +1 -1
  116. package/dist/prepaid-wallets.d.ts +21 -0
  117. package/dist/prepaid-wallets.d.ts.map +1 -1
  118. package/dist/prepaid-wallets.js +6 -0
  119. package/dist/prepaid-wallets.js.map +1 -1
  120. package/dist/purpose.d.ts +29 -0
  121. package/dist/purpose.d.ts.map +1 -0
  122. package/dist/purpose.js +60 -0
  123. package/dist/purpose.js.map +1 -0
  124. package/dist/resources/agents.js +3 -3
  125. package/dist/resources/agents.js.map +1 -1
  126. package/dist/resources/anomalies.d.ts +3 -1
  127. package/dist/resources/anomalies.d.ts.map +1 -1
  128. package/dist/resources/anomalies.js +7 -1
  129. package/dist/resources/anomalies.js.map +1 -1
  130. package/dist/resources/audit.js +1 -1
  131. package/dist/resources/audit.js.map +1 -1
  132. package/dist/resources/budgets.js +2 -2
  133. package/dist/resources/budgets.js.map +1 -1
  134. package/dist/resources/credentials.js +1 -1
  135. package/dist/resources/credentials.js.map +1 -1
  136. package/dist/resources/decisions.d.ts +69 -0
  137. package/dist/resources/decisions.d.ts.map +1 -0
  138. package/dist/resources/decisions.js +115 -0
  139. package/dist/resources/decisions.js.map +1 -0
  140. package/dist/resources/domains.js +2 -2
  141. package/dist/resources/domains.js.map +1 -1
  142. package/dist/resources/dpdp.js +4 -4
  143. package/dist/resources/dpdp.js.map +1 -1
  144. package/dist/resources/grants.js +2 -2
  145. package/dist/resources/grants.js.map +1 -1
  146. package/dist/resources/policies.js +3 -3
  147. package/dist/resources/policies.js.map +1 -1
  148. package/dist/resources/scim.js +5 -5
  149. package/dist/resources/scim.js.map +1 -1
  150. package/dist/resources/tokens.d.ts.map +1 -1
  151. package/dist/resources/tokens.js +5 -1
  152. package/dist/resources/tokens.js.map +1 -1
  153. package/dist/resources/vault.js +2 -2
  154. package/dist/resources/vault.js.map +1 -1
  155. package/dist/resources/webauthn.d.ts +6 -1
  156. package/dist/resources/webauthn.d.ts.map +1 -1
  157. package/dist/resources/webauthn.js +5 -1
  158. package/dist/resources/webauthn.js.map +1 -1
  159. package/dist/resources/webhooks.js +1 -1
  160. package/dist/resources/webhooks.js.map +1 -1
  161. package/dist/revocations/feed.d.ts +61 -0
  162. package/dist/revocations/feed.d.ts.map +1 -0
  163. package/dist/revocations/feed.js +282 -0
  164. package/dist/revocations/feed.js.map +1 -0
  165. package/dist/revocations/index.d.ts +20 -0
  166. package/dist/revocations/index.d.ts.map +1 -0
  167. package/dist/revocations/index.js +19 -0
  168. package/dist/revocations/index.js.map +1 -0
  169. package/dist/revocations/set.d.ts +59 -0
  170. package/dist/revocations/set.d.ts.map +1 -0
  171. package/dist/revocations/set.js +87 -0
  172. package/dist/revocations/set.js.map +1 -0
  173. package/dist/scopes.d.ts +26 -0
  174. package/dist/scopes.d.ts.map +1 -0
  175. package/dist/scopes.js +37 -0
  176. package/dist/scopes.js.map +1 -0
  177. package/dist/types.d.ts +121 -4
  178. package/dist/types.d.ts.map +1 -1
  179. package/dist/types.js +0 -1
  180. package/dist/types.js.map +1 -1
  181. package/dist/verify.d.ts +31 -2
  182. package/dist/verify.d.ts.map +1 -1
  183. package/dist/verify.js +236 -29
  184. package/dist/verify.js.map +1 -1
  185. package/package.json +13 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-1.0.js","sourceRoot":"","sources":["../../src/evidence/schema-1.0.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type SchemaNode = Record<string, unknown>;
2
+ export declare const SCHEMA_KEYWORDS: ReadonlySet<string>;
3
+ /** `YYYY-MM-DDTHH:MM:SS.sssZ` naming a real calendar instant (no leap seconds). */
4
+ export declare function isValidTimestamp(value: unknown): boolean;
5
+ /** Milliseconds since the epoch of a valid timestamp (the same arithmetic as the Python SDK). */
6
+ export declare function timestampMs(value: string): number;
7
+ /** The embedded evidence package 1.0 schema. */
8
+ export declare function loadSchema(): SchemaNode;
9
+ /** Whether `value` satisfies `schema` (used for `if`). */
10
+ export declare function matches(value: unknown, schema: SchemaNode, root: SchemaNode): boolean;
11
+ /** Throw `VerificationFailure(schema_violation)` at the first violation. */
12
+ export declare function validate(value: unknown, schema?: SchemaNode): void;
13
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/evidence/schema.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAGjD,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAK9C,CAAC;AAmBH,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExD;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWjD;AAgBD,gDAAgD;AAChD,wBAAgB,UAAU,IAAI,UAAU,CAMvC;AAsDD,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAQrF;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAGlE"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * A small, deterministic interpreter for the evidence package JSON Schema.
3
+ *
4
+ * Structure is validated directly against the published schema
5
+ * (`spec/evidence-package-1.0.schema.json`, embedded in `schema-1.0.ts`), so
6
+ * the schema is the single source of structural rules. Only the keywords that
7
+ * file uses are supported; any other keyword makes the schema itself invalid.
8
+ *
9
+ * Evaluation order matches the Python SDK so both report the same first
10
+ * violation: for objects, unknown members (RFC 8785 member order), then
11
+ * missing required members (same order), then `maxProperties`, then each
12
+ * present member (same order), then `allOf`; for arrays, size limits, then
13
+ * items in index order, then `uniqueItems`.
14
+ */
15
+ import { canonicalize } from './canonical.js';
16
+ import { formatPath } from './document.js';
17
+ import { VerificationCode, VerificationFailure } from './result.js';
18
+ import { EVIDENCE_SCHEMA_1_0 } from './schema-1.0.js';
19
+ export const SCHEMA_KEYWORDS = new Set([
20
+ '$schema', '$id', '$defs', '$ref', 'title', 'description', 'type', 'const', 'enum',
21
+ 'minLength', 'maxLength', 'pattern', 'format', 'minimum', 'maximum', 'minItems', 'maxItems',
22
+ 'items', 'uniqueItems', 'properties', 'required', 'additionalProperties',
23
+ 'propertyNames', 'maxProperties', 'allOf', 'if', 'then',
24
+ ]);
25
+ const patterns = new Map();
26
+ let checked = false;
27
+ const TIMESTAMP = /^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})[.]([0-9]{3})Z$/;
28
+ const DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
29
+ function parseTimestamp(value) {
30
+ const match = value.length === 24 ? TIMESTAMP.exec(value) : null;
31
+ if (!match)
32
+ return null;
33
+ const [year, month, day, hour, minute, second, milli] = match.slice(1).map(Number);
34
+ if (year < 1 || month < 1 || month > 12 || hour > 23 || minute > 59 || second > 59)
35
+ return null;
36
+ const leap = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
37
+ const days = month === 2 && leap ? 29 : DAYS[month - 1];
38
+ if (day < 1 || day > days)
39
+ return null;
40
+ return [year, month, day, hour, minute, second, milli];
41
+ }
42
+ /** `YYYY-MM-DDTHH:MM:SS.sssZ` naming a real calendar instant (no leap seconds). */
43
+ export function isValidTimestamp(value) {
44
+ return typeof value === 'string' && parseTimestamp(value) !== null;
45
+ }
46
+ /** Milliseconds since the epoch of a valid timestamp (the same arithmetic as the Python SDK). */
47
+ export function timestampMs(value) {
48
+ const parts = parseTimestamp(value);
49
+ if (!parts)
50
+ throw new Error(`invalid timestamp ${value}`);
51
+ const [year, month, day, hour, minute, second, milli] = parts;
52
+ const y = year - (month <= 2 ? 1 : 0);
53
+ const era = Math.floor(y / 400);
54
+ const yoe = y - era * 400;
55
+ const doy = Math.floor((153 * (month + (month > 2 ? -3 : 9)) + 2) / 5) + day - 1;
56
+ const doe = yoe * 365 + Math.floor(yoe / 4) - Math.floor(yoe / 100) + doy;
57
+ const days = era * 146097 + doe - 719468;
58
+ return (((days * 24 + hour) * 60 + minute) * 60 + second) * 1000 + milli;
59
+ }
60
+ function checkKeywords(node, where) {
61
+ if (node === null || typeof node !== 'object' || Array.isArray(node))
62
+ return;
63
+ for (const [key, value] of Object.entries(node)) {
64
+ if (!SCHEMA_KEYWORDS.has(key))
65
+ throw new Error(`unsupported schema keyword ${key} at ${where}`);
66
+ if (key === 'properties' || key === '$defs') {
67
+ for (const [name, child] of Object.entries(value))
68
+ checkKeywords(child, `${where}/${key}/${name}`);
69
+ }
70
+ else if (['items', 'additionalProperties', 'propertyNames', 'if', 'then'].includes(key)) {
71
+ checkKeywords(value, `${where}/${key}`);
72
+ }
73
+ else if (key === 'allOf') {
74
+ value.forEach((child, index) => checkKeywords(child, `${where}/allOf/${index}`));
75
+ }
76
+ }
77
+ }
78
+ /** The embedded evidence package 1.0 schema. */
79
+ export function loadSchema() {
80
+ if (!checked) {
81
+ checkKeywords(EVIDENCE_SCHEMA_1_0, '#');
82
+ checked = true;
83
+ }
84
+ return EVIDENCE_SCHEMA_1_0;
85
+ }
86
+ function pattern(source) {
87
+ let compiled = patterns.get(source);
88
+ if (!compiled) {
89
+ compiled = new RegExp(source, 'u');
90
+ patterns.set(source, compiled);
91
+ }
92
+ return compiled;
93
+ }
94
+ function typeOf(value) {
95
+ if (value === null)
96
+ return 'null';
97
+ if (Array.isArray(value))
98
+ return 'array';
99
+ switch (typeof value) {
100
+ case 'boolean': return 'boolean';
101
+ case 'number': return 'number';
102
+ case 'string': return 'string';
103
+ default: return 'object';
104
+ }
105
+ }
106
+ function hasType(value, expected) {
107
+ if (expected === 'integer')
108
+ return typeof value === 'number' && Number.isInteger(value);
109
+ return typeOf(value) === expected;
110
+ }
111
+ function same(a, b) {
112
+ const kind = typeOf(a);
113
+ if (kind !== typeOf(b))
114
+ return false;
115
+ if (kind === 'array' || kind === 'object')
116
+ return canonicalize(a) === canonicalize(b);
117
+ return a === b;
118
+ }
119
+ function join(path) {
120
+ let text = '';
121
+ for (const part of path)
122
+ text = formatPath(text, part);
123
+ return text || '$';
124
+ }
125
+ function fail(path, message) {
126
+ return new VerificationFailure(VerificationCode.SCHEMA_VIOLATION, message, { fieldPath: join(path) });
127
+ }
128
+ function resolve(schema, root) {
129
+ let node = schema;
130
+ while (typeof node['$ref'] === 'string') {
131
+ const ref = node['$ref'];
132
+ if (!ref.startsWith('#/$defs/'))
133
+ throw new Error(`unsupported $ref ${ref}`);
134
+ node = root['$defs'][ref.slice('#/$defs/'.length)];
135
+ }
136
+ return node;
137
+ }
138
+ /** Whether `value` satisfies `schema` (used for `if`). */
139
+ export function matches(value, schema, root) {
140
+ try {
141
+ validateNode(value, schema, root, []);
142
+ return true;
143
+ }
144
+ catch (err) {
145
+ if (err instanceof VerificationFailure)
146
+ return false;
147
+ throw err;
148
+ }
149
+ }
150
+ /** Throw `VerificationFailure(schema_violation)` at the first violation. */
151
+ export function validate(value, schema) {
152
+ const root = schema ?? loadSchema();
153
+ validateNode(value, root, root, []);
154
+ }
155
+ function has(schema, key) {
156
+ return Object.prototype.hasOwnProperty.call(schema, key);
157
+ }
158
+ function validateNode(value, input, root, path) {
159
+ const schema = resolve(input, root);
160
+ if (has(schema, 'type')) {
161
+ const types = schema['type'];
162
+ const allowed = Array.isArray(types) ? types : [types];
163
+ if (!allowed.some((t) => hasType(value, t))) {
164
+ throw fail(path, `expected ${allowed.join(' or ')}, found ${typeOf(value)}`);
165
+ }
166
+ }
167
+ if (has(schema, 'const') && !same(value, schema['const'])) {
168
+ throw fail(path, `must be ${canonicalize(schema['const'])}`);
169
+ }
170
+ if (has(schema, 'enum')) {
171
+ const options = schema['enum'];
172
+ if (!options.some((option) => same(value, option))) {
173
+ throw fail(path, `must be one of ${options.map((o) => canonicalize(o)).join(', ')}`);
174
+ }
175
+ }
176
+ const kind = typeOf(value);
177
+ if (kind === 'string') {
178
+ const text = value;
179
+ const length = Array.from(text).length;
180
+ if (has(schema, 'minLength') && length < schema['minLength']) {
181
+ throw fail(path, `shorter than ${String(schema['minLength'])} characters`);
182
+ }
183
+ if (has(schema, 'maxLength') && length > schema['maxLength']) {
184
+ throw fail(path, `longer than ${String(schema['maxLength'])} characters`);
185
+ }
186
+ if (has(schema, 'pattern') && !pattern(schema['pattern']).test(text)) {
187
+ throw fail(path, `does not match ${String(schema['pattern'])}`);
188
+ }
189
+ if (schema['format'] === 'date-time' && !isValidTimestamp(text)) {
190
+ throw fail(path, 'not a valid UTC timestamp with millisecond precision');
191
+ }
192
+ }
193
+ else if (kind === 'number') {
194
+ const number = value;
195
+ if (has(schema, 'minimum') && number < schema['minimum']) {
196
+ throw fail(path, `less than ${String(schema['minimum'])}`);
197
+ }
198
+ if (has(schema, 'maximum') && number > schema['maximum']) {
199
+ throw fail(path, `greater than ${String(schema['maximum'])}`);
200
+ }
201
+ }
202
+ else if (kind === 'array') {
203
+ validateArray(value, schema, root, path);
204
+ }
205
+ else if (kind === 'object') {
206
+ validateObject(value, schema, root, path);
207
+ }
208
+ }
209
+ function validateArray(value, schema, root, path) {
210
+ if (has(schema, 'minItems') && value.length < schema['minItems']) {
211
+ throw fail(path, `fewer than ${String(schema['minItems'])} items`);
212
+ }
213
+ if (has(schema, 'maxItems') && value.length > schema['maxItems']) {
214
+ throw fail(path, `more than ${String(schema['maxItems'])} items`);
215
+ }
216
+ if (has(schema, 'items')) {
217
+ value.forEach((item, index) => validateNode(item, schema['items'], root, [...path, index]));
218
+ }
219
+ if (schema['uniqueItems'] === true) {
220
+ const seen = new Set();
221
+ value.forEach((item, index) => {
222
+ const key = typeOf(item) + canonicalize(item);
223
+ if (seen.has(key))
224
+ throw fail([...path, index], 'duplicate item');
225
+ seen.add(key);
226
+ });
227
+ }
228
+ }
229
+ function validateObject(value, schema, root, path) {
230
+ const properties = (schema['properties'] ?? {});
231
+ const names = Object.keys(value).sort();
232
+ const additional = has(schema, 'additionalProperties') ? schema['additionalProperties'] : true;
233
+ for (const name of names) {
234
+ if (!has(properties, name) && additional === false)
235
+ throw fail([...path, name], 'unknown member');
236
+ }
237
+ if (has(schema, 'propertyNames')) {
238
+ for (const name of names) {
239
+ if (!matches(name, schema['propertyNames'], root))
240
+ throw fail([...path, name], 'member name not allowed');
241
+ }
242
+ }
243
+ for (const name of [...(schema['required'] ?? [])].sort()) {
244
+ if (!Object.prototype.hasOwnProperty.call(value, name))
245
+ throw fail([...path, name], 'required member is missing');
246
+ }
247
+ if (has(schema, 'maxProperties') && names.length > schema['maxProperties']) {
248
+ throw fail(path, `more than ${String(schema['maxProperties'])} members`);
249
+ }
250
+ for (const name of names) {
251
+ const child = [...path, name];
252
+ if (has(properties, name))
253
+ validateNode(value[name], properties[name], root, child);
254
+ else if (additional !== null && typeof additional === 'object')
255
+ validateNode(value[name], additional, root, child);
256
+ }
257
+ for (const clause of (schema['allOf'] ?? [])) {
258
+ const condition = clause['if'];
259
+ if ((condition === undefined || matches(value, condition, root)) && has(clause, 'then')) {
260
+ validateNode(value, clause['then'], root, path);
261
+ }
262
+ }
263
+ }
264
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/evidence/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKtD,MAAM,CAAC,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IAC1D,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAClF,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;IAC3F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,sBAAsB;IACxE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;CACxD,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,MAAM,SAAS,GAAG,mFAAmF,CAAC;AACtG,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAG9D,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAc,CAAC;IAChG,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAChG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC;IACzD,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACrE,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1E,MAAM,IAAI,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IACzC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,IAAa,EAAE,KAAa;IACjD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC;QAChG,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAmB,CAAC;gBAAE,aAAa,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;QACnH,CAAC;aAAM,IAAI,CAAC,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1F,aAAa,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,KAAmB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,aAAa,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,mBAAiC,CAAC;AAC3C,CAAC;AAED,SAAS,OAAO,CAAC,MAAc;IAC7B,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,SAAS,EAAE,OAAO,SAAS,CAAC;QACjC,KAAK,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC/B,KAAK,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC/B,SAAS,OAAO,QAAQ,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,QAAgB;IAC/C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC;AACpC,CAAC;AAED,SAAS,IAAI,CAAC,CAAU,EAAE,CAAU;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,IAAI,CAAC,IAAU;IACtB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,IAAI;QAAE,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,IAAI,IAAI,GAAG,CAAC;AACrB,CAAC;AAED,SAAS,IAAI,CAAC,IAAU,EAAE,OAAe;IACvC,OAAO,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,OAAO,CAAC,MAAkB,EAAE,IAAgB;IACnD,IAAI,IAAI,GAAG,MAAM,CAAC;IAClB,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;QAC5E,IAAI,GAAI,IAAI,CAAC,OAAO,CAAgC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAE,CAAC;IACtF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,MAAkB,EAAE,IAAgB;IAC1E,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,mBAAmB;YAAE,OAAO,KAAK,CAAC;QACrD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,MAAmB;IAC1D,MAAM,IAAI,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC;IACpC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,GAAG,CAAC,MAAkB,EAAE,GAAW;IAC1C,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAiB,EAAE,IAAgB,EAAE,IAAU;IACnF,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEpC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAkB,CAAC,CAAC,CAAC,CAAC,KAAe,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,IAAI,EAAE,YAAY,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,CAAC,IAAI,EAAE,WAAW,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAc,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,IAAI,EAAE,kBAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,KAAe,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACvC,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,MAAM,GAAI,MAAM,CAAC,WAAW,CAAY,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,IAAI,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,MAAM,GAAI,MAAM,CAAC,WAAW,CAAY,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,IAAI,EAAE,eAAe,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,CAAC,IAAI,EAAE,kBAAkB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,CAAC,IAAI,EAAE,sDAAsD,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAe,CAAC;QAC/B,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,GAAI,MAAM,CAAC,SAAS,CAAY,EAAE,CAAC;YACrE,MAAM,IAAI,CAAC,IAAI,EAAE,aAAa,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,GAAI,MAAM,CAAC,SAAS,CAAY,EAAE,CAAC;YACrE,MAAM,IAAI,CAAC,IAAI,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,aAAa,CAAC,KAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,cAAc,CAAC,KAAgC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB,EAAE,MAAkB,EAAE,IAAgB,EAAE,IAAU;IACvF,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,GAAI,MAAM,CAAC,UAAU,CAAY,EAAE,CAAC;QAC7E,MAAM,IAAI,CAAC,IAAI,EAAE,cAAc,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,GAAI,MAAM,CAAC,UAAU,CAAY,EAAE,CAAC;QAC7E,MAAM,IAAI,CAAC,IAAI,EAAE,aAAa,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAe,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAA8B,EAAE,MAAkB,EAAE,IAAgB,EAAE,IAAU;IACtG,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAA+B,CAAC;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,UAAU,KAAK,KAAK;YAAE,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAe,EAAE,IAAI,CAAC;gBAAE,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,yBAAyB,CAAC,CAAC;QAC1H,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,4BAA4B,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,KAAK,CAAC,MAAM,GAAI,MAAM,CAAC,eAAe,CAAY,EAAE,CAAC;QACvF,MAAM,IAAI,CAAC,IAAI,EAAE,aAAa,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;YAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;aAChF,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAwB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnI,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAiB,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAA2B,CAAC;QACzD,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACxF,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Detached JWS signatures over an evidence package root and anchor (ES256 or
3
+ * RS256). The signed payload is the RFC 8785 form of
4
+ * `{"anchor": <anchor audit hash or null>, "root": <package root>}`.
5
+ */
6
+ import { type KeyObject } from 'node:crypto';
7
+ export declare const SIGNATURE_TYPE = "grantex-evidence-package+jws";
8
+ export interface EvidenceSignature {
9
+ alg: 'ES256' | 'RS256';
10
+ jws: string;
11
+ kid: string;
12
+ }
13
+ /** The bytes a package signature covers. */
14
+ export declare function signedPayload(root: string, anchorHash: string | null): Buffer;
15
+ /** The JWS signing input for a protected header. */
16
+ export declare function signingInput(headerB64: string, root: string, anchorHash: string | null): Buffer;
17
+ /** The protected header, base64url-encoded, that every package signature uses. */
18
+ export declare function protectedHeader(alg: 'ES256' | 'RS256', kid: string): string;
19
+ /** A `signature` member: a detached JWS over the root and anchor hash (ES256 for P-256, RS256 for RSA of 2048 bits or more). */
20
+ export declare function signRoot(root: string, privateKey: KeyObject, kid: string, anchorHash?: string | null): EvidenceSignature;
21
+ /** Verify a `signature` member against the root and anchor hash with keys from a JWKS. */
22
+ export declare function verifySignature(signature: Record<string, unknown>, root: string, anchorHash: string | null, jwks: unknown): void;
23
+ //# sourceMappingURL=signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/evidence/signature.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAI1G,eAAO,MAAM,cAAc,iCAAiC,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAWD,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE7E;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE/F;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,gIAAgI;AAChI,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,GAAG,IAAW,GAAG,iBAAiB,CAkB9H;AAoCD,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAqChI"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Detached JWS signatures over an evidence package root and anchor (ES256 or
3
+ * RS256). The signed payload is the RFC 8785 form of
4
+ * `{"anchor": <anchor audit hash or null>, "root": <package root>}`.
5
+ */
6
+ import { createPublicKey, sign as cryptoSign, verify as cryptoVerify } from 'node:crypto';
7
+ import { canonicalize } from './canonical.js';
8
+ import { VerificationCode as Code, VerificationFailure } from './result.js';
9
+ export const SIGNATURE_TYPE = 'grantex-evidence-package+jws';
10
+ const b64url = (data) => Buffer.from(data).toString('base64url');
11
+ /** Strict base64url: unpadded and exactly the canonical encoding. */
12
+ function b64urlDecode(text) {
13
+ if (!/^[A-Za-z0-9_-]*$/.test(text))
14
+ return null;
15
+ const raw = Buffer.from(text, 'base64url');
16
+ return b64url(raw) === text ? raw : null;
17
+ }
18
+ /** The bytes a package signature covers. */
19
+ export function signedPayload(root, anchorHash) {
20
+ return Buffer.from(canonicalize({ anchor: anchorHash, root }), 'utf8');
21
+ }
22
+ /** The JWS signing input for a protected header. */
23
+ export function signingInput(headerB64, root, anchorHash) {
24
+ return Buffer.from(`${headerB64}.${b64url(signedPayload(root, anchorHash))}`, 'ascii');
25
+ }
26
+ /** The protected header, base64url-encoded, that every package signature uses. */
27
+ export function protectedHeader(alg, kid) {
28
+ return b64url(Buffer.from(JSON.stringify({ alg, kid, typ: SIGNATURE_TYPE }), 'utf8'));
29
+ }
30
+ /** A `signature` member: a detached JWS over the root and anchor hash (ES256 for P-256, RS256 for RSA of 2048 bits or more). */
31
+ export function signRoot(root, privateKey, kid, anchorHash = null) {
32
+ const details = privateKey.asymmetricKeyDetails ?? {};
33
+ let alg;
34
+ if (privateKey.asymmetricKeyType === 'ec') {
35
+ if (details.namedCurve !== 'prime256v1')
36
+ throw new Error('ES256 requires a P-256 key');
37
+ alg = 'ES256';
38
+ }
39
+ else if (privateKey.asymmetricKeyType === 'rsa') {
40
+ if ((details.modulusLength ?? 0) < 2048)
41
+ throw new Error('RS256 requires an RSA key of at least 2048 bits');
42
+ alg = 'RS256';
43
+ }
44
+ else {
45
+ throw new Error('unsupported private key type');
46
+ }
47
+ const headerB64 = protectedHeader(alg, kid);
48
+ const input = signingInput(headerB64, root, anchorHash);
49
+ const signature = alg === 'ES256'
50
+ ? cryptoSign('sha256', input, { key: privateKey, dsaEncoding: 'ieee-p1363' })
51
+ : cryptoSign('sha256', input, privateKey);
52
+ return { alg, jws: `${headerB64}..${b64url(signature)}`, kid };
53
+ }
54
+ const invalid = (message, path = 'signature.jws') => new VerificationFailure(Code.SIGNATURE_INVALID, message, { fieldPath: path });
55
+ function publicKey(jwk, alg) {
56
+ // An explicit null is not the same as an absent member (as in the Python SDK).
57
+ const use = 'use' in jwk ? jwk['use'] : 'sig';
58
+ const keyAlg = 'alg' in jwk ? jwk['alg'] : alg;
59
+ if (use !== 'sig' || keyAlg !== alg)
60
+ throw invalid('key is not usable for this algorithm', 'signature.kid');
61
+ if (alg === 'ES256') {
62
+ const x = typeof jwk['x'] === 'string' ? b64urlDecode(jwk['x']) : null;
63
+ const y = typeof jwk['y'] === 'string' ? b64urlDecode(jwk['y']) : null;
64
+ if (jwk['kty'] !== 'EC' || jwk['crv'] !== 'P-256' || !x || !y || x.length === 0 || y.length === 0) {
65
+ throw invalid('ES256 requires an EC P-256 key', 'signature.kid');
66
+ }
67
+ if (x.length !== 32 || y.length !== 32)
68
+ throw invalid('malformed EC key', 'signature.kid');
69
+ try {
70
+ return createPublicKey({ key: { kty: 'EC', crv: 'P-256', x: b64url(x), y: b64url(y) }, format: 'jwk' });
71
+ }
72
+ catch {
73
+ throw invalid('EC key point is not on P-256', 'signature.kid');
74
+ }
75
+ }
76
+ const n = typeof jwk['n'] === 'string' ? b64urlDecode(jwk['n']) : null;
77
+ const e = typeof jwk['e'] === 'string' ? b64urlDecode(jwk['e']) : null;
78
+ if (jwk['kty'] !== 'RSA' || !n || !e || n.length === 0 || e.length === 0)
79
+ throw invalid('RS256 requires an RSA key', 'signature.kid');
80
+ let key;
81
+ try {
82
+ key = createPublicKey({ key: { kty: 'RSA', n: b64url(n), e: b64url(e) }, format: 'jwk' });
83
+ }
84
+ catch {
85
+ throw invalid('RS256 requires an RSA key', 'signature.kid');
86
+ }
87
+ if ((key.asymmetricKeyDetails?.modulusLength ?? 0) < 2048)
88
+ throw invalid('RSA key is shorter than 2048 bits', 'signature.kid');
89
+ return key;
90
+ }
91
+ /** Verify a `signature` member against the root and anchor hash with keys from a JWKS. */
92
+ export function verifySignature(signature, root, anchorHash, jwks) {
93
+ const alg = signature['alg'];
94
+ const kid = signature['kid'];
95
+ const jws = signature['jws'];
96
+ const split = jws.indexOf('..');
97
+ const headerB64 = jws.slice(0, split);
98
+ const signatureB64 = jws.slice(split + 2);
99
+ const headerRaw = b64urlDecode(headerB64);
100
+ const signatureRaw = b64urlDecode(signatureB64);
101
+ if (!headerRaw || !signatureRaw)
102
+ throw invalid('JWS is not canonical base64url');
103
+ let header;
104
+ try {
105
+ header = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(headerRaw));
106
+ }
107
+ catch {
108
+ throw invalid('JWS header is not JSON');
109
+ }
110
+ const h = header;
111
+ if (header === null || typeof header !== 'object' || Array.isArray(header) || Object.keys(h).length !== 3
112
+ || h['alg'] !== alg || h['kid'] !== kid || h['typ'] !== SIGNATURE_TYPE) {
113
+ throw invalid('JWS header must be exactly alg, kid and typ matching the signature');
114
+ }
115
+ const keys = jwks !== null && typeof jwks === 'object' ? jwks['keys'] : undefined;
116
+ if (!Array.isArray(keys))
117
+ throw new VerificationFailure(Code.SIGNATURE_KEY_UNKNOWN, 'key set has no keys', { fieldPath: 'signature.kid' });
118
+ const matching = keys.filter((k) => k !== null && typeof k === 'object' && k['kid'] === kid);
119
+ if (matching.length !== 1) {
120
+ throw new VerificationFailure(Code.SIGNATURE_KEY_UNKNOWN, `key set has ${matching.length} keys with kid ${kid}`, { fieldPath: 'signature.kid' });
121
+ }
122
+ const key = publicKey(matching[0], alg);
123
+ const input = signingInput(headerB64, root, anchorHash);
124
+ let ok;
125
+ if (alg === 'ES256') {
126
+ if (signatureRaw.length !== 64)
127
+ throw invalid('ES256 signature must be 64 bytes');
128
+ ok = cryptoVerify('sha256', input, { key, dsaEncoding: 'ieee-p1363' }, signatureRaw);
129
+ }
130
+ else {
131
+ ok = cryptoVerify('sha256', input, key, signatureRaw);
132
+ }
133
+ if (!ok)
134
+ throw invalid('signature does not verify');
135
+ }
136
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/evidence/signature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /** Tracing a recommendation back to upstream records, from the package alone. */
2
+ type Json = Record<string, any>;
3
+ export interface UpstreamRecordTrace {
4
+ call_id: string;
5
+ connector: string;
6
+ tool: string;
7
+ provider: string;
8
+ grant_id: string;
9
+ record_id: string;
10
+ record_type?: string;
11
+ retrieved_at: string;
12
+ cited_by: string[];
13
+ }
14
+ /**
15
+ * Every upstream record behind a recommendation: follows the recommendation's
16
+ * section citations and those of its policy evaluation to the tool calls that
17
+ * retrieved each record. One item per distinct (call, record), ordered by
18
+ * entry sequence then record position. Call on a verified package; throws for
19
+ * an unknown recommendation.
20
+ */
21
+ export declare function upstreamRecordsFor(document: Json, recommendationId: string): UpstreamRecordTrace[];
22
+ export {};
23
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/evidence/trace.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAwDlG"}
@@ -0,0 +1,69 @@
1
+ /** Tracing a recommendation back to upstream records, from the package alone. */
2
+ /**
3
+ * Every upstream record behind a recommendation: follows the recommendation's
4
+ * section citations and those of its policy evaluation to the tool calls that
5
+ * retrieved each record. One item per distinct (call, record), ordered by
6
+ * entry sequence then record position. Call on a verified package; throws for
7
+ * an unknown recommendation.
8
+ */
9
+ export function upstreamRecordsFor(document, recommendationId) {
10
+ const calls = new Map();
11
+ const evaluations = new Map();
12
+ let recommendation;
13
+ for (const entry of document['entries']) {
14
+ const data = entry['data'];
15
+ if (entry['type'] === 'tool_call')
16
+ calls.set(data['call_id'], [entry['seq'], data]);
17
+ else if (entry['type'] === 'policy_evaluation')
18
+ evaluations.set(data['evaluation_id'], [entry['seq'], data]);
19
+ else if (entry['type'] === 'recommendation' && data['recommendation_id'] === recommendationId) {
20
+ recommendation = [entry['seq'], data];
21
+ }
22
+ }
23
+ if (!recommendation)
24
+ throw new Error(`unknown recommendation ${recommendationId}`);
25
+ const citations = [];
26
+ const [recSeq, rec] = recommendation;
27
+ rec['sections'].forEach((section, s) => {
28
+ section['evidence'].forEach((ref, e) => {
29
+ citations.push([`entries[${recSeq}].data.sections[${s}].evidence[${e}]`, ref]);
30
+ });
31
+ });
32
+ for (const evaluationId of rec['evaluation_ids']) {
33
+ const [evalSeq, evaluation] = evaluations.get(evaluationId);
34
+ evaluation['inputs'].forEach((item, i) => {
35
+ item['evidence'].forEach((ref, e) => {
36
+ citations.push([`entries[${evalSeq}].data.inputs[${i}].evidence[${e}]`, ref]);
37
+ });
38
+ });
39
+ }
40
+ const found = new Map();
41
+ for (const [path, ref] of citations) {
42
+ const [callSeq, call] = calls.get(ref['call_id']);
43
+ call['upstream_records'].forEach((record, position) => {
44
+ if (record['record_id'] !== ref['record_id'])
45
+ return;
46
+ const key = `${callSeq}:${position}`;
47
+ let item = found.get(key);
48
+ if (!item) {
49
+ const trace = {
50
+ call_id: call['call_id'],
51
+ connector: call['connector'],
52
+ tool: call['tool'],
53
+ provider: call['provider'],
54
+ grant_id: call['grant_id'],
55
+ record_id: record['record_id'],
56
+ retrieved_at: record['retrieved_at'],
57
+ cited_by: [],
58
+ };
59
+ if ('record_type' in record)
60
+ trace.record_type = record['record_type'];
61
+ item = [callSeq, position, trace];
62
+ found.set(key, item);
63
+ }
64
+ item[2].cited_by.push(path);
65
+ });
66
+ }
67
+ return [...found.values()].sort((a, b) => a[0] - b[0] || a[1] - b[1]).map((item) => item[2]);
68
+ }
69
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/evidence/trace.ts"],"names":[],"mappings":"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"}