@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.
- package/LICENSE +185 -0
- package/NOTICE +16 -0
- package/README.md +34 -2
- package/dist/authorization-details.d.ts +86 -0
- package/dist/authorization-details.d.ts.map +1 -0
- package/dist/authorization-details.js +209 -0
- package/dist/authorization-details.js.map +1 -0
- package/dist/canonical.d.ts +47 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +163 -0
- package/dist/canonical.js.map +1 -0
- package/dist/caps/index.d.ts +19 -0
- package/dist/caps/index.d.ts.map +1 -0
- package/dist/caps/index.js +19 -0
- package/dist/caps/index.js.map +1 -0
- package/dist/caps/limits.d.ts +40 -0
- package/dist/caps/limits.d.ts.map +1 -0
- package/dist/caps/limits.js +109 -0
- package/dist/caps/limits.js.map +1 -0
- package/dist/caps/memory.d.ts +15 -0
- package/dist/caps/memory.d.ts.map +1 -0
- package/dist/caps/memory.js +57 -0
- package/dist/caps/memory.js.map +1 -0
- package/dist/caps/meter.d.ts +107 -0
- package/dist/caps/meter.d.ts.map +1 -0
- package/dist/caps/meter.js +200 -0
- package/dist/caps/meter.js.map +1 -0
- package/dist/caps/postgres.d.ts +64 -0
- package/dist/caps/postgres.d.ts.map +1 -0
- package/dist/caps/postgres.js +221 -0
- package/dist/caps/postgres.js.map +1 -0
- package/dist/caps/redis.d.ts +45 -0
- package/dist/caps/redis.d.ts.map +1 -0
- package/dist/caps/redis.js +173 -0
- package/dist/caps/redis.js.map +1 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +517 -57
- package/dist/client.js.map +1 -1
- package/dist/decisions/action.d.ts +51 -0
- package/dist/decisions/action.d.ts.map +1 -0
- package/dist/decisions/action.js +237 -0
- package/dist/decisions/action.js.map +1 -0
- package/dist/decisions/index.d.ts +11 -0
- package/dist/decisions/index.d.ts.map +1 -0
- package/dist/decisions/index.js +8 -0
- package/dist/decisions/index.js.map +1 -0
- package/dist/decisions/verify.d.ts +103 -0
- package/dist/decisions/verify.d.ts.map +1 -0
- package/dist/decisions/verify.js +277 -0
- package/dist/decisions/verify.js.map +1 -0
- package/dist/denials.d.ts +132 -0
- package/dist/denials.d.ts.map +1 -0
- package/dist/denials.js +129 -0
- package/dist/denials.js.map +1 -0
- package/dist/evidence/build.d.ts +63 -0
- package/dist/evidence/build.d.ts.map +1 -0
- package/dist/evidence/build.js +201 -0
- package/dist/evidence/build.js.map +1 -0
- package/dist/evidence/canonical.d.ts +3 -0
- package/dist/evidence/canonical.d.ts.map +1 -0
- package/dist/evidence/canonical.js +3 -0
- package/dist/evidence/canonical.js.map +1 -0
- package/dist/evidence/checks.d.ts +13 -0
- package/dist/evidence/checks.d.ts.map +1 -0
- package/dist/evidence/checks.js +406 -0
- package/dist/evidence/checks.js.map +1 -0
- package/dist/evidence/document.d.ts +8 -0
- package/dist/evidence/document.d.ts.map +1 -0
- package/dist/evidence/document.js +298 -0
- package/dist/evidence/document.js.map +1 -0
- package/dist/evidence/hashing.d.ts +37 -0
- package/dist/evidence/hashing.d.ts.map +1 -0
- package/dist/evidence/hashing.js +106 -0
- package/dist/evidence/hashing.js.map +1 -0
- package/dist/evidence/index.d.ts +24 -0
- package/dist/evidence/index.d.ts.map +1 -0
- package/dist/evidence/index.js +24 -0
- package/dist/evidence/index.js.map +1 -0
- package/dist/evidence/result.d.ts +88 -0
- package/dist/evidence/result.d.ts.map +1 -0
- package/dist/evidence/result.js +88 -0
- package/dist/evidence/result.js.map +1 -0
- package/dist/evidence/schema-1.0.d.ts +2 -0
- package/dist/evidence/schema-1.0.d.ts.map +1 -0
- package/dist/evidence/schema-1.0.js +1398 -0
- package/dist/evidence/schema-1.0.js.map +1 -0
- package/dist/evidence/schema.d.ts +13 -0
- package/dist/evidence/schema.d.ts.map +1 -0
- package/dist/evidence/schema.js +264 -0
- package/dist/evidence/schema.js.map +1 -0
- package/dist/evidence/signature.d.ts +23 -0
- package/dist/evidence/signature.d.ts.map +1 -0
- package/dist/evidence/signature.js +136 -0
- package/dist/evidence/signature.js.map +1 -0
- package/dist/evidence/trace.d.ts +23 -0
- package/dist/evidence/trace.d.ts.map +1 -0
- package/dist/evidence/trace.js +69 -0
- package/dist/evidence/trace.js.map +1 -0
- package/dist/evidence/verify.d.ts +29 -0
- package/dist/evidence/verify.d.ts.map +1 -0
- package/dist/evidence/verify.js +163 -0
- package/dist/evidence/verify.js.map +1 -0
- package/dist/http.d.ts +12 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +11 -5
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +16 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -2
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +178 -9
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +379 -16
- package/dist/manifest.js.map +1 -1
- package/dist/prepaid-wallets.d.ts +21 -0
- package/dist/prepaid-wallets.d.ts.map +1 -1
- package/dist/prepaid-wallets.js +6 -0
- package/dist/prepaid-wallets.js.map +1 -1
- package/dist/purpose.d.ts +29 -0
- package/dist/purpose.d.ts.map +1 -0
- package/dist/purpose.js +60 -0
- package/dist/purpose.js.map +1 -0
- package/dist/resources/agents.js +3 -3
- package/dist/resources/agents.js.map +1 -1
- package/dist/resources/anomalies.d.ts +3 -1
- package/dist/resources/anomalies.d.ts.map +1 -1
- package/dist/resources/anomalies.js +7 -1
- package/dist/resources/anomalies.js.map +1 -1
- package/dist/resources/audit.js +1 -1
- package/dist/resources/audit.js.map +1 -1
- package/dist/resources/budgets.js +2 -2
- package/dist/resources/budgets.js.map +1 -1
- package/dist/resources/credentials.js +1 -1
- package/dist/resources/credentials.js.map +1 -1
- package/dist/resources/decisions.d.ts +69 -0
- package/dist/resources/decisions.d.ts.map +1 -0
- package/dist/resources/decisions.js +115 -0
- package/dist/resources/decisions.js.map +1 -0
- package/dist/resources/domains.js +2 -2
- package/dist/resources/domains.js.map +1 -1
- package/dist/resources/dpdp.js +4 -4
- package/dist/resources/dpdp.js.map +1 -1
- package/dist/resources/grants.js +2 -2
- package/dist/resources/grants.js.map +1 -1
- package/dist/resources/policies.js +3 -3
- package/dist/resources/policies.js.map +1 -1
- package/dist/resources/scim.js +5 -5
- package/dist/resources/scim.js.map +1 -1
- package/dist/resources/tokens.d.ts.map +1 -1
- package/dist/resources/tokens.js +5 -1
- package/dist/resources/tokens.js.map +1 -1
- package/dist/resources/vault.js +2 -2
- package/dist/resources/vault.js.map +1 -1
- package/dist/resources/webauthn.d.ts +6 -1
- package/dist/resources/webauthn.d.ts.map +1 -1
- package/dist/resources/webauthn.js +5 -1
- package/dist/resources/webauthn.js.map +1 -1
- package/dist/resources/webhooks.js +1 -1
- package/dist/resources/webhooks.js.map +1 -1
- package/dist/revocations/feed.d.ts +61 -0
- package/dist/revocations/feed.d.ts.map +1 -0
- package/dist/revocations/feed.js +282 -0
- package/dist/revocations/feed.js.map +1 -0
- package/dist/revocations/index.d.ts +20 -0
- package/dist/revocations/index.d.ts.map +1 -0
- package/dist/revocations/index.js +19 -0
- package/dist/revocations/index.js.map +1 -0
- package/dist/revocations/set.d.ts +59 -0
- package/dist/revocations/set.d.ts.map +1 -0
- package/dist/revocations/set.js +87 -0
- package/dist/revocations/set.js.map +1 -0
- package/dist/scopes.d.ts +26 -0
- package/dist/scopes.d.ts.map +1 -0
- package/dist/scopes.js +37 -0
- package/dist/scopes.js.map +1 -0
- package/dist/types.d.ts +121 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/dist/verify.d.ts +31 -2
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +236 -29
- package/dist/verify.js.map +1 -1
- 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":"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"}
|
|
@@ -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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"}
|