{"_id":"norma","_rev":"36-36f94b817964943ff5954fc6131e7342","name":"norma","description":"A function argument organizer","dist-tags":{"latest":"3.1.1"},"versions":{"0.1.0":{"name":"norma","version":"0.1.0","description":"norma","main":"norma.js","scripts":{"test":"./node_modules/.bin/mocha test/*.test.js","build":"./node_modules/.bin/pegjs norma-parser.pegjs"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1"},"dependencies":{"underscore":"~1.5.2"},"_id":"norma@0.1.0","dist":{"shasum":"8bbb03c2fbf3b713c34d7ee49cdfe5b2860b3528","tarball":"https://registry.npmjs.org/norma/-/norma-0.1.0.tgz","integrity":"sha512-0YWiFRlgqMExM+bEWQNvmWLlD7ELaZNhjJDzdGjYDpJt4/huf9DoqYy3XWdVQ1d2L07QNr86TE+Wz4lh2NbWUg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBZBo2NovTGe3Bb/Tg1NYJCN1x76orw8wVhzYXjVApRiAiAj4P0dwEQSWmGgaqB7NWE0TtaCrZGme/8uxnKQKQM0pQ=="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.1.1":{"name":"norma","version":"0.1.1","description":"norma","main":"norma.js","scripts":{"test":"./node_modules/.bin/mocha test/*.test.js","build":"./node_modules/.bin/pegjs norma-parser.pegjs"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1"},"dependencies":{"underscore":"~1.5.2"},"_id":"norma@0.1.1","dist":{"shasum":"1ce43e1d32787c995f84eed54e9aec316c640fa9","tarball":"https://registry.npmjs.org/norma/-/norma-0.1.1.tgz","integrity":"sha512-KBsra2z4HqEzqhp5HJDToPNZWX39Nwm0iFw9UHxN68nGDASssTaObPjiHPX2KMQ+IPY3JD8+sxRV1iqgEsEEfA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCy9Vk+Huua+4Byo0AlMkajRXYDrpymIK8hBh5ZS7VoTwIhALNmdBebDaBQNNBdK6vnw01iF0/Ifwmwul/bdzSVRbfy"}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.2.0":{"name":"norma","version":"0.2.0","description":"norma","main":"norma.js","scripts":{"test":"./node_modules/.bin/mocha test/*.test.js","build":"./node_modules/.bin/pegjs norma-parser.pegjs"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1"},"dependencies":{"underscore":"~1.5.2"},"_id":"norma@0.2.0","dist":{"shasum":"036d99d42e0b1f99c0ddb43de158bf85deae91fb","tarball":"https://registry.npmjs.org/norma/-/norma-0.2.0.tgz","integrity":"sha512-ymRoe+a3dCrg6kSKIwb3s8bxCpcgXA6UM94VfE7/VM2JWD/oSLve7L8ESuKXQOykjGxNOU4VtmwFYWTCHylpbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwy0BMbdNwiDW4CSXMZkvAdyDA/L4x4/+tPwK07nUfQQIgK8xsJVJwLbZCRPA8ngg+jsNAbydUFt6Vy6654KYiX/Y="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.2.1":{"name":"norma","version":"0.2.1","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./node_modules/.bin/mocha test/*.test.js","build":"./node_modules/.bin/pegjs norma-parser.pegjs"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1"},"dependencies":{"underscore":"~1.5.2"},"_id":"norma@0.2.1","dist":{"shasum":"51522fc220c40b0eccd7965f4c871c71db90bc53","tarball":"https://registry.npmjs.org/norma/-/norma-0.2.1.tgz","integrity":"sha512-ilzBFaOa6Bo5NenX3OqU0m4WU+pQecsrDVrRK1cBZJru6NPc4mTusENmFiAGycMAUJ/WywoiZlgpGaxiJhTOtQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/tlwV9/Zwf4sbD8wed2VlA/t3G9qDbE/4ik4m8m1RiAiEA74x+oXyw/8HlVClxd2fRU7XaNbuLW9j9GSLg+uFcUds="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.2.2":{"name":"norma","version":"0.2.2","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./node_modules/.bin/mocha test/*.test.js","build":"./node_modules/.bin/pegjs norma-parser.pegjs"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1"},"dependencies":{"underscore":"~1.5.2"},"_id":"norma@0.2.2","dist":{"shasum":"555a542e4b1ebf0e2cc4856bfd2d4306d17ab0b7","tarball":"https://registry.npmjs.org/norma/-/norma-0.2.2.tgz","integrity":"sha512-m9akpOi3mYm9k6bqAG8chN/30QUV9RsZBZ0F0vlyRnMbLaXR8VV4JGru1SWp2yFQZo4aQc6npJEnj9Z6mpppRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICkgbC0k/lk/h8tNGxZ4iAEBjqaEIjGwE1elSgB9+Z8MAiAIoh7PvsRJyzo/Y/gBBMWomX75zoJCYBKq3x4RjE66Dg=="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.2.3":{"name":"norma","version":"0.2.3","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./node_modules/.bin/mocha test/*.test.js","build":"./node_modules/.bin/pegjs norma-parser.pegjs"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1"},"dependencies":{"underscore":"~1.5.2"},"_id":"norma@0.2.3","dist":{"shasum":"39ab6e733cb4e37ea94cabc20c2515e229664dfc","tarball":"https://registry.npmjs.org/norma/-/norma-0.2.3.tgz","integrity":"sha512-ExJH0WbvdbFQa+A8BiDyl3aTyi0b11jOXPbZGG1sMRTCxqbCwiv6qs4FicvpXp7wUDbaHLYUiqRPI9VznApQzg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGFu+VoucPzjaroiZbu3+xlGj4c94QsZev1SeySQJNmAiEA+WuTObTSz0uHNGJ9uPp46KvwORIpoZDKMgidtiVFpEw="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.2.4":{"name":"norma","version":"0.2.4","description":"A function argument organizer","main":"norma.js","scripts":{"test":"mocha test/*.test.js","build":"pegjs norma-parser.pegjs"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1"},"dependencies":{"underscore":"~1.6.0"},"_id":"norma@0.2.4","dist":{"shasum":"e6ab9d2d4cc67067c506ff9b87388144580682f1","tarball":"https://registry.npmjs.org/norma/-/norma-0.2.4.tgz","integrity":"sha512-bL23m8Oa074UX1kH5sDH/RmH6PwdW6SrnDlAuCgIr26F0PwgkcFM3zhG7LVO71Yh3DQ31WDUzRaNvcAFmiLBRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGK+kK/ZUVZaaHuf+qtCeeAqLJB8vi+JL7IRBug6Ma4cAiEA8Sc8tYN6RHtCdYV0//LTgdWrrN0gJyxnCRf/wOGB+wg="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.2.5":{"name":"norma","version":"0.2.5","description":"A function argument organizer","main":"norma.js","scripts":{"test":"mocha test/*.test.js","build":"pegjs norma-parser.pegjs","jshint":"jshint norma.js","docco":"docco norma.js -o doc","gh-pages-doc":"cp -r doc/* ../gh-pages/norma/doc"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1","docco":"~0.6.3","jshint":"~2.5.0"},"dependencies":{"underscore":"~1.6.0","eraro":"~0.1.1"},"_id":"norma@0.2.5","dist":{"shasum":"1775bc6d284753bd785f7551f6d60b299b885bfe","tarball":"https://registry.npmjs.org/norma/-/norma-0.2.5.tgz","integrity":"sha512-ib/SDxjDBqrT9Huav3WpbKkid1g2T8fBxYGh1oK7xi0LXogbUpTOQu2TBK4HJqpFYXtO7TjUAuHbs4kDxT5SFA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr8D5dM/pNIyssvxRi32P7+pprSZZPq7L/lb85JjTZlQIgfAuG0WBtr5FAAK3xnbXnsXAWCR4dUYRtZg0iQp9dCU4="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.2.6":{"name":"norma","version":"0.2.6","description":"A function argument organizer","main":"norma.js","scripts":{"test":"mocha test/*.test.js","build":"pegjs norma-parser.pegjs","jshint":"jshint norma.js","docco":"docco norma.js -o doc","gh-pages-doc":"cp -r doc/* ../gh-pages/norma/doc"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"pegjs":"~0.8.0","mocha":"~1.17.1","docco":"~0.6.3","jshint":"~2.5.0"},"dependencies":{"underscore":"~1.6.0","eraro":"~0.1.2"},"_id":"norma@0.2.6","dist":{"shasum":"bd0bfd0b7e8fbf75995d6134c626c13d17017915","tarball":"https://registry.npmjs.org/norma/-/norma-0.2.6.tgz","integrity":"sha512-8zcnN02wvbXbIg64Ri4WL9nUgA/l6FT3+ZreSqDLpd6g/eNU6lEBqw9JR6geuZHhyjiYbh5OMoC0u9ffXhAlmg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEKS8EKigs3FEM/X8t3P/xC2aZ0QPqNXDCPowbdSV5pKAiEA9KCKhHpptPoH6NDXqYMaWLWKEUaUDgJatGUYc8LszGs="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{}},"0.3.0":{"name":"norma","version":"0.3.0","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./test.sh","build":"./build.sh"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"docco":"~0.6.3","jshint":"~2.6.0","mocha":"~2.1.0","pegjs":"~0.8.0","uglify-js":"~2.4.16"},"dependencies":{"lodash":"~2.4.1","eraro":"~0.4.1"},"gitHead":"d46b7a377703d5d4d8580f3b5515b0caccf00bfd","_id":"norma@0.3.0","_shasum":"27265c3411018c32c93ee719f692cf90dec5ab64","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"dist":{"shasum":"27265c3411018c32c93ee719f692cf90dec5ab64","tarball":"https://registry.npmjs.org/norma/-/norma-0.3.0.tgz","integrity":"sha512-GyilPqqKMZDlNlAfQLRY/4kUE5VX/Foq67qV3U8W0StjfAckXmx2gOiS27y9njTy6aaR7v5xBenF9HVwMPLcOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC++wkAFCtRl5JtcxhZOVXJRxW+QJn3OyPxObqCYIJWPgIgP2YzbWbXzTiISqSlOj9KDyi++Gz7adMMA2nwDS9FIVc="}]},"directories":{}},"0.4.1":{"name":"norma","version":"0.4.1","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./test.sh","build":"./build.sh"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"docco":"~0.6.3","jshint":"~2.6.0","mocha":"~2.1.0","pegjs":"~0.8.0","uglify-js":"~2.4.16"},"dependencies":{"lodash":"4.17","eraro":"1.0"},"files":["README.md","LICENSE.txt","norma.js","norma-parser.js"],"gitHead":"80eb3990751d52173784e3072d54d2201cdcdb18","_id":"norma@0.4.1","_npmVersion":"6.0.1","_nodeVersion":"8.10.0","_npmUser":{"name":"rjrodger","email":"richard.rodger@nearform.com"},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"dist":{"integrity":"sha512-BSnU+B35GzJgkEcNqiMIm79507Qg68O5L7gRVKATRSx17BHyDn0gVJsi3YzoANC1NbBoKRExwd3KsEZSUox63Q==","shasum":"0be2f05bba4c034c6ce5bac9844e1241699d6585","tarball":"https://registry.npmjs.org/norma/-/norma-0.4.1.tgz","fileCount":5,"unpackedSize":46428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+SjHCRA9TVsSAnZWagAAjoEP/A+xc8w3awxkShUCm7jL\nBg+8fDjRdl+AV6RmyPQ6ZJuBIUwrTB9MpQ+dYmyv657OrC5WvYfNtPNsEdBL\n9QmKMyjKTuiBksXM5jqQvB9Yo5MrCz77s62gQaLAw9WYvnYh1Y1Sump8F4kP\nGLGXhn8e+gETqxsPqOXKOIwdBulDVUFwgv01BwXJ+AiBtCVoWUUTZTjsLxd9\n4a9VfZKXKNAX7//FtjytzwxEiyx4cFY8IYIdht0kBQbA+1jAwRvtkpdSjRQN\nznCUab49b1AR/XfhZfiuaFAWIgtcEmdkuAAmssU0mGHyVNDqzBjnLH7WTg+p\nIja/vvE62Cm5O8DFvtIhUt7S4cGoVVu7/IXHS9Yr9RB8aR6Piw/MojzlFoLH\n89+FbhAvRqwQoGqHjxHoO2iF1ljVIl7TjdfE0bsbFTpnNB/5XbXMJLf+n7gi\nJ/76/Zg+m3z/ZeirZCl8cMFw7GnfO1n8uEqq2ACJkTeYpRHyw4gy0iS3BN+T\n4sheybW6AphU9VeSKKUHI3xiJu6dtEdTHx4+Ng8lRZRUVZGbrcVf6lgON5ST\nJEIjCRmU7vQI0JSKv67Vw/VFyl0SXVN5mZ59/AN8aeXDK3560h5/Q3GWrfry\nl15YFLUoNJnJJJJT4RaIgxQburT9bD2+gd1SkHOfXDcr/T7I5JVU1SD/zlmo\nF6Ff\r\n=8iEY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGJZjy77W940TFBwHm6EkXM9jr3PmalaVv5Uhoh8+LYyAiEAhNcrDjIwmyS+7XUmQJEKH3APtceXvqtQAMPas4sC1WY="}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/norma_0.4.1_1526278341949_0.024318037037505125"},"_hasShrinkwrap":false},"1.0.0":{"name":"norma","version":"1.0.0","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./test.sh","build":"./build.sh","clean":"rm -rf node_modules yarn.lock package-lock.json","repo-tag":"REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags","repo-publish":"npm run repo-tag && npm publish --access public"},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"docco":"^0.8.0","jshint":"^2.10.2","mocha":"^6.2.0","pegjs":"^0.10.0","uglify-js":"^3.6.0"},"dependencies":{"eraro":"^1.1.0","lodash":"^4.17.15"},"gitHead":"dac38287ff7e39120bb47d2bff24c84a95bb33ca","_id":"norma@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"rjrodger","email":"richard.rodger@voxgig.com"},"dist":{"integrity":"sha512-OQwoh7JVkn5lQywW03ibfTDottHi7LGtXe3tssuFG9ar6wkRQFu+fUyqpML0dtp7fHXmI7XDs8S+AYkaylcBMQ==","shasum":"c826e84b092ecbd5f7eecad80489f1564bf79643","tarball":"https://registry.npmjs.org/norma/-/norma-1.0.0.tgz","fileCount":7,"unpackedSize":54384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNiGwCRA9TVsSAnZWagAA5CMP/A+/kbhre92LJhRSskBc\nWPIrsoLhPSM05Gw25vAr1TRWUZiA85eS+T7hr8cIJ9BgNc60FruDOha+rv6A\ng2vk2GVJ4qk0/wue/IDwkIknqNjgQvaLec+vLCcmxI3TwI/x4eMKw1MZRrpH\nRyKDMSkNS4LbzIlnwxaprC7Pywwt4ULL0MVACRFPhHi525jTJNx7cLAhdAPB\n/fH0I74DUdkV93VcKecOsiCSfRiI3uy6RNdUfgHhtRYvBZQbcpPbV3qvKRIH\ngzQcbRc+QH1R5N9XN3butD2qMS6BWRkOGO3LGjpwvTdO7piplt8DglYK7GVL\nr8e14P4/oO7QFqFvr95xu+gPBfOc1J9B/6V8e0zJHStuyj4StZqTfS5cCda4\nFf7EWg46CrIWpweE0QinuRZoYXDa9HNf7dCuuq8B8BeZG7VTzqhm6QgLk6v5\n9rVIUI7HgOZQWju4fgZ6QqO3udalVEN+NCxECLfvbI0pPFtaTSVAfLDG0xNI\nlFKW2kJSYNwZX6nIJFBPLM5GosaqiOJN2iEwWtmbG8Xsb/RgozFLaCvMijCR\nZ5Qb4z13thO0DLsp0EBtPauRO1YVqAKBC2sq3gUU8Pxcp2eWPpoIPL52U/61\n4T9xomxG4Z4yQ7OISew+VLrCIpUx+Q7+jO9Oxwow95fzvoVvzVoevIq8h4Zt\nUOKa\r\n=GwTD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGLxd0I2Qgz3D+/fv1Zipr4uIhBx5cvDXpJ0ULzv6CeAiEAhLVmk1ct4QOzodFPn7PfXk5gJGyqFFy4nb1+8j5MnOw="}]},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/norma_1.0.0_1563828655607_0.19726594919356066"},"_hasShrinkwrap":false},"2.0.1":{"name":"norma","version":"2.0.1","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./test.sh","build":"./build.sh","clean":"rm -rf node_modules yarn.lock package-lock.json","prettier":"prettier --write --no-semi --single-quote norma.js lib/*.js test/*.js","reset":"npm run clean && npm i && npm test","repo-tag":"REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;","repo-publish":"npm run prettier && npm test && npm run repo-tag && npm publish --registry http://registry.npmjs.org "},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"docco":"^0.8.0","jshint":"^2.10.3","mocha":"^6.2.2","pegjs":"^0.10.0","uglify-js":"^3.7.1"},"dependencies":{"eraro":"^2.0.0","lodash.isarguments":"^3.1.0","lodash.isdate":"^4.0.1","lodash.isnan":"^3.0.2","lodash.isregexp":"^4.0.1"},"gitHead":"b697664278ca29ca62550187ad27498ce7ef0feb","_id":"norma@2.0.1","_nodeVersion":"10.15.3","_npmVersion":"6.13.1","dist":{"integrity":"sha512-khbokR0r0mU4POWwaQC6+lp16WrjqiRMoOuysqcm85F2Tgxwd7lftIsCappzaGmLazfeJbZiJYhX2C02gxcFOA==","shasum":"3daa096c51c54431553e21a6afe8d007d638e477","tarball":"https://registry.npmjs.org/norma/-/norma-2.0.1.tgz","fileCount":7,"unpackedSize":54941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6skqCRA9TVsSAnZWagAATY8P/1gADdxTagee0ZdCAFd8\nshuZqir2MzQ1Ko4ieBp+bibRaSXBx0lawaKTmTNB5+wFd/iLxefa/MKoKegg\na8R0H/+/wKcY3NbuCyXd2KNPPgKSwy0WybvgC6u9nxJIIPKZF5z4lgUR/LMi\nhzfjLjRxy3ACUtAKFr7DT6iKsUZ7pZrZkWf/3dLbqGUmHMymoefjiZB83ai9\nv19tjPqYYzOBD2ad3ydMfY/x4Ug3ibLNkG9u6f5BrRqs688hjAyFA9kX6FmY\n6mt+IDzgS3Gc/1Rdxmwbd7UOiob+iDLEr+WFdPvDZR32NsTGGNnRXI/RV4R/\nbeyX0vdfF1fR2ql/F4extwUVpz7+UCtGiD3wCC4DTAB85fh5z4Sb096I2hqI\nEAsCi2XOFg8inATGjMZyBfuHP/KBoPW9QWNRr8L+I9njKnaReXB5txWZwzHn\nonbEobcIa7nH6DxJZKqsJxKXJltjSQMOd+xLKZZaXAQ3PZiNKsGlQNjNXMBN\nlk4KNw9jTMCm7fpu6D96a7b5tlm2xgi8PCU7oJvgbxYRQFscRxZvYwHe82xP\nSTSQXzJrSmuF/t5KV2JFTf0LTHkIx8dA/P2Z5wj+GBdP/kcQp/x9mrwb3Gtz\nJz/o0F5qhfEX1pi8FfH/yGGy0UaWq60IzbgKHWkrzKLWUkALFuFmg7Fn74SJ\nkESD\r\n=PrUf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRNFk51HaZ17FQKd0COx8sLXBjgxskMCJwFccTWlB3ygIgDBiSHzx1m5MSBKKumFuDCJbPltEI02fhRXZqqGH9B8k="}]},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"_npmUser":{"name":"rjrodger","email":"richard.rodger@voxgig.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/norma_2.0.1_1575668009691_0.38897119700753446"},"_hasShrinkwrap":false},"2.0.2":{"name":"norma","version":"2.0.2","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./test.sh","build":"./build.sh","clean":"rm -rf node_modules yarn.lock package-lock.json","prettier":"prettier --write --no-semi --single-quote norma.js lib/*.js test/*.js","reset":"npm run clean && npm i && npm test","repo-tag":"REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;","repo-publish":"npm run prettier && npm test && npm run repo-tag && npm publish --registry http://registry.npmjs.org "},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"docco":"^0.8.0","jshint":"^2.10.3","mocha":"^6.2.2","pegjs":"^0.10.0","uglify-js":"^3.7.1"},"dependencies":{"eraro":"^2.0.0","lodash.isarguments":"^3.1.0","lodash.isdate":"^4.0.1","lodash.isnan":"^3.0.2","lodash.isregexp":"^4.0.1"},"gitHead":"7386733c8f230402a4a9443a7153dd209363919f","_id":"norma@2.0.2","_nodeVersion":"10.15.3","_npmVersion":"6.13.1","dist":{"integrity":"sha512-dpZEilsy4GuVX3E1/L/7xAFDsv5V7vopP/wOF/yxnw4Qy7vkEQZjL0lEv9nM7BMX0QZNOauL/oHAtZ10BUOTIA==","shasum":"deead1a361f7166d2359f63c4202c3df3b9db9ac","tarball":"https://registry.npmjs.org/norma/-/norma-2.0.2.tgz","fileCount":7,"unpackedSize":54941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6snfCRA9TVsSAnZWagAAQG0P/2xyjNDBndUkR6TpWycH\nDwe5uhXMcZr2ZRw/rdulLxIRydGQ7V7gSG+eu7TDVBUTAcoe0Vig/I+XMNUj\nkVolthSqANPuudfUJBkH72czq9Eq9k78opwjxrHmwnFf5/MRdRRZLoP65o8d\nSn0JoHT5U+fGYWK3P5lT+S3crJwPWcv9WpG53TLkEydAqbi8MWna2etQvUwp\ndQPbBEhi8v8fPhCv8eTjs1+kwvrs19PQgTfjXAuYo293SLvvzzbldyClYJr6\n9WGa4mqUrIRcr3KhLXnAIN3o2eD7xclCIPaV0X+/MzSor95OfIkftjAtGEtU\nq1Jx8VUH0mueuoPiZYgUjdCHxMRpKHC8PoooufyrrBRA4v2JV4n9G9cDX35b\nyEAwKL25wrrAEZ+1I13yBYkBP8GJWIl0ZZviY0FT3Rw7GR+HrRbLlrXfjBe/\nUnNhMfOirwJVwByrrgZhYkM7BH026No8XDa4bDuceU7534MjfjoRQNx+5hHR\nNj6D7saIDXWD1cY4ikc2VYQPaHGMH/fUKNBjKErs3fxSjXGUHk4y4O0RLknM\nM614mdx/Sxl/CqZcEQd5LmljPAVdljfbguaZ00bGkXJeQ+QFU5dAMAP1K/ll\nl2Su+GAb8dGL+06oC/u/iufFkQuJMSSDdmP4yAOr/tBejpo4y06R6mc8k0Se\n6xSW\r\n=EnFs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFobLv3RIc18ZDEK//uRSJ88VPusqJV1z/7QJH4nTxYIAiBAu1f8vHD8eM/IV9w3Rn7haSDd0rcKp5bo3NRuBPLZIQ=="}]},"maintainers":[{"name":"rjrodger","email":"richard.rodger@nearform.com"}],"_npmUser":{"name":"rjrodger","email":"richard.rodger@voxgig.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/norma_2.0.2_1575668190798_0.43499836265253067"},"_hasShrinkwrap":false},"3.0.0":{"name":"norma","version":"3.0.0","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./test.sh","build":"./build.sh","clean":"rm -rf node_modules yarn.lock package-lock.json","prettier":"prettier --write --no-semi --single-quote norma.js norma.js test/*.js","reset":"npm run clean && npm i && npm test","repo-tag":"REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;","repo-publish":"npm run prettier && npm test && npm run repo-tag && npm publish --registry https://registry.npmjs.org "},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"docco":"^0.9.1","jshint":"^2.13.6","mocha":"^10.2.0","pegjs":"^0.10.0","prettier":"^2.8.8","uglify-js":"^3.17.4"},"dependencies":{"eraro":"^2.1.0","lodash.isarguments":"^3.1.0","lodash.isdate":"^4.0.1","lodash.isnan":"^3.0.2","lodash.isregexp":"^4.0.1"},"gitHead":"b22d8b1e19fda382487b67af2ba6491a2a71fffe","_id":"norma@3.0.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-EQYGJ8ZDM5x+t9jiRqFRshujdVCkkiZ9RUYdiHDLxHTQJESE2SA+y6atp7qqqGbm2S7c3BTGNvmaNbaaH85l7A==","shasum":"14483813dfda25ccb74747771c95520ece3e5717","tarball":"https://registry.npmjs.org/norma/-/norma-3.0.0.tgz","fileCount":7,"unpackedSize":55054,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbbnOa9iCwz2PVF0B3fraa7jrCIlFEuddmrPuxJYpscAiAntTkGdDjToMLYaBefdpDOidTIbyQYCdG3fg/HlCoaoQ=="}]},"_npmUser":{"name":"rjrodger","email":"richard.rodger@voxgig.com"},"directories":{},"maintainers":[{"name":"rjrodger","email":"richard.rodger@voxgig.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/norma_3.0.0_1688041345245_0.18123794978537755"},"_hasShrinkwrap":false},"3.1.0":{"name":"norma","version":"3.1.0","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./test.sh","build":"./build.sh","clean":"rm -rf node_modules yarn.lock package-lock.json","prettier":"prettier --write --no-semi --single-quote norma.js norma.js test/*.js","reset":"npm run clean && npm i && npm test","repo-tag":"REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;","repo-publish":"npm run prettier && npm test && npm run repo-tag && npm publish --registry https://registry.npmjs.org "},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"docco":"^0.9.1","jshint":"^2.13.6","mocha":"^10.2.0","pegjs":"^0.10.0","prettier":"^3.1.0","uglify-js":"^3.17.4"},"dependencies":{"eraro":"^3.0.1","lodash.isarguments":"^3.1.0","lodash.isdate":"^4.0.1","lodash.isnan":"^3.0.2","lodash.isregexp":"^4.0.1"},"gitHead":"c31a7db17674ab3f4a6a4014be8e0da8baa51c0b","_id":"norma@3.1.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-Tfb2qy+wC4JO/K/oO9Us/Z9HURnFEuszUfhguawTn8nSm/s9sYblnHc4lb2q4c347hAIoQaBqFAZcg+VxnazpQ==","shasum":"9f3297a0fce8cdd4f2a6c9a180e1a0b24d3e4082","tarball":"https://registry.npmjs.org/norma/-/norma-3.1.0.tgz","fileCount":7,"unpackedSize":55058,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3jRIf+ilWbtvHyF5dB5Vvrm8UPzenrcWR/JVxAW4u+gIhAIqJWU9taHAmxUmr1bzkRYTU7HTfYctwcG5fr4974X8b"}]},"_npmUser":{"name":"rjrodger","email":"richard.rodger@voxgig.com"},"directories":{},"maintainers":[{"name":"rjrodger","email":"richard.rodger@voxgig.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/norma_3.1.0_1700175054097_0.7862242041204217"},"_hasShrinkwrap":false},"3.1.1":{"name":"norma","version":"3.1.1","description":"A function argument organizer","main":"norma.js","scripts":{"test":"./test.sh","build":"./build.sh","clean":"rm -rf node_modules yarn.lock package-lock.json","prettier":"prettier --write --no-semi --single-quote norma.js norma.js test/*.js","reset":"npm run clean && npm i && npm test","repo-tag":"REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;","repo-publish":"npm run reset && npm run repo-publish-quick","repo-publish-quick":"npm run prettier && npm test && npm run repo-tag && npm publish --registry https://registry.npmjs.org "},"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"license":"MIT","bugs":{"url":"https://github.com/rjrodger/norma/issues"},"homepage":"https://github.com/rjrodger/norma","devDependencies":{"docco":"^0.9.1","jshint":"^2.13.6","mocha":"^10.2.0","pegjs":"^0.10.0","prettier":"^3.2.4","uglify-js":"^3.17.4"},"dependencies":{"eraro":"^3.0.1","lodash.isarguments":"^3.1.0","lodash.isdate":"^4.0.1","lodash.isnan":"^3.0.2","lodash.isregexp":"^4.0.1"},"gitHead":"55b9795bdbccecf396e85eb30d12851f0ed9a259","_id":"norma@3.1.1","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-nSJMdCoVhXJsguT2qNa3e7sFNsopzLF/WDOxhVWc5BXzKU1u0fs8peRK67DMs/Vc1ShbMJef47OyK3EuZfL6Xw==","shasum":"0e7bab1f4fd1ad173a9a71f2bbc20c4228bff113","tarball":"https://registry.npmjs.org/norma/-/norma-3.1.1.tgz","fileCount":7,"unpackedSize":55131,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlk8dT4TkXrsJwnIku/BR5iM9gFIusegmbc64N79fT0AiEAytJZqexIQvzWc/AiOLYSrPVgDVIFK/iaUDJHPC0r5vc="}]},"_npmUser":{"name":"rjrodger","email":"richard.rodger@voxgig.com"},"directories":{},"maintainers":[{"name":"rjrodger","email":"richard.rodger@voxgig.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/norma_3.1.1_1705678966611_0.04661333183006078"},"_hasShrinkwrap":false}},"readme":"# norma\n\n### A function argument organizer\n\nSometimes you want your functions to accept optional arguments. It\nmakes your API nicer.\n\n\n### Support\n\nIf you're using this module, feel free to contact me on twitter if you\nhave any questions! :) [@rjrodger](http://twitter.com/rjrodger)\n\nCurrent Version: 0.3.0\n\nTested on: node 0.10.26\n\n[![Build Status](https://travis-ci.org/rjrodger/norma.png?branch=master)](https://travis-ci.org/rjrodger/norma)\n\n[Annotated Source](http://rjrodger.github.io/norma/doc/norma.html)\n\n[![Gitter chat](https://badges.gitter.im/rjrodger/norma.png)](https://gitter.im/rjrodger/norma)\n\n\n# Usage\n\nLet's take an example. Say your the basic function signature is:\n\n```JavaScript\nmyAPI.doStuff( 'the-stuff', function( err, result ){ ... } )\n```\n\nBut you also want to support options:\n\n```JavaScript\nmyAPI.doStuff( 'the-stuff', \n               { option1:'foo', option2:'bar'}, \n               function( err, result ){ ... } )\n```\n\nThe callback should be the last argument. That's the style. So you have to write a bit of logic to test if the second argument\nis an object or a function and act appropriately. Ths is cruft code getting in the way of real work.\n\n```JavaScript\nmyAPI.doStuff = function(){\n  var stuff    = arguments[0]\n  var options  = 'function' == typeof(arguments[1]) ? {} : arguments[1]\n  var callback = 'function' == typeof(arguments[2]) ? arguments[2] : arguments[1]\n  ...\n}\n```\n\n\nWith this module, you specify what you want using a simple expression language:\n\n```JavaScript\nmyAPI.doStuff = function(){\n  var args = norma('so?f',arguments)\n\n  var stuff    = args[0]\n  var options  = args[1] || {}\n  var callback = args[2]\n}\n```\n\nNow your arguments always come back in a well-defined array, and always at the same index.\n\nThe expression 'so?f' means match: a string, an optional object, and a function\n\nYou can also assign names:\n\n\n```JavaScript\nmyAPI.doStuff = function(){\n  var args = norma('stuff:s options:o? callback:f',arguments)\n  // args == {stuff:..., options:..., callback:...}\n  args.options = args.options || {}\n}\n```\n\nAnd of course, if your function is called with arguments that do not match the expression, then an error is thrown.\n\n\n\n\n### Support\n\nIf you're using this module, feel free to contact me on twitter if you have any questions! :) [@rjrodger](http://twitter.com/rjrodger)\n\nCurrent Version: 0.2.6\n\nTested on: node 0.10.26\n\n[![Build Status](https://travis-ci.org/rjrodger/norma.png?branch=master)](https://travis-ci.org/rjrodger/norma)\n\n\n\n### Quick example\n\n```JavaScript\nvar norma = require('norma')\n\nfunction foo() {\n  var args = norma('sf', arguments)\n\n  var content = args[0]  // s => string, required\n  var cb      = args[1]  // f => function, required\n\n  cb(null,content+'!')\n}\n\nfoo('bar',function(err,out){\n  console.log(out)\n})\n```\n\n\n## Install\n\n```sh\nnpm install norma\n```\n\n\n# Function Signature Expression\n\nThe expression you use to define the function argument types that you\nexpect is a string containing individual characters that stand for\nJavaScript types. Each type is a single character. These are:\n\n   * s - string    \n   * i - integer   \n   * n - number    \n   * b - boolean   \n   * f - function  \n   * a - array     \n   * o - object    \n   * r - regexp    \n   * d - date      \n   * g - arguments \n   * e - error     \n   * N - null      \n   * U - undefined \n   * A - NaN       \n   * Y - Infinity  \n\nYou list the types you expect, in the order you expect. The _norma_\nmodule will return an array with each position corresponding to the position of each type letter.\n\nThis works like so:\n\n   * \"s\"   => [string]                   => [ \"Foo\" ]\n   * \"si\"  => [string, integer]          => [ \"Foo\", 123 ]\n   * \"sbi\" => [string, boolean, integer] => [ \"Foo\", true, 123 ]\n\n\nThe syntax of the expression is similar to a regular expression (but it's not one!). You can use these special characters:\n\n   * . - match any type\n   * ? - preceding type is optional (also matches null, undefined, and NaN)\n   * * - preceding type can occur any number of times (including zero)    \n   * + - preceding type can occur any number of times (but must occur at least once)    \n   * | - set of alternate types that are valid in this argument position\n\nNow you can do this:\n\n   * \"so?f\" => [ string, optional object, function ] => [ \"a\", function(){...} ]; [ \"a\", {b:1}, function(){...} ]\n   * \"s?n\"  => [ optional string, number ] => [ \"a\", 1 ]; [ 1 ]\n   * \"si*\"  => [ string, zero or more integers... ] => [ \"a\" ]; [ \"a\", 1 ]; [ a, 1, 2 ]; [ a, 1, 2, 3 ]\n   * \"si+\"  => [ string, one or more integers... ] => [ \"a\", 1 ]; [ a, 1, 2 ]; [ a, 1, 2, 3 ]\n   * \"s.*\"  => [ string, anything... ] => [ \"a\", true ]; [ a, {}, [] ]; [ a, 3, {}, true, /hola/ ]\n   * \"s|if\" => [ string or integer, function ] => [ \"a\", function(){...} ]; [ 1, function(){...} ];\n\nYou can use whitespace and commas to make things more readable:\n\n  * \"so?f\" === \"s o? f\" === \"s, o?, f\" \n\nIf no match is found for a given position, _undefined_ is used as the placeholder:\n\n  * \"si*\" on [ \"a\" ] gives [ \"a\", undefined ]\n  * \"s.*b\" on [ \"a\", true ] gives [ \"a\", undefined, true ]\n\nAlternates can also be optional, so this works too:\n\n   * \"s|i? b\" => [ optional string or integer, boolean ] => [ true ]; [ \"a\", true ]; [ 1, true ];\n\nNote that you'll get an _undefined_ as the placeholder, as usual:\n\n   * \"s|i? b\" on [ true ]; [ \"a\", true ]; [ 1, true ]; gives [ undefined, true ]; [ \"a\", true ]; [ 1, true ]; \n\nYou can also give arguments names. These are set as properties on the returned array, as well being assigned an index:\n\n  * \"foo:s\" => [ \"val\", foo:\"val\" ]  // in util.inspect output format\n\nIf you really want an object, use the form:\n\n  * \"{foo:s}\" => { foo:\"val\" }\n\nIf you use the * modifier, and a name, then you'll get back an array listing all the matches (zero or more).\n\n  * \"{foo:s*}\" => { foo: [\"v1\",\"v2\",...] }\n\nAnd that's it!\n\n\n## Compiling patterns\n\nYou can compile a pattern ahead of time:\n\n```JavaScript\nvar norma = require('norma')\n\nvar needstring = norma.compile('s')\n\nfunction foo() {\n  var args = needstring( arguments )\n  console.log( 'string:'+args[0] ) \n}\n```\n\n\n\n## How it Works\n\nThe parser uses [PEG.js](http://pegjs.majda.cz/) to understand the\nsignature expression, and then it builds an internal regular\nexpression to match the function argument types.\n\n\nThe source code is [annotated](http://rjrodger.github.io/norma/doc/norma.html).\n\n\n\n# Development\n\nEdit _norma-parser.pegjs_ to modify the grammar. Rebuild with _npm run build_.\n\n\nTest with:\n\n```bash\nnpm test\n```\n\n","maintainers":[{"name":"rjrodger","email":"richard.rodger@voxgig.com"}],"time":{"modified":"2024-01-19T15:42:46.964Z","created":"2014-02-23T20:33:20.041Z","0.1.0":"2014-02-23T20:33:20.041Z","0.1.1":"2014-02-23T21:07:32.391Z","0.2.0":"2014-03-11T18:38:02.995Z","0.2.1":"2014-03-31T22:43:50.265Z","0.2.2":"2014-04-08T21:19:41.345Z","0.2.3":"2014-04-08T22:57:33.941Z","0.2.4":"2014-04-23T14:39:04.476Z","0.2.5":"2014-04-24T12:26:42.580Z","0.2.6":"2014-04-24T17:41:48.235Z","0.3.0":"2015-01-29T11:17:33.201Z","0.4.1":"2018-05-14T06:12:22.011Z","1.0.0":"2019-07-22T20:50:55.807Z","2.0.1":"2019-12-06T21:33:29.790Z","2.0.2":"2019-12-06T21:36:30.937Z","3.0.0":"2023-06-29T12:22:25.437Z","3.1.0":"2023-11-16T22:50:54.305Z","3.1.1":"2024-01-19T15:42:46.781Z"},"readmeFilename":"README.md","homepage":"https://github.com/rjrodger/norma","keywords":["norma","function","method","parameter","argument","parameters","arguments","type","signature"],"repository":{"type":"git","url":"git://github.com/rjrodger/norma.git"},"author":{"name":"Richard Rodger","url":"http://richardrodger.com"},"bugs":{"url":"https://github.com/rjrodger/norma/issues"},"license":"MIT","users":{"rjrodger":true}}