UNPKG

@coat/cli

Version:

TODO: See #3

71 lines (69 loc) 2.89 kB
"use strict"; 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: [] }); }