npm install djvi

Dynamic Json Schema Instance
This package contains json-schema utility for instantiating models based on schema.
This is a part of djv packages aimed to work with json-schema. In future (~1 year) all djv packages will be unified into single package with djv scope.
For node - package is not minimized
```
npm install djvi
For browser
``
Use environment
`
var jsonSchema = {"common":{"properties":{"type":{"enum":["common"]}},"required":["type"]}};
var env = new djvi();
env.addSchema('test', jsonSchema);
env.instance('test#/common');
// => { type: 'common' }
`
JSON Schema instantiator should generate minimal object, valid to a given schema.
- not required properties will be ommitted
- maximum and minimum will be set up for given number
- primitives types are instantiated with default values
``
null: null
string: ''
boolean: false
number: 0
integer: 0
object: {}
array: []`
- not recursively changes negative schema to use different types
- anyOf and oneOf are solved with first property instance (for oneOf it should be also checked with single matching only - it is not implemented yet)
- simple dependency instantiates only for required fields
- items keyword instantiates an array with fit objects
- minItems, maxItems instantiates an array with default types
- Each instance is an unique object (Unless unique = false is not used)`
env.instance('test#/common') !== env.instance('test#/common')
Primitives types with default values
`
{"type":"number","default":100}
// => 100
{"type": "null"}
// => null
{"type": ["integer", "string"]}
// => 0
{"type": "array"}
// => []
`
All of types
``
{ "allOf":[
{"type":"object","properties":{"title":{"type":"string"}},"required":["title"]},
{"type":"object","properties":{"amount":{"type":"number","default":1}},"required":["amount"]}
]}
// => {"title":"","amount":1}
Items keywords should instantiate an array with objects
`
{"minItems": 1}
// => [{}]
{"items":[{"type":"integer"},{"type":"string"}]}
// => [0, ""]
`
instantiate an object that corresponds to a schema
``
env.instance('test#/common');
// => { type: 'common' }
add a schema to djvi environment
``
env.addSchema('test', jsonSchema);
removes a schema or the whole structure from djvi environment
``
env.removeSchema('test');
resolves name by existing environment
``
env.resolve('test');
// => { name: 'test', schema: {} }, fn: ... }
exports the whole structure object from environment or by resolved name
``
env.export();
// => { test: { name: 'test', schema: {}, ... } }
imports all found structure objects to internal environment structure
``
env.import(config);
returns { types, fieldTypes, fieldValidate, fieldFormat } generators that can be overridden for use cases
``
env.utils();
- add allOf and other cases to not schemaoneOf` complex example/generator
- add
- add regexp instantiate (pattern and patternProperties tests)
- add uniqueItems custom logic
- add format generators
- move tests to separated repo/package
- JSON Schema wiki
- JSON schema specification
- djv
- djvu
- JSON Schema Instantiator tests