@substrat-run/contracts 0.87.0 → 0.89.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/dist/concurrency.d.ts +82 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +94 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/denial.d.ts +121 -0
- package/dist/denial.d.ts.map +1 -0
- package/dist/denial.js +117 -0
- package/dist/denial.js.map +1 -0
- package/dist/errors.d.ts +40 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +163 -14
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +78 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +57 -0
- package/dist/events.js.map +1 -1
- package/dist/idempotency.d.ts +139 -0
- package/dist/idempotency.d.ts.map +1 -0
- package/dist/idempotency.js +161 -0
- package/dist/idempotency.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts +24 -0
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +81 -1
- package/dist/openapi.js.map +1 -1
- package/dist/operations.d.ts +283 -11
- package/dist/operations.d.ts.map +1 -1
- package/dist/operations.js +318 -1
- package/dist/operations.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request idempotency on the operation surface (#116).
|
|
3
|
+
*
|
|
4
|
+
* A client whose request times out does not know whether the work happened. It
|
|
5
|
+
* retries, and a second work order exists. This is the vocabulary that lets the
|
|
6
|
+
* retry return the FIRST response instead of doing the work twice.
|
|
7
|
+
*
|
|
8
|
+
* ## This is not the event spine's idempotency
|
|
9
|
+
*
|
|
10
|
+
* Consumers have been required-idempotent since the beginning and the contract
|
|
11
|
+
* suite checks it: a consumer may see an event more than once and must settle to
|
|
12
|
+
* the same state. That is about the spine re-delivering. This is about a CLIENT
|
|
13
|
+
* re-sending — a different boundary, a different actor, and no relationship
|
|
14
|
+
* between the two beyond the word.
|
|
15
|
+
*
|
|
16
|
+
* ## Why the wire half lives here and the rest does not
|
|
17
|
+
*
|
|
18
|
+
* The same split `concurrency.ts` makes one file over: contracts sits below the
|
|
19
|
+
* spine, so it can say what the header is called, what makes a key well-formed
|
|
20
|
+
* and what makes two requests the same request. It must not know which table
|
|
21
|
+
* remembers the answer. `@substrat-run/kernel`'s `idempotency.ts` owns that, and
|
|
22
|
+
* the adapters own where it runs.
|
|
23
|
+
*
|
|
24
|
+
* ## The property that makes this cheap
|
|
25
|
+
*
|
|
26
|
+
* Invokes are serialised per scope in both adapters (`rt.actor.enqueue`, the
|
|
27
|
+
* ScopeDO's queue), so a duplicate cannot overlap the original — by the time the
|
|
28
|
+
* retry takes its turn, the first request has committed or rolled back. Every
|
|
29
|
+
* other implementation of this feature needs an in-flight state and a 409 for
|
|
30
|
+
* "still running"; this one does not, and the reason is a property of the host
|
|
31
|
+
* rather than an accident worth relying on quietly.
|
|
32
|
+
*/
|
|
33
|
+
/** The request header carrying the client's retry token. */
|
|
34
|
+
export const IDEMPOTENCY_KEY_HEADER = 'Idempotency-Key';
|
|
35
|
+
/**
|
|
36
|
+
* Set on a response the server did not compute — it replayed a recorded one.
|
|
37
|
+
*
|
|
38
|
+
* Advisory, and worth having anyway: without it a retry is indistinguishable
|
|
39
|
+
* from a first request that happened to succeed, which makes "did my key work?"
|
|
40
|
+
* unanswerable from the client side and turns every integration test of a retry
|
|
41
|
+
* path into a database query.
|
|
42
|
+
*/
|
|
43
|
+
export const IDEMPOTENCY_REPLAYED_HEADER = 'Idempotency-Replayed';
|
|
44
|
+
/**
|
|
45
|
+
* The header a cross-origin browser client cannot read unless the server says it
|
|
46
|
+
* may — the same trap `PAGE_EXPOSED_HEADERS` and `CONCURRENCY_EXPOSED_HEADERS`
|
|
47
|
+
* document, and the mildest of the three: an unexposed `Idempotency-Replayed`
|
|
48
|
+
* costs a client an observation, never a guarantee. The dedupe still happened.
|
|
49
|
+
*/
|
|
50
|
+
export const IDEMPOTENCY_EXPOSED_HEADERS = [IDEMPOTENCY_REPLAYED_HEADER];
|
|
51
|
+
/**
|
|
52
|
+
* How long a key is remembered: 24 hours.
|
|
53
|
+
*
|
|
54
|
+
* Long enough to cover the retries anything sane performs — an agent's backoff,
|
|
55
|
+
* a queue's redelivery, a person reloading a page that failed — and short enough
|
|
56
|
+
* that the recorded responses are a cache rather than an archive.
|
|
57
|
+
*
|
|
58
|
+
* The window is not only a storage bound, and the other reason is the one worth
|
|
59
|
+
* writing down: a recorded response is a SECOND COPY of whatever the operation
|
|
60
|
+
* returned, sitting in the scope database outside the erasure path that reaches
|
|
61
|
+
* the outbox (a shred nulls `payload` and keeps the row; it does not know about
|
|
62
|
+
* this table). A copy that expires in a day is defensible. One that expires in a
|
|
63
|
+
* quarter is a disclosure nobody declared, and one that never expires is a second
|
|
64
|
+
* database of personal data with no owner.
|
|
65
|
+
*/
|
|
66
|
+
export const IDEMPOTENCY_RETENTION_MS = 24 * 60 * 60 * 1000;
|
|
67
|
+
/**
|
|
68
|
+
* The largest result that is recorded for replay: 128 KiB of JSON.
|
|
69
|
+
*
|
|
70
|
+
* Above it the key is still recorded — with no body — and a replay is REFUSED
|
|
71
|
+
* rather than re-executed. That is the fail-closed direction: refusing a retry
|
|
72
|
+
* costs a caller an error it can act on, while re-running the operation is the
|
|
73
|
+
* duplicate this feature exists to prevent, arrived at through the feature
|
|
74
|
+
* itself. Writes return entity-shaped results and do not approach this; a list
|
|
75
|
+
* read might, and a list read never carries a key (the mount forwards the header
|
|
76
|
+
* on unsafe methods only).
|
|
77
|
+
*/
|
|
78
|
+
export const IDEMPOTENCY_RESULT_LIMIT = 128 * 1024;
|
|
79
|
+
/** Longest key accepted, matching the IETF draft's guidance for the header. */
|
|
80
|
+
export const IDEMPOTENCY_KEY_MAX_LENGTH = 255;
|
|
81
|
+
/**
|
|
82
|
+
* Is this a key we will store and compare?
|
|
83
|
+
*
|
|
84
|
+
* Visible ASCII, bounded, non-empty. Deliberately permissive about STRUCTURE — a
|
|
85
|
+
* UUID is the convention and this refuses to require one, because a client whose
|
|
86
|
+
* natural key is an order number should not have to hash it into a shape we
|
|
87
|
+
* prefer. What it refuses is a key that would make the table a place to put
|
|
88
|
+
* things: control characters, whitespace, and anything unbounded.
|
|
89
|
+
*
|
|
90
|
+
* The key is never interpreted. It is compared, and it is scoped to the subject
|
|
91
|
+
* that sent it, so one client's choice of key cannot collide with another's.
|
|
92
|
+
*/
|
|
93
|
+
export function isValidIdempotencyKey(key) {
|
|
94
|
+
if (key.length === 0 || key.length > IDEMPOTENCY_KEY_MAX_LENGTH)
|
|
95
|
+
return false;
|
|
96
|
+
return /^[\x21-\x7e]+$/.test(key);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Deterministic JSON — the same value serialises to the same string, whatever
|
|
100
|
+
* order its keys arrived in.
|
|
101
|
+
*
|
|
102
|
+
* `JSON.stringify` preserves insertion order, so `{a:1,b:2}` and `{b:2,a:1}`
|
|
103
|
+
* produce different text for the same request. A fingerprint built on that would
|
|
104
|
+
* call a retry a different request roughly whenever a client rebuilt its body
|
|
105
|
+
* from a map — which is to say, unpredictably, and in production rather than in
|
|
106
|
+
* a test.
|
|
107
|
+
*
|
|
108
|
+
* Arrays keep their order, because in a request body order IS meaning (the
|
|
109
|
+
* second line item is not the first). Only object keys are sorted.
|
|
110
|
+
*/
|
|
111
|
+
export function canonicalJson(value) {
|
|
112
|
+
if (value === undefined)
|
|
113
|
+
return 'null';
|
|
114
|
+
if (value === null || typeof value !== 'object')
|
|
115
|
+
return JSON.stringify(value) ?? 'null';
|
|
116
|
+
if (Array.isArray(value))
|
|
117
|
+
return `[${value.map((entry) => canonicalJson(entry)).join(',')}]`;
|
|
118
|
+
const entries = Object.entries(value)
|
|
119
|
+
// `undefined` is absent, not a value — `JSON.stringify` drops such a property
|
|
120
|
+
// and so must this, or an optional field explicitly passed as `undefined`
|
|
121
|
+
// would fingerprint differently from the same field simply omitted.
|
|
122
|
+
.filter(([, v]) => v !== undefined)
|
|
123
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
124
|
+
return `{${entries.map(([k, v]) => `${JSON.stringify(k)}:${canonicalJson(v)}`).join(',')}}`;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* What makes two requests the same request: the operation and its PARSED input.
|
|
128
|
+
*
|
|
129
|
+
* **Parsed, not raw**, and that is load-bearing. The host parses every invocation
|
|
130
|
+
* against the operation's declared schema before anything else runs, which
|
|
131
|
+
* applies defaults — so a retry that omits an optional field the original sent
|
|
132
|
+
* explicitly at its default value is the same request, and fingerprinting the raw
|
|
133
|
+
* body would call it a different one and refuse the retry with a 409.
|
|
134
|
+
*
|
|
135
|
+
* The operation name is inside the hash rather than beside it in the key, so a
|
|
136
|
+
* client reusing one key for two different operations is a MISMATCH (409) rather
|
|
137
|
+
* than two independent records. A key is a client's assertion that "this is the
|
|
138
|
+
* same request I sent before"; two operations is the clearest possible case of
|
|
139
|
+
* that assertion being false, and silently honouring it would replay one
|
|
140
|
+
* operation's response for another one's call.
|
|
141
|
+
*
|
|
142
|
+
* SHA-256 via Web Crypto — the same API in Node, Workers and browsers, per the
|
|
143
|
+
* repo's standing rule against node-only imports and against hand-rolled hashes.
|
|
144
|
+
*/
|
|
145
|
+
export async function requestFingerprint(operation, input) {
|
|
146
|
+
const bytes = new TextEncoder().encode(canonicalJson([operation, input ?? null]));
|
|
147
|
+
const digest = await globalThis.crypto.subtle.digest('SHA-256', bytes);
|
|
148
|
+
return [...new Uint8Array(digest)].map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The `conflict` reason slugs this feature owns.
|
|
152
|
+
*
|
|
153
|
+
* Slugs rather than codes, per the closed taxonomy: a module never invents a
|
|
154
|
+
* code, it narrows an existing one with a reason it owns. Both are `conflict`
|
|
155
|
+
* (409) because both mean the same thing to a client — *the key you sent is not
|
|
156
|
+
* available for this request* — and differ only in why, which is what the slug
|
|
157
|
+
* carries.
|
|
158
|
+
*/
|
|
159
|
+
export const IDEMPOTENCY_REUSED = 'idempotency_key_reused';
|
|
160
|
+
export const IDEMPOTENCY_REPLAY_UNAVAILABLE = 'idempotency_replay_unavailable';
|
|
161
|
+
//# sourceMappingURL=idempotency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -23,12 +23,15 @@ export * from './routing.js';
|
|
|
23
23
|
export * from './tenancy.js';
|
|
24
24
|
export * from './introspection.js';
|
|
25
25
|
export * from './pagination.js';
|
|
26
|
+
export * from './concurrency.js';
|
|
27
|
+
export * from './idempotency.js';
|
|
26
28
|
export * from './connections.js';
|
|
27
29
|
export * from './control-plane.js';
|
|
28
30
|
export * from './permission.js';
|
|
29
31
|
export * from './events.js';
|
|
30
32
|
export * from './errors.js';
|
|
31
33
|
export * from './platform-request.js';
|
|
34
|
+
export * from './denial.js';
|
|
32
35
|
export * from './manifest.js';
|
|
33
36
|
export * from './openapi.js';
|
|
34
37
|
export * from './deploy.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,12 +23,15 @@ export * from './routing.js';
|
|
|
23
23
|
export * from './tenancy.js';
|
|
24
24
|
export * from './introspection.js';
|
|
25
25
|
export * from './pagination.js';
|
|
26
|
+
export * from './concurrency.js';
|
|
27
|
+
export * from './idempotency.js';
|
|
26
28
|
export * from './connections.js';
|
|
27
29
|
export * from './control-plane.js';
|
|
28
30
|
export * from './permission.js';
|
|
29
31
|
export * from './events.js';
|
|
30
32
|
export * from './errors.js';
|
|
31
33
|
export * from './platform-request.js';
|
|
34
|
+
export * from './denial.js';
|
|
32
35
|
export * from './manifest.js';
|
|
33
36
|
export * from './openapi.js';
|
|
34
37
|
export * from './deploy.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
package/dist/openapi.d.ts
CHANGED
|
@@ -48,6 +48,30 @@ export interface ApiOperationDoc {
|
|
|
48
48
|
* builder emits the query parameters and the `{ entries, nextCursor }` envelope —
|
|
49
49
|
* so the wrapper is written once here rather than restated by every list operation.
|
|
50
50
|
*/
|
|
51
|
+
/**
|
|
52
|
+
* Declared by an operation participating in optimistic concurrency (#129).
|
|
53
|
+
*
|
|
54
|
+
* Emits the `ETag` response header on every such operation, and on an UNSAFE
|
|
55
|
+
* method additionally the `If-Match` request header plus a 412 response. Per
|
|
56
|
+
* operation rather than document-wide, deliberately: `DOCUMENTED_ERROR_CODES`
|
|
57
|
+
* excludes `precondition_failed` because *"documenting a failure that cannot
|
|
58
|
+
* occur is worse than documenting none"*, and that stays true of every
|
|
59
|
+
* operation which did not declare this.
|
|
60
|
+
*/
|
|
61
|
+
concurrency?: {
|
|
62
|
+
over: string;
|
|
63
|
+
idFrom: string;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* `false` when the operation declared out of request idempotency (#116).
|
|
67
|
+
*
|
|
68
|
+
* Present only as a refusal, matching the declaration: every other unsafe
|
|
69
|
+
* operation honours `Idempotency-Key`, so the header is documented on all of
|
|
70
|
+
* them and this is what removes it from the one that would refuse it. A header
|
|
71
|
+
* documented where it is refused is worse than one documented nowhere — a
|
|
72
|
+
* client reads it and builds a retry it does not have.
|
|
73
|
+
*/
|
|
74
|
+
idempotency?: false;
|
|
51
75
|
paged?: {
|
|
52
76
|
/** Present on a handler-composed read: the ENTRY field the cursor walks. */
|
|
53
77
|
sortKey?: string;
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,eAAe;IAC9B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mFAAmF;IACnF,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7E;;;;OAIG;IACH;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,KAAK,CAAC,EAAE;QACN,4EAA4E;QAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;;;WAIG;QACH,IAAI,CAAC,EAAE;YACL,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;YAC5B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;SAChC,CAAC;KACH,CAAC;CACH;AAgBD,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAgID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,UAAU,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsPzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC5C,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAM,GAC3E,UAAU,CAoCZ"}
|
package/dist/openapi.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { ETAG_HEADER, IF_MATCH_HEADER } from './concurrency.js';
|
|
3
|
+
import { IDEMPOTENCY_KEY_HEADER, IDEMPOTENCY_KEY_MAX_LENGTH } from './idempotency.js';
|
|
2
4
|
import { LIST_PAGE_DEFAULT, LIST_SORT_PARAM, LIST_PAGE_MAX, PAGE_LINK_HEADER, PAGE_TOTAL_HEADER, } from './pagination.js';
|
|
3
5
|
import { DOCUMENTED_ERROR_CODES, PROBLEM_CATALOG, problem, } from './errors.js';
|
|
4
6
|
/** `listId` → `list_id`: path parameters and columns sit either side of this seam. */
|
|
@@ -105,6 +107,24 @@ function pageResponseHeaders(withTotal) {
|
|
|
105
107
|
: {}),
|
|
106
108
|
};
|
|
107
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* The `ETag` a guarded operation answers with (#129) — documented, because a tag a
|
|
112
|
+
* client cannot discover is a precondition it will never send.
|
|
113
|
+
*
|
|
114
|
+
* Worth stating on the READ as loudly as on the write: the read is where a client
|
|
115
|
+
* acquires the tag, so an undocumented one there makes the whole mechanism
|
|
116
|
+
* unreachable however well the write is described.
|
|
117
|
+
*/
|
|
118
|
+
function etagResponseHeader() {
|
|
119
|
+
return {
|
|
120
|
+
[ETAG_HEADER]: {
|
|
121
|
+
description: "The entity's current version. Send it back as `If-Match` on the next write to " +
|
|
122
|
+
'that entity and the write is refused with 412 if anything changed in between. ' +
|
|
123
|
+
'Opaque — compare it, never parse it.',
|
|
124
|
+
schema: { type: 'string' },
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
108
128
|
/**
|
|
109
129
|
* Render a catalog as an OpenAPI 3.1 document (a plain JSON-able object).
|
|
110
130
|
* Pure and deterministic: same catalog in, byte-identical document out — that
|
|
@@ -182,6 +202,38 @@ export function buildOpenApiDocument(info, catalog) {
|
|
|
182
202
|
});
|
|
183
203
|
}
|
|
184
204
|
}
|
|
205
|
+
// #129: the precondition header, on an UNSAFE method only. On a `GET`,
|
|
206
|
+
// `If-Match` means a conditional READ in HTTP and the mount deliberately does
|
|
207
|
+
// not forward it — documenting it there would advertise a behaviour the server
|
|
208
|
+
// does not implement.
|
|
209
|
+
if (op.concurrency && op.http && op.http.method !== 'GET') {
|
|
210
|
+
params.push({
|
|
211
|
+
name: IF_MATCH_HEADER,
|
|
212
|
+
in: 'header',
|
|
213
|
+
required: false,
|
|
214
|
+
description: 'The `ETag` you received when you read this entity. The write is refused with ' +
|
|
215
|
+
'412 if the entity changed since — re-read and re-apply rather than retrying ' +
|
|
216
|
+
'with the new tag, which would overwrite whatever caused the refusal. `*` ' +
|
|
217
|
+
'means "it must already exist".',
|
|
218
|
+
schema: { type: 'string' },
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// #116: the retry token, on an UNSAFE method and unless the operation declared
|
|
222
|
+
// out. Documented on every such operation rather than per declaration, because
|
|
223
|
+
// that IS the surface — there is nothing to opt into, and a client that has to
|
|
224
|
+
// discover which writes are retryable will assume none of them are.
|
|
225
|
+
if (op.http && op.http.method !== 'GET' && op.idempotency !== false) {
|
|
226
|
+
params.push({
|
|
227
|
+
name: IDEMPOTENCY_KEY_HEADER,
|
|
228
|
+
in: 'header',
|
|
229
|
+
required: false,
|
|
230
|
+
description: 'A token of your choosing identifying this request. Send the SAME token when ' +
|
|
231
|
+
'retrying and the original response is replayed instead of the work being done ' +
|
|
232
|
+
'again; the reply carries `Idempotency-Replayed: true` when it was. Reusing a ' +
|
|
233
|
+
'token for a different request is refused with 409. Remembered for 24 hours.',
|
|
234
|
+
schema: { type: 'string', maxLength: IDEMPOTENCY_KEY_MAX_LENGTH },
|
|
235
|
+
});
|
|
236
|
+
}
|
|
185
237
|
// A GET or DELETE carries its input in the QUERY STRING, and the document has to
|
|
186
238
|
// say so (#830). It used to emit every input field as a `requestBody` regardless of
|
|
187
239
|
// verb, so a paged read documented `limit`/`cursor` twice — once as the parameters
|
|
@@ -250,7 +302,14 @@ export function buildOpenApiDocument(info, catalog) {
|
|
|
250
302
|
// adopting paging a breaking change for consumers a vertical cannot see —
|
|
251
303
|
// and could not be done at all for the list reads whose published shape
|
|
252
304
|
// was a bare array. In headers the body is what it always was.
|
|
253
|
-
...(op.paged
|
|
305
|
+
...(op.paged || op.concurrency
|
|
306
|
+
? {
|
|
307
|
+
headers: {
|
|
308
|
+
...(op.paged ? pageResponseHeaders(op.paged.total === true) : {}),
|
|
309
|
+
...(op.concurrency ? etagResponseHeader() : {}),
|
|
310
|
+
},
|
|
311
|
+
}
|
|
312
|
+
: {}),
|
|
254
313
|
...(op.output
|
|
255
314
|
? {
|
|
256
315
|
content: {
|
|
@@ -262,6 +321,18 @@ export function buildOpenApiDocument(info, catalog) {
|
|
|
262
321
|
: {}),
|
|
263
322
|
},
|
|
264
323
|
...ERROR_RESPONSES,
|
|
324
|
+
// #129: the 412 joins the documented set for THIS operation only —
|
|
325
|
+
// `precondition_failed` is excluded from `DOCUMENTED_ERROR_CODES`
|
|
326
|
+
// precisely so it appears where it can occur and nowhere else.
|
|
327
|
+
...(op.concurrency && op.http && op.http.method !== 'GET'
|
|
328
|
+
? {
|
|
329
|
+
'412': {
|
|
330
|
+
description: 'The entity changed since the `ETag` you sent as `If-Match`. Carries ' +
|
|
331
|
+
'`code`: `precondition_failed`.',
|
|
332
|
+
content: { 'application/problem+json': { schema: { $ref: PROBLEM_SCHEMA_REF } } },
|
|
333
|
+
},
|
|
334
|
+
}
|
|
335
|
+
: {}),
|
|
265
336
|
},
|
|
266
337
|
},
|
|
267
338
|
};
|
|
@@ -334,6 +405,15 @@ export function apiCatalogFrom(operations, prose = {}) {
|
|
|
334
405
|
...(op.paged
|
|
335
406
|
? { paged: op.paged }
|
|
336
407
|
: {}),
|
|
408
|
+
...(op.concurrency
|
|
409
|
+
? {
|
|
410
|
+
concurrency: op
|
|
411
|
+
.concurrency,
|
|
412
|
+
}
|
|
413
|
+
: {}),
|
|
414
|
+
...(op.idempotency === false
|
|
415
|
+
? { idempotency: false }
|
|
416
|
+
: {}),
|
|
337
417
|
};
|
|
338
418
|
}
|
|
339
419
|
return catalog;
|
package/dist/openapi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EAEtB,eAAe,EACf,OAAO,GACR,MAAM,aAAa,CAAC;AAmErB,sFAAsF;AACtF,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAA4C;IAC7D,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC;AAC5E,CAAC;AAYD,yFAAyF;AACzF,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AAE1D;;;GAGG;AACH,MAAM,kBAAkB,GAAqC;IAC3D,GAAG,EAAE,2EAA2E;IAChF,GAAG,EAAE,yDAAyD;IAC9D,GAAG,EAAE,wFAAwF;IAC7F,GAAG,EAAE,oEAAoE;IACzE,GAAG,EAAE,gHAAgH;IACrH,GAAG,EAAE,gIAAgI;IACrI,GAAG,EAAE,kFAAkF;CACxF,CAAC;AAEF,yFAAyF;AACzF,MAAM,mBAAmB,GAAqC;IAC5D,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,aAAa;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,mBAAmB,GAAsB;IAC7C,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;CAC/E,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAExB,MAAM,eAAe,GAAsC,MAAM,CAAC,WAAW,CAC3E,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC;IACd,EAAE,IAAI,EAAE,0BAA0B,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE;CAClE,CAAC,CACH,CAAC;AAEF,4EAA4E;AAC5E,MAAM,yBAAyB,GAAsC,MAAM,CAAC,WAAW,CACrF,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC/F,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,OAAO;QACL,mBAAmB,CAAC,MAAM,CAAW;QACrC;YACE,WAAW,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,sBAAsB,QAAQ,GAAG;YAC3E,OAAO,EAAE,EAAE,0BAA0B,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE;SAClF;KACF,CAAC;AACJ,CAAC,CAAC,CACH,CAAC;AAEF,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,UAAU,GAAG,CAAC,MAAiB,EAAE,EAAsB,EAAE,EAAE;IAC/D,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,SAAkB;IAC7C,OAAO;QACL,CAAC,gBAAgB,CAAC,EAAE;YAClB,WAAW,EACT,sFAAsF;gBACtF,gFAAgF;gBAChF,gFAAgF;gBAChF,aAAa;YACf,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3B;QACD,GAAG,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,CAAC,iBAAiB,CAAC,EAAE;oBACnB,WAAW,EACT,8EAA8E;wBAC9E,uEAAuE;wBACvE,yCAAyC;oBAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;iBACxC;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAqB,EACrB,OAAmB;IAEnB,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,sEAAsE;QACtE,sEAAsE;QACtE,MAAM,MAAM,GAA8B,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpF,IAAI,EAAE,CAAC,CAAC,CAAC,CAAW;YACpB,EAAE,EAAE,MAAM;YACV,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3B,CAAC,CAAC,CAAC;QACJ,mFAAmF;QACnF,gFAAgF;QAChF,sDAAsD;QACtD,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CACT;gBACE,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,0BAA0B,iBAAiB,eAAe,aAAa,GAAG;gBACvF,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,EAAE;aAC5F,EACD;gBACE,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,KAAK;gBACf,WAAW,EACT,qDAAqD,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;oBAC/E,yEAAyE;oBACzE,+EAA+E;gBACjF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC3B,EACD;gBACE,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,iBAAiB;gBAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;aACpF,CACF,CAAC;YACF,0EAA0E;YAC1E,0EAA0E;YAC1E,eAAe;YACf,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC;YACzC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,eAAe;oBACrB,EAAE,EAAE,OAAO;oBACX,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,gCAAgC;oBAC7C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;iBACtE,CAAC,CAAC;YACL,CAAC;YACD,uEAAuE;YACvE,EAAE;YACF,kFAAkF;YAClF,+EAA+E;YAC/E,4EAA4E;YAC5E,8EAA8E;YAC9E,+EAA+E;YAC/E,yBAAyB;YACzB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAW,CAAC,CAAC,CAAC,CAAC;YAChF,KAAK,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;gBACrD,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACvC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,MAAM;oBACZ,EAAE,EAAE,OAAO;oBACX,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,wBAAwB,MAAM,iBAAiB;oBAC5D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC3B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,iFAAiF;QACjF,oFAAoF;QACpF,mFAAmF;QACnF,oFAAoF;QACpF,oFAAoF;QACpF,mFAAmF;QACnF,uCAAuC;QACvC,EAAE;QACF,gFAAgF;QAChF,+EAA+E;QAC/E,sFAAsF;QACtF,oFAAoF;QACpF,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,CAAC;QACxE,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAW,CAAC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAGzC,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC/C,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC1E,gFAAgF;gBAChF,gFAAgF;gBAChF,0EAA0E;gBAC1E,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAC/B,+EAA+E;gBAC/E,gFAAgF;gBAChF,4EAA4E;gBAC5E,IAAI,OAAO,IAAI,WAAW;oBAAE,SAAS;gBACrC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,KAAK;oBACX,EAAE,EAAE,OAAO;oBACX,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC7B,MAAM,EAAE,WAAW;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;QAC/D,KAAK,CAAC,GAAG,CAAC,GAAG;YACX,GAAG,QAAQ;YACX,CAAC,IAAI,CAAC,EAAE;gBACN,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;gBAChD,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrC,8EAA8E;gBAC9E,iFAAiF;gBACjF,2BAA2B;gBAC3B,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,SAAS;oBACvB,CAAC,CAAC;wBACE,WAAW,EAAE;4BACX,QAAQ,EAAE,CAAC,EAAE,CAAC,aAAa;4BAC3B,OAAO,EAAE,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;yBAC3E;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,WAAW,EAAE,EAAE,CAAC,KAAK;4BACnB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;gCACd,CAAC,CAAC,2DAA2D;gCAC7D,CAAC,CAAC,2DAA2D;4BAC/D,CAAC,CAAC,uBAAuB;wBAC3B,sEAAsE;wBACtE,mEAAmE;wBACnE,0EAA0E;wBAC1E,wEAAwE;wBACxE,+DAA+D;wBAC/D,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9E,GAAG,CAAC,EAAE,CAAC,MAAM;4BACX,CAAC,CAAC;gCACE,OAAO,EAAE;oCACP,kBAAkB,EAAE;wCAClB,MAAM,EAAE,UAAU,CAChB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EACzC,QAAQ,CACT;qCACF;iCACF;6BACF;4BACH,CAAC,CAAC,EAAE,CAAC;qBACR;oBACD,GAAG,eAAe;iBACnB;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,IAAI;QACJ,KAAK;QACL,UAAU,EAAE;YACV,4EAA4E;YAC5E,2EAA2E;YAC3E,qCAAqC;YACrC,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;YACnD,SAAS,EAAE,yBAAyB;YACpC,eAAe,EAAE;gBACf,mEAAmE;gBACnE,mEAAmE;gBACnE,6CAA6C;gBAC7C,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,YAAY;oBAClB,WAAW,EACT,+IAA+I;iBAClJ;gBACD,iEAAiE;gBACjE,gEAAgE;gBAChE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE;aAChE;SACF;QACD,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAC5B,UAA4C,EAC5C,KAAK,GAAqE,EAAE;IAE5E,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAKzB,CAAC;QACF,IAAI,OAAO,EAAE,EAAE,OAAO,KAAK,QAAQ;YAAE,SAAS;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,GAAG;YACd,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAE,EAAyC,CAAC,IAAI;gBACjD,CAAC,CAAC,EAAE,IAAI,EAAG,EAAqD,CAAC,IAAI,EAAE;gBACvE,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAE,EAA2C,CAAC,KAAK;gBACpD,CAAC,CAAC,EAAE,KAAK,EAAG,EAAuD,CAAC,KAAK,EAAE;gBAC3E,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
|