nx-entities-maps
v0.1.1
Published
Contracts and validators for Entities Map protocols (links + transform)
Maintainers
Readme
nx-entities-maps
TypeScript contracts, builders, validators, and JSON Schemas for:
- Entities links protocol (
EntitiesMap) - Transform protocol (unchanged: service/application/objectType/externalKeys/merge.strategy/neoCollection/transform)
No IO or traversal logic.
Install
npm i nx-entities-mapsSchema accessors
import { getEntitiesMapSchema, getGraphMappingSchema } from 'nx-entities-maps';Validators
import { buildGraphMapping, validateGraphMapping } from 'nx-entities-maps';
const mapping = buildGraphMapping(obj);
validateGraphMapping(mapping);Full Examples
Protocol A: Transform mapping (unchanged)
{
"service": "google",
"application": "workspace",
"objectType": "Identity",
"externalKeys": ["id"],
"merge": { "strategy": "lastWriteWins" },
"neoCollection": "identities",
"transform": {
"primaryEmail": "emails.primary",
"name.givenName": "profile.firstName",
"name.familyName": "profile.lastName",
"organizations[0].department": "profile.department"
}
}Protocol B: Entities links map
{
"id": "[email protected]",
"links": [
{
"entityType": "Identity",
"properties": [
{
"propertyName": "managerId",
"propertyType": "string",
"linkedEntityType": "Identity",
"forceChildSync": false
},
{
"propertyName": "deviceIds",
"propertyType": "string[]",
"linkedEntityType": "Device",
"forceChildSync": true
}
]
},
{
"entityType": "Device",
"properties": [
{
"propertyName": "ownerId",
"propertyType": "string",
"linkedEntityType": "Identity",
"forceChildSync": false
}
]
}
]
}Demos
- demos/basic-validate
- demos/graph-validate
License
MIT
