{"_id":"@bahmutov/spok","_rev":"12-e063d574231d1ee6ec8c32825bc13d3a","name":"@bahmutov/spok","dist-tags":{"latest":"1.2.10"},"versions":{"1.2.0":{"name":"@bahmutov/spok","version":"1.2.0","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.0","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"0d72d4ec584402adca7ce762609b868faf8c7aac","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.0.tgz","fileCount":9,"integrity":"sha512-EBZ968EAEE0oQ2eba9OyXMixtpxt3tQrSo2u8uZL4gCJF78fEvZlpHCqv24PdGLvBUpY0ceFUng2brrQM7tw3g==","signatures":[{"sig":"MEQCIHEF2Lmar3O74RIRqmQfI4XzvEPPbTOTnHQKrZIfCHhMAiAl29A5pQa+gtyGTwJPOsnjMq/RlmGpq0H3Fo8qm04y0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJendJRCRA9TVsSAnZWagAAMnkP/2FDRZVxhDL0Cf4MyATj\nrRA27cxJZKSAwLNwSMwGxrN5j+TtOuFxzKwoylgvKDNNvCxa5SaVPUgnDT2e\n8oegGCkDxz1isn2qVPLAT8GSZk2IKbB7m85Uyeclp03BjboZBg6I8bBOTCBA\n26VIYOq6f81nK7jJsx4V/AOelldPe4OA2PeGojqkSdScB0NM8i6+2UQUcatu\nuTZlzKrbL0fldw7vCNKS/78AlK1bipdNARZ5eQEEWrh2XTMeC02gbpW2TmOX\npvWNSzSLlp3Kr7iwniMFqEdwcjumo/nX8OC/aSDtn0BReDuC2Xn3ABu/CttD\nDzUo64S2n0dd0J3pOdOaNSiIEnPMWGFscsPaawJixRt95CWypnfpoFD5jPbS\ntNCNftf4SuyIbU9wme4I+mHzHn0ZexmmZQMtctdrW164zxxxx1ElEGSniSf4\na1remODNFxXF2h2LQhVBlHjtZxghA7RFhCEwPIRzVw1HcvW57oXroSMcdtbq\ntTrpQV6Vl1MN5qC/aHsIPUwr3qwB2ej7HSA06tHp4aR18eBDRAdBeLsD4Pem\noi+krS/v5r1xzrG75Z883jeDpPZJeDI9nMpqOA7jZPnPycrSbMPn8tpEIcL7\n/8Urqx+xoOrdximXALt1TaCVQirN+nQnzGXfxKqxHOAkuk94KfLo+rudueZ6\n2j92\r\n=OywT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"bc4e85d14fcc7362015df5d8698a93d6d80b4f59","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","tsfmt":"tsfmt --baseDir . -r","test-8":"nave use 8 npm run test-main","test-10":"nave use 10 npm run test-main","test-12":"nave use 12 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-main && npm run test-8 && npm run test-10 && npm run test-12","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"12.16.2","dependencies":{"ansicolors":"~0.3.2"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.0_1587401297259_0.3394655874694703","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@bahmutov/spok","version":"1.2.1","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.1","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"2a2ad8a13f2d8822f9cc025a66328ede20b06c77","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.1.tgz","fileCount":9,"integrity":"sha512-W07XDtyPwVyDTEOzUfy+fCCgl66BLznfc08nlNZvnB2Yk4G08kcfSbuGFK+eSX+gvOhPL6rMAgwTrFBEn6pgKg==","signatures":[{"sig":"MEUCIQDpDR3aOucT0Uw9SXF/J9P0ilHi82nIKQPDdUVxZn78/AIgBEhFDZrcHHp2g0Ca+qmXVVoS1mikUFOwJrn7sL4llA0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5O4nACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqU6A//QQ7+YHk/l+KBu3cXeVVQ8N4pk8vhN9vSfqXYORI8fJYqXWB5\r\not++xitlPR9IeqnrG8CYg21DpR3wIhWgsjPgq3wZgkbFxTUopTalnyU/4Mv4\r\nCYkPO2VHA/hU/ouFZjHqoe2iyVV84rjO5e72WIq+x5H5L0A6slTgJ/97VGqu\r\nEjVIlyICkq5H54i9W3I24MN4P+1Jz6phWHkUOInUL4tJaqmYFDMPaPt/53kq\r\nkgWZNBZ8vV3ad4BWj4JiL9RpGCyRrheqewMyX9BVTCUri/ZO2asIrEMnNEsS\r\nyH5/eHlZTE+yxzYgDnWJEzesx41SAprZSoX1Il78+FVH53tok18C2Gec10LY\r\ntVkNR1Yg058ymEZWYZCD6GV96+Iq7azrrZE1qXycoOFx1I7ZPkt/D6kKnP4Z\r\nb5BsrsSD1/StRYDX4gSPB/nK9Jr4EGE7Uw2Hx8s6UZNDsNNYLKrPkDgAMGc6\r\nC18nbvY3AOZJKhpheF4KtbkVTCwFdw3u1T3IvcIdS9gWX2zNXW5800lNevPb\r\ntvYIgTVI/HmXbWV9CitxwA+y+AzJLJJesGZlp/Ap9ARZVl3u6npIcOlntq75\r\n73s/1afxXerjPEnA3mhDmwWY74m7ho5ExxuH/Re+99+Wyw7r3Tp1NtTSmyWL\r\ndfp+nV5FNU9EyETKYRjtZRbDM1DxPUfNqcY=\r\n=4xHX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"48f124a4b11acd0dcb51fbe46fe9bb6afcee8600","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"16.16.0","dependencies":{"ansicolors":"~0.3.2"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.1_1675947559038_0.13299057809095238","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"@bahmutov/spok","version":"1.2.2","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.2","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"c69bc25b51af5c72f01d065a39a980fe662d7b60","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.2.tgz","fileCount":9,"integrity":"sha512-mbTyXCr+be7hwcoB3A+x5y1eZGO4vj650O+ZiuDBR9KOYc8D7nvk5kaXe5Rm5VhkiR7FQeq9eupepn0gIDd0PA==","signatures":[{"sig":"MEYCIQCaiZ9Ptiqdtg71uRRvpi8BkyectI9kPuWpiSFgkN36FgIhAKLFrI3FY+Et+2b7neFn9kECzFxFFItGg/QV9eozvZQJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5PA4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorCQ//aIHuNWsonUveSAdVyM7yB6Y2oadXjMkufykUNNW6A1RjU0o0\r\nWwcT+T43B8bL+R41G+Ffm31Qqmembd3i4EnOS5vDsXQgyIonyKbOJ3phZSL9\r\n2WWcefbRVr222rIa+OLOxhO6kl4TmsTzdmmAHOt9/bXrPV8/EVOyFykBJySe\r\nTgNDZb1QgtqsA0c7dscaKqQ63jZ+RnEoM/apPSu+0HBlp7+bt5+WF0A9r5Xd\r\n9aLynwouAjkNzDM6tmDiNSOf9O0aSE2ICT2yAtdb58IZ65Qwyj/JE3TOXRGr\r\n0SgRQq74HG9CLPzlso8iDnsBfxY55Fpl+O0AgyNenUkdwFh7Qiz4lsXGIVyA\r\nxa9UAuRsZ84iVmdjB7wvmFALMhIy1jclLGSFZLcqwObYv/VLjONkd8ZT/uJh\r\n/6KK8rRasb48dO4aROJZvuaY0DZ6wNAC0eaWC2dHVg84nswJOeL+0jquYCnD\r\ndhkyKhS6P+rHP0gHV5UhqHPYd9MZ4JW3YBummb0wejByGIzzegsWfwFA6Kad\r\nIdkWkBHY6oIP6HICLn2Kdm0xQEcA6Ez5+DTY8F3bYXfVzgWY+6kzTBS8RrpS\r\nDkrAiwWSLBvAd0a/+qA1LxWWDD7R8D/8ak1qC8YW2VhH7EEBjUuGyppgq8z8\r\nK+cpo2xf3uVE4YAea1tEYYdhiKHrSzoTxpg=\r\n=KapN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"da06244db2cf8381d974eff620b2b97780de9afb","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"16.16.0","dependencies":{"util":"^0.12.5","ansicolors":"~0.3.2"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.2_1675948088392_0.22818589944275658","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"@bahmutov/spok","version":"1.2.3","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.3","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"f8be7008ba1cdec995524e320af0c77b75882c3e","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.3.tgz","fileCount":17,"integrity":"sha512-RUKq04qBndRCFeQV2KmrwD4DHjw1u70/m+CRmHPwIgUd6wlIAQozylZSwQLs1L58cEIo6rsQ9f+IDGpGQ43wWw==","signatures":[{"sig":"MEUCIQCTN1jAtfjQKpgFAcV0D4iPLD81DOSNXToR0rVstBOpzQIgN3kCxXFbjk9CBHx9TaC5QwnQykc7ViQM+owjLRgGliM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5PMgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp7Ig//Z2t148rlmSBUtIyzGzLgKn/5NPs0xYf8SCZYT2V0pqGQDwtP\r\n8mE2U0iEgWDxwL0N9u2SL5Zxz3Uv8NUhJyK/U61xDI29SxLar6Y+2EhIQZK5\r\nDAED5KHFRKcg0YvpKrvZmvufi8ki7DhEvq+gmd3MC7RsLsiPLKljEpuqUqg0\r\n+SKNPmKyCg27ShlO8BS6PqTpK7/xiSUBAyqDsDgemfWxjI5ZjKQpJlt+VlxP\r\nTSXvS3kDRZCHRbNYABh4Y4Nye0uspPClYcoaXfF7MRTeCfh6jF6CES8YD2JL\r\n3DRjqpICp1oOYesti29ir68xs5x7MtmaKuoIaaC34xbVRwFpmzAtJ85orZrB\r\nCzn87Jaf3QIemDviIzUnQb8RFp9+xMUCuA+GBqaCWngleXbroup+/9nj5M4B\r\nDlHHNcDv99M8BhSvweiaH4A/BYAr9VGODCnylWsVbsgkiAncDeCFBhqSE4p1\r\nvCJjOxuxTejsNVaHO1FBrwnpIexponwjxMzMHBymVVALv2tldQ4PyfWAkfBR\r\nb33JqyDXNfkfMBmLvdfAGo5S3dGlCvQ3y85Y6tb3r3ic3W75s0UnJgiHfs5t\r\nQ1SxII8NdMg4Y2RZBCVbeg8/jStdhF21bt74/zLgNevoqB0MscGX84Tc2WFU\r\ntiw3ROpMYeMlqj3wHiEeTU1yycTwCEDGfhg=\r\n=GBYE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"8e332e900a6a7ee19ddefc2417c003537dd8b03e","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"16.16.0","dependencies":{"ansicolors":"~0.3.2","is-arguments":"^1.1.1","is-typed-array":"^1.1.10","which-typed-array":"^1.1.9","is-generator-function":"^1.0.10"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.3_1675948832531_0.13977740133578398","host":"s3://npm-registry-packages"}},"1.2.4":{"name":"@bahmutov/spok","version":"1.2.4","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.4","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"bbaf170e2518095fba07cf1e2f9f7bc07b70bc55","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.4.tgz","fileCount":17,"integrity":"sha512-rP4JVwntBxgTRLuzDQJoEntibA9IVPMeETYlCcsgk/Dq9fJIEKY6VYdoTP+TOmVKft7NflJcQy3K3HK3r4egpg==","signatures":[{"sig":"MEYCIQCJCUqaTZW8bUH/x3OF2vVGtZ6mAJj1TTno7JVAzuJcrAIhANd6semowNuGoVySZsEA3BUZMTrPOYzZsrTNq9j+1eMR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5PQ6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrKYg/8CF85VeZmRWn6Qhp9PbqI20Ioe/kFagian0YOCm4EBNHrNC4C\r\nzEzXcqTjmrGJj54uGn3zkFfU38v34XC4gNptlMcOxtkUWaMKjfHXZIZmt1VA\r\npzEqpPpqj/AKrAblk5ACt/ZGXBqQN7Logktfmpa2V0VBAqDEhCHgzv5jm8Cy\r\nGeVepKpz7gQ6ArXzG9QtDDkvWErWGMLlJ2IdETDBEq4BBgtx2BKMwI1ndkDY\r\ny6eP+IjwGkFOPm3gA9WyOCwC8OechW8jqj30KMXWKVYieyUGchzQq/AWfsTq\r\nHPXIJTi/EDbH4ZCvG2VKWdq/UOVnZIlScCuZXzPJVuMWvorwtoT8Y0yuKOr7\r\ndGFwiDHXCp3VdpXbgLy/Ex6LLmLhwP/V2nAqme3e3gPROO7RHGvDmIraIRup\r\nm6ZqGQCZWzQfaTPkJ/3paoOPGZy6fYEiUGypUHSKwJev7PDUOGYLWbpuAEcs\r\nVJHY9wdHs+0E51eqz5INL7kRqApaK9+yKoJNZJaoFdvHFY2cVdn6pc1ZM+qB\r\nBDwf2ONRqS3Q/kEguX3WpnvriT45uSKAhPaRxCTGoAlAfhPuiCSS9JBb0fkb\r\nw1CcKdzolkb2vmoXlqnupDGbOwKXKKz50adnA5BLUbo9l/XpZO46F0YiyVSQ\r\naL8+GxtZHWvthRhwrdfz9r/onojwTEBa6Ik=\r\n=OAZ1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"7244d3ed8382c7d5fe0f1b9cd668781c6df7f35d","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"16.16.0","dependencies":{"ansicolors":"~0.3.2","is-arguments":"^1.1.1","is-typed-array":"^1.1.10","which-typed-array":"^1.1.9","is-generator-function":"^1.0.10"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.4_1675949113870_0.9249539946747307","host":"s3://npm-registry-packages"}},"1.2.5":{"name":"@bahmutov/spok","version":"1.2.5","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.5","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"57af99032d44ab239e12693d5b1346280b4d8b14","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.5.tgz","fileCount":17,"integrity":"sha512-tRtKM5rmL59Ciu3yBgDYEV798B6RdK85wUsNOsVJ2lrw5UGdxk17nlvwrLVoX6xHpfoOudiFZ9O8Ae+uhOSQ0w==","signatures":[{"sig":"MEYCIQCpao4/vIjbYsA4dSwp/ldKCEz6OQMzjqd+POhmGJmRYwIhAKyaILsDTwr0/XbXc9QW3SZUPKfCfUqcZLPrpaBKQida","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5PUNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrUZA/+ITp6/BoFO9Rrvie+sHMgV4VZ5kngf+433DtUTJG5TV1ekcqv\r\nM0/0+R63K/jW0LQSSJ8UmyUnTw9BxHjjDNDzKWWVrbdwY/0+Dr8R3OfUIPp9\r\nbu61zPJjiHVg31ksfu0ZEr4koax2oO+sMKWEN0m5Hj7qZ0vpT1UJA6Lht8L1\r\ne+ia4QUSG5m0H4W4OVQmm7Teu6Z3TJq86D5PShrfbBVNENjo2ChwaJZWVlRF\r\n0A8WksVimNWO/QaIsMFjEftIYSP7JCU5me+fO4B45YPmxN9lczMJGeBePOGG\r\nrLkYEsV6TbTxlEf1qL207oMn3TC7sxGNrkjTHwkVOM0Lm08OeSWR3+wQ/Qg/\r\nKsVRrWP2snzZ6WDVW9dhpvaZ3PLX3/I2VoNfb+cca4eUKqsqJezG2L46O/CB\r\nzNTUji8Vvd2uhA8DSj8+Qsx7dXDK1qipVdUWAojSmiUUgVb0HTBhddwIDX0W\r\n7bLfh+ExuI9pJsSZ6oFfHk+47LSifiP6KsEK1FI6mX/yff4TY9v2igQEFTqr\r\nVWT3LwUgpBF954+UWA/Zw3ZMDWVyZVtHda9sskow4190oo5TLNUBMO7PkwwE\r\nIlETrEaiaZ3yEI8hv8N5dpM8Id22TxhB8b9TlbtK4HuGtYMtO/ba5zhOGl1S\r\nALJjjMaP9P6KrpjGfnQAH62fwQs19R1i1f4=\r\n=lrYh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"a3b022d9cdf27eab1d0d728152cfdc66eb6d00b6","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"16.16.0","dependencies":{"ansicolors":"~0.3.2","is-arguments":"^1.1.1","is-typed-array":"^1.1.10","which-typed-array":"^1.1.9","is-generator-function":"^1.0.10"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.5_1675949325362_0.04036099267405979","host":"s3://npm-registry-packages"}},"1.2.6":{"name":"@bahmutov/spok","version":"1.2.6","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.6","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"b4b462907c9a3241a422c0456fbfbb326b77026b","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.6.tgz","fileCount":17,"integrity":"sha512-ZwQQq1yj5T4f/Mwmd/NRlg39ytp6wY5eE/F8x81nlctVo13UvcmWjzsQmnJUzWk7kwmMO5GO+nb+lFnsk8X1OA==","signatures":[{"sig":"MEUCIQD2+/h2CgrudPIuGFFK8pfyHPaIqnnCbGS7kafIY0bSngIgT2KgIkggsJ1+GYZWZy8n8T39Ae+ksbh9gFyM/+YjSr0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99967},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"631454f03629375efad9fbd14d072aca4fdc9999","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"16.16.0","dependencies":{"ansicolors":"~0.3.2","is-arguments":"^1.1.1","is-typed-array":"^1.1.10","which-typed-array":"^1.1.9","is-generator-function":"^1.0.10"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.6_1689792837867_0.5316669675330481","host":"s3://npm-registry-packages"}},"1.2.7":{"name":"@bahmutov/spok","version":"1.2.7","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.7","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"ac7e3ebb11b3127ce694dd8e266347750f786d62","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.7.tgz","fileCount":31,"integrity":"sha512-R1g6oYqQuNWNSVAaS8R91LiUq0iuc1qKzhFkcNeFsC0pbBMnEeULmB2V3bG//r+w4pjjPUhNqiRHUtM1Bn9Thw==","signatures":[{"sig":"MEQCIFb3t6F3fvvfU9LvgcRY9XAQ9Rk1qhdlHUvUC3xlUlJhAiAhMqxtsMhIcoJU6ycuG4U5zTMXo91sOokPLjlPu8l7LA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":112316},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"6aae88d504b6f850208c5c6e88b9a87bf3ee1405","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","build":"npm run tsc","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"16.16.0","dependencies":{"ansicolors":"~0.3.2","is-arguments":"^1.1.1","is-typed-array":"^1.1.10","which-typed-array":"^1.1.9","is-generator-function":"^1.0.10"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.7_1690380930962_0.047297870637521555","host":"s3://npm-registry-packages"}},"1.2.8":{"name":"@bahmutov/spok","version":"1.2.8","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.8","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"6f060f03108345ab225deb99157354072b56c087","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.8.tgz","fileCount":15,"integrity":"sha512-WUuhOoSvZoK2VhUHFnYOCWry3klUFlD9ZZYOkMyQTKfBN5ltt8SOESowK0XmOhMvaXYpjdFGj9JZNVtWS/Fjbg==","signatures":[{"sig":"MEQCIDP5RHpoclexPQXQGvjRJNKmmaabZ7n2iDEJS+Vxh6wFAiBhOHNT5Q2JAYz6Y0yHo+tRcYDeISw9QaeR0/oK5vmxtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46975},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/utils.js":"./dist/utils-browser.js","./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"15caa82a2838e3d8656022662f9bfbabf9099ef7","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","build":"npm run tsc","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"20.19.4","dependencies":{"ansicolors":"~0.3.2","is-arguments":"^1.1.1","is-typed-array":"^1.1.10","which-typed-array":"^1.1.9","is-generator-function":"^1.0.10"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.8_1756412767011_0.9575193877676209","host":"s3://npm-registry-packages-npm-production"}},"1.2.9":{"name":"@bahmutov/spok","version":"1.2.9","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"url":"http://thlorenz.com","name":"Thorsten Lorenz","email":"thlorenz@gmx.de"},"license":{"url":"https://github.com/thlorenz/spok/blob/master/LICENSE","type":"MIT"},"_id":"@bahmutov/spok@1.2.9","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"homepage":"https://github.com/bahmutov/spok","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"dist":{"shasum":"15413cb217df66308d1fba688b15a6f13e7cd207","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.9.tgz","fileCount":19,"integrity":"sha512-qWNAjn0hJVwHqOF2HqvotukIsIqipw0rM530GZxuh8HRqDa0iTmtYJC+TMzEA6hhCNbkGMNQKoJqbnlxAHJdjw==","signatures":[{"sig":"MEUCICmw06rhN2YS+p0/LjpHL3YJEwuvMlIVc97VH0ZKf2jIAiEAjUbMyIj0WYhvMMaxI0+nFbX7tC64KiTdKGJ3I7Eiebg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48475},"main":"dist/spok.js","access":"public","engine":{"node":">=10"},"browser":{"./dist/utils.js":"./dist/utils-browser.js","./dist/inspect.js":"./dist/inspect-browser.js"},"gitHead":"0e1a91944f0258b7d9c2116e516c34f58afc53ae","private":false,"scripts":{"tsc":"rm -rf dist/* && tsc -b","tsl":"tslint -p . --force -t stylish","lint":"npm run tsc &&  npm run tsl","test":"npm run lint && npm run test:unit","build":"npm run tsc","tsfmt":"tsfmt --baseDir . -r","test-16":"nave use 16 npm run test-main","tsl:fix":"tslint -p . --force -t stylish --fix","test-all":"npm run test-16","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","pretest-main":"npm run tsc","semantic-release":"semantic-release"},"typings":"dist/spok.d.ts","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"repository":{"url":"git+https://github.com/bahmutov/spok.git","type":"git"},"_npmVersion":"6.14.4","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","directories":{"dist":"./dist"},"_nodeVersion":"20.19.4","dependencies":{"ansicolors":"~0.3.2","is-arguments":"^1.1.1","is-typed-array":"^1.1.10","which-typed-array":"^1.1.9","is-generator-function":"^1.0.10"},"_hasShrinkwrap":false,"devDependencies":{"nave":"~2.2.3","tape":"~4.0.0","tslint":"^5.18.0","prettier":"^1.19.1","typescript":"^3.5.3","@types/tape":"^4.2.33","semantic-release":"^17.0.6","@types/ansicolors":"0.0.31","typescript-formatter":"^7.2.2"},"_npmOperationalInternal":{"tmp":"tmp/spok_1.2.9_1756413290245_0.8090158751246925","host":"s3://npm-registry-packages-npm-production"}},"1.2.10":{"name":"@bahmutov/spok","version":"1.2.10","description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","main":"dist/spok.js","typings":"dist/spok.d.ts","private":false,"access":"public","directories":{"dist":"./dist"},"scripts":{"pretest-main":"npm run tsc","test-main":"set -e; for t in ./dist/__tests__/*.js; do node $t; done","test-16":"nave use 16 npm run test-main","test-all":"npm run test-16","test:unit":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi","test":"npm run lint && npm run test:unit","build":"npm run tsc","tsc":"rm -rf dist/* && tsc -b","tsc:watch":"rm -rf dist/* && tsc -p . --watch --declaration","tsl":"tslint -p . --force -t stylish","tsl:fix":"tslint -p . --force -t stylish --fix","tsfmt":"tsfmt --baseDir . -r","lint":"npm run tsc &&  npm run tsl","semantic-release":"semantic-release"},"browser":{"./dist/inspect.js":"./dist/inspect-browser.js","./dist/utils.js":"./dist/utils-browser.js"},"repository":{"type":"git","url":"git+https://github.com/bahmutov/spok.git"},"homepage":"https://github.com/bahmutov/spok","dependencies":{"ansicolors":"~0.3.2","browser-util-inspect":"^0.2.0","is-arguments":"^1.1.1","is-generator-function":"^1.0.10","is-typed-array":"^1.1.10","which-typed-array":"^1.1.9"},"devDependencies":{"@types/ansicolors":"0.0.31","@types/tape":"^4.2.33","nave":"~2.2.3","prettier":"^1.19.1","semantic-release":"^17.0.6","tape":"~4.0.0","tslint":"^5.18.0","typescript":"^3.5.3","typescript-formatter":"^7.2.2"},"keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"author":{"name":"Thorsten Lorenz","email":"thlorenz@gmx.de","url":"http://thlorenz.com"},"license":{"type":"MIT","url":"https://github.com/thlorenz/spok/blob/master/LICENSE"},"engine":{"node":">=10"},"testling":{"files":"test/*.js","browsers":["ie/8..latest","firefox/17..latest","firefox/nightly","chrome/22..latest","chrome/canary","opera/12..latest","opera/next","safari/5.1..latest","ipad/6.0..latest","iphone/6.0..latest"]},"gitHead":"e09bce39ff10794d7bd89988bb7ff28690aa4097","bugs":{"url":"https://github.com/bahmutov/spok/issues"},"_id":"@bahmutov/spok@1.2.10","_nodeVersion":"20.19.4","_npmVersion":"6.14.4","dist":{"integrity":"sha512-gHyBO5MnbjqKprSkHrWcQrSAbHHs14ohL9VhrK8tx2m8sShEVZbUhgnOt3Tjy2gbU3u6hvyJnJN60AzmxuycFQ==","shasum":"80516dcde85d98faf3d4483fd3d6b849aa08f9cc","tarball":"https://registry.npmjs.org/@bahmutov/spok/-/spok-1.2.10.tgz","fileCount":19,"unpackedSize":48292,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID8+ZilzOXQ3/bAr99Ck1gu+h88wPpt5DBIoijZBgS1FAiAGPQ8+k5/PhjGyfs4yly7+NIt2crZLQ1IWrVIwpwSfGw=="}]},"_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/spok_1.2.10_1756413896013_0.28465506089998227"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-20T16:48:17.259Z","modified":"2025-08-28T20:44:56.421Z","1.2.0":"2020-04-20T16:48:17.413Z","1.2.1":"2023-02-09T12:59:19.211Z","1.2.2":"2023-02-09T13:08:08.581Z","1.2.3":"2023-02-09T13:20:32.671Z","1.2.4":"2023-02-09T13:25:14.034Z","1.2.5":"2023-02-09T13:28:45.669Z","1.2.6":"2023-07-19T18:53:58.046Z","1.2.7":"2023-07-26T14:15:31.120Z","1.2.8":"2025-08-28T20:26:07.204Z","1.2.9":"2025-08-28T20:34:50.437Z","1.2.10":"2025-08-28T20:44:56.235Z"},"bugs":{"url":"https://github.com/bahmutov/spok/issues"},"author":{"name":"Thorsten Lorenz","email":"thlorenz@gmx.de","url":"http://thlorenz.com"},"license":{"type":"MIT","url":"https://github.com/thlorenz/spok/blob/master/LICENSE"},"homepage":"https://github.com/bahmutov/spok","keywords":["test","spec","specification","contract","assert","assertion","deepEqual"],"repository":{"type":"git","url":"git+https://github.com/bahmutov/spok.git"},"description":"Checks a given object against a given set of specifications to keep you from writing boilerplate tests.","maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"readme":"# spok [![](https://github.com/bahmutov/spok/workflows/test/badge.svg?branch=master)](https://github.com/bahmutov/spok/actions)\n\nChecks a given object against a given set of specifications to keep you from writing boilerplate tests.\n\n```js\nvar test = require('tape')\nvar spok = require('spok')\n\n// this would be returned from a function you are testing\nvar object = {\n  one: 1,\n  two: 2,\n  three: 3,\n  four: 4,\n  helloWorld: 'hello world',\n  anyNum: 999,\n  anotherNum: 888,\n  anArray: [1, 2],\n  anotherArray: [1, 2, 3],\n  anObject: {},\n}\n\n// custom specification\nfunction hasThreeElements(a) {\n  return a.length === 3\n}\n\ntest('my object meets the specifications', function(t) {\n  spok(t, object, {\n    $topic: 'spok-example',\n    one: spok.ge(1),\n    two: 2,\n    three: spok.range(2, 4),\n    four: spok.lt(5),\n    helloWorld: spok.startsWith('hello'),\n    anyNum: spok.type('number'),\n    anotherNum: spok.number,\n    anArray: spok.array,\n    anotherArray: hasThreeElements,\n    anObject: spok.ne(undefined),\n  })\n  t.end()\n})\n```\n\n![shot](assets/shot.png)\n\n## Installation\n\n    npm install spok\n\n## Why not just `deepEqual`?\n\n`deepEqual` works great for most cases, but in some cases you need more control, i.e.\n\n- values don't exactly match, but are in a given range\n- you want to provide a predicate to determine if a value is correct or not\n- you only want to check a subset of values contained in the object\n\n## Adjusting Print Details\n\nBy default spok prints the specification that a particular assertion satisified, i.e. `satisfies: spok.range(2, 4)`.\nYou can turn that off via `spok.printSpec = false`.\n\nOn the other hand if you want more details about the satisified spec do `spok.printDescription = true` instead to get\nspok to print things like `satisfies: spok.range(2, 4) 2 <= value <= 4`.\n\nSpecs and descriptions are printed in gray so you can focus on the actual values of the test output.\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n\n**Table of Contents** _generated with [DocToc](https://github.com/thlorenz/doctoc)_\n\n- [spok ](#spok-)\n  - [Installation](#installation)\n  - [Why not just `deepEqual`?](#why-not-just-deepequal)\n  - [Adjusting Print Details](#adjusting-print-details)\n  - [API](#api)\n    - [spok](#spok)\n    - [spok.range](#spokrange)\n    - [spok.gt](#spokgt)\n    - [spok.ge](#spokge)\n    - [spok.lt](#spoklt)\n    - [spok.le](#spokle)\n    - [spok.ne](#spokne)\n    - [spok.gtz](#spokgtz)\n    - [spok.gez](#spokgez)\n    - [spok.ltz](#spokltz)\n    - [spok.lez](#spoklez)\n    - [spok.type](#spoktype)\n    - [spok.array](#spokarray)\n    - [spok.arrayElements](#spokarrayelements)\n    - [spok.arrayElementsRange](#spokarrayelementsrange)\n    - [spok.number](#spoknumber)\n    - [spok.string](#spokstring)\n    - [spok.function](#spokfunction)\n    - [spok.definedObject](#spokdefinedobject)\n    - [spok.startsWith](#spokstartswith)\n    - [spok.endsWith](#spokendswith)\n    - [spok.test](#spoktest)\n    - [spok.defined](#spokdefined)\n    - [spok.notDefined](#spoknotdefined)\n  - [License](#license)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\nspok provides a few common specification functions. However you can write your own functions as well, just return `true`\nif specification was satisfied and `false` if not (see example above).\n\nIf you write a specification function that would be useful to others please add it along with a test and provide a PR.\n\n`spok.*` comparison function names are derived from [**bash** comparison\noperators](http://www.tldp.org/LDP/abs/html/comparison-ops.html) to make them easier to remember.\n\n## [API](https://thlorenz.github.io/spok)\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n### spok\n\nChecks the given specifications against the object.\n\nWhen the tests are run the **actual** values are printed to verify visually while\neach provided specification is validated and a test failure caused if one of them fails.\n\n**Parameters**\n\n- `t` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** which has assertion functions `equal` and `deepEqual` (to compare objects) - use\n  **tap**, **tape**, **assert** or any other library that has those and thus is compatible\n- `obj` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** the object to verify the specifications against\n- `specifications` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** the specifications to verify\n\n### spok.range\n\nSpecififies that the given number is within the given range, i.e. `min<= x <=max`.\n\n```js\nvar spec = {\n  x: spok.range(1, 2), // specifies that x should be >=1 and <=2\n}\n```\n\n**Parameters**\n\n- `min` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** minimum\n- `max` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** maximum\n\n### spok.gt\n\nSpecififies that a number is greater than the given criteria.\n\n```js\nvar spec = {\n  x: spok.gt(1), // specifies that x should be >1\n}\n```\n\n**Parameters**\n\n- `n` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** criteria\n\n### spok.ge\n\nSpecififies that a number is greater or equal the given criteria.\n\n```js\nvar spec = {\n  x: spok.ge(1), // specifies that x should be >=1\n}\n```\n\n**Parameters**\n\n- `n` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** criteria\n\n### spok.lt\n\nSpecififies that a number is less than the given criteria.\n\n```js\nvar spec = {\n  x: spok.lt(1), // specifies that x should be < 1\n}\n```\n\n**Parameters**\n\n- `n` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** criteria\n\n### spok.le\n\nSpecififies that a number is less or equal the given criteria.\n\n```js\nvar spec = {\n  x: spok.le(1), // specifies that x should be <=1\n}\n```\n\n**Parameters**\n\n- `n` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** criteria\n\n### spok.ne\n\nSpecifies that the value is not equal another.\n\n```js\nvar spec = {\n  x: spok.ne(undefined), // specifies that x should be defined\n}\n```\n\n**Parameters**\n\n- `value` **Any** criteria\n\n### spok.gtz\n\nSpecifies that the value is greater than zero\n\n```js\nvar spec = {\n  x: spok.gtz,\n}\n```\n\n### spok.gez\n\nSpecifies that the value is greater or equal zero\n\n```js\nvar spec = {\n  x: spok.gez,\n}\n```\n\n### spok.ltz\n\nSpecifies that the value is less than zero\n\n```js\nvar spec = {\n  x: spok.ltz,\n}\n```\n\n### spok.lez\n\nSpecifies that the value is less or equal zero\n\n```js\nvar spec = {\n  x: spok.lez,\n}\n```\n\n### spok.type\n\nSpecifies that the input is of a given type.\n\n```js\nvar spec = {\n  x: spok.type('number'), // specifies that x should be a Number\n}\n```\n\n**Parameters**\n\n- `t` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** expected type\n\n### spok.array\n\nSpecifies that the input is an array.\n\n```js\nvar spec = {\n  x: spok.array, // specifies that x should be an Array\n}\n```\n\n### spok.arrayElements\n\nSpecifies that the input is an array with a specific number of elements\n\nvar spec = {\nx: spok.arrayElements(2) // specifies that x should be an Array with 2 elements\n}\n\n**Parameters**\n\n- `n` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** number of elements\n\n### spok.arrayElementsRange\n\nSpecifies that the input is an array with a number of elements in a given range\n\nvar spec = {\nx: spok.arrayElementsRange(2, 4) // specifies that x should be an Array with 2-4 elements\n}\n\n**Parameters**\n\n- `min` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** min number of elements\n- `max` **[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** max number of elements\n\n### spok.number\n\nSpecifies that the input of type number and `isNaN(x)` returns `false`.\n\n```js\nvar spec = {\n  x: spok.number, // specifies that x should be a Number\n}\n```\n\n### spok.string\n\nSpecifies that the input is a string.\n\n    var spec = {\n      x: spok.string  // specifies that x should be a String\n    }\n\n### spok.function\n\nSpecifies that the input is a function.\n\n    var spec = {\n      x: spok.function  // specifies that x should be a function\n    }\n\n### spok.definedObject\n\nSpecifies that the input is an object and it is not `null`.\n\n```js\nvar spec = {\n  x: spok.definedObject, // specifies that x is a non-null object\n}\n```\n\n### spok.startsWith\n\nSpecifies that the string starts with the specified substring.\n\n**NOTE**: only available with node.js which has an ES6 `startsWith` function\n\n```js\nvar spec = {\n  x: spok.startsWith('hello'), // specifies that x should start with 'hello'\n}\n```\n\n**Parameters**\n\n- `what` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** substring the given string should start with\n\n### spok.endsWith\n\nSpecifies that the string ends with the specified substring.\n\n**NOTE**: only available with node.js which has an ES6 `endsWith` function\n\n```js\nvar spec = {\n  x: spok.endsWith('hello'), // specifies that x should start with 'hello'\n}\n```\n\n**Parameters**\n\n- `what` **[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** substring the given string should start with\n\n### spok.test\n\nSpecifies that the string needs to match the given regular expression.\n\n```js\nvar spec = {\n  x: spok.test(/hello$/), // specifies that x should match /hello$/\n}\n```\n\n**Parameters**\n\n- `regex` **[RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)** regular expression against which the string is checked via `test`\n\n### spok.defined\n\nSpecifies that a value is defined, i.e. it is neither `null` nor `undefined`.\n\n```js\nvar spec = {\n  x: spok.defined,\n}\n```\n\n### spok.notDefined\n\nSpecifies that a value is notDefined, i.e. it is either `null` or `notDefined`.\n\n```js\nvar spec = {\n  x: spok.notDefined,\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}