{"_id":"@canastro/metamorphosis","_rev":"3-0c910620a14791cc5bea63019b3ae12d","name":"@canastro/metamorphosis","description":"Apply transformations to your objects based on schemas","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@canastro/metamorphosis","version":"0.0.1","description":"Apply transformations to your objects based on schemas","main":"lib/schema-object.js","scripts":{"test":"istanbul cover ./node_modules/.bin/_mocha tests","test:dev":"mocha tests --recursive --watch"},"keywords":["schema","transform"],"author":{"name":"Ricardo Canastro"},"license":"ISC","devDependencies":{"chai":"^3.5.0","istanbul":"^0.4.5","mocha":"^3.1.2"},"gitHead":"f6d0dd62d450aff6f57e953db51f29234ab72472","_id":"@canastro/metamorphosis@0.0.1","_shasum":"bef5ee0e29e9ccbec56101c3eb942b3b09594766","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"canastro","email":"ricardocanastro@gmail.com"},"dist":{"shasum":"bef5ee0e29e9ccbec56101c3eb942b3b09594766","tarball":"https://registry.npmjs.org/@canastro/metamorphosis/-/metamorphosis-0.0.1.tgz","integrity":"sha512-vWgtVGd4OMlo31K0pBemDx1/zuBhgR+DXI8uP6T6K2Ql5Bq+o8s91rW7XKF7eZ4xyGBAPxFZp02J/waEvaXwtg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA8SWN5XWMB5hhZ+kLljdALqBn1wDfm/PsaixSH3x7mCAiB/CJVhiuAt8Wa3Gx2DxvsL2/LDEoZgULoZ3QKNbF7ZPg=="}]},"maintainers":[{"name":"canastro","email":"ricardocanastro@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/metamorphosis-0.0.1.tgz_1476629130399_0.6915728747844696"}}},"readme":"[![Travis CI CI](https://travis-ci.org/canastro/metamorphosis.svg?branch=master)](https://travis-ci.org/canastro/metamorphosis)\n\n# Metamorphosis\n\nMetamorphose is a library that allows you to transform your js objects on the fly by pre-defined schemas.\n\n# Features\n* Extend schemas\n* Default values\n* Nested schemas\n* Transformations\n* Dot notation\n* Type validation (work in progress)\n\n# Example\nHere is a simple example that tries to include most of the features of metamorphosis:\n\n## Schema Definition\n    const Base = new SchemaObject({\n        brand: {\n            type: String,\n            key: 'brand',\n            transform: (brand) => brand.toUpperCase()\n        },\n        isPrivate: 'isPrivate'\n    });\n\n    const Spec = new SchemaObject({\n        size: {\n            key: 'size',\n            transform: (size) => `${size}\"`\n        },\n        connectors: {\n            key: ':root',\n            transform: (tv) => (tv.videoConnectors + tv.audioConnectors).split(', ')\n        }\n    });\n\n    const Tv = Base.extends({\n        specs: { key: ':root', type: Spec },\n        price: { key: 'price', defaults: 'N/A' },\n        internetConnection: {\n            key: 'others.hasInternetConnection',\n            transform: (value) => value ? 'check' : 'not check'\n        }\n    });\n\n## Original Object\n    const original = {\n        brand: 'Grundig',\n        thisShouldBeIgnored: 'HEY',\n        isPrivate: true,\n        size: 42,\n        quality: 'Full HD',\n        others: { hasInternetConnection: true },\n        videoConnectors: '1 x Coaxial Digital Audio, 1 x Component Video, 1 x Composite Video, 2 x HDMI',\n        audioConnectors: '1 x Headphone, 1 x PC Audio In, 1 x RCA Audio L+R'\n    };\n\n## Apply schema\n\n    const result = Tv.create(original);\n\n## Output\n\n    {\n        brand: 'GRUNDIG',\n        isPrivate: true,\n        price: 'N/A',\n        specs: {\n            size: '42\"',\n            connectors: [\n                '1 x Coaxial Digital Audio',\n                '1 x Component Video',\n                '1 x Composite Video',\n                '2 x HDMI1 x Headphone',\n                '1 x PC Audio In',\n                '1 x RCA Audio L+R'\n            ]\n        },\n        internetConnection: 'check'\n    }\n","maintainers":[{"name":"canastro","email":"ricardocanastro@gmail.com"}],"time":{"modified":"2022-06-12T15:38:30.276Z","created":"2016-10-16T14:45:31.952Z","0.0.1":"2016-10-16T14:45:31.952Z"},"keywords":["schema","transform"],"author":{"name":"Ricardo Canastro"},"license":"ISC","readmeFilename":"README.md"}