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; |