Skip to content

Commit 55bde11

Browse files
authored
Merge pull request #26 from Cropster/issue-24
JSX support for transform() API method
2 parents d154167 + f215a91 commit 55bde11

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/transformer/transform.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export function transform(source: string, filenameOrOptions: string | TransformO
4040
const transformationContext = typescript.nullTransformationContext;
4141
const visitorContext = {...baseVisitorContext, transformationContext, factory};
4242

43-
const sourceFile = typescript.createSourceFile(filename, source, typescript.ScriptTarget.ESNext, true, typescript.ScriptKind.TS);
43+
const sourceFile = typescript.createSourceFile(filename, source, typescript.ScriptTarget.ESNext, true);
4444
const transformedSourceFile = transformSourceFile(sourceFile, visitorContext);
4545

4646
let result: TransformResult;

test/transform.test.ts

+40
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,43 @@ test("The transform API goes from TypeScript to TypeScript. #4", "*", (t, {types
128128

129129
t.true(map != null);
130130
});
131+
132+
test("The transform API allows JSX code. #1", "*", (t, {typescript}) => {
133+
const {code } = generateTransformResult({
134+
fileName: "file.tsx",
135+
text: `import {IFoo} from "./foo";
136+
137+
const foo = container.get<IFoo>();
138+
139+
return <div id="wrapper">{foo.name}</div>;`},
140+
{
141+
typescript,
142+
identifier: 'container'
143+
}
144+
);
145+
146+
t.deepEqual(
147+
formatCode(code),
148+
formatCode(`\
149+
import { IFoo } from "./foo";
150+
const foo = container.get<IFoo>({ identifier: "IFoo" });
151+
return <div id="wrapper">{foo.name}</div>;`)
152+
);
153+
});
154+
155+
test("The transform API allows JSX code. #2", "*", (t, {typescript}) => {
156+
const {code} = generateTransformResult({
157+
fileName: "file.ts",
158+
text: `import {IFoo} from "./foo";
159+
160+
const foo = container.get<IFoo>();
161+
162+
return <div id="wrapper">{foo.name}</div>;`},
163+
{
164+
typescript,
165+
identifier: 'container'
166+
}
167+
);
168+
169+
t.throws(() => formatCode(code));
170+
});

0 commit comments

Comments
 (0)