{"_id":"@akanshgulati/are","_rev":"3-25a77630cc0785f299e44612f9b69635","name":"@akanshgulati/are","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@akanshgulati/are","version":"1.0.0","main":"dist/are.cjs.js","module":"dist/are.esm.js","browser":"dist/are.umd.js","dependencies":{"ms":"^2.0.0"},"private":false,"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","ava":"^2.4.0","nyc":"^14.1.1","rollup":"^1.0.0","rollup-plugin-babel":"^4.2.0","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-node-resolve":"^4.0.0"},"scripts":{"build":"rollup -c","dev":"rollup -c -w","pretest":"npm run build","test":"ava test/* --watch","coverage":"nyc ava"},"description":"A utility for type checking and searching element on a array of element(s).  The library is inspired from chai framework supporting chaining to combine multiple operations.","directories":{"lib":"lib","test":"test"},"repository":{"type":"git","url":"git+https://github.com/akanshgulati/are.git"},"keywords":["type","types","are","check","checking","validating","validate","utility","util","type-checking"],"author":{"name":"Akansh Gulati"},"license":"MIT","bugs":{"url":"https://github.com/akanshgulati/are/issues"},"homepage":"https://github.com/akanshgulati/are#readme","gitHead":"07cc15c8b684e9fb5d171c700d0616888b6bafcd","_id":"@akanshgulati/are@1.0.0","_nodeVersion":"12.0.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-gM8xEfjtpMJeeEB1xnK8TVf22EvMHFYg9al+5dzAVNoZ6t4jaMB4mM2YsIGGv0pJJ06JAlniX7IlKG4S9Mo0pw==","shasum":"64ac12cb1285bd99eb8649fb7dcea5e9e9165e5b","tarball":"https://registry.npmjs.org/@akanshgulati/are/-/are-1.0.0.tgz","fileCount":6,"unpackedSize":23876,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0uzFCRA9TVsSAnZWagAA+UcP/jcooNR1KA43q5TBJeF6\nE83GRM+Lut1ZSHaGmVXMSKICa7ccNrSCYArj5WDzBi4vgZGI+KoZo5Um3r+x\nWBOrcfuYlph8X/gZNvaFUh5uHA/dXWnZdMYhOnPtSWim0kFRrdMlZWWo0bna\nqMb0eq05dRa6ru/D08nkKmW3B6lWcXn01Z+Cj+U6WtMWQLfIdwVZGxDR72Ph\nZOQnzRLwclf2+OV7oj1l6C88xBg4tTNCnfxK6qIoqoY7rEkiZnC4O7TQhHjo\nm9ziEyClxVIFkSsdGv/EtNS7CZ2BPdnXDbxWfcTrIq+8qDSTakkK19jtDL00\ndZnokI++/S2zglYZ5Zzv1x93taFm0H8Eegd0FchUzvAcOzkCBEe9dtSTkC6n\ngDiFgbvL+iUjvq6SfMt2jgAoKQmg25OSTRVD+51Yv6JGsNZ17s1y2hxnKCwb\nqEwJaHVb2k+n7yHlDEKsj5KZcaAqM3AI7cgKXhXyOWFHNYHd8PguYftKNkYc\ncCPXlZkfmomktkLCNfZPMIkzm93ONHsEiVDgAOktwUiltDELERgdcqDUCyoK\n33wwouw3o4xhHDoj341UuOBYKC5wJYEPrv7xJ259VR7dvSNn4zre2tXklk6p\ndQ/1qJybAWo+s2SUJtAuR8fyjsI7+PL1gv5delXcJpV+6PDO92BCcYZTjdbf\njBAG\r\n=rsiA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6VcQBPU43fUtrhhcOS5sMbHLwJ6xso6sd5HT/gFa38AiByjVq2+6/GbJETnIwTvAipi5VKYRrOWpoxf180hCJqFA=="}]},"maintainers":[{"name":"akanshgulati","email":"me@akansh.com"}],"_npmUser":{"name":"akanshgulati","email":"me@akansh.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/are_1.0.0_1574104261274_0.9007949601498697"},"_hasShrinkwrap":false},"1.0.1":{"name":"@akanshgulati/are","version":"1.0.1","main":"dist/are.cjs.js","module":"dist/are.esm.js","browser":"dist/are.umd.js","private":false,"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","ava":"^2.4.0","del-cli":"^3.0.0","nyc":"^14.1.1","rollup":"^1.0.0","rollup-plugin-babel":"^4.2.0","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-node-resolve":"^4.0.0","rollup-plugin-terser":"^5.1.2"},"scripts":{"build":"del dist && NODE_ENV=production rollup -c","dev":"rollup -c -w","pretest":"yarn run build","test":"ava test/*","coverage":"nyc ava","prepublishOnly":"npm run build"},"description":"A utility for type checking elements on an array.  The library is inspired from chai framework supporting chaining to combine multiple operations.","directories":{"test":"test"},"repository":{"type":"git","url":"git+https://github.com/akanshgulati/are.git"},"keywords":["type","types","are","check","checking","validating","validate","utility","util","type-checking"],"author":{"name":"Akansh Gulati","email":"me@akansh.com","url":"akansh.com"},"license":"MIT","bugs":{"url":"https://github.com/akanshgulati/are/issues"},"homepage":"https://github.com/akanshgulati/are#readme","gitHead":"a2d26adcbc26da5d025c040c0afa72da7106433f","_id":"@akanshgulati/are@1.0.1","_nodeVersion":"12.0.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-D57lHs3OFvK5ButCLX9I0TSFxFP0PZ7AkF8xTOYF+AzPJzBpkAbSohHobtFXGZjBHhTld9+0Tbm3Q8NKSXbZJA==","shasum":"077f9d27649bacf6501f50f628ee123b02fd3339","tarball":"https://registry.npmjs.org/@akanshgulati/are/-/are-1.0.1.tgz","fileCount":6,"unpackedSize":15714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0xJpCRA9TVsSAnZWagAA0ugP+gPb+dj9pd+F0WfRgJS2\nF597drgiN4uN1YyRch+EBj23EUVfxZau1TGFBV2zQzgSKyZugV5nF2RVxnPr\n3ARW2AAwws7ZpNdtYeC3jNxwYvH2yVdJontZ77TvH63iEbUMQYtZRSai8Xm0\nQjoEJusI+3+fi5JBl5Mq3/GUSWixluSSAvqtdyfcFicRSYYqZupddgEneIvv\nyObEsobR9JEy85GG+W7buFyq+tSAngXrhkcV4knAvQhu4ARMBgLGZpOfJ0l4\nqO8z7WNAl6SlN65+UbM5tVCCoIxO053Tb0EylX8em0zFKkf4EPuC3FYwriHW\nWF63UZ/D7tTpm6eeKMNZxnsgOwIoZ+cWNWMWdDm7hy/3Z4xogT2fGIeLSOBv\nv4HAhKiihO/hB4uYcTu/CIDGjNxMSI17J6MfcG/XHpifF1+l1ZJEXA+AaFEu\nboXMfegJTzFoe00RLiAezULGggVyYHS9GxwyY2Bv0EmebWI5rOb9CM/OAb3E\n0pHDMOm4GRw24TgcTuol0sNBZ9CjYcMy6lIk+0gTwtVs86kaE8p1g1dfUMRt\ne1te//9oPaxbl3BZBMAuK8O+ZDOqSi8tl3kZTmRSeS3b0z7RiTXJZ7XqXyTk\nxj0mc00htnG5vgjkk43SU+6otRjIJFhIa8pfx1s0HIZqzV3t1F3PUPgDRJBU\naLNg\r\n=589H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbG4ZFDg+TNwMNTuUPwSDWZADKWjc3UOLW9Qg2NVSkSAiA/j29xwSjdMbbsbXYyZ8tYCa4pM1JDOpZrdSk3+ygpjA=="}]},"maintainers":[{"name":"akanshgulati","email":"me@akansh.com"}],"_npmUser":{"name":"akanshgulati","email":"me@akansh.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/are_1.0.1_1574113896627_0.7091608446461579"},"_hasShrinkwrap":false},"1.1.0":{"name":"@akanshgulati/are","version":"1.1.0","main":"dist/are.cjs.js","module":"dist/are.esm.js","browser":"dist/are.umd.js","private":false,"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","ava":"^2.4.0","del-cli":"^3.0.0","nyc":"^14.1.1","rollup":"^1.0.0","rollup-plugin-babel":"^4.2.0","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-node-resolve":"^4.0.0","rollup-plugin-terser":"^5.1.3"},"scripts":{"build":"del dist && NODE_ENV=production rollup -c","dev":"rollup -c -w","pretest":"yarn run build","test":"ava test/*","coverage":"nyc ava","prepublishOnly":"npm run build"},"description":"A utility for type checking elements on an array.  The library is inspired from chai framework supporting chaining to combine multiple operations.","directories":{"test":"test"},"repository":{"type":"git","url":"git+https://github.com/akanshgulati/are.git"},"keywords":["type","types","are","check","checking","validating","validate","utility","util","type-checking"],"author":{"name":"Akansh Gulati","email":"me@akansh.com","url":"akansh.com"},"license":"MIT","bugs":{"url":"https://github.com/akanshgulati/are/issues"},"homepage":"https://github.com/akanshgulati/are#readme","gitHead":"62c8fc2a2708893fdf8451bc51820230694bc51f","_id":"@akanshgulati/are@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"akanshgulati","email":"me@akansh.com"},"dist":{"integrity":"sha512-z8GG2HtS7u0YaX6TagljZq/ZQIm40nOaipkf1GGNDR0xGUmav0dJe8aoTpaFwEeOFanHyOM4r7hpJVWYy0BySg==","shasum":"d9da82afae5b4ebbabea499d5f33315af1cc2bff","tarball":"https://registry.npmjs.org/@akanshgulati/are/-/are-1.1.0.tgz","fileCount":6,"unpackedSize":28704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8S5QCRA9TVsSAnZWagAAcaIQAJAzdn4atn1Nuv6wiEQz\nJ5NP9pWfhNBihqKxyh4qOHbElBbHGW24mGiZ6pG+qIOmSb/IrmbzWBudRL5e\n+QpEw1BQfX0yp9r+HD8tEjAPkvXwe/AQNSD/ZaACBPU+yi4w0WeDpXQ5SVBg\n4iY84e0q64lwzlwsLqCFddN1QUMCYykJjwhXqw4j6BCC1nw+fNFC7a9vr63M\nN41mgtEqpnK+w0tKCCjmSfCcLa9ufSSR89txW2rkVb1RuIE5AArg6davD8q0\nqsjjy9qeJNaTbxxAIzfG+30KlmyTI8Pt7J6P0Q5fr0/gtb4OJenPgBN01rO0\nkxIL33IyrFuG9NPh0pOGBCF5aI9ALmY9fRhNJ0kO99nbFz2y1pyy2hx5r+LJ\nULWtgYf0Pqug7jZSLdXV96K5odEBvQuq6GYLqnZBRawuobk2QbrgAqI/Hr1H\nIa389Kxm15mC4UYfoVe1jo8hSrXFcJPF/4MPEkxS2aRzvlBrbK4VoMaiBKJ+\n3dpImiK2zhDIf1RLRA3zGbovOZVgRyUdY6xCyhaIYRgUn/4gBs9RViQxJkY3\nFtCN72DcKtGNm1Ur6TCy2REaE2L7jeeM7cYDUuUeLGFgKPPH+LtP9JISfvIT\nlUj1bvFkyGKn6o48uQZiS/Ewt5P2vXXyS5C9/wdLIiPhpCK5Nq/Kr7PqAofq\niA8X\r\n=yJwp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCd1uNIedHaQUTucofZ4UzGik0q9nPxTs6r2T7gSyphXwIgNZfm05Y0XSmoc4Dmsd2Ass6P5T9QuKRp2RvVh7dRUTk="}]},"maintainers":[{"name":"akanshgulati","email":"me@akansh.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/are_1.1.0_1576087119541_0.04489628787562583"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-18T19:11:01.045Z","1.0.0":"2019-11-18T19:11:01.404Z","modified":"2022-04-04T12:27:58.623Z","1.0.1":"2019-11-18T21:51:36.888Z","1.1.0":"2019-12-11T17:58:39.727Z"},"maintainers":[{"name":"akanshgulati","email":"me@akansh.com"}],"description":"A utility for type checking elements on an array.  The library is inspired from chai framework supporting chaining to combine multiple operations.","homepage":"https://github.com/akanshgulati/are#readme","keywords":["type","types","are","check","checking","validating","validate","utility","util","type-checking"],"repository":{"type":"git","url":"git+https://github.com/akanshgulati/are.git"},"author":{"name":"Akansh Gulati","email":"me@akansh.com","url":"akansh.com"},"bugs":{"url":"https://github.com/akanshgulati/are/issues"},"license":"MIT","readme":"<p>\n    <h1 hidden>Are</h1>\n</p>\n<p align=\"center\">\n    <img src=\"docs/banner.jpg\" alt=\"Are NPM package for type check array\">\n</p>\n<p align=\"center\">\n    A type checking utility for element(s) of an Array based on <strong>chaining</strong> flow to combine multiple operations.\n</p>\n \n<p align=\"center\">\n    <img src=\"https://img.shields.io/travis/akanshgulati/are?color=green&style=flat-square\" alt=\"Build Status\"/>\n    <img src=\"https://img.shields.io/npm/v/@akanshgulati/are?style=flat-square&color=red\" alt=\"NPM Version\"/>\n    <a href=\"https://twitter.com/akanshgulati\">\n        <img src=\"https://img.shields.io/twitter/follow/akanshgulati?label=Twitter%20%40akanshgulati&style=flat-square&color=blue\" alt=\"Twitter followers\"/>\n    </a>\n\n</p>\n\n<hr/>\n\n<br>\n\n## 🚀 Installation  \n  \nNPM  \n```shell  \n$ npm install @akanshgulati/are  \n```  \n  \nYARN  \n```shell  \n$ yarn add @akanshgulati/are  \n```\n\n<br>\n\n## 🎉 Usage   \n```js  \nconst Are = require('@akanshgulati/are');  \n  \nAre([1,2,3,4]).of.number();  \n//=> true  \n  \nAre([\"🎉\",\"🎁\",\"🔆\" ]).of.type('string');  \n//=> true'  \n  \nAre([\"a\", \"b\", \"c\"]).of.not.type('string');  \n//=> false  \n  \nAre([[[[[[[[[1]]]]]]]]]).flat.of.number();  \n//=> true  \n```    \n\n<br>\n\n##  📙 API  \n\n### Helpers\nHelps in selected a particular set of an array and negative of the current type-check\n```  \n.all - checks for all elements (default)  \n.any - checks for all elements of array  \n.first - check for first element  \n.last - check for last element  \n.middle - check for middle element(s)\n.flat - check for type in flatten array\n.not - checks for opposite, e.g. (.not.any => .all)  \n```  \n\n### Types \n\n#### .type(\\<value>)\nThe value needs to be in Pascal case (e.g. NaturalNumbers) or Underscore separated (e.g. natural_number)\n\n**Primitive types**\n```\nString\nNumber\nObject\nArray\nBoolean\nDate\nArrayBuffer\n```\n\n**Array types**\n```\nInt8Array\nUint8Array  \nUint8ClampedArray  \nInt16Array  \nUint16Array  \nInt32Array  \nUint32Array  \nFloat32Array  \nFloat64Array  \nBigInt64Array  \nBigUint64Array  \nArrayBuffer  \nSharedArrayBuffer  \nDataView\n```\n**Number types**\n```\nInteger  \nSafeInteger  \nDecimal  \nFloat  \nFinite  \nInfinite  \nNaturalNumber  \nWholeNumber  \nPositiveNumber  \nNegativeNumber  \nZero  \n```\n\n**Boolean types**\n```\nFalsy  \nTruthy\n```\n\n### Built-in methods\n\n#### .string()  \n#### .number()  \n#### .array()  \n#### .boolean()  \n#### .null()  \n#### .undefined()  \n#### .date()  \n#### .int8Array()  \n#### .uint8Array()  \n#### .uint8ClampedArray()  \n#### .int16Array()  \n#### .uint16Array()  \n#### .int32Array()  \n#### .uint32Array()  \n#### .float32Array()  \n#### .float64Array()  \n#### .bigInt64Array()  \n#### .bigUint64Array()  \n#### .dateView()  \n#### .arrayBuffer()  \n#### .sharedArrayBuffer()  \n#### .integer()  \n#### .safeInteger()  \n#### .finite()  \n#### .infinite()  \n#### .wholeNumber()  \n#### .positiveNumber()  \n#### .negativeNumber()  \n#### .zero()  \n#### .decimal()  \n#### .float()  \n#### .truthy()  \n#### .falsy()\n  \n  \n### Check all elements (default)  \n  \n - `Are(ARRAY).of.type(value)` // custom('string', 'number', 'object', 'boolean', 'array')  \n - `Are(ARRAY).of.number()` or `Are(ARRAY).of.number()` or `Are(ARRAY).all.of.number()`  \n - `Are(ARRAY).of.object()` or - `Are(ARRAY).of.object()` or - `Are(ARRAY).all.of.object()`  \n - `Are(ARRAY).of.string()` or - `Are(ARRAY).of.string()` or - `Are(ARRAY).all.of.string()`  \n - `Are(ARRAY).of.boolean()` or - `Are(ARRAY).of.boolean()` or - `Are(ARRAY).all.of.boolean()`  \n  \n### Check one element  \n  \n- `Are(ARRAY).any.of.type(value)` // custom('string', 'number', 'object', 'boolean', 'array')  \n- `Are(ARRAY).any.of.number()`  \n- `Are(ARRAY).any.of.object()`  \n- `Are(ARRAY).any.of.string()`  \n- `Are(ARRAY).any.of.boolean()`  \n  \n### Check at particular index  \n  \n- `Are(ARRAY).middle.of.type(value)` // checks for (n-1)/2 index in case of odd and (n-1)/2 and n/2 indexes in case even  \n- `Are(ARRAY).first.of.type(value)` // checks for 0th index for type value  \n- `Are(ARRAY).last.of.type(value)` // checks last element for type value  \n- `Are(ARRAY).middle.of.not.type(value)` // returns true if `neither` of middle index(s) is of a type value  \n- `Are(ARRAY).first.of.not.type(value)` // checks only for 0th index for `not` to be of type value  \n  \n  \n### Check in nested array  \n- `Are(ARRAY).flat.of.type(value)` // flatten array to same root and then checks for all elements for type value  \n  \n### Negation  \n- `Are(ARRAY).of.not.type(value)` // checks if all the elements are of not type value  \n\n<br>\n\n## 🍺 Inspiration\nNo package available online which checks for an array of elements\n\n1. It checks not only for a single element, instead, checks for an array of data\n2. **Chaining** technique to add multiple operations in one go\n3. **Performant** while type checking an array of elements.\n4. Provides selection **helpers** for type checking a particular element of an array\n5. Supports **negation** for checking opposite to current type checking.\n\n<br>\n\n## 🗜️ Examples \nYou can refer to test file for various examples on above types, [see examples](https://github.com/akanshgulati/are/blob/57fce5c60e9ff226bc1edd48868c6d179167e661/test/index-test.js).\n\n<br>\n\n## 🔗 Related  \nCurrently there are multiple libraries which check for a single element but not for an array of elements.   \n- [is](https://www.npmjs.com/package/is) - Package which checks single element  \n- [expect](https://www.npmjs.com/package/expect.js) - Chaining of operations for testing assertions  \n- [@sindresorhus/is](https://github.com/sindresorhus/is) - Advanced type checking of over 100 types.\n\n<br>\n\n## ✔️ To-do  \n- [ ] Check for an empty array `isEmpty()`  \n- [ ] Add support for TypeScript type gaurds  \n- [x] More type checking like `.int16Array()`, `.float32Array()`  \n- [x] Check for truthy elements if no element is undefined or null, `.isTruthy()`  \n- [x] Check for integers, float values under type number, '`integers()`, `decimals()`  \n\n<br>\n\n## 👨‍💻 Maintainers  \n- [Akansh Gulati](https://akansh.com)\n","readmeFilename":"README.md"}