@kubb/ast 5.0.0-alpha.16 → 5.0.0-alpha.17
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 +1051 -696
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +229 -68
- package/dist/index.js +1038 -691
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/visitor-BFn3X90U.d.ts +1974 -0
- package/package.json +1 -1
- package/src/constants.ts +88 -4
- package/src/factory.ts +174 -37
- package/src/guards.ts +37 -10
- package/src/index.ts +6 -5
- package/src/infer.ts +130 -0
- package/src/mocks.ts +4 -3
- package/src/nodes/base.ts +21 -3
- package/src/nodes/function.ts +34 -22
- package/src/nodes/http.ts +17 -5
- package/src/nodes/index.ts +14 -4
- package/src/nodes/operation.ts +47 -9
- package/src/nodes/parameter.ts +27 -1
- package/src/nodes/property.ts +23 -1
- package/src/nodes/response.ts +23 -3
- package/src/nodes/root.ts +29 -8
- package/src/nodes/schema.ts +298 -36
- package/src/{functionPrinter.ts → printers/functionPrinter.ts} +20 -19
- package/src/printers/index.ts +3 -0
- package/src/{printer.ts → printers/printer.ts} +58 -42
- package/src/refs.ts +30 -6
- package/src/resolvers.ts +45 -0
- package/src/transformers.ts +196 -0
- package/src/types.ts +2 -1
- package/src/utils.ts +37 -8
- package/src/visitor.ts +204 -18
- package/dist/visitor-YMltBj6w.d.ts +0 -970
- package/src/transforms.ts +0 -114
package/src/transforms.ts
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { SCALAR_PRIMITIVE_TYPES } from './constants.ts'
|
|
2
|
-
import { createProperty, createSchema } from './factory.ts'
|
|
3
|
-
import { narrowSchema } from './guards.ts'
|
|
4
|
-
import type { SchemaNode } from './nodes/schema.ts'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Replaces the discriminator property's schema inside an object node with
|
|
8
|
-
* an enum of the provided values.
|
|
9
|
-
*/
|
|
10
|
-
export function applyDiscriminatorEnum({
|
|
11
|
-
node,
|
|
12
|
-
propertyName,
|
|
13
|
-
values,
|
|
14
|
-
enumName,
|
|
15
|
-
}: {
|
|
16
|
-
node: SchemaNode
|
|
17
|
-
propertyName: string
|
|
18
|
-
values: Array<string>
|
|
19
|
-
enumName?: string
|
|
20
|
-
}): SchemaNode {
|
|
21
|
-
const objectNode = narrowSchema(node, 'object')
|
|
22
|
-
if (!objectNode?.properties?.length) {
|
|
23
|
-
return node
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const hasProperty = objectNode.properties.some((prop) => prop.name === propertyName)
|
|
27
|
-
if (!hasProperty) {
|
|
28
|
-
return node
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return createSchema({
|
|
32
|
-
...objectNode,
|
|
33
|
-
properties: objectNode.properties.map((prop) => {
|
|
34
|
-
if (prop.name !== propertyName) {
|
|
35
|
-
return prop
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return createProperty({
|
|
39
|
-
...prop,
|
|
40
|
-
schema: createSchema({
|
|
41
|
-
type: 'enum',
|
|
42
|
-
primitive: 'string',
|
|
43
|
-
enumValues: values,
|
|
44
|
-
name: enumName,
|
|
45
|
-
readOnly: prop.schema.readOnly,
|
|
46
|
-
writeOnly: prop.schema.writeOnly,
|
|
47
|
-
}),
|
|
48
|
-
})
|
|
49
|
-
}),
|
|
50
|
-
})
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Merges adjacent anonymous object members into a single anonymous object.
|
|
55
|
-
*/
|
|
56
|
-
export function mergeAdjacentAnonymousObjects(members: Array<SchemaNode>): Array<SchemaNode> {
|
|
57
|
-
return members.reduce<Array<SchemaNode>>((acc, member) => {
|
|
58
|
-
const objectMember = narrowSchema(member, 'object')
|
|
59
|
-
if (objectMember && !objectMember.name) {
|
|
60
|
-
const previous = acc.at(-1)
|
|
61
|
-
const previousObject = previous ? narrowSchema(previous, 'object') : undefined
|
|
62
|
-
|
|
63
|
-
if (previousObject && !previousObject.name) {
|
|
64
|
-
acc[acc.length - 1] = createSchema({
|
|
65
|
-
...previousObject,
|
|
66
|
-
properties: [...(previousObject.properties ?? []), ...(objectMember.properties ?? [])],
|
|
67
|
-
})
|
|
68
|
-
return acc
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
acc.push(member)
|
|
73
|
-
return acc
|
|
74
|
-
}, [])
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Removes enum members subsumed by broader scalar members in the same union.
|
|
79
|
-
*/
|
|
80
|
-
export function simplifyUnionMembers(members: Array<SchemaNode>): Array<SchemaNode> {
|
|
81
|
-
const scalarPrimitives = new Set(
|
|
82
|
-
members.filter((member) => SCALAR_PRIMITIVE_TYPES.has(member.type as typeof SCALAR_PRIMITIVE_TYPES extends Set<infer T> ? T : never)).map((m) => m.type),
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
if (!scalarPrimitives.size) {
|
|
86
|
-
return members
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return members.filter((member) => {
|
|
90
|
-
const enumNode = narrowSchema(member, 'enum')
|
|
91
|
-
if (!enumNode) {
|
|
92
|
-
return true
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const primitive = enumNode.primitive
|
|
96
|
-
if (!primitive) {
|
|
97
|
-
return true
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (!enumNode.enumType) {
|
|
101
|
-
return true
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (scalarPrimitives.has(primitive)) {
|
|
105
|
-
return false
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if ((primitive === 'integer' || primitive === 'number') && (scalarPrimitives.has('integer') || scalarPrimitives.has('number'))) {
|
|
109
|
-
return false
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return true
|
|
113
|
-
})
|
|
114
|
-
}
|