Skip to content

Commit

Permalink
fix(): remove tsconfig paths condition, support ts v4.8+
Browse files Browse the repository at this point in the history
  • Loading branch information
kamilmysliwiec committed Sep 5, 2022
1 parent 3483eed commit 763f35b
Showing 1 changed file with 39 additions and 21 deletions.
60 changes: 39 additions & 21 deletions lib/compiler/hooks/tsconfig-paths.hook.ts
Expand Up @@ -8,13 +8,14 @@ export function tsconfigPathsBeforeHookFactory(
compilerOptions: ts.CompilerOptions,
) {
const tsBinary = new TypeScriptBinaryLoader().load();
const [tsVersionMajor, tsVersionMinor] = tsBinary.versionMajorMinor
?.split('.')
.map((x) => +x);
const isInUpdatedAstContext = tsVersionMinor >= 8 || tsVersionMajor > 4;

const { paths = {}, baseUrl = './' } = compilerOptions;
const matcher = tsPaths.createMatchPath(baseUrl!, paths, ['main']);

if (Object.keys(paths).length === 0) {
return undefined;
}

return (ctx: ts.TransformationContext): ts.Transformer<any> => {
return (sf: ts.SourceFile) => {
const visitNode = (node: ts.Node): ts.Node => {
Expand Down Expand Up @@ -44,24 +45,41 @@ export function tsconfigPathsBeforeHookFactory(
).moduleSpecifier.parent;

if (tsBinary.isImportDeclaration(node)) {
return tsBinary.factory.updateImportDeclaration(
node,
node.decorators,
node.modifiers,
node.importClause,
moduleSpecifier,
node.assertClause,
);
return isInUpdatedAstContext
? tsBinary.factory.updateImportDeclaration(
node,
node.modifiers,
node.importClause,
moduleSpecifier,
node.assertClause,
)
: tsBinary.factory.updateImportDeclaration(
node,
node.decorators,
node.modifiers,
node.importClause,
moduleSpecifier,
node.assertClause,
);
} else {
return tsBinary.factory.updateExportDeclaration(
node,
node.decorators,
node.modifiers,
node.isTypeOnly,
node.exportClause,
moduleSpecifier,
node.assertClause,
);
return isInUpdatedAstContext
? tsBinary.factory.updateExportDeclaration(
node,
node.modifiers,
node.isTypeOnly,
node.exportClause,
moduleSpecifier,
node.assertClause,
)
: tsBinary.factory.updateExportDeclaration(
node,
node.decorators,
node.modifiers,
node.isTypeOnly,
node.exportClause,
moduleSpecifier,
node.assertClause,
);
}
} catch {
return node;
Expand Down

0 comments on commit 763f35b

Please sign in to comment.