Skip to content

Commit

Permalink
fix: ts 4.5 compat (#84)
Browse files Browse the repository at this point in the history
* ts 4.5 compat
* fix second usage of `createImportSpecifier`
Thanks to @Meligy for testing.
  • Loading branch information
phryneas committed Nov 21, 2021
1 parent fc75ed6 commit 4d21695
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 74 deletions.
59 changes: 51 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,12 @@
},
"dependencies": {
"@apidevtools/swagger-parser": "^10.0.2",
"@types/semver": "^7.3.9",
"commander": "^6.2.0",
"glob-to-regexp": "^0.4.1",
"oazapfts": "3.4.0",
"prettier": "^2.2.1",
"semver": "^7.3.5",
"swagger2openapi": "^7.0.4",
"ts-morph": "^9.1.0",
"typescript": "^4.1.2"
Expand Down
14 changes: 13 additions & 1 deletion src/codegen.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as ts from 'typescript';
import semver from 'semver';
const { factory } = ts;
import { GenerationOptions } from './types';

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

export function createImportSpecifier(
propertyName: ts.Identifier | undefined,
name: ts.Identifier
): ts.ImportSpecifier {
if (semver.satisfies(ts.version, '>= 4.5'))
// @ts-ignore
return factory.createImportSpecifier(false, propertyName, name);
// @ts-ignore
return factory.createImportSpecifier(propertyName, name);
}

export function generateImportNode(pkg: string, namedImports: Record<string, string>, defaultImportName?: string) {
return factory.createImportDeclaration(
undefined,
Expand All @@ -25,7 +37,7 @@ export function generateImportNode(pkg: string, namedImports: Record<string, str
defaultImportName !== undefined ? factory.createIdentifier(defaultImportName) : undefined,
factory.createNamedImports(
Object.entries(namedImports).map(([propertyName, name]) =>
factory.createImportSpecifier(
createImportSpecifier(
name === propertyName ? undefined : factory.createIdentifier(propertyName),
factory.createIdentifier(name)
)
Expand Down
3 changes: 2 additions & 1 deletion src/generators/import-node.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as ts from 'typescript';
import { createImportSpecifier } from '../codegen';

const { factory } = ts;

Expand All @@ -13,7 +14,7 @@ export function generateImportNode(pkg: string, namedImports: Record<string, str
Object.entries(namedImports)
.filter((args) => args[1])
.map(([propertyName, name]) =>
factory.createImportSpecifier(
createImportSpecifier(
name === propertyName ? undefined : factory.createIdentifier(propertyName),
factory.createIdentifier(name as string)
)
Expand Down
Loading

0 comments on commit 4d21695

Please sign in to comment.