@kubb/ast 5.2.1 → 5.2.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/dist/index.cjs +36 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +36 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -171,6 +171,11 @@ export declare function resolveSchemaProperties({ node, propertyName }: {
|
|
|
171
171
|
* ```
|
|
172
172
|
*/
|
|
173
173
|
export declare function getSchemaLiteralValues(node: SchemaNode): ReadonlyArray<string | number | boolean | null>;
|
|
174
|
+
/**
|
|
175
|
+
* Infers an implicit discriminator: a property every member exposes with a distinct single
|
|
176
|
+
* literal value, the same shape a declared OpenAPI `discriminator` already narrows on.
|
|
177
|
+
*/
|
|
178
|
+
export declare function inferDiscriminatorPropertyName(members: ReadonlyArray<SchemaNode>): string | undefined;
|
|
174
179
|
declare namespace factory_d_exports {
|
|
175
180
|
export { UserFileNode, createArrowFunction, createBreak, createConst, createContent, createExport, createFile, createFunction, createImport, createInput, createJsx, createOperation, createOutput, createParameter, createProperty, createRequestBody, createResponse, createSchema, createSource, createText, createType, update };
|
|
176
181
|
}
|
|
@@ -266,7 +271,7 @@ export declare const nodeDefs: (NodeDef<InputNode, Partial<Omit<InputNode, "kind
|
|
|
266
271
|
type: "ipv6";
|
|
267
272
|
}) | ScalarSchemaNode, "kind">> | NodeDef<PropertyNode, Pick<PropertyNode, "schema" | "name"> & Partial<Omit<PropertyNode, "schema" | "kind" | "name">>> | NodeDef<ParameterNode, Pick<ParameterNode, "schema" | "name" | "in"> & Partial<Omit<ParameterNode, "schema" | "kind" | "name" | "in">>> | NodeDef<ConstNode, Omit<ConstNode, "kind">> | NodeDef<TypeNode, Omit<TypeNode, "kind">> | NodeDef<FunctionNode, Omit<FunctionNode, "kind">> | NodeDef<ArrowFunctionNode, Omit<ArrowFunctionNode, "kind">> | NodeDef<TextNode, string> | NodeDef<BreakNode, void> | NodeDef<JsxNode, string> | NodeDef<ImportNode, Omit<ImportNode, "kind">> | NodeDef<ExportNode, Omit<ExportNode, "kind">> | NodeDef<SourceNode, Omit<SourceNode, "kind">> | NodeDef<FileNode<object>, Omit<FileNode<object>, "kind">>)[];
|
|
268
273
|
declare namespace exports_d_exports {
|
|
269
|
-
export { ArraySchemaNode, ArrowFunctionNode, BreakNode, CodeNode, ConstNode, ContentNode, DateOnlyTypeValue, DateSchemaNode, DateTimeTypeValue, DateTypeOptions, DatetimeSchemaNode, DistributiveOmit, Enforce, EnumSchemaNode, ExportNode, FileNode, FunctionNode, GenericOperationNode, HttpMethod, HttpOperationNode, ImportNode, InferSchemaNode, InputMeta, InputNode, IntersectionSchemaNode, JSDocNode, JsxNode, Macro, Node, NodeDef, NodeKind, NumberSchemaNode, ObjectSchemaNode, OperationNode, OutputNode, ParameterLocation, ParameterNode, ParameterStyle, ParentOf, ParserOptions, PrimitiveSchemaType, Printer, PrinterFactoryOptions, PrinterPartial, PropertyNode, RefSchemaNode, RequestBodyNode, ResponseNode, ScalarSchemaNode, ScalarSchemaType, SchemaNode, SchemaNodeByType, SchemaType, SourceNode, StatusCode, StringSchemaNode, TextNode, TimeSchemaNode, TypeNode, UnionSchemaNode, UrlSchemaNode, UserFileNode, Visitor, VisitorContext, applyMacros, arrowFunctionDef, breakDef, collect, collectImportedRefNames, collectSync, collectUsedSchemaNames, composeMacros, constDef, contentDef, createPrinter, defineMacro, defineNode, exportDef, extractStringsFromNodes, factory_d_exports as factory, fileDef, findCircularSchemas, findCircularSchemasFromGraph, functionDef, getSchemaLiteralValues, importDef, inputDef, isHttpOperationNode, jsxDef, narrowSchema, nodeDefs, operationDef, optionality, outputDef, parameterDef, propertyDef, requestBodyDef, resolveRefName, resolveSchemaProperties, responseDef, schemaDef, schemaTypes, sourceDef, textDef, transform, typeDef };
|
|
274
|
+
export { ArraySchemaNode, ArrowFunctionNode, BreakNode, CodeNode, ConstNode, ContentNode, DateOnlyTypeValue, DateSchemaNode, DateTimeTypeValue, DateTypeOptions, DatetimeSchemaNode, DistributiveOmit, Enforce, EnumSchemaNode, ExportNode, FileNode, FunctionNode, GenericOperationNode, HttpMethod, HttpOperationNode, ImportNode, InferSchemaNode, InputMeta, InputNode, IntersectionSchemaNode, JSDocNode, JsxNode, Macro, Node, NodeDef, NodeKind, NumberSchemaNode, ObjectSchemaNode, OperationNode, OutputNode, ParameterLocation, ParameterNode, ParameterStyle, ParentOf, ParserOptions, PrimitiveSchemaType, Printer, PrinterFactoryOptions, PrinterPartial, PropertyNode, RefSchemaNode, RequestBodyNode, ResponseNode, ScalarSchemaNode, ScalarSchemaType, SchemaNode, SchemaNodeByType, SchemaType, SourceNode, StatusCode, StringSchemaNode, TextNode, TimeSchemaNode, TypeNode, UnionSchemaNode, UrlSchemaNode, UserFileNode, Visitor, VisitorContext, applyMacros, arrowFunctionDef, breakDef, collect, collectImportedRefNames, collectSync, collectUsedSchemaNames, composeMacros, constDef, contentDef, createPrinter, defineMacro, defineNode, exportDef, extractStringsFromNodes, factory_d_exports as factory, fileDef, findCircularSchemas, findCircularSchemasFromGraph, functionDef, getSchemaLiteralValues, importDef, inferDiscriminatorPropertyName, inputDef, isHttpOperationNode, jsxDef, narrowSchema, nodeDefs, operationDef, optionality, outputDef, parameterDef, propertyDef, requestBodyDef, resolveRefName, resolveSchemaProperties, responseDef, schemaDef, schemaTypes, sourceDef, textDef, transform, typeDef };
|
|
270
275
|
}
|
|
271
276
|
//#endregion
|
|
272
277
|
export { type ArraySchemaNode, type ArrowFunctionNode, type BreakNode, type CodeNode, type ConstNode, type ContentNode, type DateOnlyTypeValue, type DateSchemaNode, type DateTimeTypeValue, type DateTypeOptions, type DatetimeSchemaNode, type DistributiveOmit, type Enforce, type EnumSchemaNode, type ExportNode, type FileNode, type FunctionNode, type GenericOperationNode, type HttpMethod, type HttpOperationNode, type ImportNode, type InferSchemaNode, type InputMeta, type InputNode, type IntersectionSchemaNode, type JSDocNode, type JsxNode, type Macro, type Node, type NodeDef, type NodeKind, type NumberSchemaNode, type ObjectSchemaNode, type OperationNode, type OutputNode, type ParameterLocation, type ParameterNode, type ParameterStyle, type ParentOf, type ParserOptions, type PrimitiveSchemaType, type Printer, type PrinterFactoryOptions, type PrinterPartial, type PropertyNode, type RefSchemaNode, type RequestBodyNode, type ResponseNode, type ScalarSchemaNode, type ScalarSchemaType, type SchemaNode, type SchemaNodeByType, type SchemaType, type SourceNode, type StatusCode, type StringSchemaNode, type TextNode, type TimeSchemaNode, type TypeNode, type UnionSchemaNode, type UrlSchemaNode, type UserFileNode, type Visitor, type VisitorContext, applyMacros, arrowFunctionDef, exports_d_exports as ast, breakDef, collect, collectSync, composeMacros, constDef, contentDef, createPrinter, defineMacro, defineNode, exportDef, factory_d_exports as factory, fileDef, functionDef, importDef, inputDef, jsxDef, operationDef, outputDef, parameterDef, propertyDef, requestBodyDef, responseDef, schemaDef, schemaTypes, sourceDef, textDef, transform, typeDef };
|
package/dist/index.js
CHANGED
|
@@ -1586,6 +1586,40 @@ function getSchemaLiteralValues(node) {
|
|
|
1586
1586
|
visit(node);
|
|
1587
1587
|
return [...values];
|
|
1588
1588
|
}
|
|
1589
|
+
function collectPropertyNames(node, visited = /* @__PURE__ */ new WeakSet()) {
|
|
1590
|
+
if (visited.has(node)) return /* @__PURE__ */ new Set();
|
|
1591
|
+
visited.add(node);
|
|
1592
|
+
if (node.type === "object") return new Set(node.properties.map((property) => property.name));
|
|
1593
|
+
if (node.type === "ref") return node.schema ? collectPropertyNames(node.schema, visited) : /* @__PURE__ */ new Set();
|
|
1594
|
+
if (node.type === "intersection") {
|
|
1595
|
+
const names = /* @__PURE__ */ new Set();
|
|
1596
|
+
for (const member of node.members ?? []) for (const name of collectPropertyNames(member, visited)) names.add(name);
|
|
1597
|
+
return names;
|
|
1598
|
+
}
|
|
1599
|
+
return /* @__PURE__ */ new Set();
|
|
1600
|
+
}
|
|
1601
|
+
/**
|
|
1602
|
+
* Infers an implicit discriminator: a property every member exposes with a distinct single
|
|
1603
|
+
* literal value, the same shape a declared OpenAPI `discriminator` already narrows on.
|
|
1604
|
+
*/
|
|
1605
|
+
function inferDiscriminatorPropertyName(members) {
|
|
1606
|
+
if (members.length < 2) return void 0;
|
|
1607
|
+
let candidates;
|
|
1608
|
+
for (const member of members) {
|
|
1609
|
+
const names = collectPropertyNames(member);
|
|
1610
|
+
candidates = candidates ? new Set([...candidates].filter((name) => names.has(name))) : names;
|
|
1611
|
+
}
|
|
1612
|
+
for (const name of candidates ?? []) {
|
|
1613
|
+
const values = members.map((member) => {
|
|
1614
|
+
const literals = new Set(resolveSchemaProperties({
|
|
1615
|
+
node: member,
|
|
1616
|
+
propertyName: name
|
|
1617
|
+
}).flatMap((property) => getSchemaLiteralValues(property.schema)));
|
|
1618
|
+
return literals.size === 1 ? [...literals][0] : void 0;
|
|
1619
|
+
});
|
|
1620
|
+
if (values.every((value) => value !== void 0) && new Set(values).size === members.length) return name;
|
|
1621
|
+
}
|
|
1622
|
+
}
|
|
1589
1623
|
//#endregion
|
|
1590
1624
|
//#region src/factory.ts
|
|
1591
1625
|
var factory_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -1659,6 +1693,7 @@ var exports_exports = /* @__PURE__ */ __exportAll({
|
|
|
1659
1693
|
functionDef: () => functionDef,
|
|
1660
1694
|
getSchemaLiteralValues: () => getSchemaLiteralValues,
|
|
1661
1695
|
importDef: () => importDef,
|
|
1696
|
+
inferDiscriminatorPropertyName: () => inferDiscriminatorPropertyName,
|
|
1662
1697
|
inputDef: () => inputDef,
|
|
1663
1698
|
isHttpOperationNode: () => isHttpOperationNode,
|
|
1664
1699
|
jsxDef: () => jsxDef,
|
|
@@ -1681,6 +1716,6 @@ var exports_exports = /* @__PURE__ */ __exportAll({
|
|
|
1681
1716
|
typeDef: () => typeDef
|
|
1682
1717
|
});
|
|
1683
1718
|
//#endregion
|
|
1684
|
-
export { applyMacros, arrowFunctionDef, exports_exports as ast, breakDef, collect, collectImportedRefNames, collectSync, collectUsedSchemaNames, composeMacros, constDef, contentDef, createPrinter, defineMacro, defineNode, exportDef, extractStringsFromNodes, factory_exports as factory, fileDef, findCircularSchemas, findCircularSchemasFromGraph, functionDef, getSchemaLiteralValues, importDef, inputDef, isHttpOperationNode, jsxDef, narrowSchema, nodeDefs, operationDef, optionality, outputDef, parameterDef, propertyDef, requestBodyDef, resolveRefName, resolveSchemaProperties, responseDef, schemaDef, schemaTypes, sourceDef, textDef, transform, typeDef };
|
|
1719
|
+
export { applyMacros, arrowFunctionDef, exports_exports as ast, breakDef, collect, collectImportedRefNames, collectSync, collectUsedSchemaNames, composeMacros, constDef, contentDef, createPrinter, defineMacro, defineNode, exportDef, extractStringsFromNodes, factory_exports as factory, fileDef, findCircularSchemas, findCircularSchemasFromGraph, functionDef, getSchemaLiteralValues, importDef, inferDiscriminatorPropertyName, inputDef, isHttpOperationNode, jsxDef, narrowSchema, nodeDefs, operationDef, optionality, outputDef, parameterDef, propertyDef, requestBodyDef, resolveRefName, resolveSchemaProperties, responseDef, schemaDef, schemaTypes, sourceDef, textDef, transform, typeDef };
|
|
1685
1720
|
|
|
1686
1721
|
//# sourceMappingURL=index.js.map
|