Icard/angular-clarity-master(work.../node_modules/ts-node/dist/ts-transpile-module.js

100 lines
4.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTsTranspileModule = void 0;
/** @internal */
function createTsTranspileModule(ts, transpileOptions) {
const { createProgram, createSourceFile, getDefaultCompilerOptions, getImpliedNodeFormatForFile, fixupCompilerOptions, transpileOptionValueCompilerOptions, getNewLineCharacter, fileExtensionIs, normalizePath, Debug, toPath, getSetExternalModuleIndicator, getEntries, addRange, hasProperty, getEmitScriptTarget, getDirectoryPath, } = ts;
const compilerOptionsDiagnostics = [];
const options = transpileOptions.compilerOptions
? fixupCompilerOptions(transpileOptions.compilerOptions, compilerOptionsDiagnostics)
: {};
// mix in default options
const defaultOptions = getDefaultCompilerOptions();
for (const key in defaultOptions) {
if (hasProperty(defaultOptions, key) && options[key] === undefined) {
options[key] = defaultOptions[key];
}
}
for (const option of transpileOptionValueCompilerOptions) {
options[option.name] = option.transpileOptionValue;
}
// transpileModule does not write anything to disk so there is no need to verify that there are no conflicts between input and output paths.
options.suppressOutputPathCheck = true;
// Filename can be non-ts file.
options.allowNonTsExtensions = true;
const newLine = getNewLineCharacter(options);
// Create a compilerHost object to allow the compiler to read and write files
const compilerHost = {
getSourceFile: (fileName) => fileName === normalizePath(inputFileName) ? sourceFile : undefined,
writeFile: (name, text) => {
if (fileExtensionIs(name, '.map')) {
Debug.assertEqual(sourceMapText, undefined, 'Unexpected multiple source map outputs, file:', name);
sourceMapText = text;
}
else {
Debug.assertEqual(outputText, undefined, 'Unexpected multiple outputs, file:', name);
outputText = text;
}
},
getDefaultLibFileName: () => 'lib.d.ts',
useCaseSensitiveFileNames: () => true,
getCanonicalFileName: (fileName) => fileName,
getCurrentDirectory: () => '',
getNewLine: () => newLine,
fileExists: (fileName) => fileName === inputFileName || fileName === packageJsonFileName,
readFile: (fileName) => fileName === packageJsonFileName ? `{"type": "${_packageJsonType}"}` : '',
directoryExists: () => true,
getDirectories: () => [],
};
let inputFileName;
let packageJsonFileName;
let _packageJsonType;
let sourceFile;
let outputText;
let sourceMapText;
return transpileModule;
function transpileModule(input, transpileOptions2, packageJsonType = 'commonjs') {
// if jsx is specified then treat file as .tsx
inputFileName =
transpileOptions2.fileName ||
(transpileOptions.compilerOptions && transpileOptions.compilerOptions.jsx
? 'module.tsx'
: 'module.ts');
packageJsonFileName = getDirectoryPath(inputFileName) + '/package.json';
_packageJsonType = packageJsonType;
sourceFile = createSourceFile(inputFileName, input, {
languageVersion: getEmitScriptTarget(options),
impliedNodeFormat: getImpliedNodeFormatForFile(toPath(inputFileName, '', compilerHost.getCanonicalFileName),
/*cache*/ undefined, compilerHost, options),
setExternalModuleIndicator: getSetExternalModuleIndicator(options),
});
if (transpileOptions2.moduleName) {
sourceFile.moduleName = transpileOptions2.moduleName;
}
if (transpileOptions2.renamedDependencies) {
sourceFile.renamedDependencies = new Map(getEntries(transpileOptions2.renamedDependencies));
}
// Output
outputText = undefined;
sourceMapText = undefined;
const program = createProgram([inputFileName], options, compilerHost);
const diagnostics = compilerOptionsDiagnostics.slice();
if (transpileOptions.reportDiagnostics) {
addRange(
/*to*/ diagnostics,
/*from*/ program.getSyntacticDiagnostics(sourceFile));
addRange(/*to*/ diagnostics, /*from*/ program.getOptionsDiagnostics());
}
// Emit
program.emit(
/*targetSourceFile*/ undefined,
/*writeFile*/ undefined,
/*cancellationToken*/ undefined,
/*emitOnlyDtsFiles*/ undefined, transpileOptions.transformers);
if (outputText === undefined)
return Debug.fail('Output generation failed');
return { outputText, diagnostics, sourceMapText };
}
}
exports.createTsTranspileModule = createTsTranspileModule;
//# sourceMappingURL=ts-transpile-module.js.map