@gqlkit-ts/cli 0.6.0 → 0.7.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/auto-type-generator/auto-type-generator.d.ts +7 -0
- package/dist/auto-type-generator/auto-type-generator.d.ts.map +1 -1
- package/dist/auto-type-generator/auto-type-generator.js +375 -55
- package/dist/auto-type-generator/auto-type-generator.js.map +1 -1
- package/dist/auto-type-generator/discriminator-field-validator.d.ts +26 -0
- package/dist/auto-type-generator/discriminator-field-validator.d.ts.map +1 -0
- package/dist/auto-type-generator/discriminator-field-validator.js +242 -0
- package/dist/auto-type-generator/discriminator-field-validator.js.map +1 -0
- package/dist/auto-type-generator/discriminator-naming.d.ts +11 -0
- package/dist/auto-type-generator/discriminator-naming.d.ts.map +1 -0
- package/dist/auto-type-generator/discriminator-naming.js +15 -0
- package/dist/auto-type-generator/discriminator-naming.js.map +1 -0
- package/dist/auto-type-generator/discriminator-resolve-type-generator.d.ts +44 -0
- package/dist/auto-type-generator/discriminator-resolve-type-generator.d.ts.map +1 -0
- package/dist/auto-type-generator/discriminator-resolve-type-generator.js +77 -0
- package/dist/auto-type-generator/discriminator-resolve-type-generator.js.map +1 -0
- package/dist/auto-type-generator/index.d.ts +3 -0
- package/dist/auto-type-generator/index.d.ts.map +1 -1
- package/dist/auto-type-generator/index.js +3 -0
- package/dist/auto-type-generator/index.js.map +1 -1
- package/dist/auto-type-generator/inline-enum-collector.d.ts.map +1 -1
- package/dist/auto-type-generator/inline-enum-collector.js +14 -7
- package/dist/auto-type-generator/inline-enum-collector.js.map +1 -1
- package/dist/auto-type-generator/inline-object-converter.d.ts +12 -0
- package/dist/auto-type-generator/inline-object-converter.d.ts.map +1 -0
- package/dist/auto-type-generator/inline-object-converter.js +72 -0
- package/dist/auto-type-generator/inline-object-converter.js.map +1 -0
- package/dist/auto-type-generator/inline-object-traverser.d.ts +2 -1
- package/dist/auto-type-generator/inline-object-traverser.d.ts.map +1 -1
- package/dist/auto-type-generator/inline-object-traverser.js +22 -4
- package/dist/auto-type-generator/inline-object-traverser.js.map +1 -1
- package/dist/auto-type-generator/inline-union-collector.d.ts.map +1 -1
- package/dist/auto-type-generator/inline-union-collector.js +20 -6
- package/dist/auto-type-generator/inline-union-collector.js.map +1 -1
- package/dist/auto-type-generator/inline-union-types.d.ts +2 -0
- package/dist/auto-type-generator/inline-union-types.d.ts.map +1 -1
- package/dist/auto-type-generator/inline-union-validator.js +3 -3
- package/dist/auto-type-generator/inline-union-validator.js.map +1 -1
- package/dist/auto-type-generator/intersection-flattener.d.ts +44 -0
- package/dist/auto-type-generator/intersection-flattener.d.ts.map +1 -0
- package/dist/auto-type-generator/intersection-flattener.js +398 -0
- package/dist/auto-type-generator/intersection-flattener.js.map +1 -0
- package/dist/auto-type-generator/naming-convention.d.ts +21 -0
- package/dist/auto-type-generator/naming-convention.d.ts.map +1 -1
- package/dist/auto-type-generator/naming-convention.js +145 -1
- package/dist/auto-type-generator/naming-convention.js.map +1 -1
- package/dist/auto-type-generator/typename-extractor.d.ts +2 -0
- package/dist/auto-type-generator/typename-extractor.d.ts.map +1 -1
- package/dist/auto-type-generator/typename-extractor.js +11 -3
- package/dist/auto-type-generator/typename-extractor.js.map +1 -1
- package/dist/auto-type-generator/typename-resolve-type-generator.d.ts +2 -0
- package/dist/auto-type-generator/typename-resolve-type-generator.d.ts.map +1 -1
- package/dist/auto-type-generator/typename-resolve-type-generator.js +12 -84
- package/dist/auto-type-generator/typename-resolve-type-generator.js.map +1 -1
- package/dist/auto-type-generator/typename-types.d.ts +4 -0
- package/dist/auto-type-generator/typename-types.d.ts.map +1 -1
- package/dist/auto-type-generator/typename-types.js +6 -0
- package/dist/auto-type-generator/typename-types.js.map +1 -1
- package/dist/auto-type-generator/typename-validator.d.ts.map +1 -1
- package/dist/auto-type-generator/typename-validator.js +4 -3
- package/dist/auto-type-generator/typename-validator.js.map +1 -1
- package/dist/commands/gen.d.ts.map +1 -1
- package/dist/commands/gen.js +2 -1
- package/dist/commands/gen.js.map +1 -1
- package/dist/config/types.d.ts +7 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config-loader/index.d.ts +1 -1
- package/dist/config-loader/index.d.ts.map +1 -1
- package/dist/config-loader/index.js.map +1 -1
- package/dist/config-loader/loader.d.ts +6 -0
- package/dist/config-loader/loader.d.ts.map +1 -1
- package/dist/config-loader/loader.js +1 -0
- package/dist/config-loader/loader.js.map +1 -1
- package/dist/config-loader/validator.d.ts.map +1 -1
- package/dist/config-loader/validator.js +84 -1
- package/dist/config-loader/validator.js.map +1 -1
- package/dist/gen-orchestrator/orchestrator.d.ts +2 -1
- package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/gen-orchestrator/orchestrator.js +15 -2
- package/dist/gen-orchestrator/orchestrator.js.map +1 -1
- package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -1
- package/dist/resolver-extractor/extractor/define-api-extractor.js +4 -0
- package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -1
- package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts +2 -0
- package/dist/resolver-extractor/validator/abstract-resolver-validator.d.ts.map +1 -1
- package/dist/resolver-extractor/validator/abstract-resolver-validator.js +16 -3
- package/dist/resolver-extractor/validator/abstract-resolver-validator.js.map +1 -1
- package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -1
- package/dist/schema-generator/emitter/code-emitter.js +13 -1
- package/dist/schema-generator/emitter/code-emitter.js.map +1 -1
- package/dist/schema-generator/emitter/discriminator-resolve-type-emitter.d.ts +18 -0
- package/dist/schema-generator/emitter/discriminator-resolve-type-emitter.d.ts.map +1 -0
- package/dist/schema-generator/emitter/discriminator-resolve-type-emitter.js +89 -0
- package/dist/schema-generator/emitter/discriminator-resolve-type-emitter.js.map +1 -0
- package/dist/schema-generator/generate-schema.d.ts +2 -0
- package/dist/schema-generator/generate-schema.d.ts.map +1 -1
- package/dist/schema-generator/generate-schema.js +69 -10
- package/dist/schema-generator/generate-schema.js.map +1 -1
- package/dist/schema-generator/integrator/result-integrator.d.ts +4 -0
- package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -1
- package/dist/schema-generator/integrator/result-integrator.js +18 -2
- package/dist/schema-generator/integrator/result-integrator.js.map +1 -1
- package/dist/schema-generator/resolver-collector/resolver-collector.d.ts +2 -0
- package/dist/schema-generator/resolver-collector/resolver-collector.d.ts.map +1 -1
- package/dist/schema-generator/resolver-collector/resolver-collector.js +4 -0
- package/dist/schema-generator/resolver-collector/resolver-collector.js.map +1 -1
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +14 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/enum-prefix-detector.d.ts.map +1 -1
- package/dist/shared/enum-prefix-detector.js +78 -8
- package/dist/shared/enum-prefix-detector.js.map +1 -1
- package/dist/shared/inline-object-utils.js +1 -1
- package/dist/shared/inline-object-utils.js.map +1 -1
- package/dist/shared/type-converter.d.ts.map +1 -1
- package/dist/shared/type-converter.js +55 -0
- package/dist/shared/type-converter.js.map +1 -1
- package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -1
- package/dist/type-extractor/converter/graphql-converter.js +11 -1
- package/dist/type-extractor/converter/graphql-converter.js.map +1 -1
- package/dist/type-extractor/extractor/field-type-resolver.d.ts +18 -0
- package/dist/type-extractor/extractor/field-type-resolver.d.ts.map +1 -1
- package/dist/type-extractor/extractor/field-type-resolver.js +198 -15
- package/dist/type-extractor/extractor/field-type-resolver.js.map +1 -1
- package/dist/type-extractor/extractor/type-extractor.d.ts +1 -0
- package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -1
- package/dist/type-extractor/extractor/type-extractor.js +100 -9
- package/dist/type-extractor/extractor/type-extractor.js.map +1 -1
- package/dist/type-extractor/types/diagnostics.d.ts +1 -1
- package/dist/type-extractor/types/diagnostics.d.ts.map +1 -1
- package/dist/type-extractor/types/index.d.ts +1 -1
- package/dist/type-extractor/types/index.d.ts.map +1 -1
- package/dist/type-extractor/types/index.js +1 -1
- package/dist/type-extractor/types/index.js.map +1 -1
- package/dist/type-extractor/types/ts-type-reference-factory.d.ts +7 -1
- package/dist/type-extractor/types/ts-type-reference-factory.d.ts.map +1 -1
- package/dist/type-extractor/types/ts-type-reference-factory.js +18 -3
- package/dist/type-extractor/types/ts-type-reference-factory.js.map +1 -1
- package/dist/type-extractor/types/typescript.d.ts +3 -1
- package/dist/type-extractor/types/typescript.d.ts.map +1 -1
- package/dist/type-extractor/validator/type-validator.d.ts.map +1 -1
- package/dist/type-extractor/validator/type-validator.js +6 -1
- package/dist/type-extractor/validator/type-validator.js.map +1 -1
- package/docs/configuration.md +19 -0
- package/docs/index.md +1 -0
- package/docs/integration/ai-sdk.md +189 -0
- package/docs/schema/unions.md +117 -0
- package/package.json +2 -2
- package/src/auto-type-generator/auto-type-generator.ts +576 -58
- package/src/auto-type-generator/discriminator-field-validator.ts +368 -0
- package/src/auto-type-generator/discriminator-naming.ts +24 -0
- package/src/auto-type-generator/discriminator-resolve-type-generator.ts +136 -0
- package/src/auto-type-generator/index.ts +17 -0
- package/src/auto-type-generator/inline-enum-collector.ts +19 -4
- package/src/auto-type-generator/inline-object-converter.ts +100 -0
- package/src/auto-type-generator/inline-object-traverser.ts +33 -7
- package/src/auto-type-generator/inline-union-collector.ts +26 -4
- package/src/auto-type-generator/inline-union-types.ts +2 -0
- package/src/auto-type-generator/inline-union-validator.ts +3 -3
- package/src/auto-type-generator/intersection-flattener.ts +554 -0
- package/src/auto-type-generator/naming-convention.ts +205 -1
- package/src/auto-type-generator/typename-extractor.ts +17 -3
- package/src/auto-type-generator/typename-resolve-type-generator.ts +19 -108
- package/src/auto-type-generator/typename-types.ts +7 -0
- package/src/auto-type-generator/typename-validator.ts +4 -3
- package/src/commands/gen.ts +9 -2
- package/src/config/types.ts +10 -0
- package/src/config-loader/index.ts +1 -0
- package/src/config-loader/loader.ts +11 -0
- package/src/config-loader/validator.ts +100 -1
- package/src/gen-orchestrator/orchestrator.ts +19 -2
- package/src/resolver-extractor/extractor/define-api-extractor.ts +4 -0
- package/src/resolver-extractor/validator/abstract-resolver-validator.ts +20 -6
- package/src/schema-generator/emitter/code-emitter.ts +26 -1
- package/src/schema-generator/emitter/discriminator-resolve-type-emitter.ts +125 -0
- package/src/schema-generator/generate-schema.ts +100 -13
- package/src/schema-generator/integrator/result-integrator.ts +25 -1
- package/src/schema-generator/resolver-collector/resolver-collector.ts +7 -0
- package/src/shared/constants.ts +15 -1
- package/src/shared/enum-prefix-detector.ts +96 -8
- package/src/shared/inline-object-utils.ts +1 -1
- package/src/shared/type-converter.ts +63 -0
- package/src/type-extractor/converter/graphql-converter.ts +17 -1
- package/src/type-extractor/extractor/field-type-resolver.ts +241 -16
- package/src/type-extractor/extractor/type-extractor.ts +119 -5
- package/src/type-extractor/types/diagnostics.ts +10 -1
- package/src/type-extractor/types/index.ts +2 -1
- package/src/type-extractor/types/ts-type-reference-factory.ts +24 -3
- package/src/type-extractor/types/typescript.ts +6 -2
- package/src/type-extractor/validator/type-validator.ts +6 -1
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import { createInlineObjectType, createPrimitiveType, } from "../type-extractor/types/ts-type-reference-factory.js";
|
|
2
|
+
import { generateDiscriminatorMemberName } from "./discriminator-naming.js";
|
|
3
|
+
import { generateAutoTypeName } from "./naming-convention.js";
|
|
4
|
+
/**
|
|
5
|
+
* Checks whether a type reference represents an absent/impossible value.
|
|
6
|
+
* This includes explicit `never` types and `undefined` references
|
|
7
|
+
* (from `field?: never` where TypeScript resolves to undefined).
|
|
8
|
+
*/
|
|
9
|
+
function isAbsentType(tsType) {
|
|
10
|
+
if (tsType.kind === "never") {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
if (tsType.kind === "reference" && tsType.name === "undefined") {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Extracts a string literal value from a discriminator field property.
|
|
20
|
+
* Returns null if the property is not a string literal.
|
|
21
|
+
*/
|
|
22
|
+
function getDiscriminatorValue(member, fieldName) {
|
|
23
|
+
for (const prop of member.properties) {
|
|
24
|
+
if (prop.propertyName === fieldName) {
|
|
25
|
+
if (prop.propertyType.kind === "stringLiteral" &&
|
|
26
|
+
prop.propertyType.name !== null) {
|
|
27
|
+
return prop.propertyType.name;
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Checks whether two TSTypeReference values represent the same type
|
|
36
|
+
* (ignoring nullability).
|
|
37
|
+
*/
|
|
38
|
+
function isSameTypeIgnoringNullability(a, b) {
|
|
39
|
+
if (a.kind !== b.kind) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
if (a.name !== b.name) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
if (a.kind === "array" && b.kind === "array") {
|
|
46
|
+
if (a.elementType === null || b.elementType === null) {
|
|
47
|
+
return a.elementType === b.elementType;
|
|
48
|
+
}
|
|
49
|
+
return isSameTypeIgnoringNullability(a.elementType, b.elementType);
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Merges properties from a group of inline object members that share the same
|
|
55
|
+
* discriminator value. Handles partial presence, type widening, and never types.
|
|
56
|
+
*/
|
|
57
|
+
function mergeGroupProperties(group, discriminatorFieldNames) {
|
|
58
|
+
const discriminatorFieldSet = new Set(discriminatorFieldNames);
|
|
59
|
+
// Collect all property names across the group
|
|
60
|
+
const allPropertyNames = new Set();
|
|
61
|
+
for (const member of group) {
|
|
62
|
+
for (const prop of member.properties) {
|
|
63
|
+
allPropertyNames.add(prop.propertyName);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const mergedProperties = [];
|
|
67
|
+
for (const propName of allPropertyNames) {
|
|
68
|
+
// Collect contributions from each member
|
|
69
|
+
const contributions = [];
|
|
70
|
+
for (const member of group) {
|
|
71
|
+
const prop = member.properties.find((p) => p.propertyName === propName);
|
|
72
|
+
if (prop !== undefined) {
|
|
73
|
+
contributions.push({
|
|
74
|
+
property: prop,
|
|
75
|
+
isNever: isAbsentType(prop.propertyType),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Skip properties that are never in ALL members
|
|
80
|
+
const nonNeverContributions = contributions.filter((c) => !c.isNever);
|
|
81
|
+
if (nonNeverContributions.length === 0) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const presentInAllMembers = nonNeverContributions.length === group.length;
|
|
85
|
+
const firstContribution = nonNeverContributions[0];
|
|
86
|
+
// Check if all non-never contributions have the same type
|
|
87
|
+
let allSameType = true;
|
|
88
|
+
for (let i = 1; i < nonNeverContributions.length; i++) {
|
|
89
|
+
if (!isSameTypeIgnoringNullability(firstContribution.property.propertyType, nonNeverContributions[i].property.propertyType)) {
|
|
90
|
+
allSameType = false;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Discriminator fields: keep original string literal value (all members in a group
|
|
95
|
+
// share the same discriminator value since that's the grouping key)
|
|
96
|
+
if (discriminatorFieldSet.has(propName)) {
|
|
97
|
+
mergedProperties.push({
|
|
98
|
+
propertyName: propName,
|
|
99
|
+
propertyType: firstContribution.property.propertyType,
|
|
100
|
+
description: firstContribution.property.description,
|
|
101
|
+
deprecated: firstContribution.property.deprecated,
|
|
102
|
+
});
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (allSameType) {
|
|
106
|
+
// Same type across all contributing members
|
|
107
|
+
const anyNullable = nonNeverContributions.some((c) => c.property.propertyType.nullable);
|
|
108
|
+
const needsNullable = !presentInAllMembers || anyNullable;
|
|
109
|
+
const baseType = firstContribution.property.propertyType;
|
|
110
|
+
mergedProperties.push({
|
|
111
|
+
propertyName: propName,
|
|
112
|
+
propertyType: needsNullable && !baseType.nullable
|
|
113
|
+
? { ...baseType, nullable: true }
|
|
114
|
+
: baseType,
|
|
115
|
+
description: firstContribution.property.description,
|
|
116
|
+
deprecated: firstContribution.property.deprecated,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// Different types → widen to String
|
|
121
|
+
const needsNullable = !presentInAllMembers;
|
|
122
|
+
mergedProperties.push({
|
|
123
|
+
propertyName: propName,
|
|
124
|
+
propertyType: createPrimitiveType({
|
|
125
|
+
name: "string",
|
|
126
|
+
nullable: needsNullable,
|
|
127
|
+
}),
|
|
128
|
+
description: null,
|
|
129
|
+
deprecated: null,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return mergedProperties;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Flattens inline object members of union types that have discriminator field config.
|
|
137
|
+
* Groups members by their discriminator value tuples and merges properties within each group.
|
|
138
|
+
*
|
|
139
|
+
* This resolves the issue where TypeScript distributes intersections over unions,
|
|
140
|
+
* creating many anonymous inline objects that would cause DISCRIMINATOR_DUPLICATE_VALUE_TUPLE
|
|
141
|
+
* errors.
|
|
142
|
+
*/
|
|
143
|
+
export function flattenIntersectionMembers(params) {
|
|
144
|
+
const { extractedTypes, discriminatorFields } = params;
|
|
145
|
+
if (discriminatorFields.size === 0) {
|
|
146
|
+
return extractedTypes;
|
|
147
|
+
}
|
|
148
|
+
return extractedTypes.map((typeInfo) => {
|
|
149
|
+
if (typeInfo.metadata.kind !== "union") {
|
|
150
|
+
return typeInfo;
|
|
151
|
+
}
|
|
152
|
+
const fieldNames = discriminatorFields.get(typeInfo.metadata.name);
|
|
153
|
+
if (fieldNames === undefined) {
|
|
154
|
+
return typeInfo;
|
|
155
|
+
}
|
|
156
|
+
const inlineObjectMembers = typeInfo.inlineObjectMembers;
|
|
157
|
+
if (inlineObjectMembers === null || inlineObjectMembers.length === 0) {
|
|
158
|
+
return typeInfo;
|
|
159
|
+
}
|
|
160
|
+
const primaryFieldName = fieldNames[0];
|
|
161
|
+
if (primaryFieldName === undefined) {
|
|
162
|
+
return typeInfo;
|
|
163
|
+
}
|
|
164
|
+
// Group members by discriminator value tuple
|
|
165
|
+
const groups = new Map();
|
|
166
|
+
for (const member of inlineObjectMembers) {
|
|
167
|
+
const primaryValue = getDiscriminatorValue(member, primaryFieldName);
|
|
168
|
+
if (primaryValue === null) {
|
|
169
|
+
// Cannot group this member; leave as-is
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
const secondaryValues = fieldNames
|
|
173
|
+
.slice(1)
|
|
174
|
+
.map((fn) => getDiscriminatorValue(member, fn));
|
|
175
|
+
const tupleKey = JSON.stringify([primaryValue, ...secondaryValues]);
|
|
176
|
+
let group = groups.get(tupleKey);
|
|
177
|
+
if (group === undefined) {
|
|
178
|
+
group = [];
|
|
179
|
+
groups.set(tupleKey, group);
|
|
180
|
+
}
|
|
181
|
+
group.push(member);
|
|
182
|
+
}
|
|
183
|
+
// If no groups were formed, no flattening needed
|
|
184
|
+
if (groups.size === 0) {
|
|
185
|
+
return typeInfo;
|
|
186
|
+
}
|
|
187
|
+
// Check if flattening is actually needed (i.e., any group has more than 1 member)
|
|
188
|
+
const needsFlattening = Array.from(groups.values()).some((g) => g.length > 1);
|
|
189
|
+
if (!needsFlattening) {
|
|
190
|
+
return typeInfo;
|
|
191
|
+
}
|
|
192
|
+
// Flatten each group into a single member
|
|
193
|
+
const flattenedMembers = [];
|
|
194
|
+
for (const group of groups.values()) {
|
|
195
|
+
const mergedProperties = mergeGroupProperties(group, [...fieldNames]);
|
|
196
|
+
flattenedMembers.push({ properties: mergedProperties });
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
...typeInfo,
|
|
200
|
+
inlineObjectMembers: flattenedMembers,
|
|
201
|
+
};
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
// --- Inline union member flattening ---
|
|
205
|
+
/**
|
|
206
|
+
* Extracts a string literal discriminator value from an InlineObjectPropertyDef.
|
|
207
|
+
*/
|
|
208
|
+
function getDiscriminatorValueFromPropertyDef(properties, fieldName) {
|
|
209
|
+
for (const prop of properties) {
|
|
210
|
+
if (prop.name === fieldName) {
|
|
211
|
+
if (prop.tsType.kind === "stringLiteral" && prop.tsType.name !== null) {
|
|
212
|
+
return prop.tsType.name;
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Merges InlineObjectPropertyDef arrays from a group of inline object members.
|
|
221
|
+
*/
|
|
222
|
+
function mergeGroupPropertyDefs(groups, discriminatorFieldNames) {
|
|
223
|
+
const discriminatorFieldSet = new Set(discriminatorFieldNames);
|
|
224
|
+
const allPropertyNames = new Set();
|
|
225
|
+
for (const properties of groups) {
|
|
226
|
+
for (const prop of properties) {
|
|
227
|
+
allPropertyNames.add(prop.name);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
const merged = [];
|
|
231
|
+
for (const propName of allPropertyNames) {
|
|
232
|
+
const contributions = [];
|
|
233
|
+
for (const properties of groups) {
|
|
234
|
+
const prop = properties.find((p) => p.name === propName);
|
|
235
|
+
if (prop !== undefined) {
|
|
236
|
+
contributions.push({
|
|
237
|
+
property: prop,
|
|
238
|
+
isNever: isAbsentType(prop.tsType),
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
const nonNeverContributions = contributions.filter((c) => !c.isNever);
|
|
243
|
+
if (nonNeverContributions.length === 0) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
const presentInAllMembers = nonNeverContributions.length === groups.length;
|
|
247
|
+
const firstContribution = nonNeverContributions[0];
|
|
248
|
+
let allSameType = true;
|
|
249
|
+
for (let i = 1; i < nonNeverContributions.length; i++) {
|
|
250
|
+
if (!isSameTypeIgnoringNullability(firstContribution.property.tsType, nonNeverContributions[i].property.tsType)) {
|
|
251
|
+
allSameType = false;
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Discriminator fields: keep original value
|
|
256
|
+
if (discriminatorFieldSet.has(propName)) {
|
|
257
|
+
merged.push(firstContribution.property);
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
if (allSameType) {
|
|
261
|
+
const anyNullable = nonNeverContributions.some((c) => c.property.tsType.nullable);
|
|
262
|
+
const anyOptional = nonNeverContributions.some((c) => c.property.optional);
|
|
263
|
+
const needsNullable = !presentInAllMembers || anyNullable || anyOptional;
|
|
264
|
+
const baseType = firstContribution.property.tsType;
|
|
265
|
+
merged.push({
|
|
266
|
+
...firstContribution.property,
|
|
267
|
+
optional: !presentInAllMembers || anyOptional,
|
|
268
|
+
tsType: needsNullable && !baseType.nullable
|
|
269
|
+
? { ...baseType, nullable: true }
|
|
270
|
+
: baseType,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
// Different types → widen to String
|
|
275
|
+
const needsNullable = !presentInAllMembers;
|
|
276
|
+
merged.push({
|
|
277
|
+
...firstContribution.property,
|
|
278
|
+
optional: !presentInAllMembers,
|
|
279
|
+
tsType: createPrimitiveType({
|
|
280
|
+
name: "string",
|
|
281
|
+
nullable: needsNullable,
|
|
282
|
+
}),
|
|
283
|
+
description: null,
|
|
284
|
+
deprecated: null,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return merged;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Pre-processes inline unions that match discriminatorFields config.
|
|
292
|
+
* Groups inline object members by discriminator value and merges them,
|
|
293
|
+
* producing flattened members with inlineObjectHintName set for naming.
|
|
294
|
+
* Also returns discriminator resolveType info for generating __resolveType functions.
|
|
295
|
+
*
|
|
296
|
+
* This handles the case where TypeScript distributes intersections over unions
|
|
297
|
+
* within field types (e.g., `parts: UIMessagePart<...>[]`), creating many
|
|
298
|
+
* anonymous inline objects that would otherwise cause UNNAMEABLE_UNION_MEMBER errors.
|
|
299
|
+
*/
|
|
300
|
+
export function flattenInlineUnionMembers(params) {
|
|
301
|
+
const { inlineUnions, discriminatorFields } = params;
|
|
302
|
+
if (discriminatorFields.size === 0) {
|
|
303
|
+
return { inlineUnions, inlineDiscriminatorResolveTypes: [] };
|
|
304
|
+
}
|
|
305
|
+
const inlineDiscriminatorResolveTypes = [];
|
|
306
|
+
const resultUnions = [];
|
|
307
|
+
for (const inlineUnion of inlineUnions) {
|
|
308
|
+
const unionTypeName = generateAutoTypeName(inlineUnion.context);
|
|
309
|
+
const fieldNames = discriminatorFields.get(unionTypeName);
|
|
310
|
+
if (fieldNames === undefined) {
|
|
311
|
+
resultUnions.push(inlineUnion);
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
const primaryFieldName = fieldNames[0];
|
|
315
|
+
if (primaryFieldName === undefined) {
|
|
316
|
+
resultUnions.push(inlineUnion);
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
// Only process inline object members
|
|
320
|
+
const inlineObjectMembers = [];
|
|
321
|
+
const nonInlineMembers = [];
|
|
322
|
+
for (const member of inlineUnion.members) {
|
|
323
|
+
if (member.memberType.kind === "inlineObject" &&
|
|
324
|
+
member.memberType.inlineObjectProperties) {
|
|
325
|
+
inlineObjectMembers.push({
|
|
326
|
+
member,
|
|
327
|
+
properties: member.memberType.inlineObjectProperties,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
nonInlineMembers.push(member);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (inlineObjectMembers.length === 0) {
|
|
335
|
+
resultUnions.push(inlineUnion);
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
// Group by discriminator value tuple
|
|
339
|
+
const groups = new Map();
|
|
340
|
+
const groupValues = new Map();
|
|
341
|
+
for (const { properties } of inlineObjectMembers) {
|
|
342
|
+
const primaryValue = getDiscriminatorValueFromPropertyDef(properties, primaryFieldName);
|
|
343
|
+
if (primaryValue === null) {
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
const secondaryValues = fieldNames
|
|
347
|
+
.slice(1)
|
|
348
|
+
.map((fn) => getDiscriminatorValueFromPropertyDef(properties, fn));
|
|
349
|
+
const tupleKey = JSON.stringify([primaryValue, ...secondaryValues]);
|
|
350
|
+
let group = groups.get(tupleKey);
|
|
351
|
+
if (group === undefined) {
|
|
352
|
+
group = [];
|
|
353
|
+
groups.set(tupleKey, group);
|
|
354
|
+
groupValues.set(tupleKey, [primaryValue, ...secondaryValues]);
|
|
355
|
+
}
|
|
356
|
+
group.push(properties);
|
|
357
|
+
}
|
|
358
|
+
if (groups.size === 0) {
|
|
359
|
+
resultUnions.push(inlineUnion);
|
|
360
|
+
continue;
|
|
361
|
+
}
|
|
362
|
+
// Flatten each group into a single member with hint name
|
|
363
|
+
const flattenedMembers = [];
|
|
364
|
+
const valueMappings = [];
|
|
365
|
+
for (const [tupleKey, group] of groups) {
|
|
366
|
+
const values = groupValues.get(tupleKey);
|
|
367
|
+
const mergedProperties = mergeGroupPropertyDefs(group, [...fieldNames]);
|
|
368
|
+
const hintName = generateDiscriminatorMemberName({
|
|
369
|
+
unionTypeName,
|
|
370
|
+
values,
|
|
371
|
+
});
|
|
372
|
+
flattenedMembers.push({
|
|
373
|
+
memberType: createInlineObjectType({
|
|
374
|
+
properties: mergedProperties,
|
|
375
|
+
description: null,
|
|
376
|
+
deprecated: null,
|
|
377
|
+
hintName,
|
|
378
|
+
}),
|
|
379
|
+
needsAutoGeneration: true,
|
|
380
|
+
});
|
|
381
|
+
valueMappings.push({
|
|
382
|
+
memberGraphQLTypeName: hintName,
|
|
383
|
+
values,
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
resultUnions.push({
|
|
387
|
+
...inlineUnion,
|
|
388
|
+
members: [...nonInlineMembers, ...flattenedMembers],
|
|
389
|
+
});
|
|
390
|
+
inlineDiscriminatorResolveTypes.push({
|
|
391
|
+
unionTypeName,
|
|
392
|
+
fieldNames: [...fieldNames],
|
|
393
|
+
valueMappings,
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
return { inlineUnions: resultUnions, inlineDiscriminatorResolveTypes };
|
|
397
|
+
}
|
|
398
|
+
//# sourceMappingURL=intersection-flattener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intersection-flattener.js","sourceRoot":"","sources":["../../src/auto-type-generator/intersection-flattener.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,26 @@ export interface ResolverPayloadContext {
|
|
|
46
46
|
readonly parentTypeName: string | null;
|
|
47
47
|
readonly fieldPath: ReadonlyArray<string>;
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Convert a string to PascalCase.
|
|
51
|
+
* Handles camelCase, snake_case, and kebab-case inputs.
|
|
52
|
+
*/
|
|
53
|
+
export declare function toPascalCase(str: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Singularize a plural field name conservatively for array element type naming.
|
|
56
|
+
* Falls back to the original name when the plural form is ambiguous.
|
|
57
|
+
*/
|
|
58
|
+
export declare function singularizeFieldName(name: string): string;
|
|
59
|
+
interface AppendFieldPathParams {
|
|
60
|
+
readonly parentPath: ReadonlyArray<string>;
|
|
61
|
+
readonly fieldName: string;
|
|
62
|
+
readonly singularize: boolean;
|
|
63
|
+
readonly siblingFieldNames: ReadonlySet<string> | null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Append a field name to an auto-type field path.
|
|
67
|
+
*/
|
|
68
|
+
export declare function appendFieldPath(params: AppendFieldPathParams): string[];
|
|
49
69
|
/**
|
|
50
70
|
* Check if a type name follows the Input type naming convention.
|
|
51
71
|
*/
|
|
@@ -58,4 +78,5 @@ export declare function buildFieldContext(parentTypeName: string, fieldPath: Rea
|
|
|
58
78
|
* Generate auto type name based on context.
|
|
59
79
|
*/
|
|
60
80
|
export declare function generateAutoTypeName(context: AutoTypeNameContext): string;
|
|
81
|
+
export {};
|
|
61
82
|
//# sourceMappingURL=naming-convention.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming-convention.d.ts","sourceRoot":"","sources":["../../src/auto-type-generator/naming-convention.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;
|
|
1
|
+
{"version":3,"file":"naming-convention.d.ts","sourceRoot":"","sources":["../../src/auto-type-generator/naming-convention.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AA2BD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAehD;AA0DD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8CzD;AAED,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;CACxD;AAuDD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAMvE;AAYD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,EAChC,OAAO,EAAE,OAAO,GACf,kBAAkB,GAAG,iBAAiB,CAIxC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAWzE"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
+
const IRREGULAR_SINGULAR_FIELD_NAMES = new Map([
|
|
2
|
+
["aliases", "alias"],
|
|
3
|
+
["analyses", "analysis"],
|
|
4
|
+
["buses", "bus"],
|
|
5
|
+
["children", "child"],
|
|
6
|
+
["cookies", "cookie"],
|
|
7
|
+
["crises", "crisis"],
|
|
8
|
+
["diagnoses", "diagnosis"],
|
|
9
|
+
["feet", "foot"],
|
|
10
|
+
["geese", "goose"],
|
|
11
|
+
["men", "man"],
|
|
12
|
+
["mice", "mouse"],
|
|
13
|
+
["movies", "movie"],
|
|
14
|
+
["people", "person"],
|
|
15
|
+
["selfies", "selfie"],
|
|
16
|
+
["statuses", "status"],
|
|
17
|
+
["teeth", "tooth"],
|
|
18
|
+
["theses", "thesis"],
|
|
19
|
+
["women", "woman"],
|
|
20
|
+
["zombies", "zombie"],
|
|
21
|
+
]);
|
|
22
|
+
const NON_INFLECTING_FIELD_NAMES = new Set(["news", "series", "species"]);
|
|
23
|
+
const AMBIGUOUS_PLURAL_FIELD_NAMES = new Set(["axes"]);
|
|
1
24
|
/**
|
|
2
25
|
* Convert a string to PascalCase.
|
|
3
26
|
* Handles camelCase, snake_case, and kebab-case inputs.
|
|
4
27
|
*/
|
|
5
|
-
function toPascalCase(str) {
|
|
28
|
+
export function toPascalCase(str) {
|
|
6
29
|
if (str.length === 0)
|
|
7
30
|
return str;
|
|
8
31
|
return str
|
|
@@ -13,6 +36,127 @@ function toPascalCase(str) {
|
|
|
13
36
|
.join(""))
|
|
14
37
|
.join("");
|
|
15
38
|
}
|
|
39
|
+
function isConsonant(char) {
|
|
40
|
+
return /^[bcdfghjklmnpqrstvwxyz]$/i.test(char);
|
|
41
|
+
}
|
|
42
|
+
function isUppercaseLetter(char) {
|
|
43
|
+
return char.toLowerCase() !== char && char.toUpperCase() === char;
|
|
44
|
+
}
|
|
45
|
+
function applyReplacementCase(params) {
|
|
46
|
+
const { replacement, template } = params;
|
|
47
|
+
if (template.toUpperCase() === template) {
|
|
48
|
+
return replacement.toUpperCase();
|
|
49
|
+
}
|
|
50
|
+
if (isUppercaseLetter(template.charAt(0))) {
|
|
51
|
+
return `${replacement.charAt(0).toUpperCase()}${replacement.slice(1)}`;
|
|
52
|
+
}
|
|
53
|
+
return replacement;
|
|
54
|
+
}
|
|
55
|
+
function singularizeIrregularFieldName(name) {
|
|
56
|
+
const lowerName = name.toLowerCase();
|
|
57
|
+
for (const [plural, singular] of IRREGULAR_SINGULAR_FIELD_NAMES) {
|
|
58
|
+
if (!lowerName.endsWith(plural)) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const suffixStart = name.length - plural.length;
|
|
62
|
+
if (suffixStart > 0) {
|
|
63
|
+
const previousChar = name.charAt(suffixStart - 1);
|
|
64
|
+
const suffixFirstChar = name.charAt(suffixStart);
|
|
65
|
+
const hasWordBoundary = previousChar === "_" ||
|
|
66
|
+
previousChar === "-" ||
|
|
67
|
+
isUppercaseLetter(suffixFirstChar);
|
|
68
|
+
if (!hasWordBoundary) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return `${name.slice(0, suffixStart)}${applyReplacementCase({
|
|
73
|
+
replacement: singular,
|
|
74
|
+
template: name.slice(suffixStart),
|
|
75
|
+
})}`;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Singularize a plural field name conservatively for array element type naming.
|
|
81
|
+
* Falls back to the original name when the plural form is ambiguous.
|
|
82
|
+
*/
|
|
83
|
+
export function singularizeFieldName(name) {
|
|
84
|
+
const irregularSingular = singularizeIrregularFieldName(name);
|
|
85
|
+
if (irregularSingular) {
|
|
86
|
+
return irregularSingular;
|
|
87
|
+
}
|
|
88
|
+
const lowerName = name.toLowerCase();
|
|
89
|
+
if (name.length <= 3 || NON_INFLECTING_FIELD_NAMES.has(lowerName)) {
|
|
90
|
+
return name;
|
|
91
|
+
}
|
|
92
|
+
if (AMBIGUOUS_PLURAL_FIELD_NAMES.has(lowerName)) {
|
|
93
|
+
return name;
|
|
94
|
+
}
|
|
95
|
+
if (lowerName.endsWith("ies")) {
|
|
96
|
+
if (name.length <= 4) {
|
|
97
|
+
return name.slice(0, -1);
|
|
98
|
+
}
|
|
99
|
+
if (isConsonant(lowerName.at(-4) ?? "")) {
|
|
100
|
+
return `${name.slice(0, -3)}y`;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (lowerName.endsWith("sses") ||
|
|
104
|
+
lowerName.endsWith("shes") ||
|
|
105
|
+
lowerName.endsWith("ches") ||
|
|
106
|
+
lowerName.endsWith("xes") ||
|
|
107
|
+
lowerName.endsWith("zes")) {
|
|
108
|
+
return name.slice(0, -2);
|
|
109
|
+
}
|
|
110
|
+
if (lowerName.endsWith("s") &&
|
|
111
|
+
!lowerName.endsWith("ss") &&
|
|
112
|
+
!lowerName.endsWith("is") &&
|
|
113
|
+
!lowerName.endsWith("us")) {
|
|
114
|
+
return name.slice(0, -1);
|
|
115
|
+
}
|
|
116
|
+
return name;
|
|
117
|
+
}
|
|
118
|
+
function hasSiblingFieldPathCollision(params) {
|
|
119
|
+
const { fieldName, singularFieldName, siblingFieldNames } = params;
|
|
120
|
+
if (!siblingFieldNames) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
for (const siblingFieldName of siblingFieldNames) {
|
|
124
|
+
if (siblingFieldName === fieldName) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (siblingFieldName === singularFieldName ||
|
|
128
|
+
singularizeFieldName(siblingFieldName) === singularFieldName) {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
function resolveFieldPathSegment(params) {
|
|
135
|
+
const { fieldName, singularize, siblingFieldNames } = params;
|
|
136
|
+
if (!singularize) {
|
|
137
|
+
return fieldName;
|
|
138
|
+
}
|
|
139
|
+
const singularFieldName = singularizeFieldName(fieldName);
|
|
140
|
+
if (singularFieldName !== fieldName &&
|
|
141
|
+
hasSiblingFieldPathCollision({
|
|
142
|
+
fieldName,
|
|
143
|
+
singularFieldName,
|
|
144
|
+
siblingFieldNames,
|
|
145
|
+
})) {
|
|
146
|
+
return fieldName;
|
|
147
|
+
}
|
|
148
|
+
return singularFieldName;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Append a field name to an auto-type field path.
|
|
152
|
+
*/
|
|
153
|
+
export function appendFieldPath(params) {
|
|
154
|
+
const { parentPath, fieldName, singularize, siblingFieldNames } = params;
|
|
155
|
+
return [
|
|
156
|
+
...parentPath,
|
|
157
|
+
resolveFieldPathSegment({ fieldName, singularize, siblingFieldNames }),
|
|
158
|
+
];
|
|
159
|
+
}
|
|
16
160
|
/**
|
|
17
161
|
* Remove Input suffix from type name if present.
|
|
18
162
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming-convention.js","sourceRoot":"","sources":["../../src/auto-type-generator/naming-convention.ts"],"names":[],"mappings":"AAyDA;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"naming-convention.js","sourceRoot":"","sources":["../../src/auto-type-generator/naming-convention.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,8 @@ export interface ExtractTypenamesParams {
|
|
|
21
21
|
export interface CollectTypenameExtractionsParams {
|
|
22
22
|
readonly extractedTypes: ReadonlyArray<ExtractedTypeInfo>;
|
|
23
23
|
readonly typeMap: ReadonlyMap<string, ExtractedTypeInfo>;
|
|
24
|
+
/** Union names that have discriminatorFields configured; these are excluded from typename extraction. */
|
|
25
|
+
readonly discriminatorFieldUnionNames: ReadonlySet<string>;
|
|
24
26
|
}
|
|
25
27
|
export declare function collectTypenameExtractions(params: CollectTypenameExtractionsParams): ReadonlyArray<TypenameExtractionResult>;
|
|
26
28
|
//# sourceMappingURL=typename-extractor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typename-extractor.d.ts","sourceRoot":"","sources":["../../src/auto-type-generator/typename-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,GAAG,WAAW,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC1D;
|
|
1
|
+
{"version":3,"file":"typename-extractor.d.ts","sourceRoot":"","sources":["../../src/auto-type-generator/typename-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,GAAG,WAAW,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC1D;AAuLD,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACzD,yGAAyG;IACzG,QAAQ,CAAC,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5D;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,gCAAgC,GACvC,aAAa,CAAC,wBAAwB,CAAC,CAqBzC"}
|