@polywrap/wrap-manifest-types-js
Advanced tools
Comparing version
{ | ||
"id": "WrapManifest", | ||
"$id": "WrapManifest", | ||
"type": "object", | ||
@@ -32,9 +32,7 @@ "additionalProperties": false, | ||
"type": "string", | ||
"pattern": "^[a-zA-Z0-9\\-\\_]+$" | ||
"pattern": "^[a-zA-Z0-9-_]+$" | ||
}, | ||
"abi": { | ||
"description": "Information of modules", | ||
"id": "Abi", | ||
"type": "object", | ||
"unevaluatedProperties": false, | ||
"properties": { | ||
@@ -119,7 +117,5 @@ "version": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -155,7 +151,5 @@ "moduleDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -168,4 +162,3 @@ "interfaceImplementedDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -198,4 +191,3 @@ "methodDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
}, | ||
@@ -205,7 +197,5 @@ "return": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -240,7 +230,5 @@ "envDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -264,7 +252,5 @@ "interfaceDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -283,7 +269,5 @@ "capabilityDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
}, | ||
@@ -307,4 +291,3 @@ "importedDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
}, | ||
@@ -323,4 +306,3 @@ "importedObjectDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -352,7 +334,5 @@ "importedModuleDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -368,4 +348,3 @@ "importedEnumDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -378,4 +357,3 @@ "importedEnvDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -389,3 +367,2 @@ "withKind": { | ||
}, | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -401,4 +378,3 @@ "kind" | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
}, | ||
@@ -414,4 +390,3 @@ "propertyDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -442,7 +417,5 @@ "genericDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -482,7 +455,5 @@ "anyDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -500,7 +471,5 @@ "arrayDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -541,3 +510,2 @@ "item" | ||
}, | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -572,7 +540,5 @@ "type" | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -599,7 +565,5 @@ "type" | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -616,4 +580,3 @@ "key", | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -626,4 +589,3 @@ "enumRef": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -636,4 +598,3 @@ "unresolvedObjectOrEnumRef": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -646,4 +607,3 @@ "importedModuleRef": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
@@ -650,0 +610,0 @@ } |
@@ -7,3 +7,3 @@ /** | ||
import { AnyWrapManifest } from "."; | ||
import { Schema } from "jsonschema"; | ||
export declare function validateWrapManifest(manifest: AnyWrapManifest, extSchema?: Schema | undefined): Promise<void>; | ||
import { Schema } from "ajv"; | ||
export declare function validateWrapManifest(manifest: AnyWrapManifest, extSchema?: Schema | undefined): void; |
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (g && (g = 0, op[0] && (_ = 0)), _) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
var __read = (this && this.__read) || function (o, n) { | ||
@@ -75,7 +39,4 @@ var m = typeof Symbol === "function" && o[Symbol.iterator]; | ||
var _1 = require("."); | ||
var jsonschema_1 = require("jsonschema"); | ||
var json_schema_ref_parser_1 = require("@apidevtools/json-schema-ref-parser"); | ||
// Workaround: https://github.com/APIDevTools/json-schema-ref-parser/issues/139#issuecomment-940500698 | ||
var json_schema_ref_parser_2 = __importDefault(require("@apidevtools/json-schema-ref-parser")); | ||
json_schema_ref_parser_2.default.resolve = json_schema_ref_parser_2.default.resolve.bind(json_schema_ref_parser_2.default); | ||
var ajv_1 = __importDefault(require("ajv")); | ||
var ajv = new ajv_1.default({ strict: false }); | ||
var schemas = { | ||
@@ -86,7 +47,10 @@ // NOTE: Patch fix for backwards compatability | ||
}; | ||
function throwIfErrors(result, version) { | ||
if (result.errors.length) { | ||
function runValidation(schema, manifest) { | ||
var version = manifest.version; | ||
var validate = ajv.compile(schema); | ||
var valid = validate(manifest); | ||
if (!valid) { | ||
throw new Error(__spreadArray([ | ||
"Validation errors encountered while sanitizing WrapManifest version ".concat(version) | ||
], __read(result.errors.map(function (error) { return error.toString(); })), false).join("\n")); | ||
], __read(validate.errors.map(function (x) { return JSON.stringify(x, null, 2); })), false).join("\n")); | ||
} | ||
@@ -96,39 +60,12 @@ } | ||
if (extSchema === void 0) { extSchema = undefined; } | ||
return __awaiter(this, void 0, void 0, function () { | ||
var schema, refs, validator, resolveRefs; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
schema = schemas[manifest.version]; | ||
if (!schema) { | ||
throw new Error("Unrecognized WrapManifest schema version \"".concat(manifest.version, "\"\nmanifest: ").concat(JSON.stringify(manifest, null, 2))); | ||
} | ||
return [4 /*yield*/, (0, json_schema_ref_parser_1.resolve)(schema)]; | ||
case 1: | ||
refs = _a.sent(); | ||
validator = new jsonschema_1.Validator(); | ||
validator.addSchema(schema); | ||
resolveRefs = function () { | ||
var unresolvedRef = validator.unresolvedRefs.shift(); | ||
if (!unresolvedRef) | ||
return; | ||
var relRefIdx = unresolvedRef.indexOf("#"); | ||
var relRef = unresolvedRef.slice(relRefIdx); | ||
var resolvedSchema = refs.get(relRef); | ||
if (!resolvedSchema) | ||
throw new Error("Failed to resolve the ref: ".concat(relRef)); | ||
validator.addSchema(resolvedSchema, unresolvedRef); | ||
resolveRefs(); | ||
}; | ||
resolveRefs(); | ||
throwIfErrors(validator.validate(manifest, schema), manifest.version); | ||
if (extSchema) { | ||
throwIfErrors(validator.validate(manifest, extSchema), manifest.version); | ||
} | ||
return [2 /*return*/]; | ||
} | ||
}); | ||
}); | ||
var schema = schemas[manifest.version]; | ||
if (!schema) { | ||
throw new Error("Unrecognized WrapManifest schema version \"".concat(manifest.version, "\"\nmanifest: ").concat(JSON.stringify(manifest, null, 2))); | ||
} | ||
runValidation(schema, manifest); | ||
if (extSchema) { | ||
runValidation(extSchema, manifest); | ||
} | ||
} | ||
exports.validateWrapManifest = validateWrapManifest; | ||
//# sourceMappingURL=validate.js.map |
{ | ||
"name": "@polywrap/wrap-manifest-types-js", | ||
"description": "WRAP Manifest TypeScript Typings", | ||
"version": "0.10.1", | ||
"version": "0.11.0", | ||
"license": "MIT", | ||
@@ -18,8 +18,8 @@ "repository": { | ||
"dependencies": { | ||
"@apidevtools/json-schema-ref-parser": "9.0.9", | ||
"@polywrap/msgpack-js": "0.10.1", | ||
"jsonschema": "1.4.0", | ||
"@polywrap/msgpack-js": "0.11.0", | ||
"ajv": "8.12.0", | ||
"semver": "7.5.0" | ||
}, | ||
"devDependencies": { | ||
"@apidevtools/json-schema-ref-parser": "9.0.9", | ||
"@polywrap/os-js": "~0.10.0", | ||
@@ -39,3 +39,2 @@ "@polywrap/wrap-manifest-schemas": "0.9.7", | ||
}, | ||
"gitHead": "7346adaf5adb7e6bbb70d9247583e995650d390a", | ||
"publishConfig": { | ||
@@ -42,0 +41,0 @@ "access": "public" |
@@ -61,5 +61,2 @@ import path from "path"; | ||
const schemaOutputPath = path.join(wrapOutputDir, `${version}.schema.json`); | ||
os.writeFileSync(schemaOutputPath, JSON.stringify(bundledSchema, null ,2)); | ||
// Add metadata for the root index.ts file to use | ||
@@ -66,0 +63,0 @@ wrapModules.push({ |
@@ -103,3 +103,3 @@ import { WrapManifest, deserializeWrapManifest } from ".."; | ||
await expect(() => deserializeWrapManifest(manifest)).rejects.toThrow( | ||
/not allowed to have the additional property "not_accepted_field"/ | ||
/must NOT have additional properties"/ | ||
); | ||
@@ -115,3 +115,3 @@ }); | ||
await expect(() => deserializeWrapManifest(manifest)).rejects.toThrow( | ||
/instance requires property "name"/ | ||
/must have required property 'name'/ | ||
); | ||
@@ -127,3 +127,3 @@ }); | ||
await expect(() => deserializeWrapManifest(manifest)).rejects.toThrow( | ||
/instance.name does not match pattern/ | ||
/must match pattern/ | ||
); | ||
@@ -139,5 +139,5 @@ }); | ||
await expect(() => deserializeWrapManifest(manifest)).rejects.toThrow( | ||
/instance.abi is not of a type\(s\) object/ | ||
/must be object/ | ||
); | ||
}); | ||
}); |
{ | ||
"id": "WrapManifest", | ||
"$id": "WrapManifest", | ||
"type": "object", | ||
@@ -32,9 +32,7 @@ "additionalProperties": false, | ||
"type": "string", | ||
"pattern": "^[a-zA-Z0-9\\-\\_]+$" | ||
"pattern": "^[a-zA-Z0-9-_]+$" | ||
}, | ||
"abi": { | ||
"description": "Information of modules", | ||
"id": "Abi", | ||
"type": "object", | ||
"unevaluatedProperties": false, | ||
"properties": { | ||
@@ -119,7 +117,5 @@ "version": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -155,7 +151,5 @@ "moduleDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -168,4 +162,3 @@ "interfaceImplementedDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -198,4 +191,3 @@ "methodDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
}, | ||
@@ -205,7 +197,5 @@ "return": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -240,7 +230,5 @@ "envDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -264,7 +252,5 @@ "interfaceDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -283,7 +269,5 @@ "capabilityDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
}, | ||
@@ -307,4 +291,3 @@ "importedDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
}, | ||
@@ -323,4 +306,3 @@ "importedObjectDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -352,7 +334,5 @@ "importedModuleDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -368,4 +348,3 @@ "importedEnumDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -378,4 +357,3 @@ "importedEnvDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -389,3 +367,2 @@ "withKind": { | ||
}, | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -401,4 +378,3 @@ "kind" | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
}, | ||
@@ -414,4 +390,3 @@ "propertyDefinition": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -442,7 +417,5 @@ "genericDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -482,7 +455,5 @@ "anyDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -500,7 +471,5 @@ "arrayDefinition": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -541,3 +510,2 @@ "item" | ||
}, | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -572,7 +540,5 @@ "type" | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -599,7 +565,5 @@ "type" | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
], | ||
"unevaluatedProperties": false, | ||
"required": [ | ||
@@ -616,4 +580,3 @@ "key", | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -626,4 +589,3 @@ "enumRef": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -636,4 +598,3 @@ "unresolvedObjectOrEnumRef": { | ||
} | ||
], | ||
"unevaluatedProperties": false | ||
] | ||
}, | ||
@@ -646,4 +607,3 @@ "importedModuleRef": { | ||
} | ||
}, | ||
"unevaluatedProperties": false | ||
} | ||
} | ||
@@ -650,0 +610,0 @@ } |
@@ -14,13 +14,6 @@ /* eslint-disable */ | ||
import { | ||
Schema, | ||
Validator, | ||
ValidationError, | ||
ValidatorResult | ||
} from "jsonschema"; | ||
import { resolve, $Refs } from "@apidevtools/json-schema-ref-parser"; | ||
// Workaround: https://github.com/APIDevTools/json-schema-ref-parser/issues/139#issuecomment-940500698 | ||
import $RefParser from '@apidevtools/json-schema-ref-parser'; | ||
$RefParser.resolve = $RefParser.resolve.bind($RefParser); | ||
import Ajv, { Schema } from "ajv"; | ||
const ajv = new Ajv({ strict: false }); | ||
type WrapManifestSchemas = { | ||
@@ -37,7 +30,14 @@ [key in WrapManifestVersions]: Schema | undefined | ||
function throwIfErrors(result: ValidatorResult, version: string) { | ||
if (result.errors.length) { | ||
function runValidation( | ||
schema: Schema, | ||
manifest: AnyWrapManifest | ||
): void { | ||
const version = manifest.version; | ||
const validate = ajv.compile(schema); | ||
const valid = validate(manifest); | ||
if (!valid) { | ||
throw new Error([ | ||
`Validation errors encountered while sanitizing WrapManifest version ${version}`, | ||
...result.errors.map((error: ValidationError) => error.toString()) | ||
...((validate as any).errors as unknown[]).map((x) => JSON.stringify(x, null, 2)) | ||
].join("\n")); | ||
@@ -47,6 +47,6 @@ } | ||
export async function validateWrapManifest( | ||
export function validateWrapManifest( | ||
manifest: AnyWrapManifest, | ||
extSchema: Schema | undefined = undefined | ||
): Promise<void> { | ||
): void { | ||
const schema = schemas[manifest.version as WrapManifestVersions]; | ||
@@ -58,28 +58,7 @@ | ||
const refs: $Refs = await resolve(schema as any); | ||
runValidation(schema, manifest); | ||
const validator = new Validator(); | ||
validator.addSchema(schema); | ||
const resolveRefs = () => { | ||
const unresolvedRef = validator.unresolvedRefs.shift(); | ||
if (!unresolvedRef) return; | ||
const relRefIdx = unresolvedRef.indexOf("#"); | ||
const relRef = unresolvedRef.slice(relRefIdx); | ||
const resolvedSchema = refs.get(relRef); | ||
if (!resolvedSchema) throw new Error(`Failed to resolve the ref: ${relRef}`); | ||
validator.addSchema(resolvedSchema as Schema, unresolvedRef); | ||
resolveRefs(); | ||
} | ||
resolveRefs(); | ||
throwIfErrors(validator.validate(manifest, schema), manifest.version); | ||
if (extSchema) { | ||
throwIfErrors(validator.validate(manifest, extSchema), manifest.version); | ||
runValidation(extSchema, manifest); | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
3
-25%97372
-9.94%14
7.69%2390
-6.31%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated