{"_id":"@allnulled/typed-as","_rev":"2-9c9d74ddee8910ece9f1586a79dfd993","name":"@allnulled/typed-as","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@allnulled/typed-as","version":"0.0.1","description":"Library to automate validations","main":"src/index.js","scripts":{"test":"mocha test/*.test.js"},"keywords":["validation","typing"],"author":{"name":"allnulled"},"license":"WTFPL","dependencies":{"is":"^3.3.0"},"devDependencies":{"chai":"^4.3.4"},"gitHead":"ed6c71b4b077054de9df9969401e51dbc3ca3596","_id":"@allnulled/typed-as@0.0.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-OY9Ld1jz5e/kEdWqz1NnwDvquo0CUIZzqnowMvRT9rOqB5TOfaHtKN/hA9VPgTurm9aP4AP3C76qvtFeiiUy+w==","shasum":"fceb5ecbd251a0b521ccb7f32ca3b45631867b52","tarball":"https://registry.npmjs.org/@allnulled/typed-as/-/typed-as-0.0.1.tgz","fileCount":6,"unpackedSize":17025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgblwZCRA9TVsSAnZWagAAYwMP/Ar6yaGP/iSgyfI0otEI\n7ZOqs8qYhqqRjRXS+WYAXkRNi8UHFJ0vtV01ib4Hj+xXnh07+IqitSWawTWe\nvZigrV0lA709wmNlAxLRwHck4c503WTexdjSld+Jd34cMnOEkYmaYysEukjX\nu80YEuFtyJ2ZMzbDPzsvcTeVBHN2bHvlgQmv4G4wkdLuSnq9CMxURr77BQqQ\nHrBCrc9CE73cSsosit1kI6rm+f7kZL8Ft44UC8B+KAxuidxzW14PouFsBxZK\nevqXl5McOFoMYovMzd9w/eRUEOy56rIJHDsrUj32tuiV9Q9ZHGkPe5OYTZ82\n09YhppW5Vd0g+XZ943mw2FB5haOCCcl/vWUFXwd9d0VVTgA1DLgcoSLmhdXm\n4oLWbOXN/HSnST4FvcLykC0WtT0EP01dJ/522n4BSNZ+kAeTOJxOsakVLRdK\now4Ot50QRMMm0AYIM5SWcutJfoXAPhBsSCl+fZXVLxkNNB0FxtoRuqDoEDpf\n1tWS6B016CBJBkqMllXpqDePApPm7AuQiI1pyhMhoZHocOcTUHrpjzeKeYBZ\n0HuYk7k3y+VVr1G53GK/SBIlgoJVbIsCn8Ge32V4zJzR39ZzGIBkOWTroKzf\niETOrR39G8VMJL81dez1nb67T8BlhF9WPJP9v80NkQdNLBpIVq1NGrMF6A3H\nKMl0\r\n=0bo3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkEgjKokZE5d6XSiBxKcqC8SxjlnJw3tYKOVhC5ra5QQIhANZ3XywrG+5xF73Vw7zFbG53eUBbNI6SVfd0IcW6AQ4h"}]},"_npmUser":{"name":"allnulled","email":"todosanulados@gmail.com"},"directories":{},"maintainers":[{"name":"allnulled","email":"todosanulados@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-as_0.0.1_1617845273151_0.1857888397707428"},"_hasShrinkwrap":true},"0.0.2":{"name":"@allnulled/typed-as","version":"0.0.2","description":"Library to automate validations","main":"src/index.js","scripts":{"test":"mocha test/*.test.js"},"keywords":["validation","typing"],"author":{"name":"allnulled"},"license":"WTFPL","dependencies":{"is":"^3.3.0"},"devDependencies":{"chai":"^4.3.4"},"gitHead":"9723960205f06269186b7a9f0e20a61fb3d9cf86","_id":"@allnulled/typed-as@0.0.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-TtvFVDjOHQOaGjze9+aXQ+fB+Z3Ct+f/Brm1aFKEKgSaBZTWMofYvJ4sER6y0EJm6dJb3Q/PzVb5kW0lfanLdw==","shasum":"bd3604dcc4070c053a6439bd599ab8399348c788","tarball":"https://registry.npmjs.org/@allnulled/typed-as/-/typed-as-0.0.2.tgz","fileCount":6,"unpackedSize":19073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeEfMCRA9TVsSAnZWagAAkIEQAIR04fVe7PrnyaGEzpfo\npHtFCy8TNoX0oLQ43X6RtvtUO+n3ZynkCc7PZKlAcJR87Nu+jWMeL/ef/oHy\nQAjBKKSUSt4hEGnCrkuLeWreHjUZ7gxHZZkWoAKikDve5OiPJfPEzdqeWydP\nDmi/NGfIz1Rh+kX1v/994I1m9FSUBg4uOQ4sRd9yBq+8Q6RStGoCQmPQQpta\n9k5yif4+wUwK8t28S6g30b0kKRWcHSLELZ7pvbS8LvK3N23q8XNPqHIhKADr\ntVnojjvOvxF0GY+TpPlqw/d1lZEg7oQYFYRveRbDFLKJ681jPZV5u/o6GUPU\nxSEauOCoNHMh/ixwMQdnW5vB4ITQ+WA1+/nppceO1tvj0HoGVZe/MpwmsLhl\nTBbnZ5mQa1ILrHVWtR4wnQOgQCPYI6Egb22TvsoxR0MEgZHGUXn97lA3ViJN\njH8YhnkAj+W45ipJTBVPKKTL18oCfkltORfV5fw5epP8PypcRngQFE5IjBMP\nI/YTVpdLZFI8+D7BkbqWaKzbLxAro/TLyazpEWDDTc2nOrhmhiN/t3F5PtG5\ncCeJZaIrOvdDQ0tsw+AfxRRzozeu8SLHclZs65tJJRs20vHTnmpGahhCtyoo\nixNbLztr/TJps5bd0CCnemeP0F9WYuNZCqYmQi4s/bTsGdWjQsvcka/dJAn/\nC8j6\r\n=ff3q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGK1IGhgtBZJaS5XijfqQ+12yf/3l6BnU2iOyy8LYSviAiEA+Z7eXGiPI1ZrGIasX5XgXw+TIo0h77D656rNwpsFtGA="}]},"_npmUser":{"name":"allnulled","email":"todosanulados@gmail.com"},"directories":{},"maintainers":[{"name":"allnulled","email":"todosanulados@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-as_0.0.2_1618495435688_0.23130243813788298"},"_hasShrinkwrap":true}},"time":{"created":"2021-04-08T01:27:53.105Z","0.0.1":"2021-04-08T01:27:53.305Z","modified":"2022-04-04T13:33:32.375Z","0.0.2":"2021-04-15T14:03:55.858Z"},"maintainers":[{"name":"allnulled","email":"todosanulados@gmail.com"}],"description":"Library to automate validations","keywords":["validation","typing"],"author":{"name":"allnulled"},"license":"WTFPL","readme":"# typed-as\n\nLibrary to automate validations.\n\n# Install\n\n`$ npm i -s @allnulled/typed-as`\n\n# Usage\n\n```js\nconst { checkTypes, TypedConstructor } = require(\"@allnulled/typed-as\");\n\ncheckTypes({\n    name: \"John\",\n    surname: \"Smith\" \n}, \"name:string;surname:string\"); // true\ncheckTypes({\n    name: \"Alice\",\n    surname: \"Smith\" \n}, \"name:string;surname:number\"); // false\ncheckTypes({\n    name: undefined,\n    age: 64\n}, `\n    name : string | undefined ;\n    age : gt( 18 ) ;\n`); // true\n```\n\nThe `TypedConstructor` class is useful for easily implement typage in classes creation:\n\n```js\nclass MyTypedClass extends TypedConstructor {\n\n    static get ConstructorTypes() {\n        return `name:string|undefined;age:number&gt(18)`;\n    }\n\n    onConstructor(options = {}) {\n        Object.assign(this, options);\n    }\n\n}\n```\n\n\n# Validators\n\nThis library uses the [\"is\" npm module](https://github.com/enricomarino/is) under the hood, and all its validations are available.\n\nThe syntax to use the validators, in `typed-as`, results to something like this:\n\n<pre>\nproperty.subproperty:\n  validator1\n  & validator2(arg1)\n  & validator3(arg1, arg2)\n  | alternativeValidator(arg1);\nproperty.subproperty2:\n  & validator1 & validator2\n  | !alternativeValidator\n</pre>\n\nThe following list represents all the available validators in `is@3.3.0` and `@allnulled/typed-as@0.0.1`:\n\n- **General:**\n\n    - `is.a (value, type) or is.type (value, type)`\n    - `is.defined (value)`\n    - `is.empty (value)`\n    - `is.equal (value, other)`\n    - `is.hosted (value, host)`\n    - `is.instance (value, constructor)`\n    - `is.instanceof (value, constructor) // DEPRECATED`\n    - `is.nil (value)`\n    - `is.null (value) // DEPRECATED`\n    - `is.undef (value)`\n    - `is.undefined (value) // DEPRECATED`\n\n- **Arguments:**\n\n    - `is.args (value)`\n    - `is.arguments (value) // DEPRECATED`\n    - `is.args.empty (value)`\n\n- **Array:**\n\n    - `is.array (value)`\n    - `is.array.empty (value)`\n    - `is.arraylike (value)`\n\n- **Boolean:**\n\n    - `is.bool (value)`\n    - `is.boolean (value) // DEPRECATED`\n    - `is.false (value) // DEPRECATED`\n    - `is.true (value) // DEPRECATED`\n\n- **Date:**\n\n    - `is.date (value)`\n\n- **Element:**\n\n    - `is.element (value)`\n\n- **Error:**\n\n    - `is.error (value)`\n\n- **Function:**\n\n    - `is.fn (value)`\n    - `is.function (value) // DEPRECATED`\n\n- **Number:**\n\n    - `is.number (value)`\n    - `is.infinite (value)`\n    - `is.decimal (value)`\n    - `is.divisibleBy (value, n)`\n    - `is.integer (value)`\n    - `is.int (value) // DEPRECATED`\n    - `is.maximum (value, others)`\n    - `is.minimum (value, others)`\n    - `is.nan (value)`\n    - `is.even (value)`\n    - `is.odd (value)`\n    - `is.ge (value, other)`\n    - `is.gt (value, other)`\n    - `is.le (value, other)`\n    - `is.lt (value, other)`\n    - `is.within (value, start, finish)`\n\n- **Object:**\n\n    - `is.object (value)`\n\n- **Regexp:**\n\n    - `is.regexp (value)`\n\n- **String:**\n\n    - `is.string (value)`\n\n- **Encoded binary:**\n\n    - `is.base64 (value)`\n    - `is.hex (value)`\n\n- **Symbols:**\n\n    - `is.symbol (value)`\n\n- **BigInt:**\n\n    - `is.bigint (value)`\n\n\nTo extend this list, just extend the `require(\"is\")` in order to add new validators.\n\n# Syntax\n\nThis library uses simple `string splits` in this order:\n\n- `;` to separate properties\n- `:` to separate property rules (left: property; right: validator)\n- `.` to separate property concatenations (for the previous left-side only)\n- `&` to separate property validations (for the previous right-side only)\n- `|` to separate property validation alternatives (for all the groups made by `&`)\n- `!` to negate a property validation\n\nThis could be a common example:\n\n```\nid:!undefined;\nname:string;\ndirection:string;\nage:number&gt(18);\nform.comments:string|undefined;\nform.details:string|undefined;\n```\n\nThis expression represents how the data is structured and read, and it is a valid expression (if there were such validators and accessible parameters):\n\n```\nproperty.property1:\n        validator1A(arg1, arg2)\n            |\n        validator1B\n    &\n        validator2A(arg1, arg2)\n            |\n        validator2B\n    &\n        validator3A(arg1, arg2)\n            |\n        validator3B\n;\nproperty.property2:\n        validator1A(arg1, arg2)\n            |\n        validator1B\n    &\n        validator2A(arg1, arg2)\n            |\n        validator2B\n    &\n        validator3A(arg1, arg2)\n            |\n        validator3B\n;\n```\n\nThe `&`, as in the list of `string splits`, takes precedence over `|`.\n\n# Acknowledgement\n\nThanks to *Cannabis sativa*.\n\n# License\n\nDo what you want, I do not care.","readmeFilename":"README.md"}