UNPKG

baset-cli

Version:

CLI for BaseT project.

78 lines 3.34 kB
"use strict"; 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")); function groupPlugins(plugins) { const firstModule = plugins.slice(0, 1)[0]; const environment = resolveModule((firstModule.includes('-env-') && firstModule) || undefined); const firstImportIndex = Number(!!environment); const firstReaderIndex = plugins.findIndex(plugin => plugin.includes('-reader-')); const firstResolverIndex = plugins.findIndex(plugin => plugin.includes('-resolver-')); const imports = plugins.slice(firstImportIndex, firstReaderIndex).map(resolveModule); const readers = plugins.slice(firstReaderIndex, firstResolverIndex).map(resolveModule); const resolvers = plugins.slice(firstResolverIndex, -1).map(resolveModule); const baseliner = resolveModule(plugins.slice(-1)[0]); return { baseliner, environment, readers, resolvers, imports, isolateContext: false, mocks: {}, }; } function getDefaultPlugins(plugins) { const { baseliner, environment, readers = [], resolvers = [], imports = [], mocks = {}, isolateContext = false, } = plugins; return { baseliner: resolveModule(baseliner), environment: resolveModule(environment), readers: (Array.isArray(readers) ? readers : [readers]).map(resolveModule), resolvers: (Array.isArray(resolvers) ? resolvers : [resolvers]).map(resolveModule), imports: (Array.isArray(imports) ? imports : [imports]).map(resolveModule), mocks: Object.keys(mocks).reduce((result, mockName) => (Object.assign({}, result, { [mockName]: path_1.default.resolve(resolveModule(mocks[mockName])) })), {}), isolateContext, }; } function resolveModule(name) { return (name && !name.startsWith('.') && !name.startsWith('/')) ? `./node_modules/${name}` : name; } exports.options = { plugins: { alias: 'p', describe: 'Plugins used for your tests', default: { '.spec.js$': 'baset-baseliner-json' }, coerce: (plugins) => (Array.isArray(plugins)) // if plugins is Array, then we get this arg from cli ? plugins.reduce((result, plugin) => (Object.assign({}, result, { // regexp for spec // array of plugins [plugin.split(':')[0]]: groupPlugins(plugin.split(':').slice(1)) })), {}) // if not, then it defined in config : Object.keys(plugins).reduce( // we have to ensure that all values are in correct format (result, key) => { const plugin = plugins[key]; return Object.assign({}, result, { [key]: (Array.isArray(plugin)) ? groupPlugins(plugin) : (typeof plugin === 'string') ? groupPlugins([plugin]) : getDefaultPlugins(plugin) }); }, {}), }, options: { alias: 'o', describe: 'Options for plugins', default: {}, }, }; //# sourceMappingURL=index.js.map