@lovrozagar/oat 0.6.2 → 0.7.2
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/README.md +443 -146
- package/dist/cli.js +35 -29
- package/dist/config/define-config.d.ts +125 -3
- package/dist/config/define-config.d.ts.map +1 -1
- package/dist/config/define-config.js +6 -0
- package/dist/config/define-config.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +4 -1
- package/dist/reference/defects.d.ts +16 -0
- package/dist/reference/defects.d.ts.map +1 -1
- package/dist/reference/defects.js +16 -0
- package/dist/reference/defects.js.map +1 -1
- package/dist/reference/model.d.ts +9 -0
- package/dist/reference/model.d.ts.map +1 -1
- package/dist/reference/model.js +20 -0
- package/dist/reference/model.js.map +1 -1
- package/dist/reference/query.d.ts +5 -0
- package/dist/reference/query.d.ts.map +1 -1
- package/dist/reference/query.js +87 -21
- package/dist/reference/query.js.map +1 -1
- package/dist/reference/spec.d.ts.map +1 -1
- package/dist/reference/spec.js +47 -2
- package/dist/reference/spec.js.map +1 -1
- package/dist/reference/store-api.d.ts +5 -1
- package/dist/reference/store-api.d.ts.map +1 -1
- package/dist/reference/store-api.js +9 -1
- package/dist/reference/store-api.js.map +1 -1
- package/dist/reference/stores/memory.d.ts.map +1 -1
- package/dist/reference/stores/memory.js +11 -0
- package/dist/reference/stores/memory.js.map +1 -1
- package/dist/reference/stores/postgres.d.ts.map +1 -1
- package/dist/reference/stores/postgres.js +75 -19
- package/dist/reference/stores/postgres.js.map +1 -1
- package/dist/reference/stores/sqlite-driver.d.ts.map +1 -1
- package/dist/reference/stores/sqlite-driver.js +3 -0
- package/dist/reference/stores/sqlite-driver.js.map +1 -1
- package/dist/reference/stores/sqlite.d.ts.map +1 -1
- package/dist/reference/stores/sqlite.js +78 -17
- package/dist/reference/stores/sqlite.js.map +1 -1
- package/dist/report/console.d.ts +7 -1
- package/dist/report/console.d.ts.map +1 -1
- package/dist/report/console.js +210 -1
- package/dist/report/console.js.map +1 -1
- package/dist/report/render.d.ts.map +1 -1
- package/dist/report/render.js +4 -2
- package/dist/report/render.js.map +1 -1
- package/dist/runtime/auth.d.ts +22 -2
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +129 -16
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/body.d.ts.map +1 -1
- package/dist/runtime/body.js +6 -3
- package/dist/runtime/body.js.map +1 -1
- package/dist/runtime/checks.d.ts +9 -0
- package/dist/runtime/checks.d.ts.map +1 -1
- package/dist/runtime/checks.js +1414 -18
- package/dist/runtime/checks.js.map +1 -1
- package/dist/runtime/client.d.ts +23 -1
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +35 -5
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/finding.d.ts +2 -0
- package/dist/runtime/finding.d.ts.map +1 -1
- package/dist/runtime/finding.js.map +1 -1
- package/dist/runtime/input.d.ts +7 -0
- package/dist/runtime/input.d.ts.map +1 -0
- package/dist/runtime/input.js +46 -0
- package/dist/runtime/input.js.map +1 -0
- package/dist/runtime/poll.d.ts +29 -0
- package/dist/runtime/poll.d.ts.map +1 -0
- package/dist/runtime/poll.js +59 -0
- package/dist/runtime/poll.js.map +1 -0
- package/dist/runtime/principals.d.ts +29 -0
- package/dist/runtime/principals.d.ts.map +1 -0
- package/dist/runtime/principals.js +97 -0
- package/dist/runtime/principals.js.map +1 -0
- package/dist/runtime/progress.d.ts +21 -0
- package/dist/runtime/progress.d.ts.map +1 -1
- package/dist/runtime/progress.js +63 -21
- package/dist/runtime/progress.js.map +1 -1
- package/dist/runtime/query-capabilities.d.ts +24 -0
- package/dist/runtime/query-capabilities.d.ts.map +1 -0
- package/dist/runtime/query-capabilities.js +66 -0
- package/dist/runtime/query-capabilities.js.map +1 -0
- package/dist/runtime/run.d.ts +14 -1
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +198 -39
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/runs.d.ts +23 -0
- package/dist/runtime/runs.d.ts.map +1 -0
- package/dist/runtime/runs.js +53 -0
- package/dist/runtime/runs.js.map +1 -0
- package/dist/runtime/upload.d.ts +1 -0
- package/dist/runtime/upload.d.ts.map +1 -1
- package/dist/runtime/upload.js.map +1 -1
- package/dist/runtime/wait.d.ts +32 -0
- package/dist/runtime/wait.d.ts.map +1 -0
- package/dist/runtime/wait.js +125 -0
- package/dist/runtime/wait.js.map +1 -0
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +2 -0
- package/dist/runtime/world.js.map +1 -1
- package/dist/spec/conventions.d.ts +10 -2
- package/dist/spec/conventions.d.ts.map +1 -1
- package/dist/spec/conventions.js +61 -7
- package/dist/spec/conventions.js.map +1 -1
- package/dist/spec/extensions.d.ts +27 -0
- package/dist/spec/extensions.d.ts.map +1 -1
- package/dist/spec/extensions.js +40 -5
- package/dist/spec/extensions.js.map +1 -1
- package/dist/spec/graph.d.ts +2 -1
- package/dist/spec/graph.d.ts.map +1 -1
- package/dist/spec/graph.js +2 -1
- package/dist/spec/graph.js.map +1 -1
- package/dist/spec/query-capabilities.d.ts +154 -0
- package/dist/spec/query-capabilities.d.ts.map +1 -0
- package/dist/spec/query-capabilities.js +734 -0
- package/dist/spec/query-capabilities.js.map +1 -0
- package/labs/annotated-openapi.yaml +21 -2
- package/labs/demo.mjs +4 -2
- package/package.json +4 -2
package/dist/runtime/progress.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* stderr and progress.log are the same format. progress.jsonl is the same
|
|
10
10
|
* events as JSON. progress.tsv is the same columns, tab-separated.
|
|
11
11
|
*/
|
|
12
|
-
const HEARTBEAT_MS = 5_000;
|
|
12
|
+
export const HEARTBEAT_MS = 5_000;
|
|
13
13
|
const STALL_MS = 15_000;
|
|
14
14
|
export const PROGRESS_TSV_HEADER = [
|
|
15
15
|
"ts_ms",
|
|
@@ -36,16 +36,16 @@ export const PROGRESS_TSV_HEADER = [
|
|
|
36
36
|
export const PROGRESS_GLOSSARY = [
|
|
37
37
|
"# logfmt — one event per line, full values, no truncation",
|
|
38
38
|
"# ts when this line was written (ISO-8601 UTC). ts_ms is the same instant as unix ms",
|
|
39
|
-
"# status=ok|stall stall
|
|
39
|
+
"# status=ok|stall|in_flight in_flight = a request is on the wire; stall = idle_ms >= 15000 after the last call returned",
|
|
40
40
|
"# done/total entity index / how many entities",
|
|
41
41
|
"# phase load|auth|seed|test|teardown|done",
|
|
42
42
|
"# check check id (empty when not in a check)",
|
|
43
|
-
"# msg phase note (seeding, spec URL, teardown count)",
|
|
43
|
+
"# msg phase note (seeding, spec URL, teardown count). Not set to in-flight — that is status",
|
|
44
44
|
"# req_id x-request-id / request-id / x-correlation-id / correlation-id on that call (empty if none)",
|
|
45
|
-
"# last_at wall clock of that call (ISO-8601 UTC)",
|
|
46
|
-
"# last_ms duration of the last HTTP call",
|
|
47
|
-
"# req_b / res_b reconstructed HTTP/1.1 size (start line + headers + body) of that call",
|
|
48
|
-
"# idle_ms ms since
|
|
45
|
+
"# last_at wall clock of that call (ISO-8601 UTC). While in_flight, when fetch started",
|
|
46
|
+
"# last_ms duration of the last completed HTTP call. Empty (-) while in_flight",
|
|
47
|
+
"# req_b / res_b reconstructed HTTP/1.1 size (start line + headers + body) of that call. res_b is empty while in_flight",
|
|
48
|
+
"# idle_ms while in_flight: ms since this request started. otherwise ms since the last call returned",
|
|
49
49
|
"# elapsed_ms wall clock since oat started",
|
|
50
50
|
].join("\n");
|
|
51
51
|
export function formatProgressLine(snap, now = Date.now()) {
|
|
@@ -100,13 +100,14 @@ export function formatProgressTsv(snap, now = Date.now()) {
|
|
|
100
100
|
}
|
|
101
101
|
export function formatProgressJsonl(snap, now = Date.now()) {
|
|
102
102
|
const f = fields(snap, now);
|
|
103
|
+
const inflight = snap.inflight !== undefined;
|
|
103
104
|
return JSON.stringify({
|
|
104
105
|
check: f.check === "-" ? null : f.check,
|
|
105
106
|
done: snap.entityIndex ?? null,
|
|
106
107
|
elapsed_ms: Number(f.elapsed_ms),
|
|
107
108
|
entity: snap.entity ?? null,
|
|
108
109
|
find: snap.findings,
|
|
109
|
-
http: snap.last?.status ?? null,
|
|
110
|
+
http: inflight ? null : (snap.last?.status ?? null),
|
|
110
111
|
idle_ms: f.idle_ms === "-" ? null : Number(f.idle_ms),
|
|
111
112
|
last_at: f.last_at === "-" ? null : f.last_at,
|
|
112
113
|
last_ms: f.last_ms === "-" ? null : Number(f.last_ms),
|
|
@@ -124,46 +125,87 @@ export function formatProgressJsonl(snap, now = Date.now()) {
|
|
|
124
125
|
ts_ms: now,
|
|
125
126
|
});
|
|
126
127
|
}
|
|
127
|
-
export function
|
|
128
|
+
export function progressEventKey(snap) {
|
|
129
|
+
const inflight = snap.inflight === undefined ? "" : `${snap.inflight.method} ${snap.inflight.url} ${snap.inflight.at}`;
|
|
130
|
+
const finished = snap.last === undefined ? "" : String(snap.last.at);
|
|
131
|
+
return `${snap.phase}|${snap.entity ?? ""}|${snap.check ?? ""}|${snap.message ?? ""}|${inflight}|${finished}`;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Deduped writer plus a 5s heartbeat. The heartbeat re-formats `latest` at `now` so
|
|
135
|
+
* `idle_ms` climbs on the in-flight request (or on the last completed call after return).
|
|
136
|
+
*/
|
|
137
|
+
export function createProgressPump(startedAt, write) {
|
|
128
138
|
let latest;
|
|
129
139
|
let lastKey = "";
|
|
130
140
|
let lastWrite = 0;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
process.stderr.write(`${PROGRESS_GLOSSARY}\n`);
|
|
136
|
-
}
|
|
137
|
-
process.stderr.write(`${formatProgressLine(snap)}\n`);
|
|
138
|
-
lastWrite = Date.now();
|
|
141
|
+
const flush = (snap) => {
|
|
142
|
+
const now = Date.now();
|
|
143
|
+
write(snap, now);
|
|
144
|
+
lastWrite = now;
|
|
139
145
|
};
|
|
140
146
|
const timer = setInterval(() => {
|
|
141
147
|
if (latest === undefined)
|
|
142
148
|
return;
|
|
143
|
-
|
|
149
|
+
flush({ ...latest, elapsedMs: Date.now() - startedAt });
|
|
144
150
|
}, HEARTBEAT_MS);
|
|
145
151
|
timer.unref();
|
|
146
152
|
return {
|
|
147
153
|
emit(snap) {
|
|
148
154
|
latest = snap;
|
|
149
|
-
const key =
|
|
155
|
+
const key = progressEventKey(snap);
|
|
150
156
|
const keyChanged = key !== lastKey;
|
|
151
157
|
lastKey = key;
|
|
152
|
-
const stalled = snap.last !== undefined && Date.now() - snap.last.at >= STALL_MS;
|
|
158
|
+
const stalled = snap.inflight === undefined && snap.last !== undefined && Date.now() - snap.last.at >= STALL_MS;
|
|
153
159
|
const force = snap.phase === "done" ||
|
|
154
160
|
snap.phase === "load" ||
|
|
155
161
|
snap.phase === "auth" ||
|
|
162
|
+
snap.inflight !== undefined ||
|
|
156
163
|
(snap.phase === "seed" && snap.check === undefined);
|
|
157
164
|
const due = Date.now() - lastWrite >= 2_000;
|
|
158
165
|
if (force || keyChanged || stalled || due)
|
|
159
|
-
|
|
166
|
+
flush(snap);
|
|
160
167
|
},
|
|
161
168
|
stop() {
|
|
162
169
|
clearInterval(timer);
|
|
163
170
|
},
|
|
164
171
|
};
|
|
165
172
|
}
|
|
173
|
+
export function createStderrProgress(startedAt = Date.now()) {
|
|
174
|
+
let headed = false;
|
|
175
|
+
return createProgressPump(startedAt, (snap, now) => {
|
|
176
|
+
if (!headed) {
|
|
177
|
+
headed = true;
|
|
178
|
+
process.stderr.write(`${PROGRESS_GLOSSARY}\n`);
|
|
179
|
+
}
|
|
180
|
+
process.stderr.write(`${formatProgressLine(snap, now)}\n`);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
166
183
|
function fields(snap, now) {
|
|
184
|
+
const inflight = snap.inflight;
|
|
185
|
+
if (inflight !== undefined) {
|
|
186
|
+
const requestId = inflight.requestId;
|
|
187
|
+
return {
|
|
188
|
+
check: snap.check ?? "-",
|
|
189
|
+
done: snap.entityIndex === undefined ? "-" : String(snap.entityIndex),
|
|
190
|
+
elapsed_ms: String(Math.max(0, Math.round(snap.elapsedMs))),
|
|
191
|
+
entity: snap.entity ?? "-",
|
|
192
|
+
find: String(snap.findings),
|
|
193
|
+
http: "-",
|
|
194
|
+
idle_ms: String(Math.max(0, now - inflight.at)),
|
|
195
|
+
last_at: new Date(inflight.at).toISOString(),
|
|
196
|
+
last_ms: "-",
|
|
197
|
+
method: inflight.method,
|
|
198
|
+
req_id: requestId === undefined || requestId === "" ? "-" : requestId,
|
|
199
|
+
req_b: inflight.requestBytes === undefined ? "-" : String(inflight.requestBytes),
|
|
200
|
+
res_b: "-",
|
|
201
|
+
msg: snap.message ?? "-",
|
|
202
|
+
path: requestPath(inflight.url),
|
|
203
|
+
phase: snap.phase,
|
|
204
|
+
req: String(snap.requests),
|
|
205
|
+
status: "in_flight",
|
|
206
|
+
total: snap.entityTotal === undefined ? "-" : String(snap.entityTotal),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
167
209
|
const stalled = snap.last !== undefined && now - snap.last.at >= STALL_MS;
|
|
168
210
|
return {
|
|
169
211
|
check: snap.check ?? "-",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/runtime/progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/runtime/progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live resolution of the filter catalog: harvest `filterableFrom`, then the hook.
|
|
3
|
+
*
|
|
4
|
+
* Merge of tag + config is pure and lives in `spec/query-capabilities`. This file talks HTTP.
|
|
5
|
+
*/
|
|
6
|
+
import type { QueryCapabilitiesRequest } from "../config/define-config.ts";
|
|
7
|
+
import type { QueryCapability } from "../spec/extensions.ts";
|
|
8
|
+
import type { SpecModel } from "../spec/graph.ts";
|
|
9
|
+
import { type EffectiveQueryCapabilities, type FilterableField, type QueryCapabilities } from "../spec/query-capabilities.ts";
|
|
10
|
+
import type { Client } from "./client.ts";
|
|
11
|
+
export declare function resolveEntityCapabilities(input: {
|
|
12
|
+
tag: QueryCapability | null;
|
|
13
|
+
itemSchema?: Record<string, unknown> | null;
|
|
14
|
+
global?: QueryCapabilities;
|
|
15
|
+
entity?: QueryCapabilities;
|
|
16
|
+
hook?: (request: QueryCapabilitiesRequest) => Promise<FilterableField[] | Partial<QueryCapabilities> | null>;
|
|
17
|
+
entityName: string;
|
|
18
|
+
scope: Record<string, string>;
|
|
19
|
+
model: SpecModel;
|
|
20
|
+
client: Client;
|
|
21
|
+
auth: () => Record<string, string>;
|
|
22
|
+
}): Promise<EffectiveQueryCapabilities>;
|
|
23
|
+
export declare function capabilitiesFromTag(tag: QueryCapability | null): EffectiveQueryCapabilities;
|
|
24
|
+
//# sourceMappingURL=query-capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-capabilities.d.ts","sourceRoot":"","sources":["../../src/runtime/query-capabilities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,OAAO,KAAK,EAAkB,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EACN,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAMtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACtD,GAAG,EAAE,eAAe,GAAG,IAAI,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3C,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,eAAe,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAA;IAC5G,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA8CtC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,GAAG,0BAA0B,CAG3F"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live resolution of the filter catalog: harvest `filterableFrom`, then the hook.
|
|
3
|
+
*
|
|
4
|
+
* Merge of tag + config is pure and lives in `spec/query-capabilities`. This file talks HTTP.
|
|
5
|
+
*/
|
|
6
|
+
import { parseRouteRef } from "../spec/load.js";
|
|
7
|
+
import { applyHarvest, applyHook, emptyCapabilities, mergeQueryCapabilities, readJsonPathList, } from "../spec/query-capabilities.js";
|
|
8
|
+
import { fillPath } from "./world.js";
|
|
9
|
+
export async function resolveEntityCapabilities(input) {
|
|
10
|
+
let caps = mergeQueryCapabilities({
|
|
11
|
+
tag: input.tag,
|
|
12
|
+
...(input.global === undefined ? {} : { global: input.global }),
|
|
13
|
+
...(input.entity === undefined ? {} : { entity: input.entity }),
|
|
14
|
+
...(input.itemSchema === undefined ? {} : { itemSchema: input.itemSchema }),
|
|
15
|
+
});
|
|
16
|
+
const get = async (operationId, scope = input.scope) => {
|
|
17
|
+
const op = resolveHarvestOp(input.model, operationId);
|
|
18
|
+
if (op === undefined) {
|
|
19
|
+
throw new Error(`oat: harvest/get target "${operationId}" is not in the document`);
|
|
20
|
+
}
|
|
21
|
+
const exchange = await input.client.request(op.method, fillPath(op.path, scope), {
|
|
22
|
+
headers: input.auth(),
|
|
23
|
+
operationId: op.operationId,
|
|
24
|
+
});
|
|
25
|
+
return exchange.responseBody;
|
|
26
|
+
};
|
|
27
|
+
const harvest = async (from, axis) => {
|
|
28
|
+
const target = from.operationId ?? from.route;
|
|
29
|
+
if (target === undefined)
|
|
30
|
+
return;
|
|
31
|
+
const body = await get(target);
|
|
32
|
+
const names = readJsonPathList(body, from.path).filter((value) => typeof value === "string");
|
|
33
|
+
const types = from.typePath === undefined
|
|
34
|
+
? []
|
|
35
|
+
: readJsonPathList(body, from.typePath).map((value) => (typeof value === "string" ? value : undefined));
|
|
36
|
+
caps = applyHarvest(caps, names, types, axis);
|
|
37
|
+
};
|
|
38
|
+
if (caps.filterableFrom !== undefined)
|
|
39
|
+
await harvest(caps.filterableFrom, "filterable");
|
|
40
|
+
if (caps.sortableFrom !== undefined)
|
|
41
|
+
await harvest(caps.sortableFrom, "sortable");
|
|
42
|
+
if (caps.searchableFrom !== undefined)
|
|
43
|
+
await harvest(caps.searchableFrom, "searchable");
|
|
44
|
+
if (caps.selectableFrom !== undefined)
|
|
45
|
+
await harvest(caps.selectableFrom, "selectable");
|
|
46
|
+
if (input.hook !== undefined) {
|
|
47
|
+
const result = await input.hook({ entity: input.entityName, get, scope: input.scope });
|
|
48
|
+
caps = applyHook(caps, result);
|
|
49
|
+
}
|
|
50
|
+
return caps;
|
|
51
|
+
}
|
|
52
|
+
export function capabilitiesFromTag(tag) {
|
|
53
|
+
if (tag === null)
|
|
54
|
+
return emptyCapabilities();
|
|
55
|
+
return mergeQueryCapabilities({ tag });
|
|
56
|
+
}
|
|
57
|
+
function resolveHarvestOp(model, target) {
|
|
58
|
+
const byId = model.byOperationId.get(target);
|
|
59
|
+
if (byId !== undefined)
|
|
60
|
+
return byId;
|
|
61
|
+
const parsed = parseRouteRef(target.startsWith("/") ? `GET ${target}` : target);
|
|
62
|
+
if (parsed === null)
|
|
63
|
+
return undefined;
|
|
64
|
+
return model.byRoute.get(`${parsed.method} ${parsed.path}`);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=query-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-capabilities.js","sourceRoot":"","sources":["../../src/runtime/query-capabilities.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/run.d.ts
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* per case — which is what made prior attempts produce dozens of failures from one broken fixture.
|
|
7
7
|
*/
|
|
8
8
|
import { type SpecModel } from "../spec/graph.ts";
|
|
9
|
-
import type { Hooks, Principal, ProfileSpec, RateLimitSpec, Uploads } from "../config/define-config.ts";
|
|
9
|
+
import type { EntityConfig, Hooks, OriginSpec, OutOfBandConfig, Principal, ProfileSpec, QueryCapabilities, RateLimitSpec, Uploads } from "../config/define-config.ts";
|
|
10
|
+
import { type PersistedPrincipal } from "./principals.ts";
|
|
10
11
|
import { Client } from "./client.ts";
|
|
11
12
|
import type { ProgressHandler } from "./progress.ts";
|
|
12
13
|
import { type Finding, type Inconclusive } from "./finding.ts";
|
|
@@ -37,6 +38,16 @@ export interface RunOptions {
|
|
|
37
38
|
rateLimits?: RateLimitSpec[];
|
|
38
39
|
/** Live status. Called on phase/entity/check/request; the CLI prints a heartbeat from this. */
|
|
39
40
|
onProgress?: ProgressHandler;
|
|
41
|
+
/** Extra hosts with their own OpenAPI. Auth stays on the primary. */
|
|
42
|
+
origins?: OriginSpec[];
|
|
43
|
+
/** Backoff for `resolveOutOfBand` / `resolvePrincipalAuth`. */
|
|
44
|
+
outOfBand?: OutOfBandConfig;
|
|
45
|
+
/** Skip `teardownPrincipal` — used when this run is a secondary origin sharing accounts. */
|
|
46
|
+
skipPrincipalTeardown?: boolean;
|
|
47
|
+
/** Global filter catalog defaults. */
|
|
48
|
+
query?: QueryCapabilities;
|
|
49
|
+
/** Per-entity overlays. */
|
|
50
|
+
entities?: Record<string, EntityConfig>;
|
|
40
51
|
}
|
|
41
52
|
export interface RunResult {
|
|
42
53
|
findings: Finding[];
|
|
@@ -75,6 +86,8 @@ export interface RunResult {
|
|
|
75
86
|
}>;
|
|
76
87
|
created: number;
|
|
77
88
|
teardown: TeardownReport | null;
|
|
89
|
+
/** Credentials as they stood after acquire — written to `<outDir>/<datetime>/principals.json` by the CLI. */
|
|
90
|
+
principals: PersistedPrincipal[];
|
|
78
91
|
}
|
|
79
92
|
export declare function run(options: RunOptions): Promise<RunResult>;
|
|
80
93
|
//# sourceMappingURL=run.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAqD,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEpG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runtime/run.ts"],"names":[],"mappings":"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"}
|