UNPKG

piral-cli

Version:

The standard CLI for creating and building a Piral instance or a Pilet.

86 lines 4.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runEmulatorPiralDefaults = void 0; exports.runEmulatorPiral = runEmulatorPiral; const os_1 = require("os"); const fs_1 = require("fs"); const path_1 = require("path"); const kras_1 = require("kras"); const types_1 = require("../types"); const common_1 = require("../common"); exports.runEmulatorPiralDefaults = { logLevel: types_1.LogLevels.info, open: common_1.config.openBrowser, port: common_1.config.port, strictPort: common_1.config.strictPort, registry: common_1.config.registry, npmClient: undefined, cert: undefined, allowSelfSigned: common_1.config.allowSelfSigned, }; function createTempDir() { const root = (0, path_1.join)((0, os_1.tmpdir)(), 'piral-cli-'); return new Promise((resolve, reject) => (0, fs_1.mkdtemp)(root, (err, dir) => { if (err) { reject(err); } else { resolve(dir); } })); } async function runEmulatorPiral(baseDir = process.cwd(), options = {}) { const { open = exports.runEmulatorPiralDefaults.open, port: originalPort = exports.runEmulatorPiralDefaults.port, strictPort = exports.runEmulatorPiralDefaults.strictPort, logLevel = exports.runEmulatorPiralDefaults.logLevel, npmClient: defaultNpmClient = exports.runEmulatorPiralDefaults.npmClient, registry = exports.runEmulatorPiralDefaults.registry, cert = exports.runEmulatorPiralDefaults.cert, allowSelfSigned = exports.runEmulatorPiralDefaults.allowSelfSigned, app, feed, } = options; (0, common_1.ensure)('baseDir', baseDir, 'string'); (0, common_1.ensure)('app', app, 'string'); const publicUrl = '/'; const api = common_1.config.piletApi; const fullBase = (0, path_1.resolve)(process.cwd(), baseDir); const baseMocks = (0, path_1.resolve)(fullBase, 'mocks'); (0, common_1.setLogLevel)(logLevel); (0, common_1.progress)('Reading configuration ...'); process.stderr?.setMaxListeners(16); process.stdout?.setMaxListeners(16); process.stdin?.setMaxListeners(16); const appRoot = await createTempDir(); const ca = await (0, common_1.getCertificate)(cert); const agent = (0, common_1.getAgent)({ ca, allowSelfSigned }); if (registry !== exports.runEmulatorPiralDefaults.registry) { (0, common_1.progress)(`Setting up npm registry (%s) ...`, registry); await (0, common_1.createFileIfNotExists)(appRoot, '.npmrc', `registry=${registry} always-auth=true`, common_1.ForceOverwrite.yes); } const npmClient = await (0, common_1.determineNpmClient)(appRoot, defaultNpmClient); const packageName = await (0, common_1.installPiralInstance)(app, fullBase, appRoot, npmClient, agent); const piral = await (0, common_1.findPiralInstance)(packageName, appRoot, { port: originalPort }, agent); const port = await (0, common_1.getAvailablePort)(piral.port, strictPort); const krasBaseConfig = (0, path_1.resolve)(fullBase, kras_1.krasrc); const krasRootConfig = (0, path_1.resolve)(appRoot, kras_1.krasrc); const initial = (0, common_1.createInitialKrasConfig)(baseMocks, [], { [api]: '' }, feed); const required = { injectors: { piral: { active: false, }, pilet: { active: true, pilets: [], app: (0, path_1.dirname)(piral.app), publicUrl, handle: [publicUrl, api], api, }, }, }; const configs = [krasBaseConfig, krasRootConfig]; const krasConfig = (0, kras_1.readKrasConfig)({ port, initial, required }, ...configs); (0, common_1.log)('generalVerbose_0004', `Using kras with configuration: ${JSON.stringify(krasConfig, undefined, 2)}`); const krasServer = (0, kras_1.buildKrasWithCli)(krasConfig); krasServer.setMaxListeners(16); krasServer.removeAllListeners('open'); krasServer.on('open', (0, common_1.notifyServerOnline)(publicUrl, krasConfig.api)); await krasServer.start(); (0, common_1.openBrowser)(open, port, publicUrl, !!krasConfig.ssl); await new Promise((resolve) => krasServer.on('close', resolve)); } //# sourceMappingURL=run-emulator-piral.js.map