UNPKG

@grnsft/if

Version:

Impact Framework

97 lines 12.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addExplainData = exports.explain = void 0; const utils_1 = require("@grnsft/if-core/utils"); const config_1 = require("../../common/config"); const logger_1 = require("../../common/util/logger"); const { ManifestValidationError } = utils_1.ERRORS; const { AGGREGATION_UNITS_NOT_MATCH, AGGREGATION_METHODS_NOT_MATCH, MISSING_INPUTS_PARAMETER, MISSING_OUTPUTS_PARAMETER, } = config_1.STRINGS; /** * Retrieves stored explain data. */ const explain = () => storeExplainData.plugins; exports.explain = explain; /** * Manages the storage of explain data. */ const storeExplainData = (() => { let plugins = {}; const pluginManager = { get plugins() { return plugins; }, set plugins(value) { plugins = value; }, }; return pluginManager; })(); /** * Adds new explain data to the stored explain data. */ const addExplainData = (params) => { const { pluginName, metadata } = params; const plugin = { [pluginName]: { inputs: metadata?.inputs ?? {}, outputs: metadata?.outputs ?? {}, }, }; const isInputsMissing = !Object.keys(plugin[pluginName].inputs || {}).length; const isOutputsMissing = !Object.keys(plugin[pluginName].outputs || {}) .length; if (isInputsMissing) { delete plugin[pluginName].inputs; logger_1.logger.warn(MISSING_INPUTS_PARAMETER(pluginName)); } if (isOutputsMissing) { delete plugin[pluginName].outputs; logger_1.logger.warn(MISSING_OUTPUTS_PARAMETER(pluginName)); } checkMetadatas(metadata); if (!isInputsMissing || !isOutputsMissing) { storeExplainData.plugins = { ...storeExplainData.plugins, ...plugin, }; } }; exports.addExplainData = addExplainData; /** * Checks if the 'unit' and 'aggregation-method' of the parameter are the same throughout the manifest */ const checkMetadatas = (metadata) => { const inputsOutputsMetadata = { ...metadata?.inputs, ...metadata?.outputs }; const storedParameters = {}; // Populate stored parameters with metadata from each plugin Object.values(storeExplainData.plugins).forEach(plugin => { const storedInputOutputMetadata = { ...plugin.inputs, ...plugin.outputs }; Object.keys(storedInputOutputMetadata).forEach(parameter => { if (!storedParameters[parameter]) { storedParameters[parameter] = { unit: storedInputOutputMetadata[parameter].unit, 'aggregation-method': storedInputOutputMetadata[parameter]['aggregation-method'], }; } }); }); // Validate input-output metadata against stored parameters Object.keys(inputsOutputsMetadata).forEach(parameterName => { const parameter = inputsOutputsMetadata[parameterName]; const storedParameter = storedParameters[parameterName]; if (parameter && Object.keys(storedParameters).includes(parameterName) && storedParameter.unit !== parameter.unit) { throw new ManifestValidationError(AGGREGATION_UNITS_NOT_MATCH(parameterName)); } // Check for aggregation-method mismatch const inputAggregation = parameter['aggregation-method']; if (storedParameter && (storedParameter['aggregation-method']?.component !== inputAggregation?.component || storedParameter['aggregation-method']?.time !== inputAggregation?.time)) { throw new ManifestValidationError(AGGREGATION_METHODS_NOT_MATCH(parameterName)); } }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1ydW4vbGliL2V4cGxhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQTZDO0FBRTdDLGdEQUE0QztBQUU1QyxxREFBZ0Q7QUFJaEQsTUFBTSxFQUFDLHVCQUF1QixFQUFDLEdBQUcsY0FBTSxDQUFDO0FBQ3pDLE1BQU0sRUFDSiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDMUIsR0FBRyxnQkFBTyxDQUFDO0FBRVo7O0dBRUc7QUFDSSxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7QUFBekMsUUFBQSxPQUFPLFdBQWtDO0FBRXREOztHQUVHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUM3QixJQUFJLE9BQU8sR0FBdUIsRUFBRSxDQUFDO0lBRXJDLE1BQU0sYUFBYSxHQUFHO1FBQ3BCLElBQUksT0FBTztZQUNULE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUF5QjtZQUNuQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7S0FDRixDQUFDO0lBRUYsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVMOztHQUVHO0FBQ0ksTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFxQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQXVCO1FBQ2pDLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDWixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxFQUFFO1lBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxJQUFJLEVBQUU7U0FDakM7S0FDRixDQUFDO0lBRUYs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QUUsU0FBUztnQkFDL0MsZ0JBQWdCLEVBQUUsU0FBUztnQkFDM0IsZUFBZSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxLQUFLLGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUN6RTtZQUNBLE1BQU0sSUFBSSx1QkFBdUIsQ0FDL0IsNkJBQTZCLENBQUMsYUFBYSxDQUFDLENBQzdDLENBQUM7U0FDSDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQYXJhbWV0ZXJNZXRhZGF0YX0gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3R5cGVzJztcbmltcG9ydCB7RVJST1JTfSBmcm9tICdAZ3Juc2Z0L2lmLWNvcmUvdXRpbHMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uLy4uL2NvbW1vbi9jb25maWcnO1xuXG5pbXBvcnQge2xvZ2dlcn0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvbG9nZ2VyJztcblxuaW1wb3J0IHtFeHBsYWluUGFyYW1zLCBFeHBsYWluU3RvcmFnZVR5cGV9IGZyb20gJy4uL3R5cGVzL2V4cGxhaW4nO1xuXG5jb25zdCB7TWFuaWZlc3RWYWxpZGF0aW9uRXJyb3J9ID0gRVJST1JTO1xuY29uc3Qge1xuICBBR0dSRUdBVElPTl9VTklUU19OT1RfTUFUQ0gsXG4gIEFHR1JFR0FUSU9OX01FVEhPRFNfTk9UX01BVENILFxuICBNSVNTSU5HX0lOUFVUU19QQVJBTUVURVIsXG4gIE1JU1NJTkdfT1VUUFVUU19QQVJBTUVURVIsXG59ID0gU1RSSU5HUztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgc3RvcmVkIGV4cGxhaW4gZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IGV4cGxhaW4gPSAoKSA9PiBzdG9yZUV4cGxhaW5EYXRhLnBsdWdpbnM7XG5cbi8qKlxuICogTWFuYWdlcyB0aGUgc3RvcmFnZSBvZiBleHBsYWluIGRhdGEuXG4gKi9cbmNvbnN0IHN0b3JlRXhwbGFpbkRhdGEgPSAoKCkgPT4ge1xuICBsZXQgcGx1Z2luczogRXhwbGFpblN0b3JhZ2VUeXBlID0ge307XG5cbiAgY29uc3QgcGx1Z2luTWFuYWdlciA9IHtcbiAgICBnZXQgcGx1Z2lucygpIHtcbiAgICAgIHJldHVybiBwbHVnaW5zO1xuICAgIH0sXG4gICAgc2V0IHBsdWdpbnModmFsdWU6IEV4cGxhaW5TdG9yYWdlVHlwZSkge1xuICAgICAgcGx1Z2lucyA9IHZhbHVlO1xuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIHBsdWdpbk1hbmFnZXI7XG59KSgpO1xuXG4vKipcbiAqIEFkZHMgbmV3IGV4cGxhaW4gZGF0YSB0byB0aGUgc3RvcmVkIGV4cGxhaW4gZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEV4cGxhaW5EYXRhID0gKHBhcmFtczogRXhwbGFpblBhcmFtcykgPT4ge1xuICBjb25zdCB7cGx1Z2luTmFtZSwgbWV0YWRhdGF9ID0gcGFyYW1zO1xuICBjb25zdCBwbHVnaW46IEV4cGxhaW5TdG9yYWdlVHlwZSA9IHtcbiAgICBbcGx1Z2luTmFtZV06IHtcbiAgICAgIGlucHV0czogbWV0YWRhdGE/LmlucHV0cyA/PyB7fSxcbiAgICAgIG91dHB1dHM6IG1ldGFkYXRhPy5vdXRwdXRzID8/IHt9LFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgaXNJbnB1dHNNaXNzaW5nID0gIU9iamVjdC5rZXlzKHBsdWdpbltwbHVnaW5OYW1lXS5pbnB1dHMgfHwge30pLmxlbmd0aDtcbiAgY29uc3QgaXNPdXRwdXRzTWlzc2luZyA9ICFPYmplY3Qua2V5cyhwbHVnaW5bcGx1Z2luTmFtZV0ub3V0cHV0cyB8fCB7fSlcbiAgICAubGVuZ3RoO1xuXG4gIGlmIChpc0lucHV0c01pc3NpbmcpIHtcbiAgICBkZWxldGUgcGx1Z2luW3BsdWdpbk5hbWVdLmlucHV0cztcblxuICAgIGxvZ2dlci53YXJuKE1JU1NJTkdfSU5QVVRTX1BBUkFNRVRFUihwbHVnaW5OYW1lKSk7XG4gIH1cblxuICBpZiAoaXNPdXRwdXRzTWlzc2luZykge1xuICAgIGRlbGV0ZSBwbHVnaW5bcGx1Z2luTmFtZV0ub3V0cHV0cztcblxuICAgIGxvZ2dlci53YXJuKE1JU1NJTkdfT1VUUFVUU19QQVJBTUVURVIocGx1Z2luTmFtZSkpO1xuICB9XG5cbiAgY2hlY2tNZXRhZGF0YXMobWV0YWRhdGEpO1xuXG4gIGlmICghaXNJbnB1dHNNaXNzaW5nIHx8ICFpc091dHB1dHNNaXNzaW5nKSB7XG4gICAgc3RvcmVFeHBsYWluRGF0YS5wbHVnaW5zID0ge1xuICAgICAgLi4uc3RvcmVFeHBsYWluRGF0YS5wbHVnaW5zLFxuICAgICAgLi4ucGx1Z2luLFxuICAgIH07XG4gIH1cbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSAndW5pdCcgYW5kICdhZ2dyZWdhdGlvbi1tZXRob2QnIG9mIHRoZSBwYXJhbWV0ZXIgYXJlIHRoZSBzYW1lIHRocm91Z2hvdXQgdGhlIG1hbmlmZXN0XG4gKi9cbmNvbnN0IGNoZWNrTWV0YWRhdGFzID0gKG1ldGFkYXRhOiB7XG4gIGlucHV0cz86IFBhcmFtZXRlck1ldGFkYXRhO1xuICBvdXRwdXRzPzogUGFyYW1ldGVyTWV0YWRhdGE7XG59KSA9PiB7XG4gIGNvbnN0IGlucHV0c091dHB1dHNNZXRhZGF0YSA9IHsuLi5tZXRhZGF0YT8uaW5wdXRzLCAuLi5tZXRhZGF0YT8ub3V0cHV0c307XG4gIGNvbnN0IHN0b3JlZFBhcmFtZXRlcnM6IGFueSA9IHt9O1xuXG4gIC8vIFBvcHVsYXRlIHN0b3JlZCBwYXJhbWV0ZXJzIHdpdGggbWV0YWRhdGEgZnJvbSBlYWNoIHBsdWdpblxuICBPYmplY3QudmFsdWVzKHN0b3JlRXhwbGFpbkRhdGEucGx1Z2lucykuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgIGNvbnN0IHN0b3JlZElucHV0T3V0cHV0TWV0YWRhdGEgPSB7Li4ucGx1Z2luLmlucHV0cywgLi4ucGx1Z2luLm91dHB1dHN9O1xuXG4gICAgT2JqZWN0LmtleXMoc3RvcmVkSW5wdXRPdXRwdXRNZXRhZGF0YSkuZm9yRWFjaChwYXJhbWV0ZXIgPT4ge1xuICAgICAgaWYgKCFzdG9yZWRQYXJhbWV0ZXJzW3BhcmFtZXRlcl0pIHtcbiAgICAgICAgc3RvcmVkUGFyYW1ldGVyc1twYXJhbWV0ZXJdID0ge1xuICAgICAgICAgIHVuaXQ6IHN0b3JlZElucHV0T3V0cHV0TWV0YWRhdGFbcGFyYW1ldGVyXS51bml0LFxuICAgICAgICAgICdhZ2dyZWdhdGlvbi1tZXRob2QnOlxuICAgICAgICAgICAgc3RvcmVkSW5wdXRPdXRwdXRNZXRhZGF0YVtwYXJhbWV0ZXJdWydhZ2dyZWdhdGlvbi1tZXRob2QnXSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gVmFsaWRhdGUgaW5wdXQtb3V0cHV0IG1ldGFkYXRhIGFnYWluc3Qgc3RvcmVkIHBhcmFtZXRlcnNcbiAgT2JqZWN0LmtleXMoaW5wdXRzT3V0cHV0c01ldGFkYXRhKS5mb3JFYWNoKHBhcmFtZXRlck5hbWUgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlciA9IGlucHV0c091dHB1dHNNZXRhZGF0YVtwYXJhbWV0ZXJOYW1lXTtcbiAgICBjb25zdCBzdG9yZWRQYXJhbWV0ZXIgPSBzdG9yZWRQYXJhbWV0ZXJzW3BhcmFtZXRlck5hbWVdO1xuXG4gICAgaWYgKFxuICAgICAgcGFyYW1ldGVyICYmXG4gICAgICBPYmplY3Qua2V5cyhzdG9yZWRQYXJhbWV0ZXJzKS5pbmNsdWRlcyhwYXJhbWV0ZXJOYW1lKSAmJlxuICAgICAgc3RvcmVkUGFyYW1ldGVyLnVuaXQgIT09IHBhcmFtZXRlci51bml0XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgTWFuaWZlc3RWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIEFHR1JFR0FUSU9OX1VOSVRTX05PVF9NQVRDSChwYXJhbWV0ZXJOYW1lKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgYWdncmVnYXRpb24tbWV0aG9kIG1pc21hdGNoXG4gICAgY29uc3QgaW5wdXRBZ2dyZWdhdGlvbiA9IHBhcmFtZXRlclsnYWdncmVnYXRpb24tbWV0aG9kJ107XG5cbiAgICBpZiAoXG4gICAgICBzdG9yZWRQYXJhbWV0ZXIgJiZcbiAgICAgIChzdG9yZWRQYXJhbWV0ZXJbJ2FnZ3JlZ2F0aW9uLW1ldGhvZCddPy5jb21wb25lbnQgIT09XG4gICAgICAgIGlucHV0QWdncmVnYXRpb24/LmNvbXBvbmVudCB8fFxuICAgICAgICBzdG9yZWRQYXJhbWV0ZXJbJ2FnZ3JlZ2F0aW9uLW1ldGhvZCddPy50aW1lICE9PSBpbnB1dEFnZ3JlZ2F0aW9uPy50aW1lKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IE1hbmlmZXN0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBBR0dSRUdBVElPTl9NRVRIT0RTX05PVF9NQVRDSChwYXJhbWV0ZXJOYW1lKVxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdfQ==