{"_id":"@abdelrahman-elkady/partial-function-builder","_rev":"1-bee5b558fad8d8eb8878e80fca87c1d4","name":"@abdelrahman-elkady/partial-function-builder","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@abdelrahman-elkady/partial-function-builder","version":"1.0.0","description":"A helper function to build partially applied functions","main":"index.js","scripts":{"test":"jest","test:watch":"jest --watch"},"keywords":["function","builder","partial","helper","composition"],"author":{"name":"Abdelrahman Elkady","email":"elkadyabdelrahman@gmail.com","url":"https://abdelrahman-elkady.tech"},"license":"ISC","devDependencies":{"@abdelrahman-elkady/eslint-config":"^0.1.10","@types/jest":"^24.0.18","eslint":"^6.1.0","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","jest":"^24.9.0","jest-extended":"^0.11.2"},"gitHead":"4f1c6bbe7ff11b4c4d903b91074f0859fbcfb1f6","_id":"@abdelrahman-elkady/partial-function-builder@1.0.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-hmWxNY/xyv7/NsNCKIcwb/IOQMOeJxmbo+Z9U5cZuuZVsfXgz9PpDLUZquLtNTDThbJ5ZMyBlJfS9bK5JcQIdw==","shasum":"f178542715bfca98465b0a5c08c978169ef1cd6a","tarball":"https://registry.npmjs.org/@abdelrahman-elkady/partial-function-builder/-/partial-function-builder-1.0.0.tgz","fileCount":9,"unpackedSize":23994,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdo5ZVCRA9TVsSAnZWagAAXEQP/RDWeM3PgFrJRd98fKBk\nKISOD9dkIQCu4HozJC9w/eUnIsZYLr0w1cQD6lDLcecv4CG1QD096t233mrk\nRHKHrg0wsyWPPauzOyiHpYr14Ta3JrfmG829q2go/AiLq4rvUyL6qOXGCJz2\n2Lxte2LPPYa5DwvoGDgJx8WCJo4OZ5jO4XxWRJDEIKEsMfD9YrtwUKCSdwXa\nd4IVMf59qIm9VybDquU25eS4BGm7Kop+67M87iZ/6AGpkWUiSno1FOfnpVpu\nrrkrim0aEOpOvA0I0y4herARDhXJlvypBY33ha3es1pI7GUZMa4IzvHTlqYQ\ng+c80sKNsF4eIXugo3Ay0MtUjH8gQ2b6Fv97+8LrfbdoAyMyjLPglwOgSmHd\nEiHSnCSIMQhSvMCt4HbR9iSgS01iWWUTB3rhaLV6JersPnvqvVt33vDrOqVX\n9hKFoJrbO4MN9zrbGWq68PJLvfts+t8zzpCwORXzN6j5H9wG4xkq1PZ6OyIh\namwJTnLORFMM2WTuWTowCzmcalAYdauRcHTX0MzY9HsuKwcM4HFp/Bnx4wIr\nH4Le1qgAwSgN/XmZAAYzo12X8rH3xX12kelTuZWurI5SGu2olA0eA181+mnK\n6ErMCtC4OYXipq3zq0+QdunHja34zLeIRXNyp1k+SXWhnByS9T8Z9E1kIna2\nSw1e\r\n=AeND\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCETUVq0bv4ki0scHkUf5k8o4KkrBBsGlGxzByXzkh7mwIhAL/Um9eEGV8qBpG8RicVlzBHxbVbidjvRYR1jCRtOUgh"}]},"maintainers":[{"name":"abdelrahman-elkady","email":"elkadyabdelrahman@gmail.com"}],"_npmUser":{"name":"abdelrahman-elkady","email":"elkadyabdelrahman@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/partial-function-builder_1.0.0_1571001941006_0.08023995883506374"},"_hasShrinkwrap":false}},"time":{"created":"2019-10-13T21:25:40.790Z","1.0.0":"2019-10-13T21:25:41.288Z","modified":"2022-04-04T10:58:24.279Z"},"maintainers":[{"name":"abdelrahman-elkady","email":"elkadyabdelrahman@gmail.com"}],"description":"A helper function to build partially applied functions","keywords":["function","builder","partial","helper","composition"],"author":{"name":"Abdelrahman Elkady","email":"elkadyabdelrahman@gmail.com","url":"https://abdelrahman-elkady.tech"},"license":"ISC","readme":"<p align=\"center\" style=\"border-bottom: none\">\n  <img src=\"./assets/logo.png\"></img>\n</p>\n\n<h1 align=\"center\">\nPartial Function Builder\n</h1>\n\nPartial function builder is a simple utility that allows having functions with partially applied arguments to their named arguments using object destructuring.\n\n**Note**\n> This utility only supports -_till now_- supplying **named** partial arguments to **one single argument** that the original function accepts. You can check [lodash's `partial`](https://lodash.com/docs/4.17.15#partial) to apply partial arguments to positional arguments.\n>\n> See [usage](#usage) for more details.\n\n# Installation\n`npm i @abdelrahman-elkady/partial-function-builder`\n\n# Usage\n\n## Simple Usage\n```js\n const { toPartialBuilder } = require('@abdelrahman-elkady/partial-function-builder');\n\n const addAndMultiply = ({ n1, n2, n3 }) => (n1 + n2) * n3;\n const addPartialBuilder = toPartialBuilder(addAndMultiply);\n const multiplyWithThree = addPartialBuilder({ n3: 3 });\n multiplyWithThree({ n1: 1, n2: 1 }); // 6 .. expression evaluated is (1 + 1) * 3\n```\n\n## Composition\n```js\n const { toPartialBuilder } = require('@abdelrahman-elkady/partial-function-builder');\n\n const add = ({ n1, n2, n3 }) => n1 + n2 + n3;\n\n const addPBuilder = toPartialBuilder(add);\n const partialOne = addPBuilder({ n1: 5 })\n\n partialOne({ n2: 2, n3: 3 }); // 10\n\n // Create a partial builder for the partial function `partialOne`\n const partialOnePBuilder = toPartialBuilder(partialOne);\n const partialTwo = partialOnePBuilder({ n2: 3 });\n partialTwo({ n3: 1 }); // 9\n```\n\n## Overriding\n```js\n const { toPartialBuilder } = require('@abdelrahman-elkady/partial-function-builder');\n\n const add = ({ n1, n2, n3 }) => n1 + n2 + n3;\n\n const addPBuilder = toPartialBuilder(add);\n const partialOne = addPBuilder({ n1: 5 })\n\n partialOne({ n2: 2, n3: 3, n1: 10 }); // 15\n```\n\n## Logo\nCredits: [font awesome](https://fontawesome.com/license)","readmeFilename":"README.md"}