UNPKG

@equinor/fusion-framework-cli

Version:

--- title: Fusion Framework CLI ---

51 lines 2.58 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import tsc from 'typescript'; import { dirname, join, resolve } from 'node:path'; import { readPackageUp } from 'read-package-up'; import assert from 'node:assert'; import { existsSync } from 'node:fs'; import { mkdir, readFile, stat, writeFile } from 'node:fs/promises'; import { fileExists } from './file-exists.js'; export const transpile = (file) => __awaiter(void 0, void 0, void 0, function* () { const pkg = yield readPackageUp(); assert(pkg, `failed to resolve bundle package`); const pkgRoot = dirname(pkg.path); const sourceFile = resolve(pkgRoot, file); assert(sourceFile, `failed to resolve ${file}`); const cacheDir = join(pkgRoot, 'node_modules', '.cache', 'ffc'); const targetFile = join(cacheDir, file.replace(pkgRoot, '').replace(/.ts$/, '.mjs')); if (yield fileExists(targetFile)) { const sourceTouch = (yield stat(sourceFile)).mtime; const targetTouch = (yield stat(targetFile)).mtime; if (sourceTouch < targetTouch) { return targetFile; } } if (!existsSync(dirname(targetFile))) { yield mkdir(cacheDir, { recursive: true }); } const compilerOptions = yield loadCompilerOptions('tsconfig.json'); const tsContent = (yield readFile(sourceFile)).toString(); const jsContent = tsc.transpileModule(tsContent, { compilerOptions }).outputText; assert(jsContent, `failed to transpile [${file}]`); yield writeFile(targetFile, jsContent); return targetFile; }); const loadCompilerOptions = (filename) => { const config = tsc.readConfigFile(filename, tsc.sys.readFile).config; if (config.extends) { const extended = resolve(config.extends); return Object.assign(Object.assign({}, loadCompilerOptions(extended)), config.compilerOptions); } return config.compilerOptions; }; export default transpile; //# sourceMappingURL=ts-transpile.js.map