UNPKG

vtex

Version:

The platform for e-commerce apps

67 lines (66 loc) 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupTSConfig = void 0; const tslib_1 = require("tslib"); const ramda_1 = tslib_1.__importDefault(require("ramda")); const Builder_1 = require("../../api/clients/IOClients/apps/Builder"); const ErrorKinds_1 = require("../../api/error/ErrorKinds"); const ErrorReport_1 = require("../../api/error/ErrorReport"); const logger_1 = tslib_1.__importDefault(require("../../api/logger")); const utils_1 = require("./utils"); const selectTSConfig = (tsconfigsFromBuilder, version, builder) => { const builderTSConfig = ramda_1.default.prop(builder, tsconfigsFromBuilder); if (builderTSConfig && ramda_1.default.has(version, builderTSConfig)) { return ramda_1.default.prop(version, builderTSConfig); } return null; }; const getTSConfig = async () => { try { const builderClient = Builder_1.Builder.createClient({}, { retries: 3, timeout: 10000 }); logger_1.default.info(`Fetching BuilderHub tsconfig`); return await builderClient.builderHubTsConfig(); } catch (err) { logger_1.default.error('Failed to get BuilderHub tsconfig'); throw err; } }; exports.setupTSConfig = async (manifest, warnOnNoBuilderCandidate) => { logger_1.default.info(`Setting up tsconfig.json`); try { const tsconfigsFromBuilder = await getTSConfig(); if (!tsconfigsFromBuilder) { if (warnOnNoBuilderCandidate) { logger_1.default.warn(`No builders candidates for TSConfig setup`); } return; } const buildersWithBaseTSConfig = ramda_1.default.compose(ramda_1.default.reject(ramda_1.default.isNil), ramda_1.default.mapObjIndexed(ramda_1.default.curry(selectTSConfig)(tsconfigsFromBuilder)), ramda_1.default.prop('builders'))(manifest); ramda_1.default.mapObjIndexed((baseTSConfig, builder) => { let currentTSConfig = {}; try { currentTSConfig = utils_1.tsconfigEditor.read(builder); } catch (e) { if (e.code === 'ENOENT') { logger_1.default.warn(`No tsconfig.json found in ${utils_1.tsconfigEditor.path(builder)}. Generating one...`); } else { throw e; } } const newTSConfig = ramda_1.default.mergeDeepRight(currentTSConfig, baseTSConfig); logger_1.default.info(`Merging BuilderHub ${builder} tsconfig with local ${builder} tsconfig`); utils_1.tsconfigEditor.write(builder, newTSConfig); })(buildersWithBaseTSConfig); logger_1.default.info('Finished setting up tsconfig.json'); } catch (err) { logger_1.default.error('Failed setting up tsconfig.json'); ErrorReport_1.ErrorReport.createAndMaybeRegisterOnTelemetry({ kind: ErrorKinds_1.ErrorKinds.SETUP_TSCONFIG_ERROR, originalError: err, }).logErrorForUser(); } };