Skip to content

Commit 4d21695

Browse files
authored
fix: ts 4.5 compat (#84)
* ts 4.5 compat * fix second usage of `createImportSpecifier` Thanks to @Meligy for testing.
1 parent fc75ed6 commit 4d21695

File tree

5 files changed

+100
-74
lines changed

5 files changed

+100
-74
lines changed

package-lock.json

Lines changed: 51 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,12 @@
4545
},
4646
"dependencies": {
4747
"@apidevtools/swagger-parser": "^10.0.2",
48+
"@types/semver": "^7.3.9",
4849
"commander": "^6.2.0",
4950
"glob-to-regexp": "^0.4.1",
5051
"oazapfts": "3.4.0",
5152
"prettier": "^2.2.1",
53+
"semver": "^7.3.5",
5254
"swagger2openapi": "^7.0.4",
5355
"ts-morph": "^9.1.0",
5456
"typescript": "^4.1.2"

src/codegen.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as ts from 'typescript';
2+
import semver from 'semver';
23
const { factory } = ts;
34
import { GenerationOptions } from './types';
45

@@ -16,6 +17,17 @@ export function generateStringLiteralArray(arr: string[]) {
1617
);
1718
}
1819

20+
export function createImportSpecifier(
21+
propertyName: ts.Identifier | undefined,
22+
name: ts.Identifier
23+
): ts.ImportSpecifier {
24+
if (semver.satisfies(ts.version, '>= 4.5'))
25+
// @ts-ignore
26+
return factory.createImportSpecifier(false, propertyName, name);
27+
// @ts-ignore
28+
return factory.createImportSpecifier(propertyName, name);
29+
}
30+
1931
export function generateImportNode(pkg: string, namedImports: Record<string, string>, defaultImportName?: string) {
2032
return factory.createImportDeclaration(
2133
undefined,
@@ -25,7 +37,7 @@ export function generateImportNode(pkg: string, namedImports: Record<string, str
2537
defaultImportName !== undefined ? factory.createIdentifier(defaultImportName) : undefined,
2638
factory.createNamedImports(
2739
Object.entries(namedImports).map(([propertyName, name]) =>
28-
factory.createImportSpecifier(
40+
createImportSpecifier(
2941
name === propertyName ? undefined : factory.createIdentifier(propertyName),
3042
factory.createIdentifier(name)
3143
)

src/generators/import-node.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as ts from 'typescript';
2+
import { createImportSpecifier } from '../codegen';
23

34
const { factory } = ts;
45

@@ -13,7 +14,7 @@ export function generateImportNode(pkg: string, namedImports: Record<string, str
1314
Object.entries(namedImports)
1415
.filter((args) => args[1])
1516
.map(([propertyName, name]) =>
16-
factory.createImportSpecifier(
17+
createImportSpecifier(
1718
name === propertyName ? undefined : factory.createIdentifier(propertyName),
1819
factory.createIdentifier(name as string)
1920
)

0 commit comments

Comments
 (0)