andrewbober / xsd2jsonschema

A pure JavaScript library for translating complex XML Schemas into JSON Schemas.
https://www.xsd2jsonschema.org
Apache License 2.0
47 stars 25 forks source link

Error: true must be a number #31

Open JoelOnGithub opened 3 years ago

JoelOnGithub commented 3 years ago

When converting XSD schemas with xsd:positiveInteger or xsd:nonNegativeInteger, the converter will throw the error below.

Examples:

  <xsd:simpleType name="N9Type">
    <xsd:restriction base="xsd:nonNegativeInteger">
      <xsd:pattern value="\d{1,9}"/>
    </xsd:restriction>
  </xsd:simpleType>

    <xsd:attribute name="Volgnummer" type="xsd:positiveInteger" use="required"/>
node_modules/xsd2jsonschema/src/visitors/visitor.js:66
                        throw err;
                        ^

Error: true must be a number
    at JsonSchemaFileDraft07.set [as exclusiveMinimum] (xsd2json_library_issue/node_modules/xsd2jsonschema/src/propertyDefinable.js:122:12)
    at BuiltInTypeConverter.positiveInteger (xsd2json_library_issue/node_modules/xsd2jsonschema/src/builtInTypeConverter.js:547:31)
    at ConverterDraft07.createAttributeSchema (xsd2json_library_issue/node_modules/xsd2jsonschema/src/converterDraft04.js:220:58)
    at ConverterDraft07.handleAttributeLocal (xsd2json_library_issue/node_modules/xsd2jsonschema/src/converterDraft04.js:262:32)
    at ConverterDraft07.attribute (xsd2json_library_issue/node_modules/xsd2jsonschema/src/converterDraft04.js:297:16)
    at ConverterDraft07.process (xsd2json_library_issue/node_modules/xsd2jsonschema/src/converterDraft04.js:134:33)
    at BaseConversionVisitor.visit (xsd2json_library_issue/node_modules/xsd2jsonschema/src/visitors/visitor.js:60:26)
    at DepthFirstTraversal.walk (xsd2json_library_issue/node_modules/xsd2jsonschema/src/depthFirstTraversal.js:47:34)
    at DepthFirstTraversal.walk (xsd2json_library_issue/node_modules/xsd2jsonschema/src/depthFirstTraversal.js:52:12)
    at DepthFirstTraversal.walk (xsd2json_library_issue/node_modules/xsd2jsonschema/src/depthFirstTraversal.js:52:12)
joel@Joels-MacBook-Pro-2 xsd2json_library_issue % 

I am unsure if I fixed it, or if I just destroyed functionality by changing exclusiveMinimum from true to 0, everywhere in builtInTypeConverter.js.

/* old */
    negativeInteger(node, jsonSchema, xsd) {
        jsonSchema.type = JSON_SCHEMA_TYPES.INTEGER;
        jsonSchema.maximum = 0;
        jsonSchema.exclusiveMinimum = true;
        return true;
    }

/* new */
    negativeInteger(node, jsonSchema, xsd) {
        jsonSchema.type = JSON_SCHEMA_TYPES.INTEGER;
        jsonSchema.maximum = 0;
        jsonSchema.exclusiveMinimum = 0; // Replaced true with 0
        return true;
    }