@atlasrender/render-plugin
Version:
Atlas Render Farm Manager plugin system.
47 lines • 1.72 kB
JavaScript
;
/*
* Copyright (c) 2020. This code created and belongs to Pathfinder render manager project.
* Owner and project architect: Danil Andreev | danssg08@gmail.com | https://github.com/DanilAndreev
* File creator: Danil Andreev
* Project: atlas-render-plugin
* File last modified: 11/16/20, 2:57 PM
* All rights reserved.
*/
Object.defineProperty(exports, "__esModule", { value: true });
const ValidationError_1 = require("../errors/ValidationError");
/**
* SettingsPayload - class for validating and constructing plugin setting payload from input data.
* @class
* @author Danil Andreev
*/
class SettingsPayload {
/**
* Creates an instance of SettingsPayload.
* @param spec - Plugin settings payload spec. Need to validate input data and convert is to correct payload.
* @param payload - Any payload to validate and convert.
* @throws ValidationError
* @author Danil Andreev
*/
constructor(spec, payload) {
this.spec = spec;
const validationError = new ValidationError_1.default("Invalid payload.");
const interpreted = spec.reduce((result, token) => {
try {
result[token.name] = token.validatePayload(payload[token.name]);
}
catch (error) {
if (!(error instanceof ValidationError_1.default))
throw error;
validationError.addNested(error);
}
finally {
return result;
}
}, {});
if (validationError.hasErrors())
throw validationError;
this.payload = interpreted;
}
}
exports.default = SettingsPayload;
//# sourceMappingURL=SettingsPayload.js.map