@elliots/typical 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/bin/typical +3 -0
- package/dist/src/transformer.js +35 -2
- package/dist/src/transformer.js.map +1 -1
- package/package.json +4 -3
- package/src/cli.ts +111 -0
- package/src/config.ts +35 -0
- package/src/esm-loader-register.ts +2 -0
- package/src/esm-loader.ts +26 -0
- package/src/file-filter.ts +44 -0
- package/src/index.ts +2 -0
- package/src/patch-fs.cjs +25 -0
- package/src/patch-tsconfig.cjs +52 -0
- package/src/setup.ts +29 -0
- package/src/transformer.ts +874 -0
- package/src/tsc-plugin.ts +12 -0
package/README.md
CHANGED
|
@@ -53,10 +53,17 @@ See ./samples/esm and ./samples/tsc and ./samples/ttsx
|
|
|
53
53
|
Quickest way to try it out is to use ttsx:
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
|
-
npm add
|
|
56
|
+
npm add @elliots/typical
|
|
57
57
|
npx ttsx your-script.ts
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
or globally:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm add -g @elliots/typical
|
|
64
|
+
ttsx your-script.ts
|
|
65
|
+
```
|
|
66
|
+
|
|
60
67
|
## Example
|
|
61
68
|
|
|
62
69
|
This code will run without errors when compiled normally, but will throw an error when using Typical.
|
package/bin/typical
ADDED
package/dist/src/transformer.js
CHANGED
|
@@ -323,6 +323,8 @@ export class TypicalTransformer {
|
|
|
323
323
|
// Transform return statements - use explicit type or infer from type checker
|
|
324
324
|
let transformedStatements = visitedBody.statements;
|
|
325
325
|
let returnType = func.type;
|
|
326
|
+
// Check if this is an async function
|
|
327
|
+
const isAsync = func.modifiers?.some((mod) => mod.kind === ts.SyntaxKind.AsyncKeyword);
|
|
326
328
|
// If no explicit return type, try to infer it from the type checker
|
|
327
329
|
let returnTypeForString;
|
|
328
330
|
if (!returnType) {
|
|
@@ -337,14 +339,45 @@ export class TypicalTransformer {
|
|
|
337
339
|
// For explicit return types, get the Type from the TypeNode
|
|
338
340
|
returnTypeForString = typeChecker.getTypeFromTypeNode(returnType);
|
|
339
341
|
}
|
|
342
|
+
// For async functions, unwrap Promise<T> to get T
|
|
343
|
+
// The return statement in an async function returns T, not Promise<T>
|
|
344
|
+
if (isAsync && returnType && returnTypeForString) {
|
|
345
|
+
const promiseSymbol = returnTypeForString.getSymbol();
|
|
346
|
+
if (promiseSymbol && promiseSymbol.getName() === "Promise") {
|
|
347
|
+
// Get the type argument of Promise<T>
|
|
348
|
+
const typeArgs = returnTypeForString.typeArguments;
|
|
349
|
+
if (typeArgs && typeArgs.length > 0) {
|
|
350
|
+
returnTypeForString = typeArgs[0];
|
|
351
|
+
// Also update the TypeNode to match
|
|
352
|
+
if (ts.isTypeReferenceNode(returnType) && returnType.typeArguments && returnType.typeArguments.length > 0) {
|
|
353
|
+
returnType = returnType.typeArguments[0];
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
// Create a new type node from the unwrapped type
|
|
357
|
+
returnType = typeChecker.typeToTypeNode(returnTypeForString, func, ts.NodeBuilderFlags.InTypeAlias);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
340
362
|
if (returnType && returnTypeForString) {
|
|
341
363
|
const returnTransformer = (node) => {
|
|
342
364
|
if (ts.isReturnStatement(node) && node.expression) {
|
|
365
|
+
// For async functions, we need to await the expression before validating
|
|
366
|
+
// because the return expression might be a Promise
|
|
367
|
+
let expressionToValidate = node.expression;
|
|
368
|
+
if (isAsync) {
|
|
369
|
+
// Check if the expression is already an await expression
|
|
370
|
+
const isAlreadyAwaited = ts.isAwaitExpression(node.expression);
|
|
371
|
+
if (!isAlreadyAwaited) {
|
|
372
|
+
// Wrap in await: return validate(await expr)
|
|
373
|
+
expressionToValidate = ctx.factory.createAwaitExpression(node.expression);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
343
376
|
if (this.config.reusableValidators) {
|
|
344
377
|
// Use reusable validators - always use typeToString
|
|
345
378
|
const returnTypeText = typeChecker.typeToString(returnTypeForString);
|
|
346
379
|
const validatorName = this.getOrCreateValidator(returnTypeText, returnType);
|
|
347
|
-
const validatorCall = ctx.factory.createCallExpression(ctx.factory.createIdentifier(validatorName), undefined, [
|
|
380
|
+
const validatorCall = ctx.factory.createCallExpression(ctx.factory.createIdentifier(validatorName), undefined, [expressionToValidate]);
|
|
348
381
|
return ctx.factory.updateReturnStatement(node, validatorCall);
|
|
349
382
|
}
|
|
350
383
|
else {
|
|
@@ -352,7 +385,7 @@ export class TypicalTransformer {
|
|
|
352
385
|
const typiaIdentifier = ctx.factory.createIdentifier("typia");
|
|
353
386
|
const assertIdentifier = ctx.factory.createIdentifier("assert");
|
|
354
387
|
const propertyAccess = ctx.factory.createPropertyAccessExpression(typiaIdentifier, assertIdentifier);
|
|
355
|
-
const callExpression = ctx.factory.createCallExpression(propertyAccess, [returnType], [
|
|
388
|
+
const callExpression = ctx.factory.createCallExpression(propertyAccess, [returnType], [expressionToValidate]);
|
|
356
389
|
return ctx.factory.updateReturnStatement(node, callExpression);
|
|
357
390
|
}
|
|
358
391
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../src/transformer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../src/transformer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliots/typical",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Runtime safe TypeScript transformer using typia",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"typical": "
|
|
8
|
+
"typical": "bin/typical",
|
|
9
9
|
"ttsx": "bin/ttsx",
|
|
10
10
|
"ttsc": "bin/ttsc"
|
|
11
11
|
},
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"dist/src",
|
|
20
|
-
"bin"
|
|
20
|
+
"bin",
|
|
21
|
+
"src"
|
|
21
22
|
],
|
|
22
23
|
"scripts": {
|
|
23
24
|
"build": "tsc",
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { TypicalTransformer } from './transformer.js';
|
|
7
|
+
import * as ts from 'typescript';
|
|
8
|
+
import { loadConfig } from './config.js';
|
|
9
|
+
import { shouldIncludeFile } from './file-filter.js';
|
|
10
|
+
|
|
11
|
+
const program = new Command();
|
|
12
|
+
|
|
13
|
+
program
|
|
14
|
+
.name('typical')
|
|
15
|
+
.description('Runtime safe TypeScript transformer using typia')
|
|
16
|
+
.version('0.1.0');
|
|
17
|
+
|
|
18
|
+
program
|
|
19
|
+
.command('transform')
|
|
20
|
+
.description('Transform a TypeScript file with runtime validation')
|
|
21
|
+
.argument('<file>', 'TypeScript file to transform')
|
|
22
|
+
.option('-o, --output <file>', 'Output file')
|
|
23
|
+
.option('-c, --config <file>', 'Config file path', 'typical.json')
|
|
24
|
+
.option('-m, --mode <mode>', 'Transformation mode: basic, typia, js', 'basic')
|
|
25
|
+
.action(async (file: string, options: { output?: string; config?: string; mode?: 'basic' | 'typia' | 'js' }) => {
|
|
26
|
+
try {
|
|
27
|
+
const config = loadConfig(options.config);
|
|
28
|
+
const transformer = new TypicalTransformer(config);
|
|
29
|
+
|
|
30
|
+
if (!fs.existsSync(file)) {
|
|
31
|
+
console.error(`File not found: ${file}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
console.log(`Transforming ${file}...`);
|
|
36
|
+
const transformedCode = transformer.transform(path.resolve(file), options.mode ?? 'basic');
|
|
37
|
+
|
|
38
|
+
const outputFilename = options.output ? path.resolve(options.output) : options.mode === 'js' ? file + '.js' : file + '.transformed.ts';
|
|
39
|
+
|
|
40
|
+
const outputFile = options.output ? path.resolve(options.output) : file + '.transformed.ts';
|
|
41
|
+
fs.writeFileSync(outputFile, transformedCode);
|
|
42
|
+
|
|
43
|
+
console.log(`Transformed code written to ${outputFile}`);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error('Transformation failed:', error);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// program
|
|
51
|
+
// .command('build')
|
|
52
|
+
// .description('Transform all TypeScript files in the project')
|
|
53
|
+
// .option('-c, --config <file>', 'Config file path')
|
|
54
|
+
// .option('--dry-run', 'Show what would be transformed without making changes')
|
|
55
|
+
// .action(async (options: { config?: string, dryRun?: boolean }) => {
|
|
56
|
+
// try {
|
|
57
|
+
// const transformer = new TypicalTransformer();
|
|
58
|
+
|
|
59
|
+
// const { glob } = await import('glob');
|
|
60
|
+
|
|
61
|
+
// const config = loadConfig(options.config);
|
|
62
|
+
|
|
63
|
+
// if (!config.include || config.include.length === 0) {
|
|
64
|
+
// console.error('No include patterns specified in config');
|
|
65
|
+
// process.exit(1);
|
|
66
|
+
// }
|
|
67
|
+
|
|
68
|
+
// const files: string[] = [];
|
|
69
|
+
|
|
70
|
+
// for (const pattern of config.include) {
|
|
71
|
+
// const matched = await glob(pattern, {
|
|
72
|
+
// ignore: config.exclude,
|
|
73
|
+
// absolute: true
|
|
74
|
+
// });
|
|
75
|
+
// files.push(...matched);
|
|
76
|
+
// }
|
|
77
|
+
|
|
78
|
+
// console.log(`Found ${files.length} files to transform`);
|
|
79
|
+
|
|
80
|
+
// if (options.dryRun) {
|
|
81
|
+
// files.forEach(file => console.log(`Would transform: ${file}`));
|
|
82
|
+
// return;
|
|
83
|
+
// }
|
|
84
|
+
|
|
85
|
+
// let transformed = 0;
|
|
86
|
+
|
|
87
|
+
// for (const file of files) {
|
|
88
|
+
// // Double-check with our shared filtering logic
|
|
89
|
+
// if (!shouldIncludeFile(file, config)) {
|
|
90
|
+
// console.log(`Skipping ${file} (excluded by filters)`);
|
|
91
|
+
// continue;
|
|
92
|
+
// }
|
|
93
|
+
|
|
94
|
+
// try {
|
|
95
|
+
// console.log(`Transforming ${file}...`);
|
|
96
|
+
// const transformedCode = transformer.transformFile(file, ts);
|
|
97
|
+
// fs.writeFileSync(file, transformedCode);
|
|
98
|
+
// transformed++;
|
|
99
|
+
// } catch (error) {
|
|
100
|
+
// console.error(`Failed to transform ${file}:`, error);
|
|
101
|
+
// }
|
|
102
|
+
// }
|
|
103
|
+
|
|
104
|
+
// console.log(`Successfully transformed ${transformed}/${files.length} files`);
|
|
105
|
+
// } catch (error) {
|
|
106
|
+
// console.error('Build failed:', error);
|
|
107
|
+
// process.exit(1);
|
|
108
|
+
// }
|
|
109
|
+
// });
|
|
110
|
+
|
|
111
|
+
program.parse();
|
package/src/config.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface TypicalConfig {
|
|
2
|
+
include?: string[];
|
|
3
|
+
exclude?: string[];
|
|
4
|
+
reusableValidators?: boolean;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const defaultConfig: TypicalConfig = {
|
|
8
|
+
include: ["**/*.ts", "**/*.tsx"],
|
|
9
|
+
exclude: ["node_modules/**", "**/*.d.ts", "dist/**", "build/**"],
|
|
10
|
+
reusableValidators: true,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
import fs from 'fs';
|
|
14
|
+
import path from 'path';
|
|
15
|
+
|
|
16
|
+
export function loadConfig(configPath?: string): TypicalConfig {
|
|
17
|
+
const configFile = configPath || path.join(process.cwd(), 'typical.json');
|
|
18
|
+
|
|
19
|
+
if (fs.existsSync(configFile)) {
|
|
20
|
+
try {
|
|
21
|
+
const configContent = fs.readFileSync(configFile, 'utf8');
|
|
22
|
+
const userConfig: Partial<TypicalConfig> = JSON.parse(configContent);
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
...defaultConfig,
|
|
26
|
+
...userConfig,
|
|
27
|
+
};
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.warn(`Failed to parse config file ${configFile}:`, error);
|
|
30
|
+
return defaultConfig;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return defaultConfig;
|
|
35
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { fileURLToPath } from "url";
|
|
2
|
+
import { TypicalTransformer } from "./transformer.js";
|
|
3
|
+
|
|
4
|
+
const transformer = new TypicalTransformer();
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Load hook - transforms TypeScript files on the fly
|
|
8
|
+
*/
|
|
9
|
+
export async function load(url: string, context: any, nextLoad: any) {
|
|
10
|
+
if (!url.endsWith(".ts")) {
|
|
11
|
+
return nextLoad(url, context);
|
|
12
|
+
}
|
|
13
|
+
const filePath = fileURLToPath(url);
|
|
14
|
+
|
|
15
|
+
try {
|
|
16
|
+
const transformedCode = transformer.transform(filePath, 'js');
|
|
17
|
+
return {
|
|
18
|
+
format: "module",
|
|
19
|
+
source: transformedCode,
|
|
20
|
+
shortCircuit: true,
|
|
21
|
+
};
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.error(`Error transforming ${filePath}:`, error);
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { minimatch } from 'minimatch';
|
|
3
|
+
import { TypicalConfig } from './config.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Determines if a file should be transformed based on include/exclude patterns
|
|
7
|
+
*/
|
|
8
|
+
export function shouldTransformFile(fileName: string, config: TypicalConfig): boolean {
|
|
9
|
+
const relativePath = path.relative(process.cwd(), fileName);
|
|
10
|
+
|
|
11
|
+
// Check include patterns
|
|
12
|
+
const isIncluded = config.include?.some(pattern => {
|
|
13
|
+
return minimatch(relativePath, pattern);
|
|
14
|
+
}) ?? true;
|
|
15
|
+
|
|
16
|
+
if (!isIncluded) return false;
|
|
17
|
+
|
|
18
|
+
// Check exclude patterns
|
|
19
|
+
const isExcluded = config.exclude?.some(pattern => {
|
|
20
|
+
return minimatch(relativePath, pattern);
|
|
21
|
+
}) ?? false;
|
|
22
|
+
|
|
23
|
+
return !isExcluded;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Checks if a file is a TypeScript file that can be transformed
|
|
28
|
+
*/
|
|
29
|
+
export function isTransformableTypeScriptFile(fileName: string): boolean {
|
|
30
|
+
// Only transform TypeScript files
|
|
31
|
+
if (!/\.(ts|tsx)$/.test(fileName)) return false;
|
|
32
|
+
|
|
33
|
+
// Skip declaration files
|
|
34
|
+
if (fileName.endsWith('.d.ts')) return false;
|
|
35
|
+
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Combined check for both file type and include/exclude patterns
|
|
41
|
+
*/
|
|
42
|
+
export function shouldIncludeFile(fileName: string, config: TypicalConfig): boolean {
|
|
43
|
+
return isTransformableTypeScriptFile(fileName) && shouldTransformFile(fileName, config);
|
|
44
|
+
}
|
package/src/index.ts
ADDED
package/src/patch-fs.cjs
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// logs all readFile and readFileSync calls (for debugging)
|
|
2
|
+
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const fsp = require("fs/promises");
|
|
5
|
+
|
|
6
|
+
// monkeypatch promises/readFile
|
|
7
|
+
const origFspReadFile = fsp.readFile;
|
|
8
|
+
fsp.readFile = async function (path, ...args) {
|
|
9
|
+
console.log("fsp.readFile", path);
|
|
10
|
+
return origFspReadFile.call(this, path, ...args);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// monkeypatch readFile
|
|
14
|
+
const origFsReadFile = fs.readFile;
|
|
15
|
+
fs.readFile = async function (path, ...args) {
|
|
16
|
+
console.log("fs.readFile", path);
|
|
17
|
+
return origFsReadFile.call(this, path, ...args);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// monkeypatch readFileSync
|
|
21
|
+
const origFsReadFileSync = fs.readFileSync;
|
|
22
|
+
fs.readFileSync = function (path, ...args) {
|
|
23
|
+
console.log("fs.readFileSync", path);
|
|
24
|
+
return origFsReadFileSync.call(this, path, ...args);
|
|
25
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// monkeypatch fs.readFileSync to automatically add @elliots/typical/tsc-plugin to tsconfig.json (if not present)
|
|
2
|
+
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const stripJsonComments = require('strip-json-comments').default;
|
|
5
|
+
|
|
6
|
+
const origFsReadFileSync = fs.readFileSync;
|
|
7
|
+
|
|
8
|
+
fs.readFileSync = function (path, ...args) {
|
|
9
|
+
const result = origFsReadFileSync.call(this, path, ...args);
|
|
10
|
+
|
|
11
|
+
if (typeof path === "string" && path.endsWith("/tsconfig.json")) {
|
|
12
|
+
try {
|
|
13
|
+
|
|
14
|
+
const json = stripJsonComments(result.toString(), { trailingCommas: true });
|
|
15
|
+
|
|
16
|
+
const config = JSON.parse(json);
|
|
17
|
+
|
|
18
|
+
if (!config.compilerOptions) {
|
|
19
|
+
config.compilerOptions = {};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (!config.compilerOptions.plugins) {
|
|
23
|
+
config.compilerOptions.plugins = [];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const hasTypical = config.compilerOptions.plugins.some(
|
|
27
|
+
(plugin) => plugin.transform === "@elliots/typical/tsc-plugin"
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
if (!hasTypical) {
|
|
31
|
+
if (fs.existsSync("./dist/src/tsc-plugin.js")) {
|
|
32
|
+
console.log("DEV MODE: Adding ./dist/src/tsc-plugin.js to tsconfig.json");
|
|
33
|
+
config.compilerOptions.plugins.push({
|
|
34
|
+
transform: "./dist/src/tsc-plugin.js",
|
|
35
|
+
});
|
|
36
|
+
} else {
|
|
37
|
+
config.compilerOptions.plugins.push({
|
|
38
|
+
transform: "@elliots/typical/tsc-plugin",
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// console.log("patched config", JSON.stringify(config, null, 2));
|
|
44
|
+
|
|
45
|
+
return JSON.stringify(config, null, 2);
|
|
46
|
+
} catch (e) {
|
|
47
|
+
console.error("ERROR patching tsconfig.json to add @elliots/typical/tsc-plugin", e);
|
|
48
|
+
throw e;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
};
|
package/src/setup.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type ts from "typescript";
|
|
2
|
+
|
|
3
|
+
export function setupTsProgram(tsInstance: typeof ts): ts.Program {
|
|
4
|
+
// Find tsconfig.json
|
|
5
|
+
const tsConfigPath = tsInstance.findConfigFile(
|
|
6
|
+
process.cwd(),
|
|
7
|
+
tsInstance.sys.fileExists,
|
|
8
|
+
"tsconfig.json"
|
|
9
|
+
);
|
|
10
|
+
if (!tsConfigPath) {
|
|
11
|
+
throw new Error("Could not find tsconfig.json");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Load and parse tsconfig.json
|
|
15
|
+
const configFile = tsInstance.readConfigFile(tsConfigPath, tsInstance.sys.readFile);
|
|
16
|
+
const parsedConfig = tsInstance.parseJsonConfigFileContent(
|
|
17
|
+
configFile.config,
|
|
18
|
+
tsInstance.sys,
|
|
19
|
+
process.cwd()
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
// Create the TypeScript program with all project files
|
|
23
|
+
const tsProgram = tsInstance.createProgram(
|
|
24
|
+
parsedConfig.fileNames,
|
|
25
|
+
parsedConfig.options
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
return tsProgram;
|
|
29
|
+
}
|