UNPKG

@omnia/tooling

Version:

Provide basic stuffs extensible for omnia extension.

206 lines (205 loc) • 7.64 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getWebpackResolveAlias = exports.getWebpackResolveModules = exports.getTSConfig = exports.loadFile = exports.registerCleanTask = exports.getRegisteredBuildTasks = exports.registerBuildTask = exports.getCleanTasks = exports.getRegisteredServeTasks = exports.registerServeTask = exports.getEnviromentInfo = exports.getExtensionInfo = exports.getConfig = exports.registerTsNode = exports.registerTSConfig = exports.ResolvablePromise = exports.TaskStage = void 0; const tslib_1 = require("tslib"); var fs = require('fs'), path = require('path'); const utils = tslib_1.__importStar(require("./utils")); var TaskStage; (function (TaskStage) { TaskStage["Clean"] = "Clean"; TaskStage["Build"] = "Build"; TaskStage["BeforeCreateServer"] = "BeforeCreateServer"; TaskStage["CreateServer"] = "CreateServer"; TaskStage["AfterCreateServer"] = "AfterCreateServer"; TaskStage["BeforeScanManifests"] = "BeforeScanManifests"; TaskStage["AfterScanManifests"] = "AfterScanManifests"; TaskStage["BeforeBundleManifest"] = "BeforeBundleManifest"; TaskStage["BundleManifest"] = "BundleManifest"; TaskStage["AfterBundleManifest"] = "AfterBundleManifest"; TaskStage["BeforeGenerateManifestsMetadata"] = "BeforeGenerateManifestsMetadata"; TaskStage["GenerateManifestsMetadata"] = "GenerateManifestsMetadata"; TaskStage["AfterGenerateManifestsMetadata"] = "AfterGenerateManifestsMetadata"; })(TaskStage = exports.TaskStage || (exports.TaskStage = {})); ; var _registeredServeTasks = []; var _registeredBuildTasks = []; var _registeredCleanTasks = []; var _tsconfig = null; var _webpackResolveModules = null; var _webpackResolveAlias = null; function registerServeTask(serveTask) { _registeredServeTasks.push(serveTask); } exports.registerServeTask = registerServeTask; function getRegisteredServeTasks() { return _registeredServeTasks; } exports.getRegisteredServeTasks = getRegisteredServeTasks; function registerCleanTask(cleanTask) { _registeredCleanTasks.push(cleanTask); } exports.registerCleanTask = registerCleanTask; function getCleanTasks() { return _registeredCleanTasks; } exports.getCleanTasks = getCleanTasks; /** * buildTask: {type: BeforeBuild|AfterBuild, order:number(default 100 for extension), task: () -> promise } */ function registerBuildTask(buildTask) { _registeredBuildTasks.push(buildTask); } exports.registerBuildTask = registerBuildTask; function getRegisteredBuildTasks() { return _registeredBuildTasks; } exports.getRegisteredBuildTasks = getRegisteredBuildTasks; function getExtensionInfo() { var result = {}; var filePath = utils.root('extension.json'); if (fs.existsSync(filePath)) { try { result = require(filePath); } catch (err) { console.log(err); } } return result; } exports.getExtensionInfo = getExtensionInfo; function getTSConfig() { if (_tsconfig === null) { let filePath = utils.root('tsconfig.json'); if (fs.existsSync(filePath)) { try { _tsconfig = require(filePath); } catch (err) { console.log(err); } } } return _tsconfig; } exports.getTSConfig = getTSConfig; function getWebpackResolveModules() { if (_webpackResolveModules === null) { _webpackResolveModules = ['node_modules']; let tsconfigInfo = getTSConfig(); if (tsconfigInfo && tsconfigInfo.compilerOptions && tsconfigInfo.compilerOptions.baseUrl) { _webpackResolveModules = [tsconfigInfo.compilerOptions.baseUrl, 'node_modules']; } } return _webpackResolveModules; } exports.getWebpackResolveModules = getWebpackResolveModules; function getWebpackResolveAlias() { if (_webpackResolveAlias === null) { _webpackResolveAlias = {}; let tsconfigInfo = getTSConfig(); if (tsconfigInfo && tsconfigInfo.compilerOptions && tsconfigInfo.compilerOptions.baseUrl && tsconfigInfo.compilerOptions.paths) { Object.keys(tsconfigInfo.compilerOptions.paths).forEach(path => { if (path === "*") { throw new Error(`Error, tsconfig.json -> tooling not support config path format '*': ${path} : ${tsconfigInfo.compilerOptions.paths[path]}`); } if (tsconfigInfo.compilerOptions.paths[path].length > 1) { throw new Error(`Error, tsconfig.json -> tooling not support multiple paths in array: ${path} : ${tsconfigInfo.compilerOptions.paths[path]}`); } let alias = path.indexOf("/*") > -1 ? path.replace("/*", "") : path + "$"; _webpackResolveAlias[alias] = utils.root(`${tsconfigInfo.compilerOptions.baseUrl}/${tsconfigInfo.compilerOptions.paths[path][0].replace("/*", "").replace("*", "")}`); }); } } return _webpackResolveAlias; } exports.getWebpackResolveAlias = getWebpackResolveAlias; function getEnviromentInfo() { var result = {}; var filePath = utils.root('environment.json'); if (fs.existsSync(filePath)) { try { result = require(filePath); } catch (err) { console.log(err); } } return result; } exports.getEnviromentInfo = getEnviromentInfo; function getConfig(path) { var filePath = (process.cwd().replace(/\\/g, "/") + "/" + path).replace(/\/\//g, "/"); if (fs.existsSync(filePath)) { try { return require(filePath); } catch (err) { console.log('have an exception when load ' + filePath + ' : ' + err); } } return null; } exports.getConfig = getConfig; function loadFile(path) { var filePath = (process.cwd() + "/" + path).replace(/\\/g, "/").replace(/\/\//g, "/"); if (fs.existsSync(filePath)) { try { return require(filePath); } catch (err) { console.log('have an exception when load ' + filePath + ' : ' + err); } } return null; } exports.loadFile = loadFile; function registerTsNode() { registerTSConfig(); //const { register } = require('esbuild-register/dist/node') //const { unregister } = register({ //}) // trigger ts //require("ts-node").register({ // transpileOnly: true, // typeCheck: false, // files: false //}); } exports.registerTsNode = registerTsNode; function registerTSConfig() { let tsConfigOptions = getTSConfig(); if (tsConfigOptions && tsConfigOptions.compilerOptions && tsConfigOptions.compilerOptions.baseUrl) { require("tsconfig-paths").register({ baseUrl: tsConfigOptions.compilerOptions.baseUrl, paths: tsConfigOptions.compilerOptions.paths || {} }); } } exports.registerTSConfig = registerTSConfig; class ResolvablePromise { constructor() { this._resolved = false; this._rejected = false; this.resolving = false; this.promise = new Promise((resolve, reject) => { this.resolve = (value) => { this.resolving = false; this._resolved = true; resolve(value); }; this.reject = (reason) => { this.resolving = false; this._rejected = true; reject(reason); }; }); } get resolved() { return this._resolved; } get rejected() { return this._rejected; } } exports.ResolvablePromise = ResolvablePromise;