{"_id":"@actualwave/type-checkers","_rev":"8-37f78a9d98a30ea08b087390471a901f","name":"@actualwave/type-checkers","dist-tags":{"latest":"0.2.5"},"versions":{"0.1.11":{"name":"@actualwave/type-checkers","version":"0.1.11","keywords":["js","javascript"],"author":{"url":"http://actualwave.com/","name":"Oleg Galaburda","email":"burdiuz@gmail.com"},"license":"MIT","_id":"@actualwave/type-checkers@0.1.11","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"homepage":"https://github.com/burdiuz/js-lib-environment","bugs":{"url":"https://github.com/burdiuz/js-lib-environment/issues","email":"burdiuz@gmail.com"},"dist":{"shasum":"2468832fb41944fc1abd467f7c8b53aa38e4d072","tarball":"https://registry.npmjs.org/@actualwave/type-checkers/-/type-checkers-0.1.11.tgz","fileCount":58,"integrity":"sha512-vZq8R17XotP78lGuqlNY1raSUSWnpX+3ZKmoOYYP8E8IMgQbKQQc9zk8Wo0mPsa+Es1vQ4JV9GLHQzy2NQB5Bg==","signatures":[{"sig":"MEUCIQCqQ/Hj+07Qu3QoQLyF/RnzVL2qcbc+8bTOXYCStDYzzgIgA9A5YvUI6dLbsCAE5LjDZAOi+LXqeLjjyDybFDBpPXA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAnnzCRA9TVsSAnZWagAA+PMP/16QjPn2sSU1xLLxawS4\n21kWduq+TveozDXBUJ0HW4jRowCSLNCEhGBM9I4zWRCTTJWhpAWN2M/g+MZs\n72dEDUVywI8TrRSd63bflUYNL5tQtcimIhC9XkfFl1Ql68xijW4hzUaJWTf1\n2yWhGd82+H1vgKOdNUUPxl5uIxrrgKj7cUAJ+p+uBm/cdoobDci/2tP9G9tg\nK2Po8Lw0+MJpRsNQDmTJDXP4WppUybTB9EIw4v8Pip1JCAStaJCmBIgPn1g2\nMiRexRxqPsK4szfBJzORZiJHfgso3rhn1ezSa2UsRb7yghkQylQ3rLxwytYH\nZhmr5DiIMERQq8MAF01AQcsTX0/OraSSPS2XtKR7nEkyNz4D3rlhsQ68GumK\nOfD5fYnaApvljFXdqLM4FseMmMXMsuozDy3Trv8kTV532r+BMMWWZbLzqbLP\nR3ViKi8o8hdNxu3DILMqpih6ZPYsnZ0v5x/b8VvTFWRotc6iBMvSgsfUg3yh\nQnMUKVeaz6Pze8QycLfCADMwHD0eBgnBsMLgzrGGETStTooDXUvkzFWwzO5l\nYyb+3Oc+ddG69aXX/M/2hWZIQib21C4pqOwcGKsULrt61deCebaUHWwIVPzS\n7yXUBm0JUu0cdp5kNtQ6K97NsiIbC2AuAdYzwsTWIYEezZ6IGpRgH+ys81mt\nyboO\r\n=cVoW\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"collectCoverage":true,"coverageDirectory":"coverage","coverageReporters":["json","lcov"],"collectCoverageFrom":["source/**/*.js","!**/node_modules/**","!**/vendor/**"]},"main":"dist/type-checkers.js","babel":{"env":{"test":{"plugins":["babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-flow-strip-types","babel-plugin-transform-class-properties",["babel-plugin-transform-object-rest-spread",{"useBuiltIns":true}]],"presets":["jest"]}}},"gitHead":"c8302ad3c8839c83e6dee9ffe2c372b5f9cf08a2","scripts":{"flow":"flow","lint":"eslint \"source/**/*.js\"","test":"jest --colors","build":"rollup --config","start":"build","server":"rollup --config rollup.serve.js","precommit":"npm run build && npm run test && npm run lint-staged","test:watch":"jest --colors --watch","build:watch":"rollup --config --watch \"./source\"","lint-staged":"lint-staged"},"_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"prettier":{"parser":"flow","arrowParens":"always","singleQuote":true,"trailing-comma":"es5"},"repository":{"url":"git+https://github.com/burdiuz/js-lib-environment.git","type":"git"},"_npmVersion":"6.0.1","description":"Framework for parameter/value analysis on access or mutation, used for type check in runtime.","directories":{},"lint-staged":{"source/**/*.js":["prettier --write","eslint --fix","git add"]},"_nodeVersion":"8.10.0","dependencies":{"@actualwave/has-own":"^0.0.1`"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.4.3","husky":"^0.14.3","eslint":"^4.19.1","flow-bin":"^0.72.0","prettier":"^1.12.1","uglify-es":"^3.3.9","babel-core":"^6.26.3","lint-staged":"^7.1.0","babel-eslint":"^8.2.3","babel-loader":"^7.1.4","babel-preset-jest":"^22.4.3","rollup-plugin-json":"^3.0.0","eslint-plugin-react":"^7.8.2","rollup-plugin-babel":"^3.0.4","rollup-plugin-serve":"^0.4.2","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.11.0","rollup-plugin-uglify":"^3.0.0","babel-plugin-istanbul":"^4.1.6","eslint-plugin-jsx-a11y":"^6.0.3","rollup-plugin-commonjs":"^9.1.3","rollup-plugin-node-resolve":"^3.3.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2"},"_npmOperationalInternal":{"tmp":"tmp/type-checkers_0.1.11_1526888946626_0.6803328284650807","host":"s3://npm-registry-packages"}},"0.1.12":{"name":"@actualwave/type-checkers","version":"0.1.12","keywords":["js","javascript"],"author":{"url":"http://actualwave.com/","name":"Oleg Galaburda","email":"burdiuz@gmail.com"},"license":"MIT","_id":"@actualwave/type-checkers@0.1.12","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"homepage":"https://github.com/burdiuz/js-lib-environment","bugs":{"url":"https://github.com/burdiuz/js-lib-environment/issues","email":"burdiuz@gmail.com"},"dist":{"shasum":"85136b0f19fa15863c2636d18d13b1b33029241f","tarball":"https://registry.npmjs.org/@actualwave/type-checkers/-/type-checkers-0.1.12.tgz","fileCount":58,"integrity":"sha512-ac/YGtvb70EFHDOz5reavwoieNS3/zxSIBe2ICx+WYJEdam4OlQqY3QP3f8t2Nok3qKsOdUk06FRYpVmcMiKgw==","signatures":[{"sig":"MEYCIQDKKlKQZA+3Nb+8eLZl+pdYisN3ID5lLuIKiztEycIhBQIhANQfPEu51dk4pdxCXyacbf5tRn7vOm94gYJqK97BtW5Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAnpzCRA9TVsSAnZWagAAWP8P/3Bi1U4H3fhyAPvu7vVa\n7VkKXg7i7onkzWLSpCjjzqNpSw/L3edPw/80hw2Y8JitEl+cTAVU3Coe4TVl\n8R3ZdSzuKwXKSwgqQ3o0xXuk7uRIsdk7mWVK0+LMKS7V+CQW41AorwEOZjtJ\n7Jo2fuWkG1R4isFuC5osKGtYXcxts5cX13uxmwyvjWNDFpKfVY45e5OcbFsD\nI3O/dagAIHcGDuQfRT2ud5olkqnkcfORPt4n5LCOVWcvPRAsgregc5gbC5Ef\nud64SQPtybYtuC3iy6XXYty7XrP5ZSYFjxA1f6UCc5OtBngPVN1pxSsB9xmm\n727qQP5KPthRZxTRk+5GbauzqU5YldUAGbSo1yq0jLm2hjKI5Dbrs2Kn3PLb\njju/Yh86KYREfZ+HpvTM8Kagl5CxEMPpMip37CcYtf7f5++TI8efmM/Wusc4\n/VOjv85+F4vSkLxTS5bdXuMUOOf8gSbJcT2xiHGYbHX/dSFFqkMRi5PaZV+g\nIeXwM0W1KiupMKSxk6YjZhRINhSP4dZ20rKah8AA9iJQ+NAYGyB2lOu3SFAs\nAESfF5gotmOxjie6A7/hJz1K6punSwcLUYt4ozT4tuIDwaWeP34w6PHW+XcB\n6NrSQcyqmnWPRfmdl92MRhKZ5jzaPEniTK9R/K51qon2G6wmXPmxvmaf2U8m\nrBiF\r\n=pw0m\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"collectCoverage":true,"coverageDirectory":"coverage","coverageReporters":["json","lcov"],"collectCoverageFrom":["source/**/*.js","!**/node_modules/**","!**/vendor/**"]},"main":"dist/type-checkers.js","babel":{"env":{"test":{"plugins":["babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-flow-strip-types","babel-plugin-transform-class-properties",["babel-plugin-transform-object-rest-spread",{"useBuiltIns":true}]],"presets":["jest"]}}},"gitHead":"5725453cc68f0846e716645f76fb86fcc928960e","scripts":{"flow":"flow","lint":"eslint \"source/**/*.js\"","test":"jest --colors","build":"rollup --config","start":"build","server":"rollup --config rollup.serve.js","precommit":"npm run build && npm run test && npm run lint-staged","test:watch":"jest --colors --watch","build:watch":"rollup --config --watch \"./source\"","lint-staged":"lint-staged"},"_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"prettier":{"parser":"flow","arrowParens":"always","singleQuote":true,"trailing-comma":"es5"},"repository":{"url":"git+https://github.com/burdiuz/js-lib-environment.git","type":"git"},"_npmVersion":"6.0.1","description":"Framework for parameter/value analysis on access or mutation, used for type check in runtime.","directories":{},"lint-staged":{"source/**/*.js":["prettier --write","eslint --fix","git add"]},"_nodeVersion":"8.10.0","dependencies":{"@actualwave/has-own":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.4.3","husky":"^0.14.3","eslint":"^4.19.1","flow-bin":"^0.72.0","prettier":"^1.12.1","uglify-es":"^3.3.9","babel-core":"^6.26.3","lint-staged":"^7.1.0","babel-eslint":"^8.2.3","babel-loader":"^7.1.4","babel-preset-jest":"^22.4.3","rollup-plugin-json":"^3.0.0","eslint-plugin-react":"^7.8.2","rollup-plugin-babel":"^3.0.4","rollup-plugin-serve":"^0.4.2","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.11.0","rollup-plugin-uglify":"^3.0.0","babel-plugin-istanbul":"^4.1.6","eslint-plugin-jsx-a11y":"^6.0.3","rollup-plugin-commonjs":"^9.1.3","rollup-plugin-node-resolve":"^3.3.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2"},"_npmOperationalInternal":{"tmp":"tmp/type-checkers_0.1.12_1526889075045_0.17630850347118243","host":"s3://npm-registry-packages"}},"0.1.13":{"name":"@actualwave/type-checkers","version":"0.1.13","keywords":["js","javascript"],"author":{"url":"http://actualwave.com/","name":"Oleg Galaburda","email":"burdiuz@gmail.com"},"license":"MIT","_id":"@actualwave/type-checkers@0.1.13","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"homepage":"https://github.com/burdiuz/js-type-checkers","bugs":{"url":"https://github.com/burdiuz/js-type-checkers/issues","email":"burdiuz@gmail.com"},"dist":{"shasum":"ca66aedfb6b984184ac16f919164f01996afd9d4","tarball":"https://registry.npmjs.org/@actualwave/type-checkers/-/type-checkers-0.1.13.tgz","fileCount":58,"integrity":"sha512-Y8ZmKzLWTux6IY0MtlUOP7h742MJiouJ/ngneqIhajpjztbiG1/CbhE//M4a5fJ+joCzkDrC1qX4UAmmRm2v3Q==","signatures":[{"sig":"MEQCIHNILXbyrVjhsAQAC01WOFXy2INRioRssNAy7NFFiwc8AiBd62fZ46teDEzMQQneVqPTC+Kxfl2HCqztzeAOeVGytg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAn+HCRA9TVsSAnZWagAA4VEP/iR8CBbdiDqEt02TD0YK\njP6b56LsjfhNbBQNJBC34Y5KZd+85U9fyGnH9R8+NIcBaJ5DNMGY32gXvqnh\nxGK6DurK5MCLx/cL61s+OCSXFEhSg2ztbKmXG27coNivcpicesXcq+poyLF3\n11CX5XcB3B5WO5ZyDLDB/2w2bYpUjXckn8rEDl/Z8ryGb16RJQl48rirHZOl\ntPG1E56eNQOyKvTEhEna4B5wjf/c/5AGdqyWUYKaHycmGfWj+U+Nmuo8FpT0\nnug1AgjIUwQJPRmHmjNov7RxmHix8GTSIJjLByLeAqX8y4rw6pAC7eJXrkzL\nmn7pGRigRez/Q/j52hZFABT4ZcexHRi1MygN5f9Ptjp5KH5jfKTE29JQJMU6\nu4fXTQ9gD0PktGHT6aaCOcYZuOE4OZ9cJEZXmOhvEASvULwAReaKgG2Bg5/l\nMpU3fSQ1I5jpSPkNP1yFzrsrzedqT0ZaZQMUAanihrwCk4iNPqtUlDAhKbRM\nyaM0usVkF9l0vkzfTzwqForCozuwZrOxTHNgdounLjki9vbp1+m/T9DHQvX2\n4vmYYEHhHARH4JY2YfXSRxnbaxkSWwpOFREmGr8Twl9acc5cX0Ig7IR9lHN/\n99CvU3RhTuRlpOb5Hw2jd+89B/gDkCxwq9vkRX/OVttVneJM5hD0uuEY7CTq\nplTO\r\n=aDJb\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"collectCoverage":true,"coverageDirectory":"coverage","coverageReporters":["json","lcov"],"collectCoverageFrom":["source/**/*.js","!**/node_modules/**","!**/vendor/**"]},"main":"dist/type-checkers.js","babel":{"env":{"test":{"plugins":["babel-plugin-transform-es2015-modules-commonjs","babel-plugin-transform-flow-strip-types","babel-plugin-transform-class-properties",["babel-plugin-transform-object-rest-spread",{"useBuiltIns":true}]],"presets":["jest"]}}},"gitHead":"8afc7628a913062f03a14fc0f4b37df9374c35e7","scripts":{"flow":"flow","lint":"eslint \"source/**/*.js\"","test":"jest --colors","build":"rollup --config","start":"build","server":"rollup --config rollup.serve.js","precommit":"npm run build && npm run test && npm run lint-staged","test:watch":"jest --colors --watch","build:watch":"rollup --config --watch \"./source\"","lint-staged":"lint-staged"},"_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"prettier":{"parser":"flow","arrowParens":"always","singleQuote":true,"trailing-comma":"es5"},"repository":{"url":"git+https://github.com/burdiuz/js-type-checkers.git","type":"git"},"_npmVersion":"6.0.1","description":"Framework for parameter/value analysis on access or mutation, used for type check in runtime.","directories":{},"lint-staged":{"source/**/*.js":["prettier --write","eslint --fix","git add"]},"_nodeVersion":"8.10.0","dependencies":{"@actualwave/has-own":"^0.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.4.3","husky":"^0.14.3","eslint":"^4.19.1","flow-bin":"^0.72.0","prettier":"^1.12.1","uglify-es":"^3.3.9","babel-core":"^6.26.3","lint-staged":"^7.1.0","babel-eslint":"^8.2.3","babel-loader":"^7.1.4","babel-preset-jest":"^22.4.3","rollup-plugin-json":"^3.0.0","eslint-plugin-react":"^7.8.2","rollup-plugin-babel":"^3.0.4","rollup-plugin-serve":"^0.4.2","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.11.0","rollup-plugin-uglify":"^3.0.0","babel-plugin-istanbul":"^4.1.6","eslint-plugin-jsx-a11y":"^6.0.3","rollup-plugin-commonjs":"^9.1.3","rollup-plugin-node-resolve":"^3.3.0","babel-plugin-external-helpers":"^6.22.0","babel-plugin-transform-class-properties":"^6.24.1","babel-plugin-transform-flow-strip-types":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2"},"_npmOperationalInternal":{"tmp":"tmp/type-checkers_0.1.13_1526890373704_0.9160313800184239","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@actualwave/type-checkers","version":"0.2.2","keywords":["js","javascript"],"author":{"url":"http://actualwave.com/","name":"Oleg Galaburda","email":"burdiuz@gmail.com"},"license":"MIT","_id":"@actualwave/type-checkers@0.2.2","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"homepage":"https://github.com/burdiuz/js-type-checkers","bugs":{"url":"https://github.com/burdiuz/js-type-checkers/issues","email":"burdiuz@gmail.com"},"dist":{"shasum":"2a8c6435dc8006f96971eecfa64e07b4882debc6","tarball":"https://registry.npmjs.org/@actualwave/type-checkers/-/type-checkers-0.2.2.tgz","fileCount":26,"integrity":"sha512-14oY2w9DZMAo65v0tZgKzcg+bYQCtRy1fj6TqybgrFeNzas9jsChrkM3Rl67BbE7PnsV2qu+fB/dmZi/DxKhTQ==","signatures":[{"sig":"MEUCIAPSisqsdUyABMR0mx/ytjq6YIoHSuZ/SmEP79DgKkWwAiEAmTq9xUJgLie53j7HnbA3NNiTzcSWvx3xBqp6upOSdEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55333},"main":"index.js","types":"index.d.ts","gitHead":"7c6955bf01147d07e25a8c8d766b1548ebf4aeaf","_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"repository":{"url":"git+https://github.com/burdiuz/js-type-checkers.git","type":"git"},"_npmVersion":"11.5.1","description":"Framework for parameter/value analysis on access or mutation, used for type check in runtime.","directories":{},"_nodeVersion":"24.6.0","dependencies":{"@actualwave/get-class":"^0.0.6","@actualwave/with-proxy":"^0.0.1","@actualwave/closure-value":"^0.0.3","@actualwave/path-sequence-to-string":"^0.0.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/type-checkers_0.2.2_1777847371009_0.966928413058469","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@actualwave/type-checkers","version":"0.2.3","keywords":["js","javascript"],"author":{"url":"http://actualwave.com/","name":"Oleg Galaburda","email":"burdiuz@gmail.com"},"license":"MIT","_id":"@actualwave/type-checkers@0.2.3","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"homepage":"https://github.com/burdiuz/js-type-checkers","bugs":{"url":"https://github.com/burdiuz/js-type-checkers/issues","email":"burdiuz@gmail.com"},"dist":{"shasum":"591285fcf5323e1be9e75c01ce2de7bc74ce1d92","tarball":"https://registry.npmjs.org/@actualwave/type-checkers/-/type-checkers-0.2.3.tgz","fileCount":28,"integrity":"sha512-CxYty/ugxaFz/hCQyMe/Wc8RRp8oRMLePbRjogKJfNAPh6JhAgMtMXYKyLUDCEBUWwVcYKMHt/mX4KcGgoDUKw==","signatures":[{"sig":"MEUCIQCDo121BVqUSgVLy7lOJBd4xLwN6fWo2/m0tnm2TOBHvgIgU2eIcNYgQVrrBk3KSGHVL0Dir+tEfF9VP7MR4xUTyCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92450},"main":"index.js","types":"index.d.ts","gitHead":"f2032c863ba9a88ce339980b3fec2a22abb6c964","_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"repository":{"url":"git+https://github.com/burdiuz/js-type-checkers.git","type":"git"},"_npmVersion":"11.5.1","description":"Framework for parameter/value analysis on access or mutation, used for type check in runtime.","directories":{},"_nodeVersion":"24.6.0","dependencies":{"@actualwave/get-class":"^0.0.6","@actualwave/with-proxy":"^0.0.1","@actualwave/closure-value":"^0.0.3","@actualwave/path-sequence-to-string":"^0.0.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/type-checkers_0.2.3_1778181310683_0.7396937975476467","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@actualwave/type-checkers","version":"0.2.4","keywords":["js","javascript"],"author":{"url":"http://actualwave.com/","name":"Oleg Galaburda","email":"burdiuz@gmail.com"},"license":"MIT","_id":"@actualwave/type-checkers@0.2.4","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"homepage":"https://github.com/burdiuz/js-type-checkers","bugs":{"url":"https://github.com/burdiuz/js-type-checkers/issues","email":"burdiuz@gmail.com"},"dist":{"shasum":"80d300c22fc3e4e0886f57b336beb6467a75b259","tarball":"https://registry.npmjs.org/@actualwave/type-checkers/-/type-checkers-0.2.4.tgz","fileCount":28,"integrity":"sha512-V6hDxH++jgsvNHLgDPwg6fmVDqSJ5FLQ3xbWkHHfl5Kxmq1GNUX5d0abCq8AB4llyNi91h7lJ0GPcSp+xywxTw==","signatures":[{"sig":"MEYCIQCdgZpjyDEmG5eA1HkFN3FNn5WJ/swLAuBnP+CyGXV6mAIhAMJB+OQTn7Mvz9stJTYEqn10DzmNeLNIh1ia+IQs4zop","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108497},"main":"index.js","types":"index.d.ts","gitHead":"df5acbfd71bc599e56b086449b344ea075242c92","_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"repository":{"url":"git+https://github.com/burdiuz/js-type-checkers.git","type":"git"},"_npmVersion":"11.5.1","description":"Framework for parameter/value analysis on access or mutation, used for type check in runtime.","directories":{},"_nodeVersion":"24.6.0","dependencies":{"@actualwave/get-class":"^0.0.6","@actualwave/with-proxy":"^0.0.1","@actualwave/closure-value":"^0.0.3","@actualwave/path-sequence-to-string":"^0.0.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/type-checkers_0.2.4_1778181959902_0.9078376097378933","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@actualwave/type-checkers","description":"Framework for parameter/value analysis on access or mutation, used for type check in runtime.","version":"0.2.5","main":"index.js","types":"index.d.ts","keywords":["js","javascript"],"homepage":"https://github.com/burdiuz/js-type-checkers","bugs":{"url":"https://github.com/burdiuz/js-type-checkers/issues","email":"burdiuz@gmail.com"},"license":"MIT","author":{"name":"Oleg Galaburda","email":"burdiuz@gmail.com","url":"http://actualwave.com/"},"repository":{"type":"git","url":"git+https://github.com/burdiuz/js-type-checkers.git"},"dependencies":{"@actualwave/closure-value":"^0.0.3","@actualwave/get-class":"^0.0.6","@actualwave/path-sequence-to-string":"^0.0.7","@actualwave/with-proxy":"^0.0.1"},"_id":"@actualwave/type-checkers@0.2.5","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-788SkBMThNBPMYIzLlfALhI1FEYBU/m9i2nvYKGETaSVlx7nI/Jgc8cGgv9nWvR+6sC1tVGiPg+51JUhT0Gddg==","shasum":"e713d7f0cc52d00152acd1032d799e7629aa456b","tarball":"https://registry.npmjs.org/@actualwave/type-checkers/-/type-checkers-0.2.5.tgz","fileCount":28,"unpackedSize":108509,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA9u9pmQW0I5TxBEUZgkOe5XcZT34Guhuw5JoTiiniZwAiEAoD6kFt4aM4sCaXwGcKCEiCRf9tl/vuTiMC3gKaJgpSU="}]},"_npmUser":{"name":"actualwave","email":"burdiuz@gmail.com"},"directories":{},"maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/type-checkers_0.2.5_1778182106774_0.9755023528930908"},"_hasShrinkwrap":false}},"time":{"created":"2018-05-21T07:49:06.362Z","modified":"2026-05-07T19:28:27.012Z","0.1.11":"2018-05-21T07:49:06.742Z","0.1.12":"2018-05-21T07:51:15.224Z","0.1.13":"2018-05-21T08:12:53.856Z","0.2.2":"2026-05-03T22:29:31.173Z","0.2.3":"2026-05-07T19:15:10.825Z","0.2.4":"2026-05-07T19:26:00.041Z","0.2.5":"2026-05-07T19:28:26.906Z"},"bugs":{"url":"https://github.com/burdiuz/js-type-checkers/issues","email":"burdiuz@gmail.com"},"author":{"name":"Oleg Galaburda","email":"burdiuz@gmail.com","url":"http://actualwave.com/"},"license":"MIT","homepage":"https://github.com/burdiuz/js-type-checkers","keywords":["js","javascript"],"repository":{"type":"git","url":"git+https://github.com/burdiuz/js-type-checkers.git"},"description":"Framework for parameter/value analysis on access or mutation, used for type check in runtime.","maintainers":[{"name":"actualwave","email":"burdiuz@gmail.com"}],"readme":"# @actualwave/type-checkers\n\nRuntime type consistency checking for JavaScript and TypeScript objects via `Proxy`. Wraps any object or function and calls a pluggable `TypeChecker` whenever a property is read, written, a function is called, or a property is deleted — letting you detect type inconsistencies without a build step.\n\n## Installation\n\n```bash\nnpm install @actualwave/type-checkers\n```\n\n## Quick start\n\nImplement the `TypeChecker` interface and pass it to `wrap()`:\n\n```typescript\nimport { wrap, setDefaultTypeChecker, TypeChecker } from '@actualwave/type-checkers';\n\nconst myChecker: TypeChecker<Record<string, string>> = {\n  init(_target, data) {\n    return (data as Record<string, string>) ?? {};\n  },\n  mergeConfigs(target, source) {\n    return { ...target, ...source };\n  },\n  setProperty(_target, names, value, data) {\n    const key = names.toString();\n    const expected = data?.[key];\n    const actual = typeof value;\n    if (expected && actual !== expected) {\n      console.warn(`\"${key}\": expected ${expected}, got ${actual}`);\n    } else {\n      data![key] = actual;\n    }\n  },\n};\n\nsetDefaultTypeChecker(myChecker);\n\nconst obj = wrap({ count: 0, label: 'hello' });\n\nobj.count = 1;       // ok\nobj.count = 'oops';  // warns: \"count\": expected number, got string\n```\n\n## API\n\n### Wrapping\n\n#### `wrap(target, options?, proxyConfig?)`\n\nWraps a single object or function with a `Proxy`. Returns `target` unchanged when it is already wrapped, not wrappable, or type-checking is globally disabled.\n\n```typescript\nimport { wrap } from '@actualwave/type-checkers';\n\nconst wrapped = wrap(myObject, { checker, deep: false, name: 'root' });\n```\n\n#### `wrapDeep(target, options?, proxyConfig?)`\n\nLike `wrap()` but also walks all own enumerable properties and pre-wraps nested objects, calling `checker.getProperty()` for each encountered value.\n\n```typescript\nimport { wrapDeep } from '@actualwave/type-checkers';\n\nconst wrapped = wrapDeep(myObject);\n```\n\n#### `WrapOptions`\n\n| Field | Type | Description |\n|---|---|---|\n| `checker` | `TypeChecker` | Checker to use; defaults to the global default |\n| `deep` | `boolean` | Auto-wrap child objects on access (default `true`) |\n| `name` | `string \\| number \\| symbol` | Name for the root path segment |\n| `data` | `unknown` | Initial data forwarded to `checker.init()` |\n| `info` | `TargetInfo` | Supply a pre-built info object; all other options are ignored |\n\n#### `WrapProxyConfig`\n\nDisable individual proxy traps. All are enabled by default.\n\n```typescript\n// Monitor gets and sets only — ignore calls and construction\nconst wrapped = wrap(fn, null, { get: true, set: true, apply: false, construct: false });\n```\n\n### Object utilities\n\n#### `assign(target, ...sources)` / `assign.options(options, target, ...sources)`\n\nDrop-in replacement for `Object.assign`. If `target` or any source is already wrapped the result retains the type-checker.\n\n```typescript\nimport { assign } from '@actualwave/type-checkers';\n\nconst result = assign(wrappedTarget, { extra: true });\n// result is wrapped with the same checker\n```\n\n#### `merge(...sources)` / `merge.options(options, ...sources)`\n\nLike `Object.assign({}, ...sources)`. If any source is wrapped, the newly created object is also wrapped with the same checker.\n\n```typescript\nimport { merge } from '@actualwave/type-checkers';\n\nconst result = merge(wrappedA, plainB);\n// result is a new wrapped object\n```\n\n### Wrap configuration flags\n\nGlobal defaults are changed with `setWrapConfigValue(key, value)`. Individual wrapped objects can be overridden with `setWrapConfigTo(wrapped, key, value)`.\n\n| Constant | Default | Description |\n|---|---|---|\n| `WRAP_FUNCTION_RETURN_VALUES` | `true` | Wrap objects returned from functions |\n| `WRAP_FUNCTION_ARGUMENTS` | `false` | Wrap objects passed as function arguments |\n| `WRAP_SET_PROPERTY_VALUES` | `false` | Wrap objects written to properties |\n| `WRAP_IGNORE_PROTOTYPE_METHODS` | `false` | Skip prototype-inherited methods |\n\n```typescript\nimport {\n  setWrapConfigValue,\n  setWrapConfigTo,\n  WRAP_FUNCTION_ARGUMENTS,\n} from '@actualwave/type-checkers';\n\n// Enable argument wrapping globally\nsetWrapConfigValue(WRAP_FUNCTION_ARGUMENTS, true);\n\n// Or for a single wrapped object\nsetWrapConfigTo(wrappedObj, WRAP_FUNCTION_ARGUMENTS, true);\n```\n\n### Utility functions\n\n| Function | Description |\n|---|---|\n| `isWrapped(value)` | `true` if the value is a proxy created by this library |\n| `isWrappable(value)` | `true` if the value is an object or function that can be wrapped |\n| `unwrap(value)` | Returns the raw underlying target |\n\n### Global configuration\n\n| Function | Description |\n|---|---|\n| `setDefaultTypeChecker(checker)` | Set the checker used when none is passed to `wrap()` |\n| `getDefaultTypeChecker()` | Retrieve the current global checker |\n| `setEnabled(value)` | Globally enable or disable wrapping (`true` by default) |\n| `isEnabled()` | Returns the current enabled state |\n\nDisabling globally lets you turn off all overhead in production without removing `wrap()` calls:\n\n```typescript\nimport { setEnabled } from '@actualwave/type-checkers';\n\nif (process.env.NODE_ENV === 'production') {\n  setEnabled(false);\n}\n```\n\n### Filtering\n\nPrevent specific classes or property names from being intercepted:\n\n```typescript\nimport {\n  ignoreClass,\n  stopIgnoringClass,\n  isClassIgnored,\n  getIgnoredClasses,\n} from '@actualwave/type-checkers';\n\nignoreClass(Date);       // Date instances will never be wrapped\nstopIgnoringClass(Date); // remove the exclusion\n```\n\n```typescript\nimport {\n  ignoreProperty,\n  stopIgnoringProperty,\n  isPropertyIgnored,\n  getIgnoredProperties,\n} from '@actualwave/type-checkers';\n\nignoreProperty('id');    // 'id' will not trigger checker events\n```\n\nThe properties `constructor`, `prototype`, and `__proto__` are ignored by default.\n\n### Introspection\n\n```typescript\nimport {\n  getTargetInfo,\n  getTypeChecker,\n  getTypeCheckerData,\n  removeTargetInfo,\n} from '@actualwave/type-checkers';\n\nconst info    = getTargetInfo(wrapped);      // TargetInfo | undefined\nconst checker = getTypeChecker(wrapped);     // TypeChecker | undefined\nconst data    = getTypeCheckerData(wrapped); // checker data | undefined\n```\n\n## TypeChecker interface\n\n```typescript\ninterface TypeChecker<D = unknown> {\n  /** Called when a proxy is created. Return the initial checker data for this target. */\n  init(target: object, data?: D | null): D | null;\n\n  /** Called when two wrapped objects are merged. Combine data from both and return the result. */\n  mergeConfigs(targetData: D | null, sourceData: D | null, names: PathSequence): D | null;\n\n  // All hooks below are optional:\n\n  /** A property was read from the wrapped object. */\n  getProperty?(target: object, names: PathSequence, value: unknown, data: D | null): void;\n\n  /** A value was assigned to a property. */\n  setProperty?(target: object, names: PathSequence, value: unknown, data: D | null): void;\n\n  /** A wrapped function was called — inspect its arguments. */\n  arguments?(target: Function, names: PathSequence, args: unknown[], data: D | null, thisArg?: unknown): void;\n\n  /** A wrapped function returned — inspect its return value. */\n  returnValue?(target: Function, names: PathSequence, result: unknown, data: D | null, thisArg?: unknown): void;\n\n  /** A property was deleted. */\n  deleteProperty?(target: object, names: PathSequence, data: D | null): void;\n}\n```\n\n`PathSequence` is from [`@actualwave/path-sequence-to-string`](https://github.com/burdiuz/js-path-sequence-to-string) and represents the dot-path to the current property (e.g. `root.child.method`).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}