@coat/cli
Version:
TODO: See #3
52 lines (48 loc) • 1.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getStrictCoatManifest = getStrictCoatManifest;
/**
* Adds empty objects for all dependency groups if necessary
*
* @param dependencies Dependencies from the coat manifest or template
*/
function getStrictDependencies(dependencies) {
return {
dependencies: (dependencies === null || dependencies === void 0 ? void 0 : dependencies.dependencies) ?? {},
devDependencies: (dependencies === null || dependencies === void 0 ? void 0 : dependencies.devDependencies) ?? {},
optionalDependencies: (dependencies === null || dependencies === void 0 ? void 0 : dependencies.optionalDependencies) ?? {},
peerDependencies: (dependencies === null || dependencies === void 0 ? void 0 : dependencies.peerDependencies) ?? {}
};
}
/**
* Adds all missing properties to a coat manifest or template file
* to access these properties safely in following code.
*
* @param coatManifest The manifest file that has been read from the disk
*/
function getStrictCoatManifest(coatManifest) {
let extendsEntries = [];
if (coatManifest.extends) {
if (typeof coatManifest.extends === "string") {
extendsEntries.push(coatManifest.extends);
} else {
extendsEntries = coatManifest.extends;
}
}
// TODO: See #18
// Validate all properties
// e.g. file type
// also check that it is not a promise
// (e.g. from importing and calling an async function)
const strictManifest = {
...coatManifest,
extends: extendsEntries,
files: coatManifest.files ?? [],
dependencies: getStrictDependencies(coatManifest.dependencies),
scripts: coatManifest.scripts ?? [],
setup: coatManifest.setup ?? []
};
return strictManifest;
}