{"_id":"typify","_rev":"27-20d1b07661778f657a6988bd686729e9","name":"typify","description":"Runtime type-checking for JavaScript.","dist-tags":{"latest":"0.2.10"},"versions":{"0.1.0":{"name":"typify","description":"Runtime type-checking.","version":"0.1.0","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-watch":"~0.4.0","grunt-contrib-jasmine":"~0.5.1","grunt":"~0.4.1"},"keywords":[],"_id":"typify@0.1.0","dist":{"shasum":"4086fc585f72a801df830d54ad8105851246ceb2","tarball":"https://registry.npmjs.org/typify/-/typify-0.1.0.tgz","integrity":"sha512-9jnocrPc9I0U1x/on+HagtnTVvtEcqdpo9ez2PqSvtX2jeVv2TXz2THEOqxpdRpLWf9DVadCo+wahVJSDb+/TQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6HHVT4KZ/VmPmP+t4gsXAEKs365+GFFcTJhGPSL9ioAiASReNRdGtC5BnFPpK0rg9LMwM2aBrxC5MvY7thW83tRA=="}]},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.1.1":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.1.1","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-watch":"~0.4.0","grunt-contrib-jasmine":"~0.5.1","grunt":"~0.4.1"},"keywords":["type","checking"],"_id":"typify@0.1.1","dist":{"shasum":"8870d9743f76c84e4e11ef0b4528d90f5fb5af4f","tarball":"https://registry.npmjs.org/typify/-/typify-0.1.1.tgz","integrity":"sha512-/otWwhIUUC6mQ5Gxdo2gddYVqe+FSrrwfuOa8rAJo4cq1mvApcBLkZ3WQJUIWYcXwt7booC89AOES6U1L2KDpQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOHUR0AZg3vSoKrgBAVj2MKxKKsnMDTiP8yUSJjXhGJAiEA4RbAFPysPgSfFQqwRoZRxI7V77dTouIpL3AruW3ZrgE="}]},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.2.0":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.0","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.8.0"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.6.0","grunt-contrib-watch":"~0.4.0","grunt-contrib-jasmine":"~0.5.1","grunt":"~0.4.1"},"keywords":["type","checking"],"_id":"typify@0.2.0","dist":{"shasum":"4f89e9bcd694bbbe7a83590bb4fbba60bca0f43b","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.0.tgz","integrity":"sha512-XTlxJgmEwW7FGUzHa6yPB6oXsG/r9IZnIKL+4jfC7aSSmsDuu4jtK7gFV765Ph8C6/kNSAfXfTaoQ8LUvbu4JQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICp9EF1j771FO/Y7U1FIC+Fu4BDOtUCa5Q0gwFpXGH/2AiEA/oEmZtCjMLlqfDqTzK+UkURAUSWJDBwiCHMtgvupmqU="}]},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.2.1":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.1","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.8.0"},"scripts":{"browserify":"mkdir -p dist/ && browserify -s jsc -o dist/typify.standalone.js ./lib/typify.js","test":"grunt test"},"devDependencies":{"grunt-contrib-jshint":"~0.7.0","grunt-contrib-watch":"~0.5.0","grunt":"~0.4.1","grunt-simple-mocha":"~0.4.0","jsverify":"~0.2.0"},"keywords":["type","checking"],"_id":"typify@0.2.1","dist":{"shasum":"39743b7e5a03834daa64da3c2dc292f4e930231c","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.1.tgz","integrity":"sha512-kbDxwG9BQq8j90lscjkDT4VBxjKcBDAMIwQ+2jIR32t6GKkHSaCqYtk4nT/AeP4ldKPcVyhiH/04VPhRqFQtRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDblwdxk8OqjEFPoxUJPJhoxIJP9ExGrMheJbJnjlyxgAIgRmCdqLpJNP5KDSZmAyeA+uz3vxghXI7+/YT+qezoQnw="}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.2.3":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.3","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.8.0"},"scripts":{"browserify":"mkdir -p dist/ && node_modules/.bin/browserify -s jsc -o dist/typify.standalone.js ./lib/typify.js","jshint":"node_modules/.bin/jshint lib test","mocha":"node_modules/.bin/mocha --reporter spec test","istanbul":"node_modules/.bin/istanbul cover node_modules/.bin/_mocha test","check-coverage":"node_modules/.bin/istanbul check-coverage --statements -11 --branches -5 --functions -6 coverage/coverage.json","test":"npm run-script jshint && npm run-script mocha && npm run-script istanbul && npm run-script check-coverage"},"devDependencies":{"jsverify":"~0.2.0","istanbul":"~0.2.3","mocha":"~1.17.0","browserify":"~3.20.0","jshint":"~2.4.1","lodash":"~2.4.1"},"keywords":["type","checking"],"_id":"typify@0.2.3","dist":{"shasum":"a3be860b309db2f3e5ec35ea81da424ef3e55728","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.3.tgz","integrity":"sha512-HPx07S1kdm2Ve/VTkLCkBoHCIn6i2NMJfIYM2nLRnJPzIma9WkJyagmGIqP30hODL1fgDwcu2OYVD5oOOrLXnw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCx1glR+wI0vDad5yR+JSPLKwp1AC388e7pWhude/WQewIhANqtRVAqy98TX+e5gO+YoJ78KEN/l6GZXX/4xXjAos81"}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.2.4":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.4","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.8.0"},"scripts":{"browserify":"mkdir -p dist/ && node_modules/.bin/browserify -s jsc -o dist/typify.standalone.js ./lib/typify.js","jshint":"node_modules/.bin/jshint lib test","mocha":"node_modules/.bin/mocha --reporter spec test","istanbul":"node_modules/.bin/istanbul cover node_modules/.bin/_mocha test","check-coverage":"node_modules/.bin/istanbul check-coverage --statements -11 --branches -5 --functions -6 coverage/coverage.json","typify":"node_modules/.bin/typify -- node_modules/.bin/_mocha -c test","test":"npm run-script jshint && npm run-script mocha && npm run-script istanbul && npm run-script check-coverage && npm run-script typify"},"devDependencies":{"jsverify":"~0.2.0","istanbul":"~0.2.3","mocha":"~1.17.0","browserify":"~3.20.0","jshint":"~2.4.1","lodash":"~2.4.1","typify":"phadej/typify-bin"},"keywords":["type","checking"],"_id":"typify@0.2.4","dist":{"shasum":"31b0e93599e83344d3183c41414bc4cb8cb72f59","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.4.tgz","integrity":"sha512-xGMAxZ8+aelUOCfDG0OTXl35MQZTmateowmZFrxD29wfEXcsaOqhWjdAdjEoVdBgJlUC4kHhqkJf7tivf9d6pA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNdDyEhzKyV5v/oWFRbg92e7XtJNOq2oenm93T7TxznQIgENcpCORDh3ShaH1qtGD+n5WmuL0ngZFPtCoTbfsUatw="}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.2.5":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.5","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.8.0"},"scripts":{"browserify":"mkdir -p dist/ && node_modules/.bin/browserify -s jsc -o dist/typify.standalone.js ./lib/typify.js","jshint":"node_modules/.bin/jshint lib test","mocha":"node_modules/.bin/mocha --reporter spec test","istanbul":"node_modules/.bin/istanbul cover node_modules/.bin/_mocha test","check-coverage":"node_modules/.bin/istanbul check-coverage --statements -11 --branches -5 --functions -6 coverage/coverage.json","typify":"node_modules/.bin/typify -- node_modules/.bin/_mocha -c test","test":"npm run-script jshint && npm run-script mocha && npm run-script istanbul && npm run-script check-coverage && npm run-script typify"},"devDependencies":{"jsverify":"~0.2.0","istanbul":"~0.2.3","mocha":"~1.17.0","browserify":"~3.20.0","jshint":"~2.4.1","lodash":"~2.4.1","typify":"phadej/typify-bin"},"keywords":["type","checking"],"_id":"typify@0.2.5","dist":{"shasum":"71d5243dcb15713d9d61008d5b00ebea02c30d4a","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.5.tgz","integrity":"sha512-2bzEKODfthA3vZFanWgUzu77oER3K7oT8gaAyiE0fk+5Lyw7mylUtQNBG2hQlGM03m4NUHi1oHEhxMtKUmNpOA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICscZUE/aALgJIr6MCyn2R6zMePuPAR9urN3proHvVroAiEA0GhxSDb0rBvBaVRAi9d2QiiRcZhZjYmxyLKMZAkp6cg="}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.2.6":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.6","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.10.0"},"scripts":{"browserify":"mkdir -p dist/ && node_modules/.bin/browserify -s jsc -o dist/typify.standalone.js ./lib/typify.js","jshint":"jshint lib test","mocha":"mocha --reporter spec test","istanbul":"istanbul cover node_modules/.bin/_mocha test","check-coverage":"istanbul check-coverage --statements -11 --branches -5 --functions -6 coverage/coverage.json","typify":"typify -- node_modules/.bin/_mocha -c test","test":"npm run-script jshint && npm run-script mocha && npm run-script istanbul && npm run-script check-coverage && npm run-script typify"},"devDependencies":{"jsverify":"~0.3.0","istanbul":"~0.2.3","mocha":"~1.20.1","browserify":"~4.1.11","jshint":"~2.5.1","lodash":"~2.4.1","typify-bin":"phadej/typify-bin"},"keywords":["type","checking"],"_id":"typify@0.2.6","dist":{"shasum":"c0eb03e48ea38fe25662b125c6f9598f8fe7eb88","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.6.tgz","integrity":"sha512-KdMW5fTxeFPwLp4olR9CiJl+egLRdl7g27kv5+iMxlSSMB24N2cyDcgpcUZBF1geMi/KvVoi6CMrHKUXCFW8cw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJV3tbMPzt6dD+faPciPZf2J71lcaqaQTAZhJqaiAcuQIgJeEFx/N/RpeH/fNBQtQSfnTQpam7/SourC3bgn+OF/A="}]},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.2.7":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.7","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.10.0"},"scripts":{"test":"make test"},"devDependencies":{"jsverify":"~0.3.0","istanbul":"~0.2.3","mocha":"~1.20.1","browserify":"~4.1.11","jshint":"~2.5.1","lodash":"~2.4.1","uglify-js":"~2.4.14","typify-bin":"phadej/typify-bin"},"keywords":["type","checking","typify","data","validation"],"_id":"typify@0.2.7","dist":{"shasum":"dcbba02f3aebb7bb83a3bfecbc7cc6ae94e5b7de","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.7.tgz","integrity":"sha512-m2CdFMOH7wAx8xhc4sZorMXTvc6B4STUW37OQjWCrPLexOA0Y4UqXQoafW4tRIUxM5h9zuqg2xTP4RZNEXvc0w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICS6Zulk1r40HhMqnME1txj34VPWzvHKN1n1JtjbiBQlAiBbpZg0s/az+MuOcWWCYxz7LxGZqHTMa/bPlaTVzHlEtg=="}]},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{}},"0.2.9":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.9","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"licenses":[{"type":"BSD-3-Clause","url":"https://github.com/phadej/typify/blob/master/LICENSE"}],"main":"lib/typify","engines":{"node":">= 0.10.0"},"scripts":{"test":"make test"},"devDependencies":{"browserify":"^9.0.3","david":"^6.1.5","istanbul":"~0.3.0","jshint":"^2.6.3","jsverify":"^0.6.0-alpha.4","lodash":"^3.6.0","mocha":"^2.2.1","typify-bin":"0.0.5","uglify-js":"~2.4.14"},"keywords":["type","checking","typify","data","validation"],"gitHead":"21786044fa2aaad2f131a7bdaf96c64c70bcc363","_id":"typify@0.2.9","_shasum":"ab9250076a1f2bec6e552290395e9f5153022648","_from":".","_npmVersion":"2.1.14","_nodeVersion":"0.10.32","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"dist":{"shasum":"ab9250076a1f2bec6e552290395e9f5153022648","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.9.tgz","integrity":"sha512-c3QwesqdEwPoF2ODb5yDfedW9rfAYQyrPoZv1SQ4om3f3VOqGO2RXdbK2UsZHHnAtNldqkPHjtbKJxQDmmjTlA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9nI34j/DJxKTWXQCyeRdWvEivgNTXh0cSCBdEb1qz3AIhALhPYimM8ALnw0cvUKMKX2fNw+i+XHOxRbdsCFGS5jlk"}]},"directories":{}},"0.2.10":{"name":"typify","description":"Runtime type-checking for JavaScript.","version":"0.2.10","homepage":"https://github.com/phadej/typify","author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"bugs":{"url":"https://github.com/phadej/typify/issues"},"license":"BSD-3-Clause","main":"lib/typify","engines":{"node":">= 0.10.0"},"scripts":{"test":"make test"},"devDependencies":{"browserify":"^16.2.3","david":"^11.0.0","eslint":"^5.15.0","jsverify":"^0.8.4","lodash":"^4.17.11","mocha":"^6.0.2","nyc":"^13.3.0","typify-bin":"0.0.5","uglify-js":"^3.4.9"},"keywords":["type","checking","typify","data","validation"],"gitHead":"42eff12950110d7201d48459d2f54dcd3682b517","_id":"typify@0.2.10","_shasum":"67e600121c5be82db77bb49cc83e746650aaea04","_from":".","_npmVersion":"3.5.2","_nodeVersion":"8.10.0","_npmUser":{"name":"phadej","email":"oleg.grenrus@iki.fi"},"dist":{"shasum":"67e600121c5be82db77bb49cc83e746650aaea04","tarball":"https://registry.npmjs.org/typify/-/typify-0.2.10.tgz","integrity":"sha512-10qtSAZx4Ijpc/AZQKw1f5/0yEm3SZF+axAifGN913Eq3vsEtzQ5E0ZESqVQyXPdT2Pf4EqDEKrQsDLWHAm1Rg==","fileCount":32,"unpackedSize":248276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfQ4lCRA9TVsSAnZWagAAuloP/RucJNdjWnziAKcaA1k5\n5OJ8uWZPW00n2wCs2qDgi+i1j2LSRfNW9O7oIPDGqiA5xGwXod8ndHKq3Zw1\nb6W4uc2f6j8DUHWCgMmrgJLh4mmC0QpJryCHa1OzU8ZOX9FNvdnHTdr0w5D4\na7CghEgQknr6/l2Zq/Z+L9vDAiUB7kDMAzPXsAGISM7GVH7npCRBK+i1Fhma\nGALf+8P5asy8/N123VYQB+pB4Rpp7aq6xHBEx0db+zj/bJhBlHNB0RPwmghH\nr4iri5n1ltOPcqULVDq4iKmIOzRmtrTmxtvTc819Q1/xm7kesN6/1yVgoUCN\nZIbZS7m9tC5c4Kd3WNkkfHhs0B6fUg/c3h0O3EqrY0P4ZeKv6iOHRrpbZnF4\nGIP0Le43gytxvVwmGGGfJiiKZMpYNc+VkIgiV9HY4TxUCQjsiFnjJx9FiBhs\n3hQDnVFS8CQ5fYGslM/5xYE6G2QmhSskqxdpcEYK+nll1UwgiLQ9bGxP4V2i\ntstyBM/pJkCh+qDvvf1LMHVyjBv3D1edEjTnTSc/zE0ZUlg6/amW9RuCsvHO\nVKe39q2mB3U4o4LBaz3OxHwz0oSbGUmL+aQPDdZUOdSZ8lC7x8XMliSsXtQr\nysm7emxt/h9Vo+NPOA1u4yR5VLd/Ek7JBw8RL9O1Byt1GCME4Klb/Rg8Cy5k\nRy+7\r\n=Czch\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWvD5CemvU3W+GYWWee5WxVZwVAW91lcCyhUBH+oVMkQIhANEaDPLZpH7FpXvk//ZhWi6qsIbPYrHBe4W8Y3P6yuWU"}]},"maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typify_0.2.10_1551699493235_0.23309573507359538"},"_hasShrinkwrap":false}},"readme":"# typify\n\n> Runtime type-checking.\n\n[![Build Status](https://secure.travis-ci.org/phadej/typify.svg?branch=master)](http://travis-ci.org/phadej/typify)\n[![NPM version](https://badge.fury.io/js/typify.svg)](http://badge.fury.io/js/typify)\n[![Dependency Status](https://gemnasium.com/phadej/typify.svg)](https://gemnasium.com/phadej/typify)\n[![Code Climate](https://img.shields.io/codeclimate/github/phadej/typify.svg)](https://codeclimate.com/github/phadej/typify)\n\n## Getting Started\n\nInstall the module with: `npm install typify`\n\n## Synopsis\n\n```javascript\n// Browser\n// <script src=\"dist/typify.standalone.js\" type=\"text/javascript\"></script>\n\n// Node\nvar typify = require(\"typify\");\n\n/*\n * `sum` function takes either two numbers or two strings as a parameter,\n * and returns a number or a string respectively.\n */\nvar sum = typify(\"sum :: a : number|string => a -> a -> a\", function (a, b) {\n    return a + b;\n});\n\n/*\n * `toArray` function takes either an array of numbers or a single number,\n * and returns an array of numbers.\n *\n * We could write a more general, polymorphic function with type signature\n * `toArray :: a : *, (array a)|a -> array a`, where `*` means _any type_.\n *\n * Unfortunately any type `*` is seriously any.\n * Types as *typify* understands them, are more like Java's interfaces or Haskell's typeclasses.\n * Of course, we can iterate through them all, but we cannot deduce the most principal type (because it doesn't exist).\n * So eg. function signature `id :: a : *, a -> a` behaves similarly to `id :: * -> *`, which isn't strict enough.\n */\nvar toNumberArray = typify(\"toNumberArray :: (array number)|number -> array number\", function (a) {\n    return Array.isArray(a) ? a : [a];\n});\n\n/*\n * `myParseInt` takes a string and an optional number (radix) and returns a number.\n */\nvar myParseInt = typify(\"myParseInt :: string -> number? -> number\", function (n, radix) {\n    return parseInt(n, radix || 10)\n});\n\n/*\n * `foo` takes at least one number parameter and returns a number.\n */\nvar foo = typify(\"foo :: number -> number.. -> number\", function (a) {\n    return a + arguments.length;\n});\n```\n\n## Documentation\n\n### API\n\n- `typify(functionSpec, fun)` - decorate function with run-time type check\n- `typify.create()` - create new typify environment\n- `typify.type(typename, checkFun)` - add new type with user-supplied existence check\n- `typify.record(typename, recordspec)` - add new record type\n- `typify.alias(typename, typespec)` - give name to the compound type\n- `typify.mutual(typespecs)` - define multiple (possibly mutually recursive) types at once\n- `typify.instance(name, cls)` - add new instance type\n- `typify.check(typename, value) -> bool` - check membership of value in the type. `check` is [autoCurried](http://fitzgen.github.io/wu.js/#wu-autocurry)\n\n### Checkable type\n\n*Checkable* means, that given an object you can check whether an object is or isn't of the particular type.\nFor example `number` is checkable type, given any object you can tell if it's a number.\n\n```javascript\ntypify.check('number', 1); // => true\ntypify.check('number', 'foobar'); // => false\n```\n\nYou could use `typify.assert` for type assertions:\n\n```javascript\ntypify.check('number', 'foo'); // will throw `TypeError` exception\n```\n\n\nThere are few predefined checkable types:\n\n- `number`\n- `integer`\n- `nat`: non-negative integer\n- `positive` _x_\n- `nonnegative` _x_\n- `finite` _x_\n- `string`\n- `boolean`\n- `date`\n- `regexp`\n- `function`, `fn`\n- `array` _a_\n- `map` _a_\n- `tuple` _a_ _b_...\n- `null`, `undefined`, `infinity`, `ninfinity`, `nan`, `true` and `false`\n\n#### Formal syntax of checkable type declaration:\n\n- *checkable type* σ ::= σ_or\n    - σ_or ::= σ_and (`|` σ_and)*\n    - σ_and ::= σ_poly (`&` σ_poly)*\n    - σ_poly ::= *typename* σ_opt+ | σ_opt\n    - σ_opt = σ_term | σ_term `?`\n    - σ_record ::= `{` `}` | `{` σ_pair (`,` σ_pair)* `}`\n    - σ_pair ::= *identifier* `:` σ_term\n    - σ_term ::= `*` | α | *literal* | *typename* | `(` σ_alt `)`\n- *type variable* α ::= *identifier*\n- *literal* ::= /\\d+/ | /\"[^\"]*\"/ | /'[^']*'/ | true | false | null | undefined | nan | infinity | ninfinity\n- *identifier*, *typename* ::= /[a-zA-Z_][a-zA-Z0-9_]*/\n\n### Function type\n\nFunction types are difficult to check. Given a function object, only you can tell, it's a function object.\nTo be more precise, you can decorate your function with *function type* signature to verify parameters' and result's types, but the check will occur only when function is executed ie. run-time.\n\n```javascript\nvar add = typify(\"add :: number -> number -> number\", function (a, b) {\n    return a + b;\n});\n\nconsole.log(add(1, 2)); // ok\nconsole.log(add(\"foo\", \"bar\")); // throws TypeError\n```\n\n#### Formal syntax of function type declaration:\n\n- *function type* λ ::= ν μ | ν Γ (σ `->`)* ρ σ\n- *action* μ ::= `->` τ\n- *context* Γ ::= α `:` Σ (`,` α `:` Σ)* `=>` | ε\n- *typeset* Σ ::= σ_poly (`|` σ_poly)*\n- *rest parameters* ρ ::= σ `...` `->` | `...` `->` | ε\n- *function name* ν ::= *identifier* `::` | ε\n\n### New types\n\nNew types can be added with `typify.type` method:\n\n```javascript\ntypify.type(\"char\", function(n) {\n    return typeof n === \"string\" && n.length === 1;\n});\n```\n\n*Note:* opaque type checks should return `true`,\nother *truthy* values will be considered errorneous in later versions.\n\nYou can give names to (recursive) compound types with `typify.alias`:\n```javascript\ntypify.alias(\"numstr\", \"number|string\"); // numbers or strings\ntypify.alias(\"rarray\", \"array rarray\"); // arrays of itself, eg [[[[[[]]]]]\n```\n\nFor mutually recursive types use `typify.mutual`:\n```javascript\ntypify.mutual({\n    \"foo\": \"list bar\",\n    \"bar\": \"list foo\",\n});\n```\n\nAlso you can define *record* types with `typify.record`:\n\n```javascript\ntypify.record(\"person\", {\n    name: \"string\",\n    age: \"number\",\n});\n```\n\nRecord types may be recursive:\n\n```javascript\ntyp.record(\"bst\", {\n    left: \"bst?\",\n    right: \"bst?\",\n});\n```\n\nIf you prefer `instanceof`, there is `typify.instance` helper in place:\n```javascript\nfunction Foo() {}\ntyp.instance(\"Foo\", Foo);\ntyp.check(\"Foo\", new Foo());\n```\n\n### Hygiene usage\n\nIf you don't want to use global type database, you can create your own instance of *typify*:\n\n```js\n// In browser\nvar myTypify = typify.create();\n\n// or alternatively, using \"let-binding\":\n(function (typify) {\n    // use typify as it would be global\n}(typify.create()));\n\n// In node\nvar typify = require(\"typify\").create();\n```\n\n## Contributing\n\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using `npm test` command.\n\n## Release History\n\n- 0.2.9 Closed records\n    - `typify.record(name, def, closed)`\n- 0.2.8\n    - Change `date` and `regexp` checks to work in multiframe environments [#34](https://github.com/phadej/typify/issues/34)\n    - Fix typo in README.md [#35](https://github.com/phadej/typify/issues/35)\n    - Update dependencies\n- 0.2.7\n    - Use make\n- 0.2.6\n    - Updated dependencies\n- 0.2.5\n    - `typify.assert`\n    - Added note about opaque type checks (`typify.type`)\n- 0.2.4\n    - `arguments` built-in type\n    - `any` built-in type. Like `*` but not optional\n    - typified most of functions\n- 0.2.3\n    - `fn` shorthand for the function type\n    - `typify.wrap` to typify modules\n    - [istanbul](http://gotwarlost.github.io/istanbul/) code covarage as part of the test suite\n    - `typify.adt` helper for specifying abstract data types -like structures\n    - `infinity`, `ninfinity` and `nan` literals\n    - unified implementation of `typify.type`, `typify.alias` and `typify.record`.\n         - The latter two will be deprecated in 0.3.0 and removed in 0.4.0\n- 0.2.2\n    - mutually recursive types\n    - instanceof types\n- 0.2.1\n    - anonymous record types\n    - tuple, numeric types\n    - mocha test-suite\n    - major code refactor\n- 0.2.0\n    - Recursive record types\n    - Recursive aliases\n    - Intersection types\n    - Hygiene type environments\n\n- 0.1.1\n    - Record type\n    - Fixed typos in README.md\n\n- 0.1.0 Initial release\n\n## License\n\nCopyright (c) 2013 Oleg Grenrus. Licensed under the BSD3 license.\n\n## Related work\n\n### Javascript\n\n- [rho-contracts](https://github.com/sefaira/rho-contracts.js)\n- [ducktype](https://github.com/josdejong/ducktype)\n- [type-check](https://github.com/gkz/type-check)\n\n### Others\n\n- [Racket - Contracts for higher-order functions](http://dl.acm.org/citation.cfm?id=581484)\n- [Typed Clojure](https://github.com/clojure/core.typed)\n- [The Ruby Type Checker](http://www.cs.umd.edu/~jfoster/papers/oops13.pdf)\n\n### Gradual typing (of existing languages)\n\n- [TypeScript](http://www.typescriptlang.org/)\n- [hack](http://hacklang.org/)\n- [Gradual typing on Wikipedia](http://en.wikipedia.org/wiki/Gradual_typing)\n","maintainers":[{"name":"phadej","email":"oleg.grenrus@iki.fi"}],"time":{"modified":"2022-06-28T02:09:22.669Z","created":"2013-07-22T09:07:02.852Z","0.1.0":"2013-07-22T09:07:06.260Z","0.1.1":"2013-07-26T13:44:09.307Z","0.2.0":"2013-08-05T15:58:29.474Z","0.2.1":"2013-11-23T11:33:23.198Z","0.2.3":"2014-01-15T14:23:03.357Z","0.2.4":"2014-01-18T13:35:29.274Z","0.2.5":"2014-02-09T16:47:13.628Z","0.2.6":"2014-06-30T18:01:50.599Z","0.2.7":"2014-07-01T08:41:35.969Z","0.2.9":"2015-03-30T07:57:49.940Z","0.2.10":"2019-03-04T11:38:13.338Z"},"author":{"name":"Oleg Grenrus","email":"oleg.grenrus@iki.fi","url":"http://oleg.fi"},"repository":{"type":"git","url":"git://github.com/phadej/typify.git"},"readmeFilename":"README.md","homepage":"https://github.com/phadej/typify","keywords":["type","checking","typify","data","validation"],"bugs":{"url":"https://github.com/phadej/typify/issues"},"license":"BSD-3-Clause"}