/* eslint-disable */ /** * This file was automatically generated by scripts/manifest/validate-ts.mustache. * DO NOT MODIFY IT BY HAND. Instead, modify scripts/manifest/validate-ts.mustache, * and run node ./scripts/manifest/generateFormatTypes.js to regenerate this file. */ import { AnyBuildManifest, BuildManifestFormats } from "."; import BuildManifestSchema_0_1_0 from "@polywrap/polywrap-manifest-schemas/formats/polywrap.build/0.1.0.json"; import BuildManifestSchema_0_2_0 from "@polywrap/polywrap-manifest-schemas/formats/polywrap.build/0.2.0.json"; import BuildManifestSchema_0_3_0 from "@polywrap/polywrap-manifest-schemas/formats/polywrap.build/0.3.0.json"; import { Schema, Validator, ValidationError, ValidatorResult } from "jsonschema"; type BuildManifestSchemas = { [key in BuildManifestFormats]: Schema | undefined }; const schemas: BuildManifestSchemas = { // NOTE: Patch fix for backwards compatability "0.1": BuildManifestSchema_0_1_0, "0.1.0": BuildManifestSchema_0_1_0, "0.2.0": BuildManifestSchema_0_2_0, "0.3.0": BuildManifestSchema_0_3_0, }; const validator = new Validator(); export function validateBuildManifest( manifest: AnyBuildManifest, extSchema: Schema | undefined = undefined ): void { const schema = schemas[manifest.format as BuildManifestFormats]; if (!schema) { throw Error(`Unrecognized BuildManifest schema format "${manifest.format}"\nmanifest: ${JSON.stringify(manifest, null, 2)}`); } const throwIfErrors = (result: ValidatorResult) => { if (result.errors.length) { throw new Error([ `Validation errors encountered while sanitizing BuildManifest format ${manifest.format}`, ...result.errors.map((error: ValidationError) => error.toString()) ].join("\n")); } }; throwIfErrors(validator.validate(manifest, schema)); if (extSchema) { throwIfErrors(validator.validate(manifest, extSchema)); } }