@erenthedeveloper0/zen-openapi 0.1.0-alpha.1 → 0.1.0-alpha.3
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 +6 -0
- package/dist/diff.js +126 -23
- package/dist/diff.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +9 -4
- package/dist/plugin.js.map +1 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +1 -6
- package/dist/ui.js.map +1 -1
- package/package.json +2 -2
- package/src/diff.ts +182 -34
- package/src/plugin.ts +12 -7
- package/src/ui.ts +1 -8
package/README.md
CHANGED
|
@@ -61,6 +61,12 @@ narrowing a request type or renaming an `operationId` is breaking; adding an
|
|
|
61
61
|
optional response field is not. Run it in CI against a committed baseline and an
|
|
62
62
|
API change is reviewed as an API change.
|
|
63
63
|
|
|
64
|
+
What is compared is what a schema says, not how a converter spelled it: zod
|
|
65
|
+
4.4's `anyOf: [{ type: 'string' }, { type: 'null' }]` and 4.6's
|
|
66
|
+
`type: ['string', 'null']` are one schema, a field removed from inside a
|
|
67
|
+
nullable object is breaking, and a recursive component is compared down to
|
|
68
|
+
where it repeats.
|
|
69
|
+
|
|
64
70
|
## Options
|
|
65
71
|
|
|
66
72
|
`title` and `version` are required. Also: `servers`, `tags`, `security`,
|
package/dist/diff.js
CHANGED
|
@@ -153,31 +153,136 @@ function diffResponses(from, to, where, ctx) {
|
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
/**
|
|
157
|
+
* Compare two schemas, as what they say rather than as how they are spelled.
|
|
158
|
+
*
|
|
159
|
+
* `active` holds the components being compared further up *this* descent, and
|
|
160
|
+
* nothing else. A component that contains itself — a tree, a comment thread —
|
|
161
|
+
* is compared once per path into it, and the recursion stops where it would
|
|
162
|
+
* start repeating. The guard used to be a set of `ref|ref|location` keys, and a
|
|
163
|
+
* location grows by a segment at every level, so it never repeated: any
|
|
164
|
+
* recursive schema overflowed the stack, which is how `openapi:check` died on an
|
|
165
|
+
* API whose response was a tree. Keyed on the pair alone, across the whole
|
|
166
|
+
* operation, it would also have stopped at a component's *second use*, and a
|
|
167
|
+
* change is reported once per use (§29.7) — `billing` and `shipping` are two
|
|
168
|
+
* places a client reads an `Address`.
|
|
169
|
+
*/
|
|
170
|
+
function diffSchema(rawBefore, rawAfter, direction, where, ctx, active) {
|
|
171
|
+
const before = viewOf(ctx.before, rawBefore);
|
|
172
|
+
const after = viewOf(ctx.after, rawAfter);
|
|
173
|
+
const key = before.ref === undefined && after.ref === undefined ? null : `${before.ref ?? ''}|${after.ref ?? ''}`;
|
|
174
|
+
if (key !== null) {
|
|
175
|
+
if (active.has(key))
|
|
160
176
|
return;
|
|
161
|
-
|
|
177
|
+
active.add(key);
|
|
162
178
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
179
|
+
try {
|
|
180
|
+
diffTypes(before.types, after.types, direction, where, ctx);
|
|
181
|
+
// Several branches left after a union is read: their types were compared
|
|
182
|
+
// above, and nothing else can be — which branch of one document is which of
|
|
183
|
+
// the other is not knowable in general (§28.8).
|
|
184
|
+
if (before.union || after.union)
|
|
185
|
+
return;
|
|
186
|
+
diffEnum(before.node, after.node, direction, where, ctx);
|
|
187
|
+
if (before.node.format !== after.node.format) {
|
|
188
|
+
ctx.changes.push(breaking('OAS_FORMAT_CHANGED', `Format changed from ${before.node.format ?? 'none'} to ${after.node.format ?? 'none'}.`, where));
|
|
189
|
+
}
|
|
190
|
+
diffProperties(before.node, after.node, direction, where, ctx, active);
|
|
191
|
+
const beforeItems = typeof before.node.items === 'object' ? before.node.items : undefined;
|
|
192
|
+
const afterItems = typeof after.node.items === 'object' ? after.node.items : undefined;
|
|
193
|
+
if (beforeItems !== undefined && afterItems !== undefined) {
|
|
194
|
+
diffSchema(beforeItems, afterItems, direction, `${where}[]`, ctx, active);
|
|
195
|
+
}
|
|
196
|
+
if (direction === 'request' &&
|
|
197
|
+
before.node.additionalProperties !== false &&
|
|
198
|
+
after.node.additionalProperties === false) {
|
|
199
|
+
ctx.changes.push(breaking('OAS_ADDITIONAL_PROPERTIES_CLOSED', 'Extra properties are no longer accepted.', where));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
finally {
|
|
203
|
+
if (key !== null)
|
|
204
|
+
active.delete(key);
|
|
169
205
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
206
|
+
}
|
|
207
|
+
function viewOf(resolver, raw) {
|
|
208
|
+
if (raw === undefined)
|
|
209
|
+
return { node: {}, types: new Set(), union: false, ref: undefined };
|
|
210
|
+
const node = resolver.resolve(raw);
|
|
211
|
+
const branches = branchesOf(resolver, node, 0);
|
|
212
|
+
if (branches === null)
|
|
213
|
+
return plainView(node, raw.$ref);
|
|
214
|
+
const others = branches.filter((b) => !isNullSchema(b.node));
|
|
215
|
+
const nullable = others.length < branches.length;
|
|
216
|
+
if (others.length === 1) {
|
|
217
|
+
const only = others[0];
|
|
218
|
+
const inner = plainView(only.node, raw.$ref ?? only.ref);
|
|
219
|
+
if (!nullable)
|
|
220
|
+
return inner;
|
|
221
|
+
const enumWithNull = inner.node.enum === undefined || inner.node.enum.includes(null)
|
|
222
|
+
? inner.node
|
|
223
|
+
: { ...inner.node, enum: [...inner.node.enum, null] };
|
|
224
|
+
return {
|
|
225
|
+
node: enumWithNull,
|
|
226
|
+
types: inner.types.size === 0 ? inner.types : new Set([...inner.types, 'null']),
|
|
227
|
+
union: false,
|
|
228
|
+
ref: inner.ref,
|
|
229
|
+
};
|
|
175
230
|
}
|
|
176
|
-
|
|
177
|
-
|
|
231
|
+
// Every branch has to state its types for the union of them to mean anything:
|
|
232
|
+
// one unconstrained branch admits every type, and an empty set is how "not
|
|
233
|
+
// stated" is spelled everywhere else in this file.
|
|
234
|
+
const types = new Set();
|
|
235
|
+
let stated = branches.length > 0;
|
|
236
|
+
for (const branch of branches) {
|
|
237
|
+
const own = typeSet(branch.node);
|
|
238
|
+
if (own.size === 0)
|
|
239
|
+
stated = false;
|
|
240
|
+
for (const type of own)
|
|
241
|
+
types.add(type);
|
|
178
242
|
}
|
|
243
|
+
return { node: {}, types: stated ? types : new Set(), union: others.length > 1, ref: raw.$ref };
|
|
244
|
+
}
|
|
245
|
+
function plainView(node, ref) {
|
|
246
|
+
const spelled = node.const !== undefined && node.enum === undefined ? { ...node, enum: [node.const] } : node;
|
|
247
|
+
return { node: spelled, types: typeSet(node), union: false, ref };
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* A union's branches, resolved and flattened — or `null` when `node` is not a
|
|
251
|
+
* union standing alone. Depth-bounded, because two components can be unions of
|
|
252
|
+
* each other, and a schema that never bottoms out is compared as written.
|
|
253
|
+
*/
|
|
254
|
+
function branchesOf(resolver, node, depth) {
|
|
255
|
+
const listed = node.anyOf ?? node.oneOf;
|
|
256
|
+
if (!Array.isArray(listed) || listed.length === 0 || depth > 8)
|
|
257
|
+
return null;
|
|
258
|
+
if (node.type !== undefined || node.properties !== undefined || node.items !== undefined ||
|
|
259
|
+
node.enum !== undefined || node.const !== undefined) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
const out = [];
|
|
263
|
+
for (const entry of listed) {
|
|
264
|
+
const schema = asSchema(entry);
|
|
265
|
+
const resolved = resolver.resolve(schema);
|
|
266
|
+
const nested = branchesOf(resolver, resolved, depth + 1);
|
|
267
|
+
if (nested === null)
|
|
268
|
+
out.push({ node: resolved, ref: schema.$ref });
|
|
269
|
+
else
|
|
270
|
+
out.push(...nested);
|
|
271
|
+
}
|
|
272
|
+
return out;
|
|
273
|
+
}
|
|
274
|
+
/** `{ type: 'null' }`, and its other spellings — `const: null`, `enum: [null]`. */
|
|
275
|
+
function isNullSchema(node) {
|
|
276
|
+
const type = node.type;
|
|
277
|
+
if (type === 'null')
|
|
278
|
+
return true;
|
|
279
|
+
if (Array.isArray(type) && type.length === 1 && type[0] === 'null')
|
|
280
|
+
return true;
|
|
281
|
+
if (type === undefined && node.const === null)
|
|
282
|
+
return true;
|
|
283
|
+
return type === undefined && node.enum !== undefined && node.enum.length === 1 && node.enum[0] === null;
|
|
179
284
|
}
|
|
180
|
-
function diffProperties(before, after, direction, where, ctx,
|
|
285
|
+
function diffProperties(before, after, direction, where, ctx, active) {
|
|
181
286
|
const beforeProps = before.properties;
|
|
182
287
|
const afterProps = after.properties;
|
|
183
288
|
if (beforeProps === undefined && afterProps === undefined)
|
|
@@ -220,12 +325,10 @@ function diffProperties(before, after, direction, where, ctx, seen) {
|
|
|
220
325
|
? breaking('OAS_RESPONSE_FIELD_NOW_OPTIONAL', `Response field "${name}" may now be absent.`, at)
|
|
221
326
|
: compatible('OAS_REQUEST_FIELD_NOW_OPTIONAL', `Request field "${name}" became optional.`, at));
|
|
222
327
|
}
|
|
223
|
-
diffSchema(from, to, direction, at, ctx,
|
|
328
|
+
diffSchema(from, to, direction, at, ctx, active);
|
|
224
329
|
}
|
|
225
330
|
}
|
|
226
|
-
function diffTypes(
|
|
227
|
-
const from = typeSet(before);
|
|
228
|
-
const to = typeSet(after);
|
|
331
|
+
function diffTypes(from, to, direction, where, ctx) {
|
|
229
332
|
if (from.size === 0 && to.size === 0)
|
|
230
333
|
return;
|
|
231
334
|
const added = [...to].filter((t) => !from.has(t));
|
package/dist/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AA2CA,MAAM,OAAO,GAA6B,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAE/G,MAAM,UAAU,aAAa,CAAC,MAAuB,EAAE,KAAsB;IAC3E,MAAM,OAAO,GAAgB,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IAErF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClF,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEnC,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,IAAI,eAAe,EAAE,IAAI,CAAC,CAAC,CAAA;YAC7E,SAAQ;QACV,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,QAAQ,IAAI,aAAa,EAAE,IAAI,CAAC,CAAC,CAAA;YAC3E,SAAQ;QACV,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;YAAE,SAAQ;QAEjE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;YAC/B,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;YAC5B,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAA;YAClD,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,QAAQ,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;YACvF,CAAC;iBAAM,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,GAAG,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA;YACrF,CAAC;iBAAM,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBAClD,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;QACtD,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;QAC1D,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;KACjE,CAAA;AACH,CAAC;AAQD,SAAS,aAAa,CAAC,IAAqB,EAAE,EAAmB,EAAE,KAAa,EAAE,GAAY;IAC5F,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QACxC,0EAA0E;QAC1E,6DAA6D;QAC7D,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CACvB,0BAA0B,EAC1B,6BAA6B,IAAI,CAAC,WAAW,SAAS,EAAE,CAAC,WAAW,IAAI,EACxE,KAAK,CACN,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAyB,EAAE,iCAAiC,EAAE,KAAK,CAAC,CAAC,CAAA;IACtG,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,EAAE,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,EAAE,kCAAkC,EAAE,KAAK,CAAC,CAAC,CAAA;IACxG,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,wCAAwC,EAAE,KAAK,CAAC,CAAC,CAAA;IACnG,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,UAAU,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;IACtE,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;IACrC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,cAAc,CACrB,IAAgC,EAChC,EAA8B,EAC9B,KAAa,EACb,GAAY;IAEZ,MAAM,GAAG,GAAG,CAAC,CAAkB,EAAU,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACvD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpD,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,SAAS,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7B,MAAM,EAAE,GAAG,GAAG,KAAK,MAAM,EAAE,EAAE,CAAA;QAC7B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAA;YACnF,SAAQ;QACV,CAAC;QACD,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9F,CAAC;aAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACjE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAA;QAChG,CAAC;QACD,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IAC1E,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAQ;QAC/B,MAAM,EAAE,GAAG,GAAG,KAAK,MAAM,EAAE,EAAE,CAAA;QAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI;YAC1C,CAAC,CAAC,QAAQ,CAAC,0BAA0B,EAAE,sBAAsB,EAAE,aAAa,EAAE,EAAE,CAAC;YACjF,CAAC,CAAC,UAAU,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/E,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAqB,EAAE,EAAmB,EAAE,KAAa,EAAE,GAAY;IAC9F,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAA;IACnC,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAA;IAChC,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;QAAE,OAAM;IAC/D,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK;YAC3C,CAAC,CAAC,UAAU,CAAC,gBAAgB,EAAE,qCAAqC,EAAE,KAAK,CAAC;YAC5E,CAAC,CAAC,QAAQ,CAAC,yBAAyB,EAAE,oCAAoC,EAAE,KAAK,CAAC,CAAC,CAAA;QACrF,OAAM;IACR,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,qCAAqC,EAAE,KAAK,CAAC,CAAC,CAAA;QAC9F,OAAM;IACR,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;QAAE,OAAM;IAE/D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9F,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,EAAE,GAAG,GAAG,KAAK,YAAY,IAAI,GAAG,CAAA;QACtC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,cAAc,IAAI,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/F,SAAQ;QACV,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,cAAc,IAAI,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAA;YACrG,SAAQ;QACV,CAAC;QACD,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IAClF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,IAA8C,EAC9C,EAA4C,EAC5C,KAAa,EACb,GAAY;IAEZ,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACpE,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,EAAE,GAAG,GAAG,KAAK,eAAe,MAAM,EAAE,CAAA;QAE1C,IAAI,cAAc,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,UAAU,MAAM,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/F,SAAQ;QACV,CAAC;QACD,IAAI,cAAc,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,UAAU,MAAM,aAAa,EAAE,EAAE,CAAC,CAAC,CAAA;YACnF,SAAQ;QACV,CAAC;QACD,IAAI,cAAc,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS;YAAE,SAAQ;QAEzE,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,IAAI,EAAE,CAAA;QAClD,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,IAAI,EAAE,CAAA;QAChD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACpF,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YACvC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YACrC,MAAM,OAAO,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,CAAA;YACjC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE,cAAc,IAAI,aAAa,EAAE,OAAO,CAAC,CAAC,CAAA;gBAClG,SAAQ;YACV,CAAC;YACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,4BAA4B,EAAE,cAAc,IAAI,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAA;gBAC9G,SAAQ;YACV,CAAC;YACD,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;AACH,CAAC;AAMD;;;;;;;;;;;;;GAaG;AACH,SAAS,UAAU,CACjB,SAAoC,EACpC,QAAmC,EACnC,SAAoB,EACpB,KAAa,EACb,GAAY,EACZ,MAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAEzC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,CAAA;IACjH,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAM;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC;QACH,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAC3D,yEAAyE;QACzE,4EAA4E;QAC5E,gDAAgD;QAChD,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;YAAE,OAAM;QAEvC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAExD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CACvB,oBAAoB,EACpB,uBAAuB,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,GAAG,EACxF,KAAK,CACN,CAAC,CAAA;QACJ,CAAC;QAED,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;QAEtE,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QACtF,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC1D,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;QAC3E,CAAC;QAED,IACE,SAAS,KAAK,SAAS;YACvB,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,KAAK;YAC1C,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,KAAK,EACzC,CAAC;YACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CACvB,kCAAkC,EAClC,0CAA0C,EAC1C,KAAK,CACN,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AA2CD,SAAS,MAAM,CAAC,QAAkB,EAAE,GAA8B;IAChE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAA;IAC1F,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC9C,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAEvD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IAEhD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAW,CAAA;QAChC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAClF,CAAC,CAAC,KAAK,CAAC,IAAI;YACZ,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAA;QACvD,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,MAAe,CAAC,CAAC;YACxF,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,mDAAmD;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAY,CAAA;IACjC,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IAChC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;YAAE,MAAM,GAAG,KAAK,CAAA;QAClC,KAAK,MAAM,IAAI,IAAI,GAAG;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;AACjG,CAAC;AAED,SAAS,SAAS,CAAC,IAAmB,EAAE,GAAuB;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AACnE,CAAC;AAOD;;;;GAIG;AACH,SAAS,UAAU,CAAC,QAAkB,EAAE,IAAmB,EAAE,KAAa;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAA;IACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3E,IACE,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QACpF,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EACnD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAkB,CAAA;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QACxD,IAAI,MAAM,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;;YAC9D,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,mFAAmF;AACnF,SAAS,YAAY,CAAC,IAAmB;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACtB,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAC/E,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC1D,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;AACzG,CAAC;AAED,SAAS,cAAc,CACrB,MAAqB,EACrB,KAAoB,EACpB,SAAoB,EACpB,KAAa,EACb,GAAY,EACZ,MAAmB;IAEnB,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAA;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;IACnC,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS;QAAE,OAAM;IAEjE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IACrD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAE5F,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QACvC,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,EAAE,CAAA;QAE7B,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YAC3C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,UAAU;gBACvC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,EAAE,mBAAmB,IAAI,gBAAgB,EAAE,EAAE,CAAC;gBACrF,CAAC,CAAC,QAAQ,CAAC,2BAA2B,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,EAAE,CAAC,CAAC,CAAA;YAChG,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YAC3C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE,mBAAmB,IAAI,cAAc,EAAE,EAAE,CAAC,CAAC,CAAA;YACrG,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;oBACtC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,EAAE,2BAA2B,IAAI,cAAc,EAAE,EAAE,CAAC;oBACjG,CAAC,CAAC,UAAU,CAAC,yBAAyB,EAAE,2BAA2B,IAAI,cAAc,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/F,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,SAAQ;QAEpD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC;YAC/B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;gBACtC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,EAAE,kBAAkB,IAAI,oBAAoB,EAAE,EAAE,CAAC;gBAC5F,CAAC,CAAC,UAAU,CAAC,mCAAmC,EAAE,mBAAmB,IAAI,0BAA0B,EAAE,EAAE,CAAC,CAAC,CAAA;QAC7G,CAAC;aAAM,IAAI,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,UAAU;gBACvC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,EAAE,mBAAmB,IAAI,sBAAsB,EAAE,EAAE,CAAC;gBAChG,CAAC,CAAC,UAAU,CAAC,gCAAgC,EAAE,kBAAkB,IAAI,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAA;QACnG,CAAC;QAED,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IAClD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,IAA2B,EAC3B,EAAyB,EACzB,SAAoB,EACpB,KAAa,EACb,GAAY;IAEZ,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC;QAAE,OAAM;IAE5C,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAEnD,8EAA8E;IAC9E,0EAA0E;IAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,UAAU;YACvC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,IAAI,IAAI,EAAE,KAAK,CAAC;YACvE,CAAC,CAAC,UAAU,CAAC,kBAAkB,EAAE,6BAA6B,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IACnF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;YACtC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE,8BAA8B,IAAI,IAAI,EAAE,KAAK,CAAC;YAC9E,CAAC,CAAC,UAAU,CAAC,mBAAmB,EAAE,0BAA0B,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IACjF,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CACf,MAAqB,EACrB,KAAoB,EACpB,SAAoB,EACpB,KAAa,EACb,GAAY;IAEZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;IACxB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAA;IACrB,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;QAAE,OAAM;IAClD,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QAC3C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;YACjC,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS;gBACxB,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE,oDAAoD,EAAE,KAAK,CAAC;gBAC9F,CAAC,CAAC,UAAU,CAAC,qBAAqB,EAAE,oDAAoD,EAAE,KAAK,CAAC,CAAC;YACnG,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU;gBACzB,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,mDAAmD,EAAE,KAAK,CAAC;gBAC1F,CAAC,CAAC,UAAU,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3E,OAAM;IACR,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QACrC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,UAAU;YACvC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE,uBAAuB,KAAK,GAAG,EAAE,KAAK,CAAC;YAC1E,CAAC,CAAC,UAAU,CAAC,sBAAsB,EAAE,4BAA4B,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;IACtF,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QACpC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;YACtC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,EAAE,6BAA6B,KAAK,GAAG,EAAE,KAAK,CAAC;YAClF,CAAC,CAAC,UAAU,CAAC,wBAAwB,EAAE,yBAAyB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;IACrF,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,QAAQ,CAAC,IAAgC;IAChD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACxC,OAAO,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACrE,CAAC;AAED,SAAS,OAAO,CAAC,MAAqB;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA;IAC5B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,GAAG,EAAE,CAAA;IAC5C,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,kFAAkF;AAClF,MAAM,QAAQ;IACH,QAAQ,CAAyC;IAE1D,YAAY,QAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAA;IACpD,CAAC;IAED,OAAO,CAAC,MAAqB;QAC3B,IAAI,OAAO,GAAG,MAAM,CAAA;QACpB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAA;YACxB,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAA;YAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACvG,MAAM,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC9D,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAA;YACnC,OAAO,GAAG,MAAM,CAAA;QAClB,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAe,EAAE,QAAgB;IAC/D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AACtD,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,OAAe,EAAE,QAAgB;IACjE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,QAAgB;IACpE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AAC3D,CAAC"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,MAAM,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,MAAM,EAAY,MAAM,6BAA6B,CAAA;AAEzF,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAIxF;;;;;;;;GAQG;AAEH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IAC1C,iEAAiE;IACjE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;CACpF;AASD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAkEzD,CAAA"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BootError, definePlugin } from '@erenthedeveloper0/zen-core';
|
|
1
|
+
import { BootError, definePlugin, unsafeHtml } from '@erenthedeveloper0/zen-core';
|
|
2
2
|
import { openapiDocument } from "./document.js";
|
|
3
3
|
import { renderReference } from "./ui.js";
|
|
4
4
|
export const openapiPlugin = definePlugin({
|
|
@@ -7,7 +7,7 @@ export const openapiPlugin = definePlugin({
|
|
|
7
7
|
setup(app, options) {
|
|
8
8
|
const jsonPath = options.json === undefined ? '/openapi.json' : options.json;
|
|
9
9
|
const uiPath = options.ui === undefined ? '/docs' : options.ui;
|
|
10
|
-
const served = { result: null, json: '{}', etag: '', html: '' };
|
|
10
|
+
const served = { result: null, json: '{}', etag: '', html: unsafeHtml('') };
|
|
11
11
|
if (jsonPath !== false) {
|
|
12
12
|
app.route({
|
|
13
13
|
method: 'GET',
|
|
@@ -40,9 +40,14 @@ export const openapiPlugin = definePlugin({
|
|
|
40
40
|
served.result = result;
|
|
41
41
|
served.json = JSON.stringify(result.document, null, 2);
|
|
42
42
|
served.etag = weakEtag(served.json);
|
|
43
|
-
|
|
43
|
+
// `unsafeHtml`, once, at boot: the page inlines the document in a JSON
|
|
44
|
+
// island and a script, which `html` rightly refuses to fill from holes,
|
|
45
|
+
// and `renderReference` escapes both itself (`<` as `<` in the
|
|
46
|
+
// island, every text value through `escapeHtml`). The mark is the
|
|
47
|
+
// statement that it did, made where a reviewer can check it (§19.5).
|
|
48
|
+
served.html = unsafeHtml(uiPath === false
|
|
44
49
|
? ''
|
|
45
|
-
: renderReference(result.document, { jsonPath: jsonPath === false ? null : jsonPath });
|
|
50
|
+
: renderReference(result.document, { jsonPath: jsonPath === false ? null : jsonPath }));
|
|
46
51
|
if (options.strict === true && result.diagnostics.length > 0) {
|
|
47
52
|
throw new BootError(result.diagnostics.map(toBootDiagnostic));
|
|
48
53
|
}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACjF,OAAO,EAAE,eAAe,EAA2C,MAAM,eAAe,CAAA;AAExF,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAoCzC,MAAM,CAAC,MAAM,aAAa,GAAqC,YAAY,CAA2B;IACpG,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAEhB,KAAK,CAAC,GAAG,EAAE,OAAO;QAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;QAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAA;QAC9D,MAAM,MAAM,GAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,CAAA;QAEnF,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,GAAG,CAAC,KAAK,CAAC;gBACR,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,cAAc;gBACpB,uEAAuE;gBACvE,6CAA6C;gBAC7C,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACtB,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE;oBAC5B,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC,IAAI;wBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACvE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;wBAC3B,KAAK,EAAE,iCAAiC;wBACxC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE;qBAC5D,CAAC,CAAA;gBACJ,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC;gBACR,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACtB,OAAO,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;aACrD,CAAC,CAAA;QACJ,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAiB,EAAE,OAAO,CAAC,CAAA;YAC1D,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;YACtB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACtD,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACnC,uEAAuE;YACvE,wEAAwE;YACxE,+DAA+D;YAC/D,kEAAkE;YAClE,qEAAqE;YACrE,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,KAAK,KAAK;gBACvC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;YAEzF,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAA;YAC/D,CAAC;YACD,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE;gBACP,qDAAqD;gBACrD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI;gBAC/C,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE;gBACnD,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;aACxB;SACF,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAUF,SAAS,gBAAgB,CAAC,UAAyB;IACjD,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ;QAC1E,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,SAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;KAC9B,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,GAAG,UAAU,CAAA;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAA;AACvE,CAAC"}
|
package/dist/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,GAAE;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAuB,GAAG,MAAM,CA6B5H"}
|
package/dist/ui.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { escapeHtml } from '@erenthedeveloper0/zen-core';
|
|
1
2
|
/**
|
|
2
3
|
* A self-contained API reference — rfcs/0001 §29.2.
|
|
3
4
|
*
|
|
@@ -41,12 +42,6 @@ export function renderReference(document, options = { jsonPath: null }) {
|
|
|
41
42
|
</html>
|
|
42
43
|
`;
|
|
43
44
|
}
|
|
44
|
-
function escapeHtml(raw) {
|
|
45
|
-
return raw.replace(/[&<>"']/g, (char) => HTML_ESCAPES[char] ?? char);
|
|
46
|
-
}
|
|
47
|
-
const HTML_ESCAPES = {
|
|
48
|
-
'&': '&', '<': '<', '>': '>', '"': '"', "'": ''',
|
|
49
|
-
};
|
|
50
45
|
const STYLE = `
|
|
51
46
|
:root{--bg:#fff;--fg:#1a1a1a;--muted:#666;--line:#e3e3e3;--code:#f6f6f7;--accent:#3060d0}
|
|
52
47
|
@media(prefers-color-scheme:dark){:root{--bg:#16171a;--fg:#e8e8ea;--muted:#9a9aa2;--line:#2c2d33;--code:#1e1f24;--accent:#7aa2f7}}
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,QAAyB,EAAE,UAAuC,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClH,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7C,6EAA6E;IAC7E,wEAAwE;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI;QACxC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,8BAA8B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAA;IAElF,OAAO;;;;;;SAMA,KAAK;SACL,KAAK;;;;QAIN,KAAK;wBACW,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,QAAQ;;;4CAGxB,OAAO;UACzC,MAAM;;;CAGf,CAAA;AACD,CAAC;AAED,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bb,CAAA;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Gd,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@erenthedeveloper0/zen-openapi",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.3",
|
|
4
4
|
"description": "Zen OpenAPI: the application graph as an OAS 3.1 document, $ref deduplication, breaking-change detection and a dependency-free viewer.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"openapi",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"test": "node --test \"test/**/*.test.ts\""
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@erenthedeveloper0/zen-core": "0.1.0-alpha.
|
|
55
|
+
"@erenthedeveloper0/zen-core": "0.1.0-alpha.3"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"typescript": ">=5.0"
|
package/src/diff.ts
CHANGED
|
@@ -227,49 +227,199 @@ function diffResponses(
|
|
|
227
227
|
|
|
228
228
|
type Direction = 'request' | 'response'
|
|
229
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Compare two schemas, as what they say rather than as how they are spelled.
|
|
232
|
+
*
|
|
233
|
+
* `active` holds the components being compared further up *this* descent, and
|
|
234
|
+
* nothing else. A component that contains itself — a tree, a comment thread —
|
|
235
|
+
* is compared once per path into it, and the recursion stops where it would
|
|
236
|
+
* start repeating. The guard used to be a set of `ref|ref|location` keys, and a
|
|
237
|
+
* location grows by a segment at every level, so it never repeated: any
|
|
238
|
+
* recursive schema overflowed the stack, which is how `openapi:check` died on an
|
|
239
|
+
* API whose response was a tree. Keyed on the pair alone, across the whole
|
|
240
|
+
* operation, it would also have stopped at a component's *second use*, and a
|
|
241
|
+
* change is reported once per use (§29.7) — `billing` and `shipping` are two
|
|
242
|
+
* places a client reads an `Address`.
|
|
243
|
+
*/
|
|
230
244
|
function diffSchema(
|
|
231
|
-
rawBefore: OpenApiSchema,
|
|
232
|
-
rawAfter: OpenApiSchema,
|
|
245
|
+
rawBefore: OpenApiSchema | undefined,
|
|
246
|
+
rawAfter: OpenApiSchema | undefined,
|
|
233
247
|
direction: Direction,
|
|
234
248
|
where: string,
|
|
235
249
|
ctx: Context,
|
|
236
|
-
|
|
250
|
+
active: Set<string>,
|
|
237
251
|
): void {
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
252
|
+
const before = viewOf(ctx.before, rawBefore)
|
|
253
|
+
const after = viewOf(ctx.after, rawAfter)
|
|
254
|
+
|
|
255
|
+
const key = before.ref === undefined && after.ref === undefined ? null : `${before.ref ?? ''}|${after.ref ?? ''}`
|
|
256
|
+
if (key !== null) {
|
|
257
|
+
if (active.has(key)) return
|
|
258
|
+
active.add(key)
|
|
242
259
|
}
|
|
243
260
|
|
|
244
|
-
|
|
245
|
-
|
|
261
|
+
try {
|
|
262
|
+
diffTypes(before.types, after.types, direction, where, ctx)
|
|
263
|
+
// Several branches left after a union is read: their types were compared
|
|
264
|
+
// above, and nothing else can be — which branch of one document is which of
|
|
265
|
+
// the other is not knowable in general (§28.8).
|
|
266
|
+
if (before.union || after.union) return
|
|
267
|
+
|
|
268
|
+
diffEnum(before.node, after.node, direction, where, ctx)
|
|
269
|
+
|
|
270
|
+
if (before.node.format !== after.node.format) {
|
|
271
|
+
ctx.changes.push(breaking(
|
|
272
|
+
'OAS_FORMAT_CHANGED',
|
|
273
|
+
`Format changed from ${before.node.format ?? 'none'} to ${after.node.format ?? 'none'}.`,
|
|
274
|
+
where,
|
|
275
|
+
))
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
diffProperties(before.node, after.node, direction, where, ctx, active)
|
|
246
279
|
|
|
247
|
-
|
|
248
|
-
|
|
280
|
+
const beforeItems = typeof before.node.items === 'object' ? before.node.items : undefined
|
|
281
|
+
const afterItems = typeof after.node.items === 'object' ? after.node.items : undefined
|
|
282
|
+
if (beforeItems !== undefined && afterItems !== undefined) {
|
|
283
|
+
diffSchema(beforeItems, afterItems, direction, `${where}[]`, ctx, active)
|
|
284
|
+
}
|
|
249
285
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
286
|
+
if (
|
|
287
|
+
direction === 'request' &&
|
|
288
|
+
before.node.additionalProperties !== false &&
|
|
289
|
+
after.node.additionalProperties === false
|
|
290
|
+
) {
|
|
291
|
+
ctx.changes.push(breaking(
|
|
292
|
+
'OAS_ADDITIONAL_PROPERTIES_CLOSED',
|
|
293
|
+
'Extra properties are no longer accepted.',
|
|
294
|
+
where,
|
|
295
|
+
))
|
|
296
|
+
}
|
|
297
|
+
} finally {
|
|
298
|
+
if (key !== null) active.delete(key)
|
|
256
299
|
}
|
|
300
|
+
}
|
|
257
301
|
|
|
258
|
-
|
|
302
|
+
/**
|
|
303
|
+
* What a schema says — the only thing a comparison should read.
|
|
304
|
+
*
|
|
305
|
+
* A converter is free to spell one schema several ways, and two of them used
|
|
306
|
+
* to diff as a change. zod 4.4 wrote a nullable string as
|
|
307
|
+
* `anyOf: [{ type: 'string' }, { type: 'null' }]` and zod 4.6 writes
|
|
308
|
+
* `type: ['string', 'null']`; the type set was read off `type` alone, so the
|
|
309
|
+
* first looked like a schema with no type and the second like one that had
|
|
310
|
+
* gained two, and a dependency bump that changed no byte on the wire failed the
|
|
311
|
+
* gate with two breaking changes. The other half was quieter and worse: nothing
|
|
312
|
+
* looked inside `anyOf` at all, so a field removed from
|
|
313
|
+
* `z.object({…}).nullable()` — the most common union there is — passed.
|
|
314
|
+
*
|
|
315
|
+
* So a union is read before it is compared:
|
|
316
|
+
*
|
|
317
|
+
* - `$ref`s are followed, in the schema and in each branch, and nested unions
|
|
318
|
+
* are flattened;
|
|
319
|
+
* - `null` branches are set aside, and if **one** branch is left, the view is
|
|
320
|
+
* that branch, nullable — its fields, items, enum and format compared exactly
|
|
321
|
+
* as a plain schema's are, with `null` in its type set and, if it has one, in
|
|
322
|
+
* its enum, which is what `enum: […, null]` would have said;
|
|
323
|
+
* - if **several** are left, the view is the union of the types they admit,
|
|
324
|
+
* and only that is compared (`union: true`).
|
|
325
|
+
*
|
|
326
|
+
* And `const: v` is `enum: [v]`, which is what it means.
|
|
327
|
+
*
|
|
328
|
+
* A union is only read this way when it is the whole schema. `type` or
|
|
329
|
+
* `properties` beside an `anyOf` is an intersection, and reading that as a
|
|
330
|
+
* union would be a guess; it is compared as it was, keyword by keyword.
|
|
331
|
+
*/
|
|
332
|
+
interface SchemaView {
|
|
333
|
+
/** The schema whose keywords are compared: a branch, for a nullable union. */
|
|
334
|
+
readonly node: OpenApiSchema
|
|
335
|
+
/** The types it admits; empty when it states none. */
|
|
336
|
+
readonly types: ReadonlySet<JsonType>
|
|
337
|
+
/** Several non-null branches: their types are compared, nothing else is. */
|
|
338
|
+
readonly union: boolean
|
|
339
|
+
/** The component this view was reached through — for the cycle guard. */
|
|
340
|
+
readonly ref: string | undefined
|
|
341
|
+
}
|
|
259
342
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
343
|
+
function viewOf(resolver: Resolver, raw: OpenApiSchema | undefined): SchemaView {
|
|
344
|
+
if (raw === undefined) return { node: {}, types: new Set(), union: false, ref: undefined }
|
|
345
|
+
const node = resolver.resolve(raw)
|
|
346
|
+
const branches = branchesOf(resolver, node, 0)
|
|
347
|
+
if (branches === null) return plainView(node, raw.$ref)
|
|
348
|
+
|
|
349
|
+
const others = branches.filter((b) => !isNullSchema(b.node))
|
|
350
|
+
const nullable = others.length < branches.length
|
|
351
|
+
|
|
352
|
+
if (others.length === 1) {
|
|
353
|
+
const only = others[0] as Branch
|
|
354
|
+
const inner = plainView(only.node, raw.$ref ?? only.ref)
|
|
355
|
+
if (!nullable) return inner
|
|
356
|
+
const enumWithNull = inner.node.enum === undefined || inner.node.enum.includes(null)
|
|
357
|
+
? inner.node
|
|
358
|
+
: { ...inner.node, enum: [...inner.node.enum, null] }
|
|
359
|
+
return {
|
|
360
|
+
node: enumWithNull,
|
|
361
|
+
types: inner.types.size === 0 ? inner.types : new Set([...inner.types, 'null' as const]),
|
|
362
|
+
union: false,
|
|
363
|
+
ref: inner.ref,
|
|
364
|
+
}
|
|
264
365
|
}
|
|
265
366
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
367
|
+
// Every branch has to state its types for the union of them to mean anything:
|
|
368
|
+
// one unconstrained branch admits every type, and an empty set is how "not
|
|
369
|
+
// stated" is spelled everywhere else in this file.
|
|
370
|
+
const types = new Set<JsonType>()
|
|
371
|
+
let stated = branches.length > 0
|
|
372
|
+
for (const branch of branches) {
|
|
373
|
+
const own = typeSet(branch.node)
|
|
374
|
+
if (own.size === 0) stated = false
|
|
375
|
+
for (const type of own) types.add(type)
|
|
272
376
|
}
|
|
377
|
+
return { node: {}, types: stated ? types : new Set(), union: others.length > 1, ref: raw.$ref }
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
function plainView(node: OpenApiSchema, ref: string | undefined): SchemaView {
|
|
381
|
+
const spelled = node.const !== undefined && node.enum === undefined ? { ...node, enum: [node.const] } : node
|
|
382
|
+
return { node: spelled, types: typeSet(node), union: false, ref }
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
interface Branch {
|
|
386
|
+
readonly node: OpenApiSchema
|
|
387
|
+
readonly ref: string | undefined
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* A union's branches, resolved and flattened — or `null` when `node` is not a
|
|
392
|
+
* union standing alone. Depth-bounded, because two components can be unions of
|
|
393
|
+
* each other, and a schema that never bottoms out is compared as written.
|
|
394
|
+
*/
|
|
395
|
+
function branchesOf(resolver: Resolver, node: OpenApiSchema, depth: number): Branch[] | null {
|
|
396
|
+
const listed = node.anyOf ?? node.oneOf
|
|
397
|
+
if (!Array.isArray(listed) || listed.length === 0 || depth > 8) return null
|
|
398
|
+
if (
|
|
399
|
+
node.type !== undefined || node.properties !== undefined || node.items !== undefined ||
|
|
400
|
+
node.enum !== undefined || node.const !== undefined
|
|
401
|
+
) {
|
|
402
|
+
return null
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
const out: Branch[] = []
|
|
406
|
+
for (const entry of listed) {
|
|
407
|
+
const schema = asSchema(entry) as OpenApiSchema
|
|
408
|
+
const resolved = resolver.resolve(schema)
|
|
409
|
+
const nested = branchesOf(resolver, resolved, depth + 1)
|
|
410
|
+
if (nested === null) out.push({ node: resolved, ref: schema.$ref })
|
|
411
|
+
else out.push(...nested)
|
|
412
|
+
}
|
|
413
|
+
return out
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/** `{ type: 'null' }`, and its other spellings — `const: null`, `enum: [null]`. */
|
|
417
|
+
function isNullSchema(node: OpenApiSchema): boolean {
|
|
418
|
+
const type = node.type
|
|
419
|
+
if (type === 'null') return true
|
|
420
|
+
if (Array.isArray(type) && type.length === 1 && type[0] === 'null') return true
|
|
421
|
+
if (type === undefined && node.const === null) return true
|
|
422
|
+
return type === undefined && node.enum !== undefined && node.enum.length === 1 && node.enum[0] === null
|
|
273
423
|
}
|
|
274
424
|
|
|
275
425
|
function diffProperties(
|
|
@@ -278,7 +428,7 @@ function diffProperties(
|
|
|
278
428
|
direction: Direction,
|
|
279
429
|
where: string,
|
|
280
430
|
ctx: Context,
|
|
281
|
-
|
|
431
|
+
active: Set<string>,
|
|
282
432
|
): void {
|
|
283
433
|
const beforeProps = before.properties
|
|
284
434
|
const afterProps = after.properties
|
|
@@ -323,19 +473,17 @@ function diffProperties(
|
|
|
323
473
|
: compatible('OAS_REQUEST_FIELD_NOW_OPTIONAL', `Request field "${name}" became optional.`, at))
|
|
324
474
|
}
|
|
325
475
|
|
|
326
|
-
diffSchema(from, to, direction, at, ctx,
|
|
476
|
+
diffSchema(from, to, direction, at, ctx, active)
|
|
327
477
|
}
|
|
328
478
|
}
|
|
329
479
|
|
|
330
480
|
function diffTypes(
|
|
331
|
-
|
|
332
|
-
|
|
481
|
+
from: ReadonlySet<JsonType>,
|
|
482
|
+
to: ReadonlySet<JsonType>,
|
|
333
483
|
direction: Direction,
|
|
334
484
|
where: string,
|
|
335
485
|
ctx: Context,
|
|
336
486
|
): void {
|
|
337
|
-
const from = typeSet(before)
|
|
338
|
-
const to = typeSet(after)
|
|
339
487
|
if (from.size === 0 && to.size === 0) return
|
|
340
488
|
|
|
341
489
|
const added = [...to].filter((t) => !from.has(t))
|
package/src/plugin.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AppGraph, Diagnostic, Plugin } from '@erenthedeveloper0/zen-core'
|
|
2
|
-
import { BootError, definePlugin } from '@erenthedeveloper0/zen-core'
|
|
1
|
+
import type { AppGraph, Diagnostic, Plugin, SafeHtml } from '@erenthedeveloper0/zen-core'
|
|
2
|
+
import { BootError, definePlugin, unsafeHtml } from '@erenthedeveloper0/zen-core'
|
|
3
3
|
import { openapiDocument, type OpenApiOptions, type OpenApiResult } from './document.ts'
|
|
4
4
|
import type { DocDiagnostic } from './schema.ts'
|
|
5
5
|
import { renderReference } from './ui.ts'
|
|
@@ -35,7 +35,7 @@ interface Served {
|
|
|
35
35
|
result: OpenApiResult | null
|
|
36
36
|
json: string
|
|
37
37
|
etag: string
|
|
38
|
-
html:
|
|
38
|
+
html: SafeHtml
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export const openapiPlugin: Plugin<OpenApiPluginOptions, {}> = definePlugin<OpenApiPluginOptions, {}>({
|
|
@@ -45,7 +45,7 @@ export const openapiPlugin: Plugin<OpenApiPluginOptions, {}> = definePlugin<Open
|
|
|
45
45
|
setup(app, options) {
|
|
46
46
|
const jsonPath = options.json === undefined ? '/openapi.json' : options.json
|
|
47
47
|
const uiPath = options.ui === undefined ? '/docs' : options.ui
|
|
48
|
-
const served: Served = { result: null, json: '{}', etag: '', html: '' }
|
|
48
|
+
const served: Served = { result: null, json: '{}', etag: '', html: unsafeHtml('') }
|
|
49
49
|
|
|
50
50
|
if (jsonPath !== false) {
|
|
51
51
|
app.route({
|
|
@@ -80,9 +80,14 @@ export const openapiPlugin: Plugin<OpenApiPluginOptions, {}> = definePlugin<Open
|
|
|
80
80
|
served.result = result
|
|
81
81
|
served.json = JSON.stringify(result.document, null, 2)
|
|
82
82
|
served.etag = weakEtag(served.json)
|
|
83
|
-
|
|
83
|
+
// `unsafeHtml`, once, at boot: the page inlines the document in a JSON
|
|
84
|
+
// island and a script, which `html` rightly refuses to fill from holes,
|
|
85
|
+
// and `renderReference` escapes both itself (`<` as `<` in the
|
|
86
|
+
// island, every text value through `escapeHtml`). The mark is the
|
|
87
|
+
// statement that it did, made where a reviewer can check it (§19.5).
|
|
88
|
+
served.html = unsafeHtml(uiPath === false
|
|
84
89
|
? ''
|
|
85
|
-
: renderReference(result.document, { jsonPath: jsonPath === false ? null : jsonPath })
|
|
90
|
+
: renderReference(result.document, { jsonPath: jsonPath === false ? null : jsonPath }))
|
|
86
91
|
|
|
87
92
|
if (options.strict === true && result.diagnostics.length > 0) {
|
|
88
93
|
throw new BootError(result.diagnostics.map(toBootDiagnostic))
|
|
@@ -106,7 +111,7 @@ interface DocsContext {
|
|
|
106
111
|
readonly headers: Readonly<Record<string, string | undefined>>
|
|
107
112
|
empty(status?: 204 | 205 | 304): unknown
|
|
108
113
|
text(body: string, init?: { media?: string; headers?: Record<string, string> }): unknown
|
|
109
|
-
html(body:
|
|
114
|
+
html(body: SafeHtml): unknown
|
|
110
115
|
}
|
|
111
116
|
|
|
112
117
|
function toBootDiagnostic(diagnostic: DocDiagnostic): Diagnostic {
|
package/src/ui.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { escapeHtml } from '@erenthedeveloper0/zen-core'
|
|
1
2
|
import type { OpenApiDocument } from './types.ts'
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -45,14 +46,6 @@ export function renderReference(document: OpenApiDocument, options: { jsonPath:
|
|
|
45
46
|
`
|
|
46
47
|
}
|
|
47
48
|
|
|
48
|
-
function escapeHtml(raw: string): string {
|
|
49
|
-
return raw.replace(/[&<>"']/g, (char) => HTML_ESCAPES[char] ?? char)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const HTML_ESCAPES: Readonly<Record<string, string>> = {
|
|
53
|
-
'&': '&', '<': '<', '>': '>', '"': '"', "'": ''',
|
|
54
|
-
}
|
|
55
|
-
|
|
56
49
|
const STYLE = `
|
|
57
50
|
:root{--bg:#fff;--fg:#1a1a1a;--muted:#666;--line:#e3e3e3;--code:#f6f6f7;--accent:#3060d0}
|
|
58
51
|
@media(prefers-color-scheme:dark){:root{--bg:#16171a;--fg:#e8e8ea;--muted:#9a9aa2;--line:#2c2d33;--code:#1e1f24;--accent:#7aa2f7}}
|