{"_id":"@allgemein/projection","_rev":"2-8e14fc4c25e4e45e17fa757630e11709","name":"@allgemein/projection","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@allgemein/projection","version":"1.0.0","description":"Implemetation of mongo-like projections for objects.","main":"index.js","repository":{"type":"git","url":"git+https://github.com/thinkbaer/node-allgemein-projection.git"},"author":{"name":"Robert Kania"},"license":"MIT","keywords":["projection","mongo","object","transformation","mongo-projection"],"devDependencies":{"@allgemein/packaging":"^1.0.5","ts-node":"^6.2.0","tslint":"^5.20.0","typescript":"3.6.4","codelyzer":"^5.2.0","del":"^5.1.0","gulp":"^4.0.2","gulp-bump":"^3.1.3","gulp-clean":"^0.4.0","gulp-replace":"^1.0.0","gulp-shell":"^0.7.1","gulp-sourcemaps":"^2.6.5","gulp-typescript":"^5.0.1","merge-stream":"^2.0.0","mocha":"^6.2.2","mocha-typescript":"^1.1.17","chai":"^4.2.0","@types/mocha":"^5.2.7","@types/chai":"^4.2.4","@types/lodash":"^4.14.144"},"dependencies":{"lodash":"^4.17.15"},"private":false,"nyc":{"extension":[".ts",".tsx"],"exclude":["**/*.d.ts","tmp/","build/"],"require":["ts-node/register"],"sourceMap":true,"instrument":true,"cache":false,"reporter":["html","json","text"]},"bugs":{"url":"https://github.com/thinkbaer/node-allgemein-projection/issues"},"homepage":"https://github.com/thinkbaer/node-allgemein-projection#readme","_id":"@allgemein/projection@1.0.0","_nodeVersion":"10.16.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-eORWAb/CAnSCSTvzr1H19GBFDmG97UcZDEJw/8eGAlsaQVkhajdjfODXHQgjAYPU5/poedaEowcQSPY7c4rvmQ==","shasum":"0e1f0471d38e6e2330b3b242b38153ae32d7b75a","tarball":"https://registry.npmjs.org/@allgemein/projection/-/projection-1.0.0.tgz","fileCount":8,"unpackedSize":12631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdveRPCRA9TVsSAnZWagAASW0P/2QaBzwes3LQmynywJTk\n0CdachqgzMxL0rWtdYRgNkSybEfWUuR0b3C0VBZma1RsVoxMneF5hB1jvTou\nTtmHQm31k7eYgCAVRFRkkfmfwbGBaIlyQsjnNxFsg310S9xByATOS059zOKr\nlabNacxRpGtPV3PRRFG7gXhog0XHVIKQMnQ7NgTUpEdvlnjDqv/jcwxiN0rD\npDGp72oVEVKyAPYcyeb5DTconIPwPO9IN1amplocqGB6eQ3I8RNaWkONnl7+\nvQJfVrVWPoCDKM+s+WbJVocpsnKOHzzQIlOUYRmFS17V4nm1ZbJov/y+/fSq\nDK8qTqV5ATnEdAzm/av6Eppi2YGPZPB0L2gQSi7L/ya5cgRxAgN9W9XvN+R+\nrF+a+KJLBhvID/SiKr4O3dl+ptVb9pf8bgZAl9wwUljcgqjNVBj8dbSkqct/\nPfaS/OSAcFhFyzNOfo5vL2TVvkqKfZaJdzTm/xE53ppL8Du3iW8jhiSWiRsi\ng1+P7d2M+V5xGHgN0t17wc/R3fRpuQO+VFYQLlEtnFb5qL+3Qy+XhXVPWAPC\nL9BSOaABGAaDWnQ3apImEOLtALBlZjOdGXJo3SsoVIrr534PecDqzuxPcOWP\n23oi3MtJ4XsjSSr8f8SGKVazXqDpffje1Vt1qDK4fMzjDF15kKQVS2WMb4EC\nSpZT\r\n=yivb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdfQA8K4cynGYFZV30KOeUmDYYd4mlP/8Vgi6VE3vEYAiEAzx8W8M49FMnV1s2F+zwIsglb2SxlUdVZ/zBBBnkPyvI="}]},"maintainers":[{"name":"cezaryrk","email":"cezaryrk@yahoo.de"}],"_npmUser":{"name":"cezaryrk","email":"cezaryrk@yahoo.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/projection_1.0.0_1572725839012_0.2133188484378239"},"_hasShrinkwrap":false},"1.1.0":{"name":"@allgemein/projection","version":"1.1.0","description":"Implemetation of mongo-like projections for objects. (@see: https://docs.mongodb.com/manual/reference/operator/aggregation/)","main":"index.js","repository":{"type":"git","url":"git+https://github.com/thinkbaer/node-allgemein-projection.git"},"scripts":{"test":"nyc mocha --opts test/mocha.all.opts","posttest":"codecov -f coverage/*.json"},"author":{"name":"Robert Kania"},"license":"MIT","keywords":["projection","mongo","object","transformation","mongo-projection"],"devDependencies":{"@allgemein/packaging":"^1.0.5","@types/chai":"^4.2.4","@types/lodash":"^4.14.144","@types/mocha":"^5.2.7","chai":"^4.2.0","codelyzer":"^5.2.0","del":"^5.1.0","gulp":"^4.0.2","gulp-bump":"^3.1.3","gulp-clean":"^0.4.0","gulp-replace":"^1.0.0","gulp-shell":"^0.7.1","gulp-sourcemaps":"^2.6.5","gulp-typescript":"^5.0.1","merge-stream":"^2.0.0","mocha":"^6.2.2","mocha-typescript":"^1.1.17","nyc":"^14.1.1","ts-node":"^6.2.0","tslint":"^5.20.0","typescript":"3.6.4"},"dependencies":{"lodash":"^4.17.15"},"private":false,"nyc":{"extension":[".ts",".tsx"],"exclude":["**/*.d.ts","tmp/","build/"],"require":["ts-node/register"],"sourceMap":true,"instrument":true,"cache":false,"reporter":["html","json","text"]},"bugs":{"url":"https://github.com/thinkbaer/node-allgemein-projection/issues"},"homepage":"https://github.com/thinkbaer/node-allgemein-projection#readme","_id":"@allgemein/projection@1.1.0","_nodeVersion":"10.16.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-IEbykC9t97gUW0iibI/aH5sMl1JfpCqVqMHx4utMFk8QmjdHQJpnN+B65ghYidQXYBccm7kYi3eru8my4qNiqQ==","shasum":"943931d8d36b6ef29baa95f818cb40887ae0e519","tarball":"https://registry.npmjs.org/@allgemein/projection/-/projection-1.1.0.tgz","fileCount":62,"unpackedSize":57691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdvxiVCRA9TVsSAnZWagAA7egP/Ru1RXzYDHgH3VYLc6iC\nkfehAOLFwF1b6puSId2R+Biirzq2u0lTa3UhtlWYC7TpwrAYv/WYOP8nZf8P\nYb4ePNA0H3wu3wfC94XkzH44NHFMOT/jgb1xmOEPmI2fCqiBN66HoK+aflcA\ny7/lMAUlhcqI90On5fgK1Z0w1f1Rv4n5VEWW/sLHt7dnLlETOhP66WcxC8HH\n/T/iqfTzsx1vtnwhDo7Y214Yuwk51mW9LOfdm1VQqDBH7Owm35hgG7dJOc+x\nvZ/v92MXmHBbWyjdf+3c+seqgYBVBw2A4kn+OOh4LOhFguk+nBjBOl3sqygX\nTly5Y8dhXp1mchWH7NCCNoqo8QtLOnVBU73Lt2MSkzKZp8lWvq8pz97ZQMwk\nFk0pNmQtFISRu3wHn65V4I95cnH72ouLgriBNyjkykARsjCpT7FJYGIR4d4W\nb3ZterN7MuabhiLMumOR+HQhOVdeupelxlLSaNWeWmYKN7M5dF11syEl1I93\nzI4G4odforKOldqyOiZOFcP9dxdRJ110geD84lZ8Uw/0xuu6wYwv4u3PI93y\nNhNAKvKQnYX8M2XdXH15aRogAKWJPADpJKdsrIb5oe0LEQqLHLfPtd479H4u\nBj5Nq+Mvn7cKG8R6o2v0o2bl0nShKVKPPYP5jKZ9iSGp5OHZwvh/C5c3Cmls\nx7jn\r\n=qBV8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCc1CSoqZeAWXLwH050Y0qbEf3tu+WoAE0LMBkvSY4USgIgKp1wcU0pRNfttmgQ3X9W+caZIP8pFWfH67rLOwn3fh4="}]},"maintainers":[{"name":"cezaryrk","email":"cezaryrk@yahoo.de"}],"_npmUser":{"name":"cezaryrk","email":"cezaryrk@yahoo.de"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/projection_1.1.0_1572804757017_0.5723536579115298"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-02T20:17:18.832Z","1.0.0":"2019-11-02T20:17:19.177Z","modified":"2022-04-04T13:32:52.323Z","1.1.0":"2019-11-03T18:12:37.253Z"},"maintainers":[{"name":"cezaryrk","email":"cezaryrk@yahoo.de"}],"description":"Implemetation of mongo-like projections for objects. (@see: https://docs.mongodb.com/manual/reference/operator/aggregation/)","homepage":"https://github.com/thinkbaer/node-allgemein-projection#readme","keywords":["projection","mongo","object","transformation","mongo-projection"],"repository":{"type":"git","url":"git+https://github.com/thinkbaer/node-allgemein-projection.git"},"author":{"name":"Robert Kania"},"bugs":{"url":"https://github.com/thinkbaer/node-allgemein-projection/issues"},"license":"MIT","readme":"# node-allgemein-projection\n\nImplemetation of mongo-like projections for objects. (@see: https://docs.mongodb.com/manual/reference/operator/aggregation/)\n\n## Install \n\n```bash\nnpm i @allgemein/projection\n```\n\n## Example\n\n```javascript\nimport {projection} from '@allgemein/projection'; \n\nconst projDef = {surname: '$author.name'};\nconst input = {author: {name: 'Franz'}};\nconst res = projection(projDef, input);\n// => {surname: 'Franz'}\n\n```\n\n## Operators\n\n### String\n\n**substr** \n```javascript\nconst projDef = {\n  initial:{\n    $substr: ['$author.name',0,1]\n  }        \n};\nconst input = {author: {name: 'Franz'}};\nconst res = projection(projDef, input);\n// => {initial: 'F'}\n```\n\n**toInt** \n```javascript\nconst projDef = {\n  calc:{\n    $toInt: '$sum'\n  }        \n};\nconst input = {sum: '1'};\nconst res = projection(projDef, input);\n// => {sum: 1}\n```\n\n**toFloat** \n```javascript\nconst projDef = {\n  calc:{\n    $toFloat: '$sum'\n  }        \n};\nconst input = {sum: '1.5'};\nconst res = projection(projDef, input);\n// => {sum: 1.5}\n```\n\n**toLower** \n```javascript\nconst projDef = {\n  str:{\n    $toLower: '$text'\n  }        \n};\nconst input = {text: 'Hallo wOrld'};\nconst res = projection(projDef, input);\n// => {str: 'hallo world'}\n```\n\n**toUpper** \n```javascript\nconst projDef = {\n  str:{\n    $toUpper: '$text'\n  }        \n};\nconst input = {text: 'Hallo wOrld'};\nconst res = projection(projDef, input);\n// => {str: 'HALLO WORLD'}\n```\n\n\n### Array\n\n\n**map**\n```javascript\nconst def = {\n  myvar: {\n    $map: {\n      input: '$items',\n      as: 'i',\n      in: {number: '$$i'}\n    }\n  }\n};\nconst input = {\n  items: ['1', '2', '3']\n};\n\nconst p = new Projection(def);\nconst output = p.transform(input);\n// => {myvar: [{number: '1'},{number: '2'},{number: '3'}]}\n```\n\n**first**\n\nTODO\n\n**last**\n\nTODO\n","readmeFilename":"README.md"}