UNPKG

@kintone/plugin-manifest-validator

Version:

[![npm version](https://badge.fury.io/js/%40kintone%2Fplugin-manifest-validator.svg)](https://badge.fury.io/js/%40kintone%2Fplugin-manifest-validator) ![Node.js version](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/k

39 lines 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkRequiredProperties = void 0; const checkRequiredProperties = (json, schema) => { if (!schema.items || schema.items.length === 0) { return []; } const missingProperties = []; schema.items.forEach((item) => { if (typeof item === "object") { missingProperties.push(...getMissingPropertiesInObjectItem(json, item)); } else if (isMissingProperty(json, item)) { missingProperties.push(item); } }); return missingProperties.map((property) => generateErrorMessage(property, schema.warn)); }; exports.checkRequiredProperties = checkRequiredProperties; const getMissingPropertiesInObjectItem = (json, items) => { const missingProperties = []; Object.keys(items).forEach((key) => { const properties = items[key].properties; if (!properties || properties.length === 0) { return; } properties.forEach((prop) => { if (isMissingProperty(json, key) || isMissingProperty(json[key], prop)) { missingProperties.push(`${key}.${prop}`); } }); }); return missingProperties; }; const isMissingProperty = (json, property) => { return !json[property]; }; const generateErrorMessage = (property, warning = false) => `Property "${property}" is ${warning ? "missing" : "required"}.`; //# sourceMappingURL=check-required-properties.js.map