Skip to content

Commit 122f53f

Browse files
committed
fix(enum-values): access array props
Fixes: #2140
1 parent d5ccbf8 commit 122f53f

File tree

1 file changed

+4
-4
lines changed
  • packages/openapi-typescript/src/lib

1 file changed

+4
-4
lines changed

packages/openapi-typescript/src/lib/ts.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,13 @@ export function addJSDocComment(schemaObject: AnnotatedSchemaObject, node: ts.Pr
116116
}
117117

118118
/** Convert OpenAPI ref into TS indexed access node (ex: `components["schemas"]["Foo"]`) */
119-
export function oapiRef(path: string, deepRequired = false): ts.TypeNode {
119+
export function oapiRef(path: string, deep = false): ts.TypeNode {
120120
const { pointer } = parseRef(path);
121121
if (pointer.length === 0) {
122122
throw new Error(`Error parsing $ref: ${path}. Is this a valid $ref?`);
123123
}
124124
let t: ts.TypeReferenceNode | ts.IndexedAccessTypeNode = ts.factory.createTypeReferenceNode(
125-
ts.factory.createIdentifier(deepRequired ? `DeepRequired<${String(pointer[0])}>` : String(pointer[0])),
125+
ts.factory.createIdentifier(deep ? `FlattenedDeepRequired<${String(pointer[0])}>` : String(pointer[0])),
126126
);
127127
if (pointer.length > 1) {
128128
for (let i = 1; i < pointer.length; i++) {
@@ -253,10 +253,10 @@ export function tsArrayLiteralExpression(
253253

254254
if (
255255
options?.injectFooter &&
256-
!options.injectFooter.some((node) => ts.isTypeAliasDeclaration(node) && node?.name?.escapedText === "DeepRequired")
256+
!options.injectFooter.some((node) => ts.isTypeAliasDeclaration(node) && node?.name?.escapedText === "FlattenedDeepRequired")
257257
) {
258258
const helper = stringToAST(
259-
"type DeepRequired<T> = { [K in keyof T]: Required<DeepRequired<T[K]>> };",
259+
"type FlattenedDeepRequired<T> = { [K in keyof T]: Required<FlattenedDeepRequired<T[K] extends unknown[] ? T[K][number] : T[K]>>; };",
260260
)[0] as any;
261261
options.injectFooter.push(helper);
262262
}

0 commit comments

Comments
 (0)