Warning
This project has been deprecated in favor of @normalized-db/ndb.
Normalize JavaScript objects based on a simple schema (implemented with TypeScript).
- Author: Sandro Schmid (saseb.schmid@gmail.com)
- Version: 2.5.0-beta.4
To ease versioning equal major and minor version numbers are used for all modules.
Install using NPM:
npm install --save @normalized-db/normalizer
Use the NormalizerBuilder to create a Normalizer. Use either schema(…) or schemaConfig(…) to apply a
schema configuration. This is the only required parameter.
Due to references between objects the normalizer needs them
to have keys, this is why you should define a UniqueKeyCallback which generates such keys. Note that these will also
be used for persisting the normalized data by @normalized-db/data-store.
Using reverse references will generate a _refs-field on objects. E.g. normalizing an object like
const schema: ISchemaConfig = {
  _defaults: { key: 'id' },
  parentType: {
    targets: {
      foo: 'childType'
    }
  },
  childType: true
}
const parent: ParentType = { 
  id: 'parent',
  foo: { 
    id: 'child', 
    bar: 123
  }
}would result in
const normalizedChild: ChildType = { 
  id: 'child', 
  bar: 123, 
  _refs: { 
    parentType: Set<string>(['parent'])
  }
}A more detailed example for a ISchemaConfig and normalization input/output can be found in the
core-module's README.
See the examples-project for detailed examples: