UNPKG

@tinymce/beehive-flow

Version:

A CLI tool implementing the beehive flow git branching process

78 lines 4.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldNotHavePreReleasePackages = exports.writePackageJsonFileWithNewVersion = exports.setVersion = exports.writePackageJsonFile = exports.toJson = exports.parsePackageJsonFileInFolder = exports.parsePackageJsonFile = exports.decode = exports.decodeE = exports.pjInFolder = exports.packageJsonCodec = exports.versionCodec = void 0; const tslib_1 = require("tslib"); const path = tslib_1.__importStar(require("path")); const function_1 = require("fp-ts/function"); const O = tslib_1.__importStar(require("fp-ts/Option")); const R = tslib_1.__importStar(require("fp-ts/Record")); const t = tslib_1.__importStar(require("io-ts")); const JsonUtils = tslib_1.__importStar(require("../utils/JsonUtils")); const PromiseUtils = tslib_1.__importStar(require("../utils/PromiseUtils")); const IotsUtils = tslib_1.__importStar(require("../utils/IotsUtils")); const PreRelease = tslib_1.__importStar(require("./PreRelease")); const Version = tslib_1.__importStar(require("./Version")); exports.versionCodec = new t.Type('versionCodec', // We don't need a type guard function, so just provide a dummy one that always fails (input) => false, IotsUtils.validateEither(Version.parseVersionE), Version.versionToString); const packageJsonCodec = () => { const mandatory = t.type({ name: t.string }); const partial = t.partial({ version: t.string.pipe(exports.versionCodec), workspaces: t.array(t.string), beehiveFlow: t.partial({ primaryWorkspace: t.string }), dependencies: t.record(t.string, t.string), devDependencies: t.record(t.string, t.string) }); return t.intersection([mandatory, partial]); }; exports.packageJsonCodec = packageJsonCodec; const pjInFolder = (folder) => path.join(folder, 'package.json'); exports.pjInFolder = pjInFolder; const decodeE = (j) => (0, exports.packageJsonCodec)().decode(j); exports.decodeE = decodeE; const decode = async (j) => PromiseUtils.eitherToPromise((0, exports.decodeE)(j)); exports.decode = decode; const parsePackageJsonFile = (file) => JsonUtils.parseJsonFile(file).then(exports.decode); exports.parsePackageJsonFile = parsePackageJsonFile; const parsePackageJsonFileInFolder = (folder) => (0, exports.parsePackageJsonFile)((0, exports.pjInFolder)(folder)); exports.parsePackageJsonFileInFolder = parsePackageJsonFileInFolder; const toJson = (pj) => (0, exports.packageJsonCodec)().encode(pj); exports.toJson = toJson; const writePackageJsonFile = (file, pj) => JsonUtils.writeJsonFile(file, (0, exports.toJson)(pj)); exports.writePackageJsonFile = writePackageJsonFile; const setVersion = (pj, version) => ({ ...pj, version: O.toUndefined(version) }); exports.setVersion = setVersion; const writePackageJsonFileWithNewVersion = async (pj, newVersion, pjFile) => { console.log(`Setting version in ${pjFile} to: ${Version.versionToString(newVersion)}`); const newPj = (0, exports.setVersion)(pj, O.some(newVersion)); await (0, exports.writePackageJsonFile)(pjFile, newPj); return newPj; }; exports.writePackageJsonFileWithNewVersion = writePackageJsonFileWithNewVersion; const hasPreReleaseDependency = (version) => version.includes('-' + PreRelease.releaseCandidate) || version.includes('-' + PreRelease.featureBranch) || version.includes('-' + PreRelease.hotfixBranch) || version.includes('-' + PreRelease.spikeBranch) || version.includes('-spike'); // Legacy spike branch prefix const lookupDeps = (pj, name, filter) => (0, function_1.pipe)(O.fromNullable(pj[name]), O.getOrElse(() => ({})), R.filterWithIndex(filter)); const shouldNotHavePreReleasePackages = async (pj) => { const getInvalidDeps = (dependencies) => (0, function_1.pipe)(dependencies, R.filter(hasPreReleaseDependency), R.keys); const invalidDeps = getInvalidDeps({ ...lookupDeps(pj, 'dependencies', () => true), ...lookupDeps(pj, 'devDependencies', (key) => key === '@tinymce/beehive-flow') }); if (invalidDeps.length > 0) { const names = invalidDeps.join(', '); return PromiseUtils.fail(`Pre-release versions were found for: ${names}`); } }; exports.shouldNotHavePreReleasePackages = shouldNotHavePreReleasePackages; //# sourceMappingURL=PackageJson.js.map