diff options
Diffstat (limited to 'ext/js/data')
| -rw-r--r-- | ext/js/data/json-schema.js | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/ext/js/data/json-schema.js b/ext/js/data/json-schema.js index 7b6b9c53..6a590911 100644 --- a/ext/js/data/json-schema.js +++ b/ext/js/data/json-schema.js @@ -103,8 +103,12 @@ class JsonSchemaProxyHandler {      }      deleteProperty(target, property) { -        const required = this._schema.required; -        if (Array.isArray(required) && required.includes(property)) { +        const required = ( +            (typeof target === 'object' && target !== null) ? +            (Array.isArray(target) || this._jsonSchemaValidator.isObjectPropertyRequired(this._schema, property)) : +            true +        ); +        if (required) {              throw new Error(`${property} cannot be deleted`);          }          return Reflect.deleteProperty(target, property); @@ -159,6 +163,11 @@ class JsonSchemaValidator {          this._regexCache.clear();      } +    isObjectPropertyRequired(schema, property) { +        const {required} = schema; +        return Array.isArray(required) && required.includes(property); +    } +      // Private      _getPropertySchema(schema, property, value, path) { |