@coat/cli
Version:
TODO: See #3
71 lines (69 loc) • 2.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.validateCoatManifest = validateCoatManifest;
var _validateCoatManifestScripts = require("./validate-coat-manifest-scripts");
var _validationIssue = require("../validation-issue");
var _validateCoatManifestDependencies = require("./validate-coat-manifest-dependencies");
var _validateCoatManifestExtends = require("./validate-coat-manifest-extends");
var _validateCoatManifestFiles = require("./validate-coat-manifest-files");
var _validateCoatManifestName = require("./validate-coat-manifest-name");
var _validateCoatManifestSetup = require("./validate-coat-manifest-setup");
var _handleUnknownProperties = require("../handle-unknown-properties");
/**
* Validates a coat manifest or template
*
* @param coatManifest The coat manifest or template object
* @param options.isTemplate Whether `coatManifest` is a template
* @returns A generator that returns ValidationIssues
*/
function* validateCoatManifest(coatManifest, {
isTemplate
} = {}) {
if (typeof coatManifest !== "object" || Array.isArray(coatManifest) || coatManifest === null) {
const message = isTemplate ? "The coat template must be a valid object." : "The coat manifest file must contain a valid JSON object.";
yield {
type: _validationIssue.ValidationIssueType.Error,
message,
propertyPath: [],
shortMessage: message
};
return;
}
// Ensure that coat templates are not returning
// promises and run synchronously
if ("then" in coatManifest && typeof coatManifest.then === "function") {
// isTemplate === true is implied,
// since the coat manifest is a JSON file and can't be a promise.
const message = "The coat template resolved to a promise. Template functions must return the template synchronously.";
yield {
type: _validationIssue.ValidationIssueType.Error,
message,
propertyPath: [],
shortMessage: message
};
return;
}
const {
name,
extends: extendsProp,
dependencies,
files,
scripts,
setup,
...additionalProps
} = coatManifest;
yield* (0, _validateCoatManifestName.validateCoatManifestName)(name);
yield* (0, _validateCoatManifestExtends.validateCoatManifestExtends)(extendsProp);
yield* (0, _validateCoatManifestDependencies.validateCoatManifestDependencies)(dependencies);
yield* (0, _validateCoatManifestFiles.validateCoatManifestFiles)(files);
yield* (0, _validateCoatManifestScripts.validateCoatManifestScripts)(scripts);
yield* (0, _validateCoatManifestSetup.validateCoatManifestSetup)(setup);
yield* (0, _handleUnknownProperties.handleUnknownProperties)({
allOptionalProps: ["name", "extends", "dependencies", "files", "scripts", "setup"],
declaredProps: Object.keys(coatManifest),
unknownProps: Object.keys(additionalProps),
propertyPrefixPath: []
});
}