Skip to content

Commit d1ebfe6

Browse files
committed
fix: make adjustments to puya-ts-transformer for it to be used with ts-jest package
1 parent 5d36f2d commit d1ebfe6

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/test-transformer/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,9 @@ programTransformer.factory = createProgramFactory(defaultTransformerConfig)
6767
*/
6868
export const puyaTsTransformer: ts.TransformerFactory<ts.SourceFile> &
6969
((config: Partial<TransformerConfig>) => ts.TransformerFactory<ts.SourceFile>) = programTransformer as DeliberateAny
70+
71+
// exporting values needed by ts-jest for a transformer to work
72+
// https://github.com/kulshekhar/ts-jest/tree/main/src/transformers
73+
export const name = 'puyaTsTransformer'
74+
export const version = '0.1.0'
75+
export const factory = createProgramFactory(defaultTransformerConfig)

src/test-transformer/visitors.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { LoggingContext, ptypes, SourceLocation, TypeResolver } from '@algorandf
22
import path from 'path'
33
import ts from 'typescript'
44
import type { TypeInfo } from '../encoders'
5+
import type { DeliberateAny } from '../typescript-helpers'
56
import { instanceOfAny } from '../typescript-helpers'
67
import type { TransformerConfig } from './index'
78
import { nodeFactory } from './node-factory'
@@ -39,9 +40,11 @@ export class SourceFileVisitor {
3940
program: ts.Program,
4041
private config: TransformerConfig,
4142
) {
42-
const typeChecker = program.getTypeChecker()
43+
// ts-jest would pass a TsCompilerInstance as program parameter whereas rollup-plugin-typescript would pass a ts.Program
44+
const programInstance = (Object.hasOwn(program, 'program') ? (program as DeliberateAny).program : program) as ts.Program
45+
const typeChecker = programInstance.getTypeChecker()
4346
const loggingContext = LoggingContext.create()
44-
const typeResolver = new TypeResolver(typeChecker, program.getCurrentDirectory())
47+
const typeResolver = new TypeResolver(typeChecker, programInstance.getCurrentDirectory())
4548
this.helper = {
4649
additionalStatements: [],
4750
resolveType(node: ts.Node): ptypes.PType {
@@ -59,7 +62,7 @@ export class SourceFileVisitor {
5962
return s && s.flags & ts.SymbolFlags.Alias ? typeChecker.getAliasedSymbol(s) : s
6063
},
6164
sourceLocation(node: ts.Node): SourceLocation {
62-
return SourceLocation.fromNode(node, program.getCurrentDirectory())
65+
return SourceLocation.fromNode(node, programInstance.getCurrentDirectory())
6366
},
6467
}
6568
}

0 commit comments

Comments
 (0)