UNPKG

mihawk

Version:

A tiny & simple mock server tool, support json,js,cjs,ts(typescript).

97 lines (96 loc) 5.34 kB
'use strict'; 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const color_cc_1 = __importDefault(require("color-cc")); const fs_extra_1 = require("fs-extra"); const consts_1 = require("../../src/consts"); const cli_1 = require("../../src/utils/cli"); const rc_1 = require("../../src/composites/rc"); const print_1 = require("../../src/utils/print"); const init_file_1 = require("../../src/composites/init-file"); const obj_1 = require("../../src/utils/obj"); const callback = function init() { return __awaiter(this, void 0, void 0, function* () { const configFileName = `.${consts_1.PKG_NAME}rc`; yield initRootConfigFileViaCli(configFileName); const curConfig = yield (0, rc_1.getRcData)(configFileName); const { mockDir, mockLogicFileType } = curConfig || {}; yield (0, init_file_1.initMockDataDir)(mockDir); yield (0, init_file_1.initMockRoutesFile)(mockLogicFileType, mockDir); yield (0, init_file_1.initMockMiddlewareFile)(mockLogicFileType, mockDir); console.log(); }); }; exports.default = callback; function initRootConfigFileViaCli(configFileName) { return __awaiter(this, void 0, void 0, function* () { configFileName = configFileName.replace(/^\.+/, '.'); const config = Object.assign({}, consts_1.DEFAULT_RC); let hasRcExisted = false; let existedExt = ''; for (const ext of ['json', 'js', 'ts']) { const rcFilePath = path_1.default.join(consts_1.CWD, `./${configFileName}.${ext}`); if ((0, fs_extra_1.existsSync)(rcFilePath)) { hasRcExisted = true; existedExt = ext; break; } } if (hasRcExisted) { print_1.Printer.log(`RC-file ${color_cc_1.default.yellow(`${configFileName}.${existedExt}`)} is already existed, skip init!`); return; } config.host = yield (0, cli_1.inputTxtInCLI)('type in host', consts_1.DEFAULT_RC.host); config.port = yield (0, cli_1.inputNumInCLI)('type in port', { initial: consts_1.DEFAULT_RC.port, min: 1024, max: 10000 }); config.https = consts_1.DEFAULT_RC.https; config.cors = yield (0, cli_1.confirmInCLI)('enable cors?', consts_1.DEFAULT_RC.cors); config.cache = yield (0, cli_1.confirmInCLI)('enable file cache?', consts_1.DEFAULT_RC.cache); config.watch = yield (0, cli_1.confirmInCLI)('enable file watch?', consts_1.DEFAULT_RC.watch); config.mockDir = yield (0, cli_1.inputTxtInCLI)('type in mock data directory', consts_1.MOCK_DIR_NAME); config.mockDataFileType = yield (0, cli_1.singleSelectInCli)('select mock data json file type', [ { title: 'json', value: 'json' }, { title: 'json5', value: 'json5', selected: true }, ], 0); config.mockLogicFileType = (yield (0, cli_1.singleSelectInCli)('select mock data logic file type (dafault none)', [ { title: 'none', value: 'none' }, { title: 'js(javascript)', value: 'js' }, { title: 'cjs(same as js, with .cjs ext)', value: 'cjs' }, { title: 'ts(typescript)', value: 'ts' }, ], 0)); if (config.mockLogicFileType === 'typescript' || config.mockLogicFileType === 'ts') { const defTsConfigPath = path_1.default.join(config.mockDir, './tsconfig.json'); if (defTsConfigPath && (0, fs_extra_1.existsSync)(defTsConfigPath)) { config.tsconfigPath = yield (0, cli_1.inputTxtInCLI)(`type in tsconfig.json filepath`, defTsConfigPath); } } if (config.mockLogicFileType !== 'none') { config.autoCreateMockLogicFile = yield (0, cli_1.confirmInCLI)('Auto create mock logic file(js|cjs|ts)?', consts_1.DEFAULT_RC.autoCreateMockLogicFile); } (0, obj_1.delNillProps)(config); const configFileExt = 'json'; const configFileNameWithExt = `${configFileName}.${configFileExt}`; print_1.Printer.log('Will init rc file, like below:', config); yield (0, rc_1.initRCfile)(configFileName, { fileType: configFileExt, initConfig: config, overwrite: true, tsInfo: { typeImportId: `${consts_1.PKG_NAME}/com-types`, typeName: 'MihawkRC', }, }); print_1.Printer.log(color_cc_1.default.success(`Init ${configFileNameWithExt} success!`)); }); }