-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathupdateSourceFile.ts
56 lines (51 loc) · 1.44 KB
/
updateSourceFile.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import * as ts from "typescript";
function createVarStatement(name: string) {
return ts.createVariableStatement(undefined, [
ts.createVariableDeclaration(
name,
undefined,
ts.createPropertyAccess(
ts.createIdentifier("Inferno"),
ts.createIdentifier(name)
)
)
]);
}
export default (sourceFile: ts.SourceFile, context) => {
let statements = [...sourceFile.statements];
let shouldAddImport = false;
if (context["createFragment"]) {
shouldAddImport = true;
statements.unshift(createVarStatement("createFragment"));
}
if (context["createVNode"]) {
shouldAddImport = true;
statements.unshift(createVarStatement("createVNode"));
}
if (context["createComponentVNode"]) {
shouldAddImport = true;
statements.unshift(createVarStatement("createComponentVNode"));
}
if (context["createTextVNode"]) {
shouldAddImport = true;
statements.unshift(createVarStatement("createTextVNode"));
}
if (context["normalizeProps"]) {
shouldAddImport = true;
statements.unshift(createVarStatement("normalizeProps"));
}
if (shouldAddImport) {
statements.unshift(
ts.createImportDeclaration(
undefined,
undefined,
ts.createImportClause(
undefined,
ts.createNamespaceImport(ts.createIdentifier("Inferno"))
),
ts.createLiteral("inferno")
)
);
}
return ts.updateSourceFileNode(sourceFile, statements);
};