@lovrozagar/oat 0.10.0 → 0.12.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 (278) hide show
  1. package/README.md +25 -2006
  2. package/dist/cli.js +283 -59
  3. package/dist/config/define-config.d.ts +8 -0
  4. package/dist/config/define-config.d.ts.map +1 -1
  5. package/dist/config/define-config.js.map +1 -1
  6. package/dist/config/validate.d.ts +12 -0
  7. package/dist/config/validate.d.ts.map +1 -0
  8. package/dist/config/validate.js +86 -0
  9. package/dist/config/validate.js.map +1 -0
  10. package/dist/conformance/effects.d.ts +9 -0
  11. package/dist/conformance/effects.d.ts.map +1 -0
  12. package/dist/conformance/effects.js +276 -0
  13. package/dist/conformance/effects.js.map +1 -0
  14. package/dist/conformance/expected-failures.d.ts +18 -0
  15. package/dist/conformance/expected-failures.d.ts.map +1 -0
  16. package/dist/conformance/expected-failures.js +48 -0
  17. package/dist/conformance/expected-failures.js.map +1 -0
  18. package/dist/conformance/feature-gate.d.ts +7 -0
  19. package/dist/conformance/feature-gate.d.ts.map +1 -0
  20. package/dist/conformance/feature-gate.js +428 -0
  21. package/dist/conformance/feature-gate.js.map +1 -0
  22. package/dist/conformance/fuzz.d.ts +108 -0
  23. package/dist/conformance/fuzz.d.ts.map +1 -0
  24. package/dist/conformance/fuzz.js +246 -0
  25. package/dist/conformance/fuzz.js.map +1 -0
  26. package/dist/conformance/leaks.d.ts +10 -0
  27. package/dist/conformance/leaks.d.ts.map +1 -0
  28. package/dist/conformance/leaks.js +23 -0
  29. package/dist/conformance/leaks.js.map +1 -0
  30. package/dist/conformance/pool.d.ts +49 -0
  31. package/dist/conformance/pool.d.ts.map +1 -0
  32. package/dist/conformance/pool.js +75 -0
  33. package/dist/conformance/pool.js.map +1 -0
  34. package/dist/conformance/rate-limit.d.ts +7 -0
  35. package/dist/conformance/rate-limit.d.ts.map +1 -0
  36. package/dist/conformance/rate-limit.js +372 -0
  37. package/dist/conformance/rate-limit.js.map +1 -0
  38. package/dist/conformance/scope.d.ts +15 -0
  39. package/dist/conformance/scope.d.ts.map +1 -0
  40. package/dist/conformance/scope.js +78 -0
  41. package/dist/conformance/scope.js.map +1 -0
  42. package/dist/conformance/seed-contract.d.ts +11 -0
  43. package/dist/conformance/seed-contract.d.ts.map +1 -0
  44. package/dist/conformance/seed-contract.js +680 -0
  45. package/dist/conformance/seed-contract.js.map +1 -0
  46. package/dist/conformance/shapes.d.ts +35 -0
  47. package/dist/conformance/shapes.d.ts.map +1 -0
  48. package/dist/conformance/shapes.js +162 -0
  49. package/dist/conformance/shapes.js.map +1 -0
  50. package/dist/conformance/specs.d.ts +21 -0
  51. package/dist/conformance/specs.d.ts.map +1 -0
  52. package/dist/conformance/specs.js +306 -0
  53. package/dist/conformance/specs.js.map +1 -0
  54. package/dist/conformance/suite.d.ts +209 -0
  55. package/dist/conformance/suite.d.ts.map +1 -0
  56. package/dist/conformance/suite.js +1538 -0
  57. package/dist/conformance/suite.js.map +1 -0
  58. package/dist/conformance/unique.d.ts +7 -0
  59. package/dist/conformance/unique.d.ts.map +1 -0
  60. package/dist/conformance/unique.js +586 -0
  61. package/dist/conformance/unique.js.map +1 -0
  62. package/dist/conformance/worker.d.ts +3 -0
  63. package/dist/conformance/worker.d.ts.map +1 -0
  64. package/dist/conformance/worker.js +27 -0
  65. package/dist/conformance/worker.js.map +1 -0
  66. package/dist/index.d.ts +8 -3
  67. package/dist/index.js +5 -2
  68. package/dist/reference/defects.d.ts +71 -1
  69. package/dist/reference/defects.d.ts.map +1 -1
  70. package/dist/reference/defects.js +74 -8
  71. package/dist/reference/defects.js.map +1 -1
  72. package/dist/reference/dialect.d.ts +6 -4
  73. package/dist/reference/dialect.d.ts.map +1 -1
  74. package/dist/reference/dialect.js +1 -0
  75. package/dist/reference/dialect.js.map +1 -1
  76. package/dist/reference/http.d.ts +17 -25
  77. package/dist/reference/http.d.ts.map +1 -1
  78. package/dist/reference/http.js +574 -224
  79. package/dist/reference/http.js.map +1 -1
  80. package/dist/reference/listing.d.ts +51 -0
  81. package/dist/reference/listing.d.ts.map +1 -0
  82. package/dist/reference/listing.js +256 -0
  83. package/dist/reference/listing.js.map +1 -0
  84. package/dist/reference/model.d.ts +35 -1
  85. package/dist/reference/model.d.ts.map +1 -1
  86. package/dist/reference/model.js +42 -0
  87. package/dist/reference/model.js.map +1 -1
  88. package/dist/reference/query.d.ts +132 -43
  89. package/dist/reference/query.d.ts.map +1 -1
  90. package/dist/reference/query.js +397 -315
  91. package/dist/reference/query.js.map +1 -1
  92. package/dist/reference/shapes.d.ts +60 -0
  93. package/dist/reference/shapes.d.ts.map +1 -0
  94. package/dist/reference/shapes.js +142 -0
  95. package/dist/reference/shapes.js.map +1 -0
  96. package/dist/reference/spec.d.ts +9 -2
  97. package/dist/reference/spec.d.ts.map +1 -1
  98. package/dist/reference/spec.js +291 -71
  99. package/dist/reference/spec.js.map +1 -1
  100. package/dist/reference/store-api.d.ts +14 -43
  101. package/dist/reference/store-api.d.ts.map +1 -1
  102. package/dist/reference/store-api.js +8 -58
  103. package/dist/reference/store-api.js.map +1 -1
  104. package/dist/reference/stores/memory.d.ts +12 -15
  105. package/dist/reference/stores/memory.d.ts.map +1 -1
  106. package/dist/reference/stores/memory.js +22 -70
  107. package/dist/reference/stores/memory.js.map +1 -1
  108. package/dist/reference/stores/postgres.d.ts +11 -23
  109. package/dist/reference/stores/postgres.d.ts.map +1 -1
  110. package/dist/reference/stores/postgres.js +53 -334
  111. package/dist/reference/stores/postgres.js.map +1 -1
  112. package/dist/reference/stores/sql-compile.d.ts +36 -0
  113. package/dist/reference/stores/sql-compile.d.ts.map +1 -0
  114. package/dist/reference/stores/sql-compile.js +95 -0
  115. package/dist/reference/stores/sql-compile.js.map +1 -0
  116. package/dist/reference/stores/sqlite.d.ts +12 -27
  117. package/dist/reference/stores/sqlite.d.ts.map +1 -1
  118. package/dist/reference/stores/sqlite.js +54 -355
  119. package/dist/reference/stores/sqlite.js.map +1 -1
  120. package/dist/report/console.d.ts.map +1 -1
  121. package/dist/report/console.js +23 -9
  122. package/dist/report/console.js.map +1 -1
  123. package/dist/report/matrix.d.ts +2 -0
  124. package/dist/report/matrix.d.ts.map +1 -1
  125. package/dist/report/matrix.js +63 -10
  126. package/dist/report/matrix.js.map +1 -1
  127. package/dist/report/render.d.ts +10 -1
  128. package/dist/report/render.d.ts.map +1 -1
  129. package/dist/report/render.js +75 -13
  130. package/dist/report/render.js.map +1 -1
  131. package/dist/runtime/async.d.ts +16 -3
  132. package/dist/runtime/async.d.ts.map +1 -1
  133. package/dist/runtime/async.js +24 -19
  134. package/dist/runtime/async.js.map +1 -1
  135. package/dist/runtime/auth.d.ts +8 -9
  136. package/dist/runtime/auth.d.ts.map +1 -1
  137. package/dist/runtime/auth.js +60 -62
  138. package/dist/runtime/auth.js.map +1 -1
  139. package/dist/runtime/body.d.ts +15 -3
  140. package/dist/runtime/body.d.ts.map +1 -1
  141. package/dist/runtime/body.js +61 -12
  142. package/dist/runtime/body.js.map +1 -1
  143. package/dist/runtime/check-costs.d.ts +15 -0
  144. package/dist/runtime/check-costs.d.ts.map +1 -0
  145. package/dist/runtime/check-costs.js +114 -0
  146. package/dist/runtime/check-costs.js.map +1 -0
  147. package/dist/runtime/check-ids.d.ts +15 -0
  148. package/dist/runtime/check-ids.d.ts.map +1 -0
  149. package/dist/runtime/check-ids.js +140 -0
  150. package/dist/runtime/check-ids.js.map +1 -0
  151. package/dist/runtime/checks.d.ts +88 -20
  152. package/dist/runtime/checks.d.ts.map +1 -1
  153. package/dist/runtime/checks.js +3288 -1947
  154. package/dist/runtime/checks.js.map +1 -1
  155. package/dist/runtime/client.d.ts +112 -0
  156. package/dist/runtime/client.d.ts.map +1 -1
  157. package/dist/runtime/client.js +271 -39
  158. package/dist/runtime/client.js.map +1 -1
  159. package/dist/runtime/cookies.d.ts +16 -2
  160. package/dist/runtime/cookies.d.ts.map +1 -1
  161. package/dist/runtime/cookies.js +83 -22
  162. package/dist/runtime/cookies.js.map +1 -1
  163. package/dist/runtime/exchanges.d.ts +4 -5
  164. package/dist/runtime/exchanges.d.ts.map +1 -1
  165. package/dist/runtime/exchanges.js +33 -55
  166. package/dist/runtime/exchanges.js.map +1 -1
  167. package/dist/runtime/exit.d.ts +40 -0
  168. package/dist/runtime/exit.d.ts.map +1 -0
  169. package/dist/runtime/exit.js +48 -0
  170. package/dist/runtime/exit.js.map +1 -0
  171. package/dist/runtime/feature-gate.d.ts +0 -9
  172. package/dist/runtime/feature-gate.d.ts.map +1 -1
  173. package/dist/runtime/feature-gate.js +0 -21
  174. package/dist/runtime/feature-gate.js.map +1 -1
  175. package/dist/runtime/finding.d.ts +49 -8
  176. package/dist/runtime/finding.d.ts.map +1 -1
  177. package/dist/runtime/finding.js +51 -8
  178. package/dist/runtime/finding.js.map +1 -1
  179. package/dist/runtime/fixture.d.ts +35 -28
  180. package/dist/runtime/fixture.d.ts.map +1 -1
  181. package/dist/runtime/fixture.js +92 -731
  182. package/dist/runtime/fixture.js.map +1 -1
  183. package/dist/runtime/generate.d.ts +63 -0
  184. package/dist/runtime/generate.d.ts.map +1 -0
  185. package/dist/runtime/generate.js +635 -0
  186. package/dist/runtime/generate.js.map +1 -0
  187. package/dist/runtime/headers.d.ts +6 -0
  188. package/dist/runtime/headers.d.ts.map +1 -0
  189. package/dist/runtime/headers.js +16 -0
  190. package/dist/runtime/headers.js.map +1 -0
  191. package/dist/runtime/path.d.ts +7 -0
  192. package/dist/runtime/path.d.ts.map +1 -0
  193. package/dist/runtime/path.js +44 -0
  194. package/dist/runtime/path.js.map +1 -0
  195. package/dist/runtime/payloads.d.ts +2 -0
  196. package/dist/runtime/payloads.d.ts.map +1 -1
  197. package/dist/runtime/payloads.js +2 -1
  198. package/dist/runtime/payloads.js.map +1 -1
  199. package/dist/runtime/rate-limit.d.ts +6 -4
  200. package/dist/runtime/rate-limit.d.ts.map +1 -1
  201. package/dist/runtime/rate-limit.js +22 -33
  202. package/dist/runtime/rate-limit.js.map +1 -1
  203. package/dist/runtime/redact.d.ts +24 -0
  204. package/dist/runtime/redact.d.ts.map +1 -0
  205. package/dist/runtime/redact.js +98 -0
  206. package/dist/runtime/redact.js.map +1 -0
  207. package/dist/runtime/run.d.ts +34 -2
  208. package/dist/runtime/run.d.ts.map +1 -1
  209. package/dist/runtime/run.js +374 -138
  210. package/dist/runtime/run.js.map +1 -1
  211. package/dist/runtime/runs.d.ts +5 -0
  212. package/dist/runtime/runs.d.ts.map +1 -1
  213. package/dist/runtime/runs.js +7 -1
  214. package/dist/runtime/runs.js.map +1 -1
  215. package/dist/runtime/teardown.d.ts +17 -4
  216. package/dist/runtime/teardown.d.ts.map +1 -1
  217. package/dist/runtime/teardown.js +49 -16
  218. package/dist/runtime/teardown.js.map +1 -1
  219. package/dist/runtime/transcript.d.ts +34 -2
  220. package/dist/runtime/transcript.d.ts.map +1 -1
  221. package/dist/runtime/transcript.js +119 -24
  222. package/dist/runtime/transcript.js.map +1 -1
  223. package/dist/runtime/unique.d.ts +2 -11
  224. package/dist/runtime/unique.d.ts.map +1 -1
  225. package/dist/runtime/unique.js +27 -53
  226. package/dist/runtime/unique.js.map +1 -1
  227. package/dist/runtime/validate.d.ts +13 -2
  228. package/dist/runtime/validate.d.ts.map +1 -1
  229. package/dist/runtime/validate.js +51 -31
  230. package/dist/runtime/validate.js.map +1 -1
  231. package/dist/runtime/wait.d.ts +2 -1
  232. package/dist/runtime/wait.d.ts.map +1 -1
  233. package/dist/runtime/wait.js +2 -36
  234. package/dist/runtime/wait.js.map +1 -1
  235. package/dist/runtime/world.d.ts +24 -1
  236. package/dist/runtime/world.d.ts.map +1 -1
  237. package/dist/runtime/world.js +101 -26
  238. package/dist/runtime/world.js.map +1 -1
  239. package/dist/spec/collection.d.ts +8 -2
  240. package/dist/spec/collection.d.ts.map +1 -1
  241. package/dist/spec/collection.js +47 -7
  242. package/dist/spec/collection.js.map +1 -1
  243. package/dist/spec/extensions.d.ts +11 -1
  244. package/dist/spec/extensions.d.ts.map +1 -1
  245. package/dist/spec/extensions.js +10 -2
  246. package/dist/spec/extensions.js.map +1 -1
  247. package/dist/spec/graph.d.ts +46 -0
  248. package/dist/spec/graph.d.ts.map +1 -1
  249. package/dist/spec/graph.js +175 -11
  250. package/dist/spec/graph.js.map +1 -1
  251. package/dist/spec/load.d.ts +25 -5
  252. package/dist/spec/load.d.ts.map +1 -1
  253. package/dist/spec/load.js +160 -59
  254. package/dist/spec/load.js.map +1 -1
  255. package/dist/spec/query-capabilities.d.ts +4 -0
  256. package/dist/spec/query-capabilities.d.ts.map +1 -1
  257. package/dist/spec/query-capabilities.js +6 -0
  258. package/dist/spec/query-capabilities.js.map +1 -1
  259. package/dist/spec/schema.d.ts +20 -0
  260. package/dist/spec/schema.d.ts.map +1 -0
  261. package/dist/spec/schema.js +118 -0
  262. package/dist/spec/schema.js.map +1 -0
  263. package/dist/spec/tag-schema.d.ts +12 -0
  264. package/dist/spec/tag-schema.d.ts.map +1 -0
  265. package/dist/spec/tag-schema.js +144 -0
  266. package/dist/spec/tag-schema.js.map +1 -0
  267. package/dist/spec/types.js +17 -1
  268. package/dist/spec/types.js.map +1 -1
  269. package/docs/api.md +59 -0
  270. package/docs/assumptions.md +99 -0
  271. package/docs/checks.md +183 -0
  272. package/docs/commands.md +214 -0
  273. package/docs/configuration.md +650 -0
  274. package/docs/model.md +184 -0
  275. package/docs/reference-defects.md +94 -0
  276. package/docs/reports.md +211 -0
  277. package/docs/tags.md +403 -0
  278. package/package.json +3 -1
@@ -5,10 +5,11 @@
5
5
  * gives each entity its *read surface*, the set of projections through which an instance is
6
6
  * observable. That set is the criss-cross matrix.
7
7
  */
8
+ import { validateTags } from "./tag-schema.js";
8
9
  import { deriveCollectionShape, deriveIdentity, documentsEventStream, hasRequestBody, requestSchema, successSchema, } from "./collection.js";
9
10
  import { GapCollector, pathParameterNames, readAsync, readCleanup, readCost, readEffects, readEntity, readFeatureGate, readFlag, readGenerated, readImmutable, readInvalidate, readInvite, readQueryCapability, readRateLimit, readRootParams, readSoftDelete, readTenantParam, readTenantSource, readUnique, readWait, singularise, } from "./extensions.js";
10
11
  import { deriveQueryConventions } from "./conventions.js";
11
- import { parseRouteRef } from "./load.js";
12
+ import { documentDefs, parseRouteRef, pathTemplateMatches } from "./load.js";
12
13
  import { MUTATING_METHODS, listEndpoints } from "./types.js";
13
14
  /**
14
15
  * Header names the operation's success response declares.
@@ -31,8 +32,25 @@ export function buildModel(doc) {
31
32
  const gaps = new GapCollector();
32
33
  const endpoints = listEndpoints(doc);
33
34
  const operations = endpoints.map((e) => modelOperation(e, doc, gaps));
34
- demoteNonEntities(operations, gaps);
35
- const byOperationId = new Map(operations.map((o) => [o.operationId, o]));
35
+ const views = demoteNonEntities(operations, gaps);
36
+ separateSameNamedCollections(operations);
37
+ /* Named once the entities have their final names: a split `member` is `org-member` here. */
38
+ for (const op of views) {
39
+ gaps.record(op.operationId, "x-entity", `returns a collection but exposes no item route, so oat treats "${op.entity}" as its ` +
40
+ "own entity. If it is a filtered view of another entity, name that entity explicitly");
41
+ }
42
+ /* Two operations sharing an id would silently become one. The first keeps the id; the
43
+ * other is reported, since findings, scope and `--ops` all name operations by it. */
44
+ const byOperationId = new Map();
45
+ for (const op of operations) {
46
+ const first = byOperationId.get(op.operationId);
47
+ if (first === undefined) {
48
+ byOperationId.set(op.operationId, op);
49
+ continue;
50
+ }
51
+ gaps.record(op.operationId, "operationId", `is declared by both ${first.route} and ${op.route}; operation ids must be unique, so ` +
52
+ `${op.route} is reachable only by its route`);
53
+ }
36
54
  const byRoute = new Map(operations.map((o) => [o.route, o]));
37
55
  const entities = buildEntities(operations, byRoute, gaps);
38
56
  const roots = collectRoots(operations, entities);
@@ -43,7 +61,9 @@ export function buildModel(doc) {
43
61
  gaps,
44
62
  hasAuthOperations: operations.some((o) => /auth|login|token|session/i.test(o.path)),
45
63
  operations,
46
- rawOperations: new Map(endpoints.map((e) => [e.operationId, e.op])),
64
+ /* First wins, like `byOperationId`. */
65
+ rawOperations: new Map([...endpoints].reverse().map((e) => [e.operationId, e.op])),
66
+ defs: documentDefs(doc),
47
67
  roots,
48
68
  securitySchemes: Object.keys(doc.components?.securitySchemes ?? {}),
49
69
  };
@@ -53,6 +73,7 @@ function modelOperation(endpoint, doc, gaps) {
53
73
  const responseSchema = successSchema(op);
54
74
  const collection = deriveCollectionShape(responseSchema);
55
75
  const bodySchema = requestSchema(op);
76
+ validateTags(op, operationId, gaps);
56
77
  const entity = readEntity(endpoint, gaps);
57
78
  const pathParams = pathParameterNames(path);
58
79
  const lastParam = pathParams.at(-1);
@@ -60,10 +81,8 @@ function modelOperation(endpoint, doc, gaps) {
60
81
  const identity = entity?.identity ?? deriveIdentity(itemSchema, lastParam === undefined ? undefined : lastParam);
61
82
  const security = op.security ?? doc.security ?? [];
62
83
  const securitySchemes = [...new Set(security.flatMap((group) => Object.keys(group)))];
63
- const documentedStatuses = Object.keys(op.responses ?? {})
64
- .map((s) => Number.parseInt(s, 10))
65
- .filter((n) => !Number.isNaN(n))
66
- .sort((a, b) => a - b);
84
+ const statuses = readStatuses(op.responses);
85
+ const documentedStatuses = statuses.exact;
67
86
  return {
68
87
  action: entity?.action ?? null,
69
88
  async: readAsync(op),
@@ -73,8 +92,9 @@ function modelOperation(endpoint, doc, gaps) {
73
92
  cost: readCost(op),
74
93
  featureGate: readFeatureGate(op),
75
94
  unique: readUnique(op, operationId, gaps),
76
- destructive: readFlag(op, "x-destructive"),
95
+ destructive: readFlag(op, "x-destructive", true),
77
96
  documentedStatuses,
97
+ statuses,
78
98
  effects: readEffects(op, operationId, gaps),
79
99
  entity: entity?.name ?? null,
80
100
  entitySource: entity?.source ?? null,
@@ -119,7 +139,74 @@ const PARAM_SEGMENT = /^\{[^}]+\}$/;
119
139
  * Everything else is an action on the nearest enclosing entity. Without this pass a spec with
120
140
  * 5 entities models as 24, and every spurious one drags a full lifecycle plan behind it.
121
141
  */
142
+ /**
143
+ * One inferred name, two collections: `/projects/{id}/members` and `/orgs/{id}/members` both
144
+ * read as `member`, and fusing them would seed one through the other's routes. An entity is its
145
+ * collection's path template, so same-named collections under different parents are told apart
146
+ * by their parents: `project-member` and `org-member`. A tagged name is the author's and stays.
147
+ */
148
+ function separateSameNamedCollections(operations) {
149
+ const templateOf = (op) => {
150
+ const segments = op.path.split("/").filter(Boolean);
151
+ for (let i = segments.length - 1; i >= 0; i--) {
152
+ const segment = segments[i];
153
+ if (segment !== undefined && !PARAM_SEGMENT.test(segment) && singularise(segment) === op.entity) {
154
+ return segments.slice(0, i + 1);
155
+ }
156
+ }
157
+ return null;
158
+ };
159
+ const key = (segments) => segments.map((s) => (PARAM_SEGMENT.test(s) ? "{}" : s)).join("/");
160
+ const templates = new Map();
161
+ for (const op of operations) {
162
+ if (op.entity === null || op.entitySource !== "heuristic")
163
+ continue;
164
+ const segments = templateOf(op);
165
+ if (segments === null)
166
+ continue;
167
+ const byName = templates.get(op.entity) ?? new Map();
168
+ byName.set(key(segments), segments);
169
+ templates.set(op.entity, byName);
170
+ }
171
+ const renamed = new Map();
172
+ for (const [name, byTemplate] of templates) {
173
+ if (byTemplate.size < 2)
174
+ continue;
175
+ /* Prefix ancestors until every collection of this name reads differently. */
176
+ for (let depth = 1;; depth++) {
177
+ const names = new Map();
178
+ for (const [template, segments] of byTemplate) {
179
+ const parents = segments
180
+ .slice(0, -1)
181
+ .filter((segment) => !PARAM_SEGMENT.test(segment) && !/^v\d+$/i.test(segment))
182
+ .slice(-depth)
183
+ .map(singularise);
184
+ names.set(template, [...parents, name].join("-"));
185
+ }
186
+ const exhausted = [...byTemplate.values()].every((segments) => segments.slice(0, -1).filter((s) => !PARAM_SEGMENT.test(s)).length <= depth);
187
+ if (new Set(names.values()).size === names.size || exhausted) {
188
+ for (const [template, renamedTo] of names)
189
+ renamed.set(`${name}\u0000${template}`, renamedTo);
190
+ break;
191
+ }
192
+ }
193
+ }
194
+ if (renamed.size === 0)
195
+ return;
196
+ for (const op of operations) {
197
+ if (op.entity === null || op.entitySource !== "heuristic")
198
+ continue;
199
+ const segments = templateOf(op);
200
+ if (segments === null)
201
+ continue;
202
+ const to = renamed.get(`${op.entity}\u0000${key(segments)}`);
203
+ if (to !== undefined)
204
+ op.entity = to;
205
+ }
206
+ }
207
+ /** Demotes operations that belong to no entity. Returns the collection-shaped views kept as their own entity. */
122
208
  function demoteNonEntities(operations, gaps) {
209
+ const views = [];
123
210
  const nounsWithItemRoute = new Set();
124
211
  for (const op of operations) {
125
212
  const segments = op.path.split("/").filter(Boolean);
@@ -133,23 +220,39 @@ function demoteNonEntities(operations, gaps) {
133
220
  }
134
221
  }
135
222
  }
223
+ /* A noun kept for its collection GET keeps the create posted to the same collection: the
224
+ * decision is per noun, so an entity is never left listable but not creatable. */
225
+ const keptCollections = new Set(operations
226
+ .filter((op) => op.entity !== null &&
227
+ op.entitySource !== "tag" &&
228
+ !nounsWithItemRoute.has(op.entity) &&
229
+ op.method === "GET" &&
230
+ op.collection !== null &&
231
+ !isVerbPhrase(op.path))
232
+ .map((op) => `${op.entity}\u0000${op.path}`));
136
233
  for (const op of operations) {
137
234
  if (op.entity === null || op.entitySource === "tag")
138
235
  continue;
139
236
  if (nounsWithItemRoute.has(op.entity))
140
237
  continue;
238
+ if (op.action === "create" && keptCollections.has(`${op.entity}\u0000${op.path}`))
239
+ continue;
141
240
  const collectionShaped = op.method === "GET" && op.collection !== null;
142
241
  if (collectionShaped && !isVerbPhrase(op.path)) {
143
242
  /* A collection-shaped GET with no item route is usually a named view of another
144
243
  * entity (`/table-templates/mine`). oat cannot know which, so it says so. */
145
- gaps.record(op.operationId, "x-entity", `returns a collection but exposes no item route, so oat treats "${op.entity}" as its ` +
146
- "own entity. If it is a filtered view of another entity, name that entity explicitly");
244
+ views.push(op);
147
245
  continue;
148
246
  }
149
247
  const parent = enclosingEntity(op.path, nounsWithItemRoute);
248
+ if (parent === null) {
249
+ gaps.record(op.operationId, "x-entity", `"${op.path}" names no collection with an item route and sits under none, so it belongs ` +
250
+ "to no entity and gets no lifecycle coverage. Name its entity with x-entity");
251
+ }
150
252
  op.entity = parent;
151
253
  op.action = parent === null ? null : "action";
152
254
  }
255
+ return views;
153
256
  }
154
257
  /**
155
258
  * Whether the final segment reads as a verb rather than a noun — `/pet/findByStatus`,
@@ -328,4 +431,65 @@ export function impliedEntityName(param) {
328
431
  .toLowerCase();
329
432
  return stripped.length === 0 ? null : stripped.replace(/_/g, "-");
330
433
  }
434
+ /**
435
+ * The largest page a list operation documents, and the parameter that asks for it.
436
+ *
437
+ * `x-query`'s `maxLimit` first, then the page-size parameter's schema `maximum`, then a
438
+ * conventional 100 where the document states no bound. A request above the documented maximum is
439
+ * the caller breaking the contract, and a backend is right to refuse it. `param` is undefined when
440
+ * the operation has no page-size parameter at all — then no size can be asked for.
441
+ */
442
+ export function documentedPage(model, op) {
443
+ const param = op.conventions.limit;
444
+ if (op.query?.maxLimit !== undefined)
445
+ return { param, size: op.query.maxLimit };
446
+ const raw = model.rawOperations.get(op.operationId);
447
+ const declared = (raw?.parameters ?? []).find((candidate) => "name" in candidate && candidate.in === "query" && candidate.name === param);
448
+ const max = declared?.schema?.maximum;
449
+ return { param, size: typeof max === "number" && max >= 1 ? max : 100 };
450
+ }
451
+ /** The query that asks an operation for its largest documented page. */
452
+ export function largestPageQuery(model, op) {
453
+ const { param, size } = documentedPage(model, op);
454
+ return param === undefined ? {} : { [param]: size };
455
+ }
456
+ export function readStatuses(responses) {
457
+ const exact = [];
458
+ const ranges = [];
459
+ let hasDefault = false;
460
+ for (const key of Object.keys(responses ?? {})) {
461
+ if (/^[1-5]\d\d$/.test(key))
462
+ exact.push(Number(key));
463
+ else if (/^[1-5]xx$/i.test(key))
464
+ ranges.push(Number(key[0]));
465
+ else if (key === "default")
466
+ hasDefault = true;
467
+ }
468
+ return { default: hasDefault, exact: exact.sort((a, b) => a - b), ranges: ranges.sort((a, b) => a - b) };
469
+ }
470
+ /** Whether `status` is covered: named exactly, by its range, or by `default`. */
471
+ export function documentsStatus(statuses, status) {
472
+ return statuses.exact.includes(status) || statuses.ranges.includes(Math.floor(status / 100)) || statuses.default;
473
+ }
474
+ /** The success statuses as the document spells them, for messages. */
475
+ export function describeSuccess(statuses) {
476
+ return [
477
+ ...statuses.exact.filter((code) => code < 300).map(String),
478
+ ...statuses.ranges.filter((c) => c === 2).map(() => "2XX"),
479
+ ];
480
+ }
481
+ /**
482
+ * Maps a request (method + path below the base URL) to the documented operation it instances.
483
+ *
484
+ * Literal segments beat parameters where two templates match — `/tables/archived` is not
485
+ * `/tables/{id}` — so the most specific template wins.
486
+ */
487
+ export function operationResolver(model) {
488
+ const candidates = [...model.operations].sort((a, b) => (a.path.match(/\{/g)?.length ?? 0) - (b.path.match(/\{/g)?.length ?? 0));
489
+ return (method, relativePath) => {
490
+ const verb = method.toUpperCase();
491
+ const op = candidates.find((candidate) => candidate.method.toUpperCase() === verb && pathTemplateMatches(candidate.path, relativePath));
492
+ return op === undefined ? null : { entity: op.entity, operationId: op.operationId, template: op.path };
493
+ };
494
+ }
331
495
  //# sourceMappingURL=graph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/spec/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/spec/graph.ts"],"names":[],"mappings":"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"}
@@ -16,12 +16,32 @@ import type { OpenApiDocument } from "./types.ts";
16
16
  */
17
17
  export declare function loadSpec(source: string, baseUrl?: string, network?: NetworkFetchOptions): Promise<OpenApiDocument>;
18
18
  /**
19
- * Resolves internal `$ref`s in place, sharing object identity for repeated refs so the result
20
- * stays compact. Cycles are preserved as shared references rather than expanded — AJV handles
21
- * recursive schemas natively, and expanding them would not terminate.
19
+ * Accepts an OpenAPI 3.x document and nothing else.
22
20
  *
23
- * External refs are left untouched and reported by the caller as a coverage gap: resolving them
24
- * would mean fetching arbitrary URLs, which a test tool should not do implicitly.
21
+ * YAML parses almost any text — a `Not Found` page is a valid YAML string — so "it parsed" says
22
+ * nothing about whether this is a document oat can test. Accepting it produced a run that graded
23
+ * zero operations and reported success.
24
+ */
25
+ export declare function assertOpenApi(parsed: unknown, source: string): OpenApiDocument;
26
+ /** Where recursive schemas live after dereferencing: `$ref: "oat-defs#/$defs/<name>"`. */
27
+ export declare const DEFS_ID = "oat-defs";
28
+ export declare const DEFS_KEY = "x-oat-defs";
29
+ /** The recursive schemas a dereferenced document refers to, by name. Empty when there are none. */
30
+ export declare function documentDefs(doc: OpenApiDocument): Record<string, Record<string, unknown>>;
31
+ /**
32
+ * Resolves internal `$ref`s, producing a document with no references left in it except the ones
33
+ * that must stay: external refs, reported by the caller as a coverage gap, and refs that would
34
+ * otherwise recurse forever.
35
+ *
36
+ * Every source node maps to exactly one output node, so the result is the same whatever order the
37
+ * document lists its keys in — `components` before `paths` or after. Sibling keys beside a `$ref`
38
+ * (OpenAPI 3.1) apply to that use site only and never leak onto the shared target. Data is left
39
+ * alone: a `$ref` inside an `example` is an example, not a reference.
40
+ *
41
+ * A schema that refers to itself, directly or through others, cannot be inlined: the result would
42
+ * be a cyclic object that no serializer can print and no generator can bound. Such a reference
43
+ * becomes `$ref: "oat-defs#/$defs/<name>"` and the schema is stored once under `x-oat-defs`, which
44
+ * the validator registers with AJV and the generator follows to a bounded depth.
25
45
  */
26
46
  export declare function dereference(doc: OpenApiDocument): {
27
47
  doc: OpenApiDocument;
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/spec/load.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,mBAAmB,EAAyB,MAAM,uBAAuB,CAAA;AAChH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CA2B1B;AAgED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG;IAClD,GAAG,EAAE,eAAe,CAAA;IACpB,YAAY,EAAE,MAAM,EAAE,CAAA;CACtB,CA+DA;AAMD,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIlF;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAS/E"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/spec/load.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,mBAAmB,EAAyB,MAAM,uBAAuB,CAAA;AAChH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAgC1B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAgB9E;AAgED,0FAA0F;AAC1F,eAAO,MAAM,OAAO,aAAa,CAAA;AACjC,eAAO,MAAM,QAAQ,eAAe,CAAA;AAEpC,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAG1F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG;IAClD,GAAG,EAAE,eAAe,CAAA;IACpB,YAAY,EAAE,MAAM,EAAE,CAAA;CACtB,CAwGA;AAYD,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIlF;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAS/E"}