json-schema-merge-allof icon indicating copy to clipboard operation
json-schema-merge-allof copied to clipboard

Required resolver not being executed

Open danthegoodman1 opened this issue 1 year ago • 0 comments

eIt seems as if the required value resolved is not firing when mixing required and non-required values:

export function mergeSchemas(schemas: any[]) {
  return mergeAllOf({
    allOf: schemas,
  }, {
    resolvers: {
      type: (values) => {
        const finalType = []
        for (const value of values) {
          if (Array.isArray(value)) {
            finalType.push(...value)
          } else {
            finalType.push(value)
          }
        }
        return finalType as any
      },
      required: (values) => {
        console.log("required resolver", values)
        return false
      }
    }
  })
}

console.log(mergeSchemas([ {
			"type": "object",
			"properties": {
				"hey": {
					"type": "string",
					"required": true
				},
				"this": {
					"type": "number",
					"required": true
				},
				"is": {
					"type": "array",
					"items": {
						"type": "string",
						"required": true
					},
					"required": true
				}
			},
			"required": true
		},  {
			"type": "object",
			"properties": {
				"hey": {
					"type": "string"
				},
				"this": {
					"type": "number"
				},
				"is": {
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			}
		}]))

Outputs:

{
  type: 'object',
  required: true,
  properties: {
    hey: { type: 'string', required: true },
    this: { type: 'number', required: true },
    is: { type: 'array', required: true, items: [Object] }
  }
}

notice that:

  1. I am returning false always for the resolver
  2. There is no console logging of the required resolver line

danthegoodman1 avatar Mar 08 '23 02:03 danthegoodman1