{"_id":"functools","_rev":"35-f6bc943d9e0f52da6395dd0b88082974","name":"functools","time":{"modified":"2022-06-18T04:18:08.160Z","created":"2011-01-31T09:37:48.726Z","1.0.0":"2011-01-31T09:37:49.028Z","1.1.0":"2011-07-21T08:56:44.015Z","1.1.1":"2011-11-11T11:50:19.444Z","1.1.2":"2011-11-14T09:45:59.871Z","1.1.3":"2011-11-21T07:22:02.603Z","1.2.0":"2012-02-10T02:18:07.785Z","1.3.0":"2012-06-09T22:47:10.923Z","1.4.0":"2012-08-19T08:53:05.183Z","2.0.0":"2016-03-22T23:48:09.102Z","0.0.1-security":"2016-03-23T22:06:56.726Z","3.0.0":"2018-06-29T05:27:56.160Z","3.1.0":"2018-09-03T05:13:53.720Z","3.2.0":"2018-12-03T02:30:39.223Z","3.2.1":"2018-12-03T23:09:56.541Z","3.3.0":"2019-01-29T07:11:36.530Z","3.4.0":"2020-02-05T19:05:47.372Z"},"maintainers":[{"email":"hello@blakeembrey.com","name":"blakeembrey"}],"dist-tags":{"latest":"3.4.0"},"readme":"# Functools\n\n[![NPM version](https://img.shields.io/npm/v/functools.svg?style=flat)](https://npmjs.org/package/functools)\n[![NPM downloads](https://img.shields.io/npm/dm/functools.svg?style=flat)](https://npmjs.org/package/functools)\n[![Build status](https://img.shields.io/travis/blakeembrey/js-functools.svg?style=flat)](https://travis-ci.org/blakeembrey/js-functools)\n[![Test coverage](https://img.shields.io/coveralls/blakeembrey/js-functools.svg?style=flat)](https://coveralls.io/r/blakeembrey/js-functools?branch=master)\n\n> Utilities for working with functions in JavaScript, with TypeScript.\n\n_(Inspired by [functools](https://docs.python.org/2/library/functools.html) of the same name)_\n\n## Installation\n\n```\nnpm install functools --save\n```\n\n## Usage\n\n### `identity<T>(arg: T) => T`\n\nAlways returns the same value supplied to it.\n\n```js\nidentity(42); //=> 42\n```\n\n### `always<T>(arg: T) => () => T`\n\nReturns a function that always returns the same value supplied to it.\n\n```js\nidentity(42); //=> 42\n```\n\n### `memoize<T, U>(fn: (x: T) => U, cache?: Cache) => (x: T) => U`\n\nOptimize a function to speed up consecutive calls by caching the result of calls with identical input arguments. The cache can be overridden for features such as an LRU cache.\n\n```js\nlet i = 0;\nconst fn = memoize(() => ++i);\n\nfn(\"foo\"); //=> 1\nfn(\"foo\"); //=> 1\n\nfn(\"bar\"); //=> 2\nfn(\"bar\"); //=> 2\n```\n\n### `memoize0<T>(fn: () => T): () => T`\n\nMemoize the result of `fn` after the first invocation.\n\n```js\nlet i = 0;\nconst fn = memoize0(() => ++i);\n\nfn(); // => 1\nfn(); // => 1\nfn(); // => 1\n```\n\n### `memoizeOne<T, R>(fn: (...args: T) => R) => (...args: T) => R`\n\nMemoize the result of a function based on the most recent arguments.\n\n```js\nlet i = 0;\nconst fn = memoize(() => ++i);\n\nfn(\"foo\"); //=> 1\nfn(\"foo\"); //=> 1\n\nfn(\"bar\"); //=> 2\nfn(\"bar\"); //=> 2\n\nfn(\"foo\"); //=> 3\nfn(\"foo\"); //=> 3\n```\n\n### `prop<K>(key: K) => (obj: T) => T[K]`\n\nReturn a function that fetches `key` from its operand.\n\n```js\nprop(\"foo\")({ foo: 123 }); //=> 123\n```\n\n### `invoke<K, A, T>(key: K, ...args: A) => (obj: T) => ReturnType<T[K]>`\n\nReturn a function that calls the method name on its operand. If additional arguments are given, they will be given to the method as well.\n\n```js\ninvoke(\"add\", 5, 5)({ add: (a, b) => a + b }); //=> 10\n```\n\n### `throttle<T>(fn: (...args: T) => void, ms: number, { leading, trailing, debounce }) => (...args: T) => void`\n\nWrap a function to rate-limit the function executions to once every `ms` milliseconds.\n\n```js\nlet i = 0\nconst fn = throttle(() => ++i, 100)\n\nfn() // i == 1\nfn() // i == 1\nfn() // i == 1\n\nsetTimeout(() => /* i == 2 */, 200)\n```\n\n**Tip:** Use `fn.clear` and `fn.flush` for finer execution control.\n\n- `fn.clear` Unconditionally clears the current timeout\n- `fn.flush` When `fn` is pending, executes `fn()` and starts a new interval\n\n### `spread<T, R>(fn: (...args: T) => R) => (args: T) => R`\n\nGiven a `fn`, return a wrapper that accepts an array of `fn` arguments.\n\n```js\nPromise.all([1, 2, 3]).then(spread(add));\n```\n\n### `flip<T1, T2, R>(fn: (arg1: T1, arg2: T2) => R) => (arg2: T2, arg1: T1) => R`\n\nFlip a binary `fn` argument order.\n\n```js\nflip(subtract)(5, 10); //=> 5\n```\n\n### `partial<T, U, R>(fn: (...args1: T, ...args2: U) => R) => (...args: U) => R`\n\nReturns a partially applied `fn` with the supplied arguments.\n\n```js\npartial(subtract, 10)(5); //=> 5\n```\n\n### `sequence<T>(...fns: Array<(input: T) => T>) => (input: T) => T`\n\nLeft-to-right function composition.\n\n```js\nsequence(partial(add, 10), partial(multiply, 5))(5); //=> 75\n```\n\n### `compose<T>(...fns: Array<(input: T) => T>) => (input: T) => T`\n\nRight-to-left function composition.\n\n```js\ncompose(partial(add, 10), partial(multiply, 5))(5); //=> 35\n```\n\n### `nary<T, R>(n: number, fn: (...args: T) => R) => (...args: T) => R`\n\nFix the number of receivable arguments in `origFn` to `n`.\n\n```js\n[\"1\", \"2\", \"3\"].map(nary(1, fn)); //=> [1, 2, 3]\n```\n\n## TypeScript\n\nThis module uses [TypeScript](https://github.com/Microsoft/TypeScript) and publishes type definitions on NPM.\n\n## License\n\nApache 2.0\n","versions":{"2.0.0":{"name":"functools","version":"2.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","_id":"functools@2.0.0","_shasum":"0c8f1e154fb43ecdf237432ca6acde8c7fdadb96","_from":".","_npmVersion":"3.7.2","_nodeVersion":"4.3.0","_npmUser":{"name":"nj48","email":"spam@njohnson.me"},"dist":{"shasum":"0c8f1e154fb43ecdf237432ca6acde8c7fdadb96","tarball":"https://registry.npmjs.org/functools/-/functools-2.0.0.tgz","integrity":"sha512-IXSOgFWKm78hI0SVCxVjAHMltr9JqbIJUHIolq0f0zkEOutc+L9tqz2nIRD5yTwlOCuuNPoq8r6B2whhGkV5NQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFWOCTNMyMNQGkdejjEM7HwZrP5zqZfKGRUCqbrCnI/jAiEAlPGQpmtBnP/ntgwzUZ6AQ65Nic7NPfcEigQ2dskodd4="}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}],"directories":{}},"0.0.1-security":{"name":"functools","version":"0.0.1-security","description":"This package name is not currently in use, but was formerly occupied by a popular package. To avoid malicious use, npm is hanging on to the package name, but loosely, and we'll probably give it to you if you want it.","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/npm/security-holder.git"},"keywords":[],"author":"","license":"ISC","bugs":{"url":"https://github.com/npm/security-holder/issues"},"homepage":"https://github.com/npm/security-holder#readme","gitHead":"d1719e2a152734ed854065de56039770c9104d83","_id":"functools@0.0.1-security","_shasum":"7b9178464e4b6419e281e973a5e8efcd7a0640e3","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.1.0","_npmUser":{"name":"npm","email":"npm@npmjs.com"},"dist":{"shasum":"7b9178464e4b6419e281e973a5e8efcd7a0640e3","tarball":"https://registry.npmjs.org/functools/-/functools-0.0.1-security.tgz","integrity":"sha512-xwy7er8OigHMc5IvpIew10e/UXrzlGvyVhRW2xn4gBge8TP64w6iQvORAy7ectwcltCT6iCeBtD0tKZJyF6rnQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGFBsdjIvjy4cx/T10m1Zw5ddXTgwDhVlc1Sh/WAD2ZVAiEAvv9pVXo6Z1JM+l2G3vJJxrlmagiM/UjT9ziQnjzJyy4="}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}],"directories":{}},"1.0.0":{"name":"functools","version":"1.0.0","description":"A minimal library of functional operations","author":"Azer Koculu <azer@kodfabrik.com>","keywords":["functional","fp"],"directories":{"lib":"./lib"},"main":"./lib/functools","_id":"functools@1.0.0","_npmVersion":"0.0.0-fake","_nodeVersion":"0.0.0-fake","_shasum":"32af3f6bd8acf0cbfcc8921ca2d1326bb624e84c","_npmUser":{"name":"npm","email":"support@npmjs.com"},"_from":".","dist":{"shasum":"32af3f6bd8acf0cbfcc8921ca2d1326bb624e84c","tarball":"https://registry.npmjs.org/functools/-/functools-1.0.0.tgz","integrity":"sha512-oDE4JAqTjJ6XCAvQppRc1pP/GQZduxBo3Dr+WXoFjc8nXWIihaI9/8wfHDl6Vgu0R0EkDhz8VVcNYOZG2UBeyg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3q1VKrftBR4HhGw9YwJL6mI/Mvc0o8sqfdn1wnpaCVgIhAP97MyVljDU5pCHtOZpo9iysTMH8YtJQjbbJFD3xlAyU"}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}]},"1.1.0":{"name":"functools","version":"1.1.0","description":"A minimal library of functional operations","author":"Azer Koculu <azer@kodfabrik.com>","keywords":["functional","fp"],"directories":{"lib":"./lib"},"main":"./lib/functools","_id":"functools@1.1.0","_npmVersion":"0.0.0-fake","_nodeVersion":"0.0.0-fake","_shasum":"94c27f19115e60803fea830bac1597a9b4031ced","_npmUser":{"name":"npm","email":"support@npmjs.com"},"_from":".","dist":{"shasum":"94c27f19115e60803fea830bac1597a9b4031ced","tarball":"https://registry.npmjs.org/functools/-/functools-1.1.0.tgz","integrity":"sha512-+o929z/AuTBb+ppoCGAgsU1jxdWLYfZrBZzXTXU9lcAIJ15GK+Z2yO9UwvV1a13ZWZBtql0/5XoDBLy6dI+BOw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIaR2MXLxfgbOCmlumqL+jgyg/hkZjy89WooWGV59dGwIhAP5bHFu9G5KfsUokiVgs74yH1a0y6SKG5wygc4Qn6H71"}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}]},"1.1.1":{"name":"functools","version":"1.1.1","description":"A minimal library of functional operations","author":"Azer Koculu <azer@kodfabrik.com>","keywords":["functional","fp"],"directories":{"lib":"./lib"},"main":"./lib/functools","repository":{"type":"git","url":"http://github.com/azer/functools.git"},"_id":"functools@1.1.1","_npmVersion":"0.0.0-fake","_nodeVersion":"0.0.0-fake","_shasum":"6ff8958076530811e3965ed68167e03258e72492","_npmUser":{"name":"npm","email":"support@npmjs.com"},"_from":".","dist":{"shasum":"6ff8958076530811e3965ed68167e03258e72492","tarball":"https://registry.npmjs.org/functools/-/functools-1.1.1.tgz","integrity":"sha512-bPEdJDjwybcax67tevcgIHbtMHS7mQrKvgYtJaVm6J+gPv2mhwdeRzqHQqit2lmi3sxnNswYQfJXrPqVdNwydQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPwcafUs3fFoKVD+QPPvZvsGAq2FKLFZJahBcHfJkNpAiEAyI/3HOiv4/F1juxuz3qU9pv/yrPHbHRq4Us/V8LBYf8="}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}]},"1.1.2":{"name":"functools","version":"1.1.2","description":"A minimal library of functional operations","author":"Azer Koculu <azer@kodfabrik.com>","keywords":["functional","fp"],"directories":{"lib":"./lib"},"main":"./lib/functools","repository":{"type":"git","url":"http://github.com/azer/functools.git"},"_id":"functools@1.1.2","_npmVersion":"0.0.0-fake","_nodeVersion":"0.0.0-fake","_shasum":"498e8359b8698991f3ac09fcdbb310f66e339d83","_npmUser":{"name":"npm","email":"support@npmjs.com"},"_from":".","dist":{"shasum":"498e8359b8698991f3ac09fcdbb310f66e339d83","tarball":"https://registry.npmjs.org/functools/-/functools-1.1.2.tgz","integrity":"sha512-MMU1/U0XmFNheJeVl3iYUoKhjVSA1bCsKRm+EURFbMwYLXQnykCAjGGI52sxSplQZtmwDDyVC88Y5OaGLAmaWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDc2yUDuLfvRJbKFjfagx1oxxMK4++LyAK7TQUNvv9puwIhANrf3EwdF26MzwAb98zwcdWyKPe/1xIvRlTb3eHRpWxj"}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}]},"1.1.3":{"name":"functools","version":"1.1.3","description":"A minimal library of functional operations","author":"Azer Koculu <azer@kodfabrik.com>","keywords":["functional","fp"],"directories":{"lib":"./lib"},"main":"./lib/functools","repository":{"type":"git","url":"http://github.com/azer/functools.git"},"_id":"functools@1.1.3","_npmVersion":"0.0.0-fake","_nodeVersion":"0.0.0-fake","_shasum":"4716b3a7affc6a3bbe30097093740496630296ff","_npmUser":{"name":"npm","email":"support@npmjs.com"},"_from":".","dist":{"shasum":"4716b3a7affc6a3bbe30097093740496630296ff","tarball":"https://registry.npmjs.org/functools/-/functools-1.1.3.tgz","integrity":"sha512-mLJxuynx8aw6FUIb4JuEoluIPU8ZEGPchErFGEVdp7Qli8T6rLwccP1I/TOu26ZORxyjZP250h/TMvcpkxJKNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBB9f2lqhg5YfOtUbD71ZIA9UMzgZqT2ti1lAxcDPohDAiEA6+dsHgQNscam1qpEbEQT/dCPq59EUxvkNsf6J7uG40c="}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}]},"1.2.0":{"name":"functools","version":"1.2.0","description":"A minimal library of functional operations","author":"Azer Koculu <azer@kodfabrik.com>","keywords":["functional","fp"],"directories":{"lib":"./lib"},"main":"./lib/functools","repository":{"type":"git","url":"http://github.com/azer/functools.git"},"_id":"functools@1.2.0","_npmVersion":"0.0.0-fake","_nodeVersion":"0.0.0-fake","_shasum":"5c0b41cd918b86cc783b031efce636f508551cbe","_npmUser":{"name":"npm","email":"support@npmjs.com"},"_from":".","dist":{"shasum":"5c0b41cd918b86cc783b031efce636f508551cbe","tarball":"https://registry.npmjs.org/functools/-/functools-1.2.0.tgz","integrity":"sha512-ng2YjpBptnezY3TFkdHVfiRTwBRiX8/eLWCxm391PW9sVe4/Io/TkLapCF5WAiKa8fv/dcZGUIa1pr9xawQ1ew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH3vq6Ii+c6M91O3mOOdl1cvyqNgoN6hoyCyoAf00/VmAiAdTNfEBXqwc3kYt1UWMP3vdaZkmyInVQW9aFvEvHr3Ww=="}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}]},"1.3.0":{"name":"functools","version":"1.3.0","description":"A minimal library of functional operations","author":"Azer Koculu <azer@kodfabrik.com>","keywords":["functional","fp"],"directories":{"lib":"./lib"},"main":"./lib/functools","repository":{"type":"git","url":"http://github.com/azer/functools.git"},"devDependencies":{"lowkick":"0.x","highkick":"1.x"},"scripts":{"test":"./node_modules/.bin/highkick test/main.js"},"_id":"functools@1.3.0","_npmVersion":"0.0.0-fake","_nodeVersion":"0.0.0-fake","_shasum":"049cea451b5311e6d0ac7067b96c3f242836196e","_npmUser":{"name":"npm","email":"support@npmjs.com"},"_from":".","dist":{"shasum":"049cea451b5311e6d0ac7067b96c3f242836196e","tarball":"https://registry.npmjs.org/functools/-/functools-1.3.0.tgz","integrity":"sha512-wknTQSXfmBFu/z1yXXBmFrE/rdtaO1NbNdTbVLez/chwjDCicP7E7vHhGzSTNu9a4HR4YuDBrFuTY1b6kfMASw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDA8/CV/FFySvQpLlLbH8kAE9+UAr6op0F5dLc9NQgargIhAMdc7sa7crorG64WosLIPQKZUKUM3OOpbR9KmbBxuWvX"}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}]},"1.4.0":{"name":"functools","version":"1.4.0","description":"A minimal library of functional operations","author":"Azer Koculu <azer@kodfabrik.com>","keywords":["functional","fp"],"directories":{"lib":"./lib"},"main":"./lib/functools","repository":{"type":"git","url":"http://github.com/azer/functools.git"},"devDependencies":{"lowkick":"0.x","highkick":"1.x"},"scripts":{"test":"./node_modules/.bin/highkick test/main.js"},"_id":"functools@1.4.0","_npmVersion":"0.0.0-fake","_nodeVersion":"0.0.0-fake","_shasum":"22216da885204383e4ddede1d844535ecad6354b","_npmUser":{"name":"npm","email":"support@npmjs.com"},"_from":".","dist":{"shasum":"22216da885204383e4ddede1d844535ecad6354b","tarball":"https://registry.npmjs.org/functools/-/functools-1.4.0.tgz","integrity":"sha512-CRnKr+CG/bCeaQrQG8OolY0GPIAIijYJVAIjR7YPipX983njj8eQJI0hIUdJVSXl2MDTBoHY+O8PDCQacBeAfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDISIKe/BgRUqCO7RZSKR3B9k/edZPhkzbfqH99jcCmqgIgdEdhoj7adIycEDvNzmwZaOTSer03hsO3t2FeH+ZZYs4="}]},"maintainers":[{"name":"nj48","email":"spam@njohnson.me"}]},"3.0.0":{"name":"functools","version":"3.0.0","description":"Utilities for working with functions in JavaScript, with TypeScript","main":"dist/index.js","types":"dist/index.d.ts","files":["dist/"],"scripts":{"lint":"tslint \"src/**/*.ts\" --project tsconfig.json","build":"rm -rf dist/ && tsc","specs":"jest --coverage","test":"npm run lint && npm run build && npm run specs","prepublish":"npm run build"},"repository":{"type":"git","url":"git://github.com/blakeembrey/js-functools.git"},"keywords":["functional","utils","tools","function"],"author":{"name":"Blake Embrey","email":"hello@blakeembrey.com","url":"http://blakeembrey.me"},"license":"Apache-2.0","bugs":{"url":"https://github.com/blakeembrey/js-functools/issues"},"homepage":"https://github.com/blakeembrey/js-functools","jest":{"roots":["<rootDir>/src/"],"transform":{"\\.tsx?$":"ts-jest"},"testRegex":"(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$","moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^10.1.2","jest":"^22.4.3","rimraf":"^2.6.2","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-standard":"^7.0.0","typescript":"^2.8.1"},"gitHead":"c28739accfca9f35c9d1ea577c21b39b47bfab61","_id":"functools@3.0.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.1","_npmUser":{"name":"blakeembrey","email":"hello@blakeembrey.com"},"dist":{"integrity":"sha512-QQ3bi2vqYhO0649pYBaPq4GFZYJIhWqk+pdaWVGvhlMHarXj0wCjTl/d1jtUviO2UvlpISGIfOGCiNsg4XSfgw==","shasum":"174b238bf8c92ea8b57a30bec6d469197810554e","tarball":"https://registry.npmjs.org/functools/-/functools-3.0.0.tgz","fileCount":9,"unpackedSize":8187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbNcNcCRA9TVsSAnZWagAAr5sP/j0QX8zl1RB+D0K1AR14\n/x4DZHVsUwAHaMcvJMOWOr0hqyQEr7AuW4mQNatOyILjEypNMFe1l5pQlRxF\n7OZtp18wdNpa19qmHBATmurFW1RMd6y196o1RKkqpGCN6wuGmic4MlZTYVfY\nni4Qc2sSNE4tHCeOyCfuLXAFIB34npGK4x+zET/8GoN5+OQLs1bTyXEwOyzN\nLwBE10h033z3y5vbU0ngd9MWwTNyqTRhFlCK8hy/uL68UV653YHl7l40z3z3\ns1SZem5Rrd5Z99b9ufIp/bv+Cuh3oKKplqasRiYf3ioz7399eGRIhxzQE+8F\nkTFhhT/YA9xjhZu74RGvcBp6azd34Oe3rNF1wki2c4+huLyEfevW+AWenTLL\nHlu1T/OLyrFySEKf6zk4JSN2Gvy/y2iGx6k48jV/L4C13PEAJtdVcmHZnSFg\nMOA6yuuPdOpD7NXWt5miKn8vKj3R6Phqn4ozsalepuz2HN3tM2aC5W8fLgQM\nQT24ryVtQHZNBU4G2R/oPLi49akOL0pD5X/n0Xdh6RKQHSY5CYvEi7g08Lii\nigI7wTnB7kzoN2Dn808lEbFGOzY+1d2Z1n5BAmLCeCkn+QdzON22MS8yRu6i\n9YC0iQcHGpfPkXei25cGoT46DZkcs/LUK2ol+JdyK0t0MVLThqtO1MojQp8y\neXFI\r\n=/xM9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZnhAMlyi/nIk1reDrDjKDCvx0LTpi8sjvcM4s65d01AiEAiJFfKXg5t69R3je78KpSLmOAbZKH4CaF3+q3NwTWfnI="}]},"maintainers":[{"email":"hello@blakeembrey.com","name":"blakeembrey"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/functools_3.0.0_1530250076110_0.3821162173552761"},"_hasShrinkwrap":false},"3.1.0":{"name":"functools","version":"3.1.0","description":"Utilities for working with functions in JavaScript, with TypeScript","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"tslint \"src/**/*.ts\" --project tsconfig.json","build":"rm -rf dist/ && tsc","specs":"jest --coverage","test":"npm run lint && npm run build && npm run specs","prepublish":"npm run build"},"repository":{"type":"git","url":"git://github.com/blakeembrey/js-functools.git"},"keywords":["functional","utils","tools","function"],"author":{"name":"Blake Embrey","email":"hello@blakeembrey.com","url":"http://blakeembrey.me"},"license":"Apache-2.0","bugs":{"url":"https://github.com/blakeembrey/js-functools/issues"},"homepage":"https://github.com/blakeembrey/js-functools","jest":{"roots":["<rootDir>/src/"],"transform":{"\\.tsx?$":"ts-jest"},"testRegex":"(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$","moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"devDependencies":{"@types/jest":"^23.3.1","@types/node":"^10.1.2","jest":"^23.5.0","rimraf":"^2.6.2","ts-jest":"^23.1.4","tslint":"^5.11.0","tslint-config-standard":"^8.0.0","typescript":"^3.0.3"},"gitHead":"3af72f1065767edb7a6e5465aae55206c2589094","_id":"functools@3.1.0","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"blakeembrey","email":"hello@blakeembrey.com"},"dist":{"integrity":"sha512-uXc/GD9WJFpDmWpNmkiB7wmpfFW2GZzo2IN3pctuBKtSBbKiIJ0gSR4Fi6C+WyIAFQJNzLHSM5QWMYN7tFwsFA==","shasum":"eec0850956df79ccd2470395524accba0000a922","tarball":"https://registry.npmjs.org/functools/-/functools-3.1.0.tgz","fileCount":9,"unpackedSize":12072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbjMMSCRA9TVsSAnZWagAASf4P/jjE3aZRuVMb/Mt1AAvM\nEqOEoehj3iLc4QcR2uwqYvgpZ0QT2HzxmzswMAOP3/skr25qEkGzdLGYFh0n\nGVmK87C+Apdgx4sN2kkoRN/fI3ehJqUjiO/Txxxf3d6odpmSul6KV04gciVY\noTbRQxclpm9AV4M33IwO6phpooZoJX7vh9rODC0UQaxwABpHekqAhnAUng1x\nJE4vamuhmPLvlPW7bunAXcj20nQm8IEn5ku/bZqFPc3Wz5hqXPv0Nq52H/Gw\n41UsUlEKUhyH/2M1e3n9E5cV1lJ+1SvV8BUitcXwnHFnF90Kv4NMjqDEVwR7\n2kc1s/IQojU5omO8AjBLX55E5JIl43T9/Ve5JOWY6xVyCs2Fy0WpJeUSLSAA\nU99MmKBx3tjahSD5xK7y1oMo1zJeoXy+9St7I5hStgKDezRaO5ap14pc4oJT\nXBzfwyqJGZDK6OdbfcXqmq9xeto+lxgXxm36cXLbPdyo5iQmukmtQUmdbMmY\nK7ZAAKzY8JBdm3hCTgUZ3zGSlo8SbyiQ5E1CCdWtru3vJ8Fi+GpF+RUggVzk\nHL0BTY9i/d0Obq1uPvBKRKq7L0z+CqL4jW9vif4Hl5i4A4S08wAuqMPDoDMz\nspNqtvkUQFXD4Iip3ckOXB/x9cKfiHkpodwI+vhqEmMKnYMNH10hikQfD4tL\nodTY\r\n=9weC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeP0CWGnXKmU7itdFR2q9XU2zr6vf4RWOpliHQ4pZvJwIhAOKePXcxqMXej+MqBEWtaI7hlFX+9wTUcrBcuCPvl4kD"}]},"maintainers":[{"email":"hello@blakeembrey.com","name":"blakeembrey"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/functools_3.1.0_1535951633531_0.09208307501009871"},"_hasShrinkwrap":false},"3.2.0":{"name":"functools","version":"3.2.0","description":"Utilities for working with functions in JavaScript, with TypeScript","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"tslint \"src/**/*.ts\" --project tsconfig.json","build":"rm -rf dist/ && tsc","specs":"jest --coverage","test":"npm run lint && npm run build && npm run specs","prepublish":"npm run build"},"repository":{"type":"git","url":"git://github.com/blakeembrey/js-functools.git"},"keywords":["functional","utils","tools","function"],"author":{"name":"Blake Embrey","email":"hello@blakeembrey.com","url":"http://blakeembrey.me"},"license":"Apache-2.0","bugs":{"url":"https://github.com/blakeembrey/js-functools/issues"},"homepage":"https://github.com/blakeembrey/js-functools","jest":{"roots":["<rootDir>/src/"],"transform":{"\\.tsx?$":"ts-jest"},"testRegex":"(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$","moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"devDependencies":{"@types/jest":"^23.3.1","@types/node":"^10.1.2","jest":"^23.5.0","rimraf":"^2.6.2","ts-jest":"^23.1.4","tslint":"^5.11.0","tslint-config-standard":"^8.0.0","typescript":"^3.0.3"},"gitHead":"91e6dab3af55987559eb23d023c3ac9f6c62f7aa","_id":"functools@3.2.0","_npmVersion":"6.4.1","_nodeVersion":"11.3.0","_npmUser":{"name":"blakeembrey","email":"hello@blakeembrey.com"},"dist":{"integrity":"sha512-3sFf0rI67rX52o74DbYu6Q9T4INFOnZ4yHeFS8tjd46B+aw86UAXjmCIKcXFgrdT8NJLTL7DAN0BQa3+uM7//g==","shasum":"0239f4f04d91b2ab5a71d9fcba5b1f9d326566f4","tarball":"https://registry.npmjs.org/functools/-/functools-3.2.0.tgz","fileCount":9,"unpackedSize":22285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBJVPCRA9TVsSAnZWagAAu7UP/3AYm3qEmlh5l+oN1L6W\nq4d6SRlZOrWDnPQuo49jAos4Rnjzux+RWikvoosQOtTyoYiTGEFE2rZbAk0D\nJtxYB5qSZg2/mAMJVP0Z74CtDYEZXPbKU3M1tUaRidphGyVEVqiJb8VyYTWi\nII6rNJIvhKaGbUymazM0JBAZZ2tRXHbOal+be2u+DhS4YDUw/t9Os3tRf08S\nrXXLhrhp41PkEyeTZ7MbhfW3b/fmFV7Gl+7fHI4MFFZD7WzfcUUO8N0HUF6J\n2n8XULq5yPHkLvVZVoC++9Fs+qW3ycDdmiuenytL+Oi9xvHSbPAJL8rvJp/L\nr1ISi61Lq4NiMR0MaHq0Dp3eHwgLNm6wh8gcjRaTOd2MCyFI0ELv7e3uwEsv\nKXhD2SddHdysTDGdIehxRy8/N/Q5MXM719W5iAkT2M2da9P53HRcFdKouQza\n2Gr7RIyOrsjHZLN8EuP+v7DbuFcIZRiEn5W1QlT1zoYyg64htUQkPRryi+o0\n04Ar0+1JiAGG3CTTPLnMoZmm3gyXtvjgjjruHWOILr4qV9RybsTRYxql4x/i\nvK8drIVpEV2J7wMMySCDeWhlg3EDEB3I1DiBc0PolcmoJw9zwnv3jarq53ln\n5H4mG8dANazADK80vPGmbX4RsOknD+2lVmOxL69IffKPwOWrs3k4Rr24Wh8b\n/eh6\r\n=30HU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCict1sQJKoMw+RbX9PcTS8FA8YjIlwDAr3kQtTi8HncwIhANIQJm3BmysImMxHNyevRNBgeUTDci3T5dyaBUd/CoyP"}]},"maintainers":[{"email":"hello@blakeembrey.com","name":"blakeembrey"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/functools_3.2.0_1543804239110_0.7847498922021636"},"_hasShrinkwrap":false},"3.2.1":{"name":"functools","version":"3.2.1","description":"Utilities for working with functions in JavaScript, with TypeScript","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"tslint \"src/**/*.ts\" --project tsconfig.json","build":"rm -rf dist/ && tsc","specs":"jest --coverage","test":"npm run lint && npm run build && npm run specs","prepublish":"npm run build"},"repository":{"type":"git","url":"git://github.com/blakeembrey/js-functools.git"},"keywords":["functional","utils","tools","function"],"author":{"name":"Blake Embrey","email":"hello@blakeembrey.com","url":"http://blakeembrey.me"},"license":"Apache-2.0","bugs":{"url":"https://github.com/blakeembrey/js-functools/issues"},"homepage":"https://github.com/blakeembrey/js-functools","jest":{"roots":["<rootDir>/src/"],"transform":{"\\.tsx?$":"ts-jest"},"testRegex":"(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$","moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"devDependencies":{"@types/jest":"^23.3.1","@types/node":"^10.1.2","jest":"^23.5.0","rimraf":"^2.6.2","ts-jest":"^23.1.4","tslint":"^5.11.0","tslint-config-standard":"^8.0.0","typescript":"^3.0.3"},"gitHead":"109460eb76336118939f662e255bbccc7700cd80","_id":"functools@3.2.1","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"blakeembrey","email":"hello@blakeembrey.com"},"dist":{"integrity":"sha512-NoljjVb017+XPMxF7I9X56pDX3SN0cd0/5UB5Qk0r91Cn4HZ4U2IvsnTrzPri6J8UVowgUda/SjxM2pAa7eWxw==","shasum":"6fb142f034c129afe5bbe2d8c642471a1dccd8a6","tarball":"https://registry.npmjs.org/functools/-/functools-3.2.1.tgz","fileCount":9,"unpackedSize":22831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcBbfFCRA9TVsSAnZWagAALL4P+wVZR8kfSRCnVWJmS6Vh\n7NrGlFP2OtQ0kYrJGJZXrhqx0pzhAwtD+4o2hb2dFm/EYXOnNLZN9Xy3/AVP\nSMkzt3uPaN8O+yegb3YdIffa8YI+/WIuxXtww8WbmHj+UTRsMxRZ85/jwWjA\nCO2cDoiJP8TAeY+RibEQW6eX3odNK7n34bD4rKoZmXeTNb3AMfTCyTdedzlF\nnUQdB6uzaedBolnfdJQfLo/167cw2/e1lqTQTVCKWHvRHXt5K51aySe3JMsP\n/JDC1VUlIn0meMa9055xG/qCLA9u4eO6WwE2ud5zdYVhLcxE7dhBq/977LQ4\noJ4PJSvu+Ol5mvilD+35XvERdi9DZ/6SbshuyFMSeVvwbP7pJpSf4g9XEJRR\ndiAJgBvu62v14lv+2RYBth5GZf2bn0CofDsZ5Q9V3iiaq7ryMvKMT8MbS1zN\nsgLCtoPS2LCa+HEnfAKZ0aKrlTrLcEnOA2U50pmMVdZEoSUii3ecFw9QzFQz\nBHulxJKFcOGJn4jw3rCTuN7LxnsoUWBQnK22wr5WQcKOowNBBtQzdeHKuVB6\nka8SClmGD6d9UE4bY7Amg3PFNGtg3MUWzt2z+968L02Jl1AUTURPAJ/hWyiw\n2vMcTJxn5pR/Czce+30MMgBg8JmgNFkDTBTrZKPTIK+8wpx6ZjwI8KrvcLb+\n6g3P\r\n=eAjB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgJd2WVqQtBPemLJIGMMIoT2hR+yBC/NzWOCZEXdBukQIgEdVpVG3rtuAwMksqlYky83TOTuVzrNCM66hjzIptaDg="}]},"maintainers":[{"email":"hello@blakeembrey.com","name":"blakeembrey"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/functools_3.2.1_1543878595070_0.5519582957709674"},"_hasShrinkwrap":false},"3.3.0":{"name":"functools","version":"3.3.0","description":"Utilities for working with functions in JavaScript, with TypeScript","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettier":"prettier --write","format":"npm run prettier -- \"{.,src/**}/*.{js,ts,json,md,yml,css}\"","lint":"tslint \"src/**/*.ts\" --project tsconfig.json","build":"rm -rf dist/ && tsc","specs":"jest --coverage","test":"npm run lint && npm run build && npm run specs","prepare":"npm run build"},"repository":{"type":"git","url":"git://github.com/blakeembrey/js-functools.git"},"keywords":["functional","utils","tools","function"],"author":{"name":"Blake Embrey","email":"hello@blakeembrey.com","url":"http://blakeembrey.me"},"license":"Apache-2.0","bugs":{"url":"https://github.com/blakeembrey/js-functools/issues"},"homepage":"https://github.com/blakeembrey/js-functools","jest":{"roots":["<rootDir>/src/"],"transform":{"\\.tsx?$":"ts-jest"},"testRegex":"(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$","moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,json,md,yml,css}":["npm run prettier","git add"]},"publishConfig":{"access":"public"},"devDependencies":{"@types/jest":"^23.3.1","@types/node":"^10.1.2","husky":"^1.3.1","jest":"^23.5.0","lint-staged":"^8.1.0","prettier":"^1.16.1","rimraf":"^2.6.2","ts-jest":"^23.1.4","tslint":"^5.11.0","tslint-config-prettier":"^1.17.0","tslint-config-standard":"^8.0.0","typescript":"^3.0.3"},"gitHead":"8a697a3c5e9f052b56fae45d3f8f4208ae747aab","_id":"functools@3.3.0","_npmVersion":"6.5.0","_nodeVersion":"11.7.0","_npmUser":{"name":"blakeembrey","email":"hello@blakeembrey.com"},"dist":{"integrity":"sha512-mbxH4YziToXVfxFuiQF1yY7nIJfVqX2SgPcFPSuSfuLze4YxZDL9/Y5sIZxpv+6vYJruqk31kZayYJ0mnIw2mQ==","shasum":"b464b11cd290d801acc43f942551cbc9d65094b4","tarball":"https://registry.npmjs.org/functools/-/functools-3.3.0.tgz","fileCount":9,"unpackedSize":48668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcT/ypCRA9TVsSAnZWagAAjxMP/2XNH5pzZcCbod+A7Zw9\nMvrGtghzRxf0wN6+cpzxeIqEoE2IEJZoQSZif8HgzH5X+pDK8nL8E36dwvmz\nALxwEwccV9iCkDx0xfZCx7XPE09tYszeC0fr+j9JDwqLIt8rmgmTydYi6/Vr\nX3Li8+6JujMSq0l1in8WlM9C5XGCcuDakUnZqhkdVaRi+3490/0vgLJ+ldbU\n/PENotXzYHn0BWubznmjd0RMFjLY91eB74t+oU4xBG5RGB2Mb1SwaGpeDHoB\nFcvGldpxKGDuU5/gONZx4sK+5hNnstUC0PTLZGfN8gUR0r8Bgf4EgNAEgjlq\nGNX/LzgODGbz+ag6TofFpTgVXYRGI+LFN0i1S8UNdvgaPvdkiGnfE1Qj+Upx\n97N4ozg5n7nbxJfZsw/khG4opdAKu/OZckP5rxv83QiOFSXkqmjaxCv65sMU\nSYn0ECr2wpWtV8m7sWZ3EWutJ0aIUeZhjD5I1Ir0ocsr4dXc64NTGtvYZtY3\ntVZQaAI846ciVuRfEWL9nCkSXTU0tjvWvkIyHG8qUe3nq0ap/lyDyl5lOR7B\nMy14a3qdKnFRE/yKom+DrQfTuKqr2s1xwAUE5dbL67H7qw12yhU7TfeRnMyo\nlMp2xsdXj64BDcXMuhIrkK3kXrupfkFVO9ACbQlgUGspGvIF5pNlW5wWzQpM\nLvNT\r\n=w8f1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDaObGFmKzhbrxnppqzVZ4QrBqmkoJeaZS9DUzcqVQhQIgeBsZmmNsAadXMrVu7yGPvi4ny8EHPsYWcLftiyKwh24="}]},"maintainers":[{"email":"hello@blakeembrey.com","name":"blakeembrey"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/functools_3.3.0_1548745896432_0.8842706524816539"},"_hasShrinkwrap":false},"3.4.0":{"name":"functools","version":"3.4.0","description":"Utilities for working with functions in JavaScript, with TypeScript","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettier":"prettier --write","format":"npm run prettier -- \"{.,src/**}/*.{js,ts,json,md,yml,css}\"","lint":"tslint \"src/**/*.ts\" --project tsconfig.json","build":"rm -rf dist/ && tsc","specs":"jest --coverage","test":"npm run lint && npm run build && npm run specs","prepare":"npm run build"},"repository":{"type":"git","url":"git://github.com/blakeembrey/js-functools.git"},"keywords":["functional","utils","tools","function"],"author":{"name":"Blake Embrey","email":"hello@blakeembrey.com","url":"http://blakeembrey.me"},"license":"Apache-2.0","bugs":{"url":"https://github.com/blakeembrey/js-functools/issues"},"homepage":"https://github.com/blakeembrey/js-functools","jest":{"roots":["<rootDir>/src/"],"transform":{"\\.tsx?$":"ts-jest"},"testRegex":"(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$","moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,json,md,yml,css}":["npm run prettier","git add"]},"publishConfig":{"access":"public"},"devDependencies":{"@types/jest":"^25.1.1","@types/node":"^13.7.0","husky":"^4.2.1","jest":"^25.1.0","lint-staged":"^10.0.7","prettier":"^1.19.1","rimraf":"^3.0.1","ts-jest":"^25.2.0","tslint":"^6.0.0","tslint-config-prettier":"^1.17.0","tslint-config-standard":"^9.0.0","typescript":"^3.7.5"},"gitHead":"e3f5fd0a8dae20e6cb5a7e7303776b15e73f476e","_id":"functools@3.4.0","_nodeVersion":"13.7.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-1iWu0wG+rRN1x5kEYY/s2eHNGiVujIBLu+1RKAvrj80Tt6HwY8hEJM2ZZn/afihSPkEJ5NG93mkxQZ6/c+9QYg==","shasum":"4deeaefe92029216d22a428ab0ddf8bcc17279b0","tarball":"https://registry.npmjs.org/functools/-/functools-3.4.0.tgz","fileCount":9,"unpackedSize":53173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOxILCRA9TVsSAnZWagAAb0UP/1wMDzGHPpuKJTdbd6y6\nNM395Upy020wLSWwMcQy3AWzxE61DTU552dGGx+U/37whaXzuF4QNae/x+Xm\nfNcXLi3SdxfCiLa8mI10FejDhknuPRahsuK0W9FLAgDZFFpAwQ50LqczIfVQ\n94VqkYyCBL6y7MfjreECy1l8jmdhvzZj0k16VmeJlL99f4ZblnyRGNBYU1Xe\n5xE0aEPv0qiJWqBALD3foFzjDrBLlFulcD68tkiCnvasTq17mctCPslMXxPz\nW91lhxiRX+fzBl50Wc7VXu9jbOX7HaeVc0RrfUisn7JYl5uXERU14nQtVASl\nioMqjHK3/RFuRyJLHExJtjR6tM1XTvWf+d2YGh48ffot5jpTMrdgaS9nUTQa\np7nvDryxgVuBm76w2Fj0a/jkdY60XMLmnnV1YBpZoaOrGP6sDqVX5ch44h5e\n6n2+/W5hl1HWqNRQLNLZw0EM2eM0i/ocVZdbrrr9Rv8jDh3sDKToMiCy5Qeg\nZfmt7l4gAwEjm7Vc/KjT1sP4iChyHGZuhEmj6F4qYfAGl4fhK3JK5DDBTq4X\nr3xeuaUVxW9vQAlZP1zt6coJaDWJATumIteEm+l4jUH7F1YKhuMVfuNA3hOx\nbDT7tUr6PwGuuhdyamjItAvrggV3lDhW4EzgQXT+kQfBcsj1sQo42n/1bWRy\nRPF4\r\n=fKBp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICGsITvL7BJ1KqTTEeEHLLCr1lni6eqYg90f1VZ2lpmyAiAxrw+lXnjlWDs5G5qWn5o7FYXilhNXvslSq9xTpdyE6Q=="}]},"maintainers":[{"email":"hello@blakeembrey.com","name":"blakeembrey"}],"_npmUser":{"name":"blakeembrey","email":"hello@blakeembrey.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/functools_3.4.0_1580929547175_0.34765247870914595"},"_hasShrinkwrap":false}},"license":"Apache-2.0","readmeFilename":"README.md","description":"Utilities for working with functions in JavaScript, with TypeScript","homepage":"https://github.com/blakeembrey/js-functools","keywords":["functional","utils","tools","function"],"repository":{"type":"git","url":"git://github.com/blakeembrey/js-functools.git"},"bugs":{"url":"https://github.com/blakeembrey/js-functools/issues"},"author":{"name":"Blake Embrey","email":"hello@blakeembrey.com","url":"http://blakeembrey.me"}}