36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", {
 | 
						|
  value: true
 | 
						|
});
 | 
						|
exports.default = void 0;
 | 
						|
/** @typedef {import("ajv").default} Ajv */
 | 
						|
/** @typedef {import("ajv").SchemaValidateFunction} SchemaValidateFunction */
 | 
						|
/** @typedef {import("ajv").AnySchemaObject} AnySchemaObject */
 | 
						|
/** @typedef {import("ajv").ValidateFunction} ValidateFunction */
 | 
						|
 | 
						|
/**
 | 
						|
 *
 | 
						|
 * @param {Ajv} ajv
 | 
						|
 * @returns {Ajv}
 | 
						|
 */
 | 
						|
function addUndefinedAsNullKeyword(ajv) {
 | 
						|
  ajv.addKeyword({
 | 
						|
    keyword: "undefinedAsNull",
 | 
						|
    before: "enum",
 | 
						|
    modifying: true,
 | 
						|
    /** @type {SchemaValidateFunction} */
 | 
						|
    validate(kwVal, data, metadata, dataCxt) {
 | 
						|
      if (kwVal && dataCxt && metadata && typeof metadata.enum !== "undefined") {
 | 
						|
        const idx = dataCxt.parentDataProperty;
 | 
						|
        if (typeof dataCxt.parentData[idx] === "undefined") {
 | 
						|
          // eslint-disable-next-line no-param-reassign
 | 
						|
          dataCxt.parentData[dataCxt.parentDataProperty] = null;
 | 
						|
        }
 | 
						|
      }
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
  });
 | 
						|
  return ajv;
 | 
						|
}
 | 
						|
var _default = exports.default = addUndefinedAsNullKeyword; |