{"_id":"komondor","_rev":"110-58bd0d1316a571d06adab995a1c97179","name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","dist-tags":{"latest":"6.11.4","next":"4.9.0"},"versions":{"1.0.0":{"name":"komondor","description":"Code Boundary Specification System","version":"1.0.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"echo 'no dependency check yet'","_dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.base.json","_lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","ava":{"files":["dist-es5/**/*.spec.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/lokijs":"^1.5.0","@types/node":"^8.5.8","ava":"^0.24.0","dependency-check":"^2.10.0","eslint":"^4.15.0","eslint-config-unional":"^0.2.3","github":"^13.1.0","mem-fs":"^1.1.3","memory-fs":"^0.4.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^11.2.0","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","travis-deploy-once":"^4.3.0"},"dependencies":{"assertron":"^3.3.9","camel-case":"^3.0.0","dnode":"^1.2.2","get-port":"^3.2.0","lokijs":"^1.5.1","parse-function":"^5.0.23","satisfier":"^2.1.4","tersify":"^1.1.1","unpartial":"^0.4.1"},"gitHead":"7c15c452df12efb51b06901ee5278ccf79a000b6","_id":"komondor@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-AidArH+/ddRzHQvyBTWyYD9y48Su6CWJvrdvuREElhRBP/RPEi/KoLxdxZm7qZyf/5G9pnw1gtj02Xmwg3nsRw==","shasum":"dccb4f25c4da4ec27d3552e4f0b983cc1ed30780","tarball":"https://registry.npmjs.org/komondor/-/komondor-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCM/n0KBUZHD6Iz65floIRlMjW6tfQTyA5RoTUxtdb9dwIgF54l99O8PTBAgsf9WxFRn1KRDc/kluErsaTfeGUIRAs="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-1.0.0.tgz_1515750404220_0.1687584479805082"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.1":{"name":"komondor","description":"Code Boundary Specification System","version":"1.0.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"echo 'no dependency check yet'","_dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.base.json","_lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","ava":{"files":["dist-es5/**/*.spec.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/lokijs":"^1.5.0","@types/node":"^8.5.8","ava":"^0.24.0","dependency-check":"^2.10.0","eslint":"^4.15.0","eslint-config-unional":"^0.2.3","github":"^13.1.0","mem-fs":"^1.1.3","memory-fs":"^0.4.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^11.2.0","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","travis-deploy-once":"^4.3.0"},"dependencies":{"assertron":"^3.3.9","camel-case":"^3.0.0","dnode":"^1.2.2","get-port":"^3.2.0","lokijs":"^1.5.1","parse-function":"^5.0.23","satisfier":"^2.1.4","tersify":"^1.1.1","unpartial":"^0.4.1"},"gitHead":"091a81facdd5ea69c5bc77ced60435a92d600caa","_id":"komondor@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-nRXTdBRTR6uc1GkbO0yt2MwFHH/onMe4yw1Oma77QUupFBFsy01SzqMbWAamJSvsUYpuCYUozhpuOib4FEJToA==","shasum":"e107106f806a38f79e0dcac40d0146f2161b47ad","tarball":"https://registry.npmjs.org/komondor/-/komondor-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD08zGd0T7a8nFceZky80oQRv4wTBDlMWA5s7bcGanZtgIhAJZXpNlEeNRSPwYO5WOAQbydHpEAu+97ahXYRrZCg8h1"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-1.0.1.tgz_1515750475683_0.04726354591548443"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0":{"name":"komondor","description":"Code Boundary Specification System","version":"1.1.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"echo 'no dependency check yet'","_dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.base.json","_lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","ava":{"files":["dist-es5/**/*.spec.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/lokijs":"^1.5.0","@types/node":"^9.3.0","ava":"^0.24.0","dependency-check":"^2.10.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.0","github":"^13.1.0","mem-fs":"^1.1.3","memory-fs":"^0.4.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^11.2.0","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2"},"dependencies":{"assertron":"^3.3.12","camel-case":"^3.0.0","dnode":"^1.2.2","get-port":"^3.2.0","lokijs":"^1.5.1","make-error":"^1.3.2","parse-function":"^5.0.23","satisfier":"^3.1.1","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"89d0db2645d72dc6137f9b79fa0af61f0e0161b5","_id":"komondor@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-87r4AU8e/OpXkQR9f5nJjld/7yLCOY+rMgaTcN2M/W5mnDQSZXodOpcCKuFqn0SH6qlPWRs+S1S5WjGitze76g==","shasum":"b71e1025ef65d2f923b4555a2ca08e2c19181520","tarball":"https://registry.npmjs.org/komondor/-/komondor-1.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCH0zOqFYWSMRLrxKm0qVIZghnzBgji8yXtWg+ZLB+Gu0CIQCaRC+SVgvNC7tRVEhgu4ybQpToEbg6S428VDiN9u/MLw=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-1.1.0.tgz_1515937053538_0.5001222779974341"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"1.1.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"files":["dist-es5/**/*.spec.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","ava":"^0.24.0","dependency-check":"^2.10.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.0","github":"^13.1.0","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2"},"dependencies":{"assertron":"^3.3.12","camel-case":"^3.0.0","satisfier":"^3.1.1","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"0f86b140c3579a285ad85c5831179974de489803","_id":"komondor@1.1.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-GhjuFQvXJDzuAoJ7/TxcIEuskEKbVm6+hOoBlqN9QyakAcsX3ulqqdeVkXYU5Rv5bf0I1Iw+js4RECnn3T9rNw==","shasum":"92315ca6ecc01c566b06eb4477f910c4fd641cbd","tarball":"https://registry.npmjs.org/komondor/-/komondor-1.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHdKGRpl9H2y9/+2mFTPDBzFsYgX1nVfUyEzgF4mfn7LAiAbUq+F+MKcu1y4wX6F8V1St7Rfpk4Dc39w+q0IyoesUQ=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-1.1.1.tgz_1515996741146_0.8473828167188913"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"1.1.2","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"files":["dist-es5/**/*.spec.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.0","github":"^13.1.0","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2"},"dependencies":{"assertron":"^3.3.12","camel-case":"^3.0.0","satisfier":"^3.1.1","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"8c60b61e82f66d02dbe8b5d650ac1fc738af4ef1","_id":"komondor@1.1.2","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-H8A7E1EAAlUUD4jf6dqhDgsG2JZmgWyKT33q+QcGK9YPIHckAwyWrWN592mTYasJTZTkS4MeaGN/mD/ZzYHL2w==","shasum":"e1b4e79027567513043b9c5ece68d2b1506eb950","tarball":"https://registry.npmjs.org/komondor/-/komondor-1.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6cmFzjbDN7DKvkzb9iUhQUKHxrK3udfKzAmlMb6aIegIgRkdAS4Oq9/+TP2mvtDu0LA4lGRS35qQMxOyQE1doUdo="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-1.1.2.tgz_1516068446098_0.9526531440205872"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"2.0.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.0","github":"^13.1.0","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"assertron":"^3.3.12","camel-case":"^3.0.0","flux-standard-action":"^2.0.0","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"35e292d65e900c6e47590290b28921570e2da7c0","_id":"komondor@2.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-7LC0kF6F1dJgIq3CQNkt6//FaHm/yjhdoPVDowfyMllRxQe1RNgLfIyOuU5a1GVDeCdg8kpCp7IJhy6EtMEp+g==","shasum":"2e7ec4eb9dcff98e79a13c701523f1ed2c2c6ff5","tarball":"https://registry.npmjs.org/komondor/-/komondor-2.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxu+A4JH+sN3BkmyEFZyl0AgUNL1HnaP9ribIZg3cE5QIhAKvLM0vVuTVVZSf3eYKUXrmGQ1+6aUWfaa1upZIfnxc3"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-2.0.0.tgz_1516308350474_0.04411955759860575"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.0.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"2.0.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.0","github":"^13.1.0","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"assertron":"^3.3.12","camel-case":"^3.0.0","flux-standard-action":"^2.0.0","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"c62259e2a918c010c3a1c1a0b9034fb0609b8944","_id":"komondor@2.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-TbIJ/IWe7prpy1k6UYVsTyWuWBrsNLNfosWNWXr6be1el9/yviZQ4FXRbmSpsxRWx0Djr/TcK5wmnKiExOQ+Bw==","shasum":"f9356f19795c5acca6b84e977d40f8fc5def7206","tarball":"https://registry.npmjs.org/komondor/-/komondor-2.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCszuXAEIb/y0AfA6Wt9dmmUEwUEoVJNkTPZAc1tyNSEgIgO77+qe2fXa8t9RO3QcBMKrGUHCWd4QqJTqkGEgNvthg="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-2.0.1.tgz_1516324786187_0.4845462890807539"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.1.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"2.1.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.3","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"assertron":"^3.3.12","camel-case":"^3.0.0","flux-standard-action":"^2.0.1","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"300e4e78c1e212169e9c0c4ac7033ea55e882b43","_id":"komondor@2.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-ceDz30/qaqN0vPjkrWUKCDS3bkg5CJ0eFlnG2pEhq0bIgMX3Z+zfcGewCD5ocuCWKWxKagzf8SSak5Y63OZbLA==","shasum":"bfbb161a9a06a90046eae59918ce51e117465cc6","tarball":"https://registry.npmjs.org/komondor/-/komondor-2.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDuZI+0AnGNzTjqMpG/OtQ8QTfs1fkGv90Icad7McV+gIhAKirY754OuUUJiAnD49A53ajMT4xjw4bL3GMISINPYVU"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-2.1.0.tgz_1516352248979_0.16401442768983543"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.2.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"2.2.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.3","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.3.12","camel-case":"^3.0.0","flux-standard-action":"^2.0.1","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"4d5f2603b8bdc81c08a91a536d9e2a2e8c65b2f0","_id":"komondor@2.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-WY4HKIvWANr9ez37B+3KlpjloYG0IiQeV8/e36mDk7SLcWIK7u+rN5Wb5vROGcZeyCCtYKNLRHQg1HDnHs4QrQ==","shasum":"e418b5517c05564ffb5f318afc605621925ef788","tarball":"https://registry.npmjs.org/komondor/-/komondor-2.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHdhfm96uIQEfwxyMpXU952qDNgod4orUZS5g393lhhAIhAIct9b/nUZ6Whx86TsB6fQZzjKXQPHQTTd5C8PRz2hjZ"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-2.2.0.tgz_1516499089548_0.4823816819116473"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.2.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"2.2.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.3","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.3.12","flux-standard-action":"^2.0.1","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"fd2cfd7980b3f1f2159bf6a106c15b44432a6538","_id":"komondor@2.2.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-YIcG4IdokNwfJeDKWyn1ws7DJo6kD9hR4oYw5yTX08zZfRR3NoIbVhDOQbyGcDkTcmlqBvulK54RIqtrJLnHZg==","shasum":"485ada34f1d96e2fb1cd3e2f75ed7425e1e42c4e","tarball":"https://registry.npmjs.org/komondor/-/komondor-2.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDrK4E1CXGMr2+HkSchWEkIwMFHvZJiAsm0AkvOvtA1xAiBVsnXKrwUa5K+V+bgvFPkDbUiH8cp1SPLA1A4KAgutdA=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-2.2.1.tgz_1516500994058_0.8059966675937176"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"2.2.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"2.2.2","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.15.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.3","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.3.12","flux-standard-action":"^2.0.1","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"609a51f6cc14393c37a16f348d0356f3aa57f67d","_id":"komondor@2.2.2","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-UN+otl3HPUCdXwVRdtW+bvjvXwEjVMWu0b2V0WChKI2iPWod3x5ZlsTz3Lt7BWqwM0I36W4vof6Y2bIDx38ngQ==","shasum":"344d220cf8595fff039fcc59434f30838f004431","tarball":"https://registry.npmjs.org/komondor/-/komondor-2.2.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6bDfs09dJPjwTiOByed1SLJvsTtfEQvwIYE/YqC/i1AiAFJtWki3du0cFrWvYHiWNI63zv8bN/zap3FpzEnEdYMA=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-2.2.2.tgz_1516502008226_0.4140184335410595"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"3.0.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.3.13","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"a4ba67fd8c75e240c201136a191572c9ec425dca","_id":"komondor@3.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-ompia/69AkB53az9nAxikwzY5ZmbsHHenYSr8L9nhJNhgSqV2jJ2zzipHJzPc4RXgxov8HCm6E3wBbFJ7VXmKg==","shasum":"f656825856d7d886f2a0d9d31e2e5143968dc549","tarball":"https://registry.npmjs.org/komondor/-/komondor-3.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKPv/9aeMZwp+qUq1FWwUNHszxCfChF+925I1d17Ob9AiEArakQkSovCi+ILXk1n8J8Fq2eIk292A/Kb8mZzH/Wfpc="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-3.0.0.tgz_1516591595963_0.3842053599655628"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.0.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"3.0.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.3.13","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"26655ce546684797b406449e47f3a243942633dd","_id":"komondor@3.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-f8jw1oPDDVTavBXUQDj+9YBw/H5uRcljMo3svxFeW7GSynpP2UXco1O2nuuGfTeUn3J+Wm7fklk74NZvzKzqyA==","shasum":"e178dfc8d1e4174eb3d36a44769d6bb02251a629","tarball":"https://registry.npmjs.org/komondor/-/komondor-3.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBgZIttHlJwIM5HzLLIq9xpjwBsnJH1BI282Ikdb+PsdAiEA8dlR7W0aMh2SGaVyWewXB8K5Dvl/haoAkrDnrxqqOMI="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-3.0.1.tgz_1516616969284_0.6160072998609394"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.1.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"3.1.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.3.13","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"90f38c3a01b671cc3f188de8d9988c40824d2689","_id":"komondor@3.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-G+Zm1800YzbY6lDRLgbFIj5PYDfDcz7Jfo+yyii/3JDokQzzFOZfrUcwBujcy2dpO2oFVC79QgqZ04X4eeoMAg==","shasum":"d68f4b68ee29ad4b1009d5592084303fb913380a","tarball":"https://registry.npmjs.org/komondor/-/komondor-3.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXMsvf5NeHnM6gZpMDv9yPcUInt87U3I3YV2S72rMAmAIgYRZ7WEVLXdy0u40ZtPcTwPHgPALqp0GnmKUMNr19JgE="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-3.1.0.tgz_1516762048650_0.030953039415180683"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.2.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"3.2.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.3.13","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"045df539cbe24f3cddde737c3b9e34e4ff0d429b","_id":"komondor@3.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-50e7Ju4dgr+3KKojsAR1awTK8FXyTFgOZRIQCta/PosM98rdWymu+PpLZ7aQxsu5AiFrLug9RzQamhPPNT9Xmg==","shasum":"dbf734b55c83569d5393bf9bd72cc59de94960e8","tarball":"https://registry.npmjs.org/komondor/-/komondor-3.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICUMfSyemnhotsvIhk8eY2p3n1e7+U1S1Pj54b1MtNftAiEAxvksI622jYEzTxNw1dVNPxYy9ecYXm0kZ/YC3Tak6yw="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-3.2.0.tgz_1516784323234_0.7222263196017593"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"3.3.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"3.3.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.3.13","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.0","unpartial":"^0.4.1"},"gitHead":"beb008485aef218ce73117bc529639cc041b2cdc","_id":"komondor@3.3.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-c5Kg+P1uVT2jqsuLwMH4e73Rf0JCCoRWMVJ0VI7EJE7CIwGjsQ6cargIv6GV3UEMMzuc0TNRWdoobJCumo7wFw==","shasum":"df51345ec4111b62d599891fb827160d6e7006f8","tarball":"https://registry.npmjs.org/komondor/-/komondor-3.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUo1ikvBfsB/XJEjg7rUHXbMNa0b5uyy1W4aUVfd5S0gIhAKzfVD8mx2AzhurqCPAEhPTQodGdnH8PB1YPRd4yI24N"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-3.3.0.tgz_1516931940185_0.3351922440342605"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.0.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.5","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.0","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.2","unpartial":"^0.4.1"},"gitHead":"da3277a0eebc4391449d66b6203d8d4e032daa0a","_id":"komondor@4.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-83Bkbglr/orzd3ZJRffue198hS80mccQJq2PgV5CFwbz24h7tVmCOR70dogq3F481Pe5XXsaNF5M5/JGhASBmw==","shasum":"94a1fb4acd868ec2a5f18197b61f7fcb3650f934","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClU1c0Dwi0EUzZgqWxIwLef2xCNB/SBnMJkVkJiFXmkgIgSffW1/AbKWgouaR70eEKLTd50pcd4iAB6v8zwJ4UE64="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-4.0.0.tgz_1516957511053_0.5305256904102862"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.0.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.0.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.24.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.5","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.0","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.2","unpartial":"^0.4.1"},"gitHead":"47b1a452dc8ec754b60a04d83033bff42013413e","_id":"komondor@4.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-jbu31IIG5KmZRXaTWqzc8M6Cxi0NRKMe1Adkh4Wt6mxXxS4svcpsFu1FSFz6PvOukDVs9YLdlnWDIx1C2+qNRA==","shasum":"694cfa7b57394711280727faeab08fd836c5d6ba","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNu+5TMIV0k8wz7okikNt49LnUg8GWEjlS0GUXmbEjcgIgK/fgnIw/P7t+C18I5+v0wUsaCdgmlqXsLfzNsLJpV10="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-4.0.1.tgz_1517020909807_0.907051739981398"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.1.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.5","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.0","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.2","unpartial":"^0.4.1"},"gitHead":"f53df5d4423b42e8648c915d97baa9304c619108","_id":"komondor@4.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-3amZVEtbp0NFuL3NMMbxxZa977dxaCNgsDVEeZn7sefZu1MPhHFwMbz/dyqNbTtDlBNQRT5Y8ECdOn2B3E46hQ==","shasum":"a3bdbbfb3948775b891d62d139e1d7a531a195c9","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA2TJOWYU6C9uw9T1mVFgJ0sDIzF91MRJmqs7pX3AZyyAiBR8VYxx3V2oxndtg9+3QXKbUjWH/8l7PP/e2qa/i1R8A=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-4.1.0.tgz_1517098131355_0.4136271756142378"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.1.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.5","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.0","flux-standard-action":"^2.0.1","satisfier":"^4.1.0","tersify":"^1.2.2","unpartial":"^0.4.1"},"gitHead":"423bb2bc125a47d61f2bf0ec016d5531758dd2dc","_id":"komondor@4.1.1","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-w9FbjKmT2b47TUn1ZCX8Rn7hxvquCbvuI5l0q9zrLfhfiXkvA3JjqI94ePV23LqIrq/dlU85COmd5FYZJ20ETg==","shasum":"9d7e4728dece94fe6865c691d1c63dacd0d3a4d0","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrGHuq6gdZL4jHRox3FwrWu29pbeVq2FUTy96+HWoyvgIgW3JE6UN78Fif3JMuXS8OQX03j/W1tw36j1POkOmZILM="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-4.1.1.tgz_1517105733665_0.5749935985077173"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.1.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.1.2","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.3.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.16.0","eslint-config-unional":"^0.3.2","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.2.5","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.6.2","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.0","flux-standard-action":"^2.0.1","node-fetch":"^1.7.3","satisfier":"^4.1.0","tersify":"^1.2.2","unpartial":"^0.4.1"},"gitHead":"01c0e34fdf5f7f751678be9dbe7c717ae1344214","_id":"komondor@4.1.2","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-zdKOhD8cViAUCKteazql+ocMD+IXAlZpafcmfuAsknP9AMkftXneyWFj3/l89UYrh0jbtNvoxlEtA317dItMkQ==","shasum":"efd920e3af54543bb2d53ea680ae40ca7cc29e09","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1B7pBPBxCGBvltFMms8mfRb6/Vb/MWphwy/yzmtGB7QIhALcbdf7tGXbh0/oGmvEmrDIgaOnr0kTq+VqYf3/dfORl"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-4.1.2.tgz_1517131459165_0.7495823998469859"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.2.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.2.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.1","flux-standard-action":"^2.0.1","lodash.merge":"^4.6.1","node-fetch":"^1.7.3","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"af3ec72057872a2ebb41ad5cafff1b371fa21f61","_id":"komondor@4.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-GTNPdsLOsTgiYRg5DaLbgF2BNexWn8UwxnI33CuiGoR9NkYJoNvcWn6Q7EYTltdPFN4xDtvsL7tHRGWesrh3vg==","shasum":"1f2f2389c778a5c32a9822953cb1a94fcb65b111","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHl0lGBgCeEQeOtkCLm+eo8cMaGKl5CsNx/T6lfSY7T4AiEA1lLrmTmLD25Ic1es+eQZLaU2+xc/5dGfvMRksRJsrmg="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor-4.2.0.tgz_1517873603771_0.4754163702018559"},"directories":{},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.3.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.3.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.1","flux-standard-action":"^2.0.1","node-fetch":"^1.7.3","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"cc66ecbb5803784a3c9dc012602adae2815ecd3c","readme":"TODO\n- env -> spec\n- expose plugin\n\n# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  const actions = getFollowersSpec.actions\n\n  console.log(actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is adding a option to the `spec()` call to give the spec an `id` and change the mode to `save`:\n\n```ts\n  const getFollowersSpec = await spec(\n    github.users.getFollowersForUser,\n    { id: 'github getFollowersForUser', mode: 'save' }\n  )\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the `mode` from `save` to `replay`:\n\n```ts\n  const getFollowersSpec = await spec(\n    github.users.getFollowersForUser,\n    { id: 'github getFollowersForUser', mode: 'replay' }\n  )\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## API\n\n### spec(fn, options)\n\n```ts\nfunction spec<T extends Function>(fn: T, options: Partial<SpecOptions>): Spec<T>\n\ninterface SpecOptions {\n  /**\n   * A unique id of the spec.\n   * When saving to file,\n   * any '/' in the id will be used as folder separator.\n   * i.e. if a spec `id` is `github/getFollowersForUser/success`\n   * it will be saved as `<komondor_folder>/github/getFollowersForUser/success.json`\n   */\n  id: string,\n  /**\n   * Mode of the spec.\n   * `verify` (default) run real call and spy on the result.\n   * `save` run real call, spy and save the result.\n   * `replay' replay call from saved result.\n   */\n  mode: 'verify' | 'save' | 'replay'\n}\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.3.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-UxIPYKTu5qEzbYvMoC/FwEt/7Qu6zeTm2YCRgqxXjy3gWlCGZbeKfC00nR2hL6AzB5/WZQ15eW3QJ+nZExTb0Q==","shasum":"dda40b83cd0468914c5673146e8c6465939484af","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.3.0.tgz","fileCount":126,"unpackedSize":271027,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHxASnEw6q+7h7o2ZYveWarwPTy0DlzVUPGsAhe0D6ToAiEAw6OSGPo5PGtiguCfc71bpf1p4EfEDNMMC3vLX99019A="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.3.0_1518167502812_0.8689652187034012"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.4.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.4.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.1","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"857e9951fea10b1b4da4fe3f8db9c90c25f8ca42","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  const actions = getFollowersSpec.actions\n\n  console.log(actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is adding a option to the `spec()` call to give the spec an `id` and change the mode to `save`:\n\n```ts\n  const getFollowersSpec = await spec(\n    github.users.getFollowersForUser,\n    { id: 'github getFollowersForUser', mode: 'save' }\n  )\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the `mode` from `save` to `replay`:\n\n```ts\n  const getFollowersSpec = await spec(\n    github.users.getFollowersForUser,\n    { id: 'github getFollowersForUser', mode: 'replay' }\n  )\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec(fn, options)\n\n```ts\nfunction spec<T extends Function>(fn: T, options: Partial<SpecOptions>): Spec<T>\n\ninterface SpecOptions {\n  /**\n   * A unique id of the spec.\n   * When saving to file,\n   * any '/' in the id will be used as folder separator.\n   * i.e. if a spec `id` is `github/getFollowersForUser/success`\n   * it will be saved as `<komondor_folder>/github/getFollowersForUser/success.json`\n   */\n  id: string,\n  /**\n   * Mode of the spec.\n   * `verify` (default) run real call and spy on the result.\n   * `save` run real call, spy and save the result.\n   * `replay' replay call from saved result.\n   */\n  mode: 'verify' | 'save' | 'replay'\n}\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.4.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-Kpx+ptjxGovBtB44wNHcy+DPnKL4jKA+mOViW4UNZP6Zqhc5jzku8ey3RBxtMVwoSwuxmQvHDDJk7W37ESVz5w==","shasum":"8dad463f06db3ed1897fc817fc34e2e0c884047d","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.4.0.tgz","fileCount":130,"unpackedSize":279272,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNkIYZQTCHPkn1pbeafhNpUGMeVqXxU8ZR0X3l8s1pjAiAXX7fEJdh4QYwNcT5J31dR6gmCo6kpUlndlQgGDQziVg=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.4.0_1518401891437_0.6298555675955593"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.5.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.5.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.1","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"fb6a17a8155f2d8e2aa122b698b7d4a14f07f372","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  const actions = getFollowersSpec.actions\n\n  console.log(actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is adding a option to the `spec()` call to give the spec an `id` and change the mode to `save`:\n\n```ts\n  const getFollowersSpec = await spec(\n    github.users.getFollowersForUser,\n    { id: 'github getFollowersForUser', mode: 'save' }\n  )\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the `mode` from `save` to `replay`:\n\n```ts\n  const getFollowersSpec = await spec(\n    github.users.getFollowersForUser,\n    { id: 'github getFollowersForUser', mode: 'replay' }\n  )\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec(fn, options)\n\n```ts\nfunction spec<T extends Function>(fn: T, options: Partial<SpecOptions>): Spec<T>\n\ninterface SpecOptions {\n  /**\n   * A unique id of the spec.\n   * When saving to file,\n   * any '/' in the id will be used as folder separator.\n   * i.e. if a spec `id` is `github/getFollowersForUser/success`\n   * it will be saved as `<komondor_folder>/github/getFollowersForUser/success.json`\n   */\n  id: string,\n  /**\n   * Mode of the spec.\n   * `verify` (default) run real call and spy on the result.\n   * `save` run real call, spy and save the result.\n   * `replay' replay call from saved result.\n   */\n  mode: 'verify' | 'save' | 'replay'\n}\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.5.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-N9PjZa/Pht3aitLj7944hhN1xjv0kFal+YW/6rPUQR6covGEsjE8ynCSaiTkAGA8Qglb6QQ8ys94Xu4OwY52Tg==","shasum":"0d7a38c442c5ac8de2566563f789fa862c88bd02","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.5.0.tgz","fileCount":130,"unpackedSize":280181,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHGko8wki1QsvZ/J8vdeYG6XPuyYGQUnmGmlcm0s1yX1AiEA+vENVNn/n934pbcxFsbEj2Wm8d0iBVi85zPCbHKpoLU="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.5.0_1518404741163_0.7895529014525204"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.6.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.6.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.1","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"8a9001c9f27a4a59133a3dd3d209ddcc3871a064","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.6.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-UY3XV6ZbTI4FiFH3pe2AQA6RkvsIxhhcrKBkg8RNWHTN3+UqNGvECmFkfC4VzpWpCAf/iCRnrEw54WVveFxiSQ==","shasum":"b429efdf2f06fd0bf04f1f2ce5d0e94388c5aa5e","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.6.0.tgz","fileCount":112,"unpackedSize":233963,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9xzwCt8Nh0FhwupU0v8haWbRsC8lYuZY2UGj6+yyVUAiEA2xrX53piYZHtJj9gWL1hU4w1D/c2q5oDZ/iiHxfJauE="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.6.0_1518426017395_0.8226328090056771"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.7.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.7.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.1","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"b295665bba95d7ca355056f8681751b72b92644e","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.7.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-KlkAyosPHz6T/gNEBuQHN91uvjH2kOjlCQa0scdTyaz6ToWFJebY9pOerGqNXGu+iyNJz1ZbKgBASAAFVB6ZLg==","shasum":"87dd95a3c857cb71e98ae9fae4cf2e75f2ff4f27","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.7.0.tgz","fileCount":113,"unpackedSize":232744,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFIqMQalI8qxF/3AsefTVpvPLTtDcOPm4CtTO82+N0baAiEA0njkJFMOZcmjYqePSc2P9c5bUBdBSbqpEZ1DmDX9VJ4="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.7.0_1518485210823_0.6600174349359664"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.7.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.7.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","@types/ws":"^4.0.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204","ws":"^4.0.0"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.1","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"0bc6df8649ee94c3df8a5277ff2fa53d8394a390","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.7.1","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-cdMIg/9PpPsKhxDlEHaYTx9o1oHsJuxPWHQJQeDyNcJFcbXupGqqlu39nSoLJ+X8cS7XkiZozosujWtuRUum0w==","shasum":"8ee497cdaf16864f23eeabeae80ea8ff39d9810d","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.7.1.tgz","fileCount":113,"unpackedSize":233590,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkl+nBUfVtFQ3V2kYq093FtPUbkaIzq9EuQJPFEe8IcgIgeCPSNefopU76Z+D/VfcRX/7Wmju+fvI4JL4UDcLSfMU="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.7.1_1518489264405_0.7262395086334343"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.7.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.7.2","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204"},"dependencies":{"@unional/logging":"^0.2.5","assertron":"^3.4.1","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"2847d3355b189353f72d95e3b7676a25f845baab","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.7.2","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-0YJvQVMep5uTlxwMMOqQBiaATL8ctDv0FIGo0m7dy5/kcVEvN5ulNjTOLJ0yYodjsBc7ZMYfEDuemXCxEvZ5eg==","shasum":"b43648329f0a1678a92d635f5908608ebcc7ed58","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.7.2.tgz","fileCount":114,"unpackedSize":233904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeh2XHuzNVuG3kGuq/vMCYU7LrXrAGAV3ilBsOF71NZAIgVrSdiuvGtQUVRx7Gf8qa6KGUH7L5rokGlNkdRVRXkvI="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.7.2_1518504286612_0.16488252176078322"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.7.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.7.3","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204"},"dependencies":{"@unional/logging":"^0.3.0","assertron":"^3.4.1","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"b03c439ec3657b82c689c5849fc2c7ccb325e952","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.7.3","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-BSE2IU+MIOtEiy6L9+x8suycqN86IC19fjR0d+PBhjQ1+MssnneQoAsDLUVEwltXn4ZU/gAA48LYSWEF2H7H+A==","shasum":"349be4c68bbf8760fc6add85baa4483edc52d4fe","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.7.3.tgz","fileCount":114,"unpackedSize":233904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeudP8dcPOpa8RZ3b3RGutRm+2ZlYdmuDuqL88vf2sUAIgXhmXhQokwv3M0gys9ndDkjhRjxwJ0P/SbFfOTnot2fU="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.7.3_1519183932440_0.5441346039958683"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.7.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.7.4","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204"},"dependencies":{"@unional/logging":"^0.3.0","assertron":"^4.0.0","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"5c22ea48550e489411525446ca8ad85d892d6bcf","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.7.4","_npmVersion":"5.6.0","_nodeVersion":"9.6.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-ZammJ9LJZWqLkIncrLGG0HQUMlEOBFx9HOzqC82uiYqQnJHgj+kNnNBJYFuKkzWw/cMpTZckwyBu7Znxugl7TA==","shasum":"32a0223dedd57b6ac19b0a5b6e5e2de3e30b2cfa","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.7.4.tgz","fileCount":114,"unpackedSize":233904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDO2EJKRRpSLsqyNJHiL0f7v20YNMKm7zIU/W6T3XV6lQIhAJXNTrim+87kez/vpdT83XMcMz3xVep9z320QrCubSVl"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.7.4_1519888157067_0.24666642984105147"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.7.5":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.7.5","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"nyc report --reporter=json && codecov -f coverage/*.json","coverage":"nyc npm test","coveralls":"nyc report --reporter=text-lcov | coveralls","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run clean && tsc && ava","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"ava":{"failWithoutAssertions":false,"files":["dist-es5/**/*.spec.js"],"require":["./scripts/setup-test-env.js"],"source":["scripts/*.js","dist-es5/**/*.js","*.json"]},"nyc":{"exclude":["scripts","**/*.spec.*","**/fixtures/**/*"]},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/github":"^7.1.0","@types/node":"^9.4.0","aurelia-logging-color":"^0.5.15","ava":"^0.25.0","dependency-check":"^3.0.0","eslint":"^4.17.0","eslint-config-unional":"^0.3.6","github":"^13.1.1","nyc":"^11.4.1","rimraf":"^2.6.2","semantic-release":"^12.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.0","typescript":"^2.8.0-dev.20180204"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.0.0","flux-standard-action":"^2.0.1","node-fetch":"^2.0.0","satisfier":"^4.1.1","tersify":"^1.2.2"},"gitHead":"b03820c284d0b9cceb1228a88038ef738e1aee95","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.7.5","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-9/62k52Bx4eRZsBu+145zZnuAaXnL1VnupPle2tssfGfkkQ/ll3Ah1QZ5nLNcOqk0cBNmVZU4F1fj29lJs0qqQ==","shasum":"8dd727c702932efb4da34c71c21eb94f95948d79","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.7.5.tgz","fileCount":114,"unpackedSize":233904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHCLDsE8uZNYZzjdaCBWVUxLqPjjt1Sy2O6QSoQ5pdTYAiEAtlTQJ8767d/rAJhastgjp76CKMKiDst+b41fXgMj/5I="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.7.5_1520900526277_0.8334099953799703"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.7.6":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.7.6","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev -i flux-standard-action && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run lint && npm run coverage && npm run build && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js"],"roots":["<rootDir>/src"],"testRegex":".*\\.(test|spec).(js|ts)$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.0","@types/node":"^9.4.7","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.0","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.2","power-assert":"^1.4.4","rimraf":"^2.6.2","semantic-release":"^15.0.3","ts-jest":"^22.4.1","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.0-rc"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.2.0","flux-standard-action":"^2.0.1","node-fetch":"^2.1.1","satisfier":"^4.2.1","tersify":"^1.2.2"},"gitHead":"5c6ef16240c8cbacecdeef6cd702384427ed188b","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]:https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]:https://greenkeeper.io/\n[semantic-release-image]:https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]:https://github.com/semantic-release/semantic-release\n[wallaby-image]:https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]:https://wallabyjs.com\n[vscode-image]:https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]:https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.7.6","_npmVersion":"5.6.0","_nodeVersion":"9.8.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-XZgnpxfJlWZH/N5Ze9fjX+VmJsqQKWtKQCHG7lUTDm7jqkL4sjZof1eSndE8xy8gWLxTLcrO/Lz9nEbOQ1MQuQ==","shasum":"2d7941b195714e91c5feeda824ed98fd5bda246d","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.7.6.tgz","fileCount":113,"unpackedSize":230929,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGwEDQG42geFaVkdx4qQM/X4P5edf+qLOHOenucuNA/oAiATO2SQYwxxzvc6bdOE949alvAE6jVkcVYJvhelhRkVSw=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.7.6_1521357844075_0.6062451055643421"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.8.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.8.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.1","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.4","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.2.2","komondor-plugin":"^1.4.0","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.2.1","tersify":"^1.2.2","unpartial":"^0.4.1"},"gitHead":"1ee71ece2c0e6855ed3538b7a9f8315d8877dd62","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]: https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]: https://greenkeeper.io/\n[semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]: https://github.com/semantic-release/semantic-release\n[wallaby-image]: https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]: https://wallabyjs.com\n[vscode-image]: https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]: https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.8.0","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-ntyGUZsIm++/cF/EE4HasorM//3TWxWmOy7SZvyChUumMAoCqp2aKfXABPoE+Yu/6WN1ugGMTbXS/QgBnr8MqQ==","shasum":"76274d1348c3b9510569d296cb1dbcb7e27261ea","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.8.0.tgz","fileCount":87,"unpackedSize":310880,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAG3Ouv5uNp9o/0aWWnM2/7eWo5XfQPkUKpLNIlCHf7vAiAsMO0ZhhJ2Om3Xwp8p3DsriSqR5j9vgUaoUWsi7faneg=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.8.0_1522480850479_0.0722291946436322"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.9.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.9.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","publishConfig":{"tag":"next"},"release":{"analyzeCommits":{"releaseRules":[{"breaking":true,"release":"minor"}]}},"files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.1","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.4","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.2.2","komondor-plugin":"^1.5.0","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.2.1","tersify":"^1.2.2"},"gitHead":"e8e1f5925849c325c84ce09a3e5d71a5816d35a6","readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Build status][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      // massage the response in some way that make sense to your application.\n      const response = messege(res)\n      a(response)\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const getFollowersSpec = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` when needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(getFollowersSpec.actions)\n\n  // (required) ensure the record will meet your expectation\n  await getFollowersSpec.satisfy([\n    undefined,\n    {\n      type: 'fn/callback',\n      payload: [null, {\n        data: e => e.login && e.id\n      }]\n    }\n  ])\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\n`getFollowersSpec.satisfy()` uses [`satisfier`](https://github.com/unional/satisfier) to validate the data.\nPlease check it out to see how to define your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide a `name` to it.:\n\n```ts\n  const getFollowersSpec = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const getFollowersSpec = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## given\n\n`given` is a construct to declare and verify the fixture of the spec to run on.\nIt is a mean to communicate between engineer, QA, and possibility IT.\nIt can consist of `spec`, which is used to configure or validate if the environment is valid.\nThese specs provide the necessary information for the QA and IT to re-create the fixture.\n\nAlternatively, a service can be provided to get the fixture information at real time,\nso that the fixture can be decoupled from the tests.\n\nFor example, when a test ask for a \"version 1, normal load\" environment,\nthe service can spawn up a new docker container and return the endpoint information to the test.\nThat means each test can be run in its own environment.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T extends Function>(fn: T): Promise<Spec<T>>\nfunction spec<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.save<T extends Function>(name: string, fn: T): Promise<Spec<T>>\nfunction spec.simulate<T extends Function>(name: string, fn: T): Promise<Spec<T>>\n```\n\n### given()\n\n```ts\nfunction given<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.save<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\nfunction given.simulate<T extends Function>(clause: string, localHandler?: (context: GivenContext) => any): Promise<Given<T>>\n\nfunction onGiven(clause: string | RegExp, handler: (context: GivenContext) => any): void\n```\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.satisfy()` call.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `spec.satisfy()`.\n\ni.e., you should have `await yourSpec.satisfy(...)` in your test.\n\nThe record will be save once the `satisfy()` call is passed.\n\nThis prevent bad information overriding saved good information.\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[greenkeeper-image]: https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]: https://greenkeeper.io/\n[semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]: https://github.com/semantic-release/semantic-release\n[wallaby-image]: https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]: https://wallabyjs.com\n[vscode-image]: https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]: https://code.visualstudio.com/\n","readmeFilename":"README.md","_id":"komondor@4.9.0","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-UoWxYAZKvJRCe4gvEPNNlxSsn1phCd30n6+xSOTMh9KkZCVPAuH7F5VTHkFUWAEZsZQNjjDBMvSDEE8snNnltA==","shasum":"f02fa4c8d71813a32af96c47da3fd3bc4e7c69e7","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.9.0.tgz","fileCount":87,"unpackedSize":239460,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGuw2y49eRcJ+RAg77B/BRL3eXXI6WjYQNvlXrq4LraXAiBjYGFAJVMkzpxiqpTWEsuVbVOX8RDeTfikTx9HsHtYGA=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.9.0_1522552364751_0.3032007773229475"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.9.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.9.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.1","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.4","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.2.2","komondor-plugin":"^1.5.0","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.2.1","tersify":"^1.2.2"},"gitHead":"e28981a9cbf84f5a5a9923e9df76f9c865b968b9","_id":"komondor@4.9.1","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-IFrPmQTyH8X+8nbFviX2VAFmmHIw8YT2W4R03UBySAT4iOhi45fzu9+d4TYF9Mc7avgYYc4aaisOkOwNNHeS3g==","shasum":"bd21d7ac8e8d10138f7734f0dc91910ea57b6cec","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.9.1.tgz","fileCount":87,"unpackedSize":239515,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbBkgTO98kT0kQh3+ujfVwtPxjvU135MW+91ODC5C8IwIhAIhcHVWECuiJEte6pqg4+p2RcKNDzKCe3eUcLCtXJ7iz"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.9.1_1522552942786_0.9447614296909033"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.9.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.9.2","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.1","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.4","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.2.3","komondor-plugin":"^1.5.1","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.2.1","tersify":"^1.2.2"},"gitHead":"24241003073e0b9b19bc730bda98603d7e10f873","_id":"komondor@4.9.2","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-gM26jUfQRs0DIm2ONo6mYc3kMcHzJ8XOugt4XlyRIVOwjjmvMHZVkmMh3ooE13G8UMCrBT7MMf3jhirYh+pebw==","shasum":"188107a73f51ca0708c9e4d01019f9f5cc698bc1","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.9.2.tgz","fileCount":87,"unpackedSize":239539,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHrivmZq39uYbSGfUL3BpBq84v77t9YTsDlJlZ4gYZxwAiBXyykeHAbeECujRGpovxjKhatiBMK13EytrfH9KROWiQ=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.9.2_1522555447503_0.2308659145847296"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.9.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.9.3","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.1","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.4","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.2.3","komondor-plugin":"^1.5.1","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.2.1","tersify":"^1.2.2"},"gitHead":"6b288fa88fbc29134dd668a23355007868582219","_id":"komondor@4.9.3","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-fpAd5FKgAjJsT2oggnk19uuzH38AgO/FamOnV1H6yI5h1xnGmBj0pnfcZfrVyJkt+aNI0bz/NfU7zvpX07oByQ==","shasum":"5386a4ed47c1780b35772e2c8d0fcce23172daba","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.9.3.tgz","fileCount":87,"unpackedSize":242451,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICiembLknhCmiP2CzPbBv9nGRPG5Fm2xeDIQKHGA2t+CAiEA8L7D1tLCwnLVbdlyQGss6L1I+i46fg5RZesBeSszY5g="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.9.3_1522567346444_0.8709888099543475"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.9.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.9.4","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015","src"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.1","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.4","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.2.3","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.2.1","tersify":"^1.2.2"},"gitHead":"cf0daced4d4090aeef3e6de58b7a0552890a6ae0","_id":"komondor@4.9.4","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-Lf69OTcc9nbFZg4xqEwzQaCRVH0G8ahXG6gvUu8+dl6ltIWPwTIK2rnG7vUVlFw2GU9x0bUUFi1rhmlPU+eMYw==","shasum":"5c394ddc995af01459fb5a27d4473be8861ef237","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.9.4.tgz","fileCount":87,"unpackedSize":245763,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFKadwV7Rjc5/W+Kmt73DLHCUU6B7oqNhT7IoVqMGll2AiBnUoL6mZmz/LIlRTG96vwYkb9UXPbnUryfFz97xNDWhg=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.9.4_1522570869368_0.9440080404133886"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.9.5":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.9.5","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.1","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.4","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.0","assertron":"^4.2.3","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.2.1","tersify":"^1.2.2"},"gitHead":"621e1abbf12a730d183ea2127ff7c8187accbfec","_id":"komondor@4.9.5","_npmVersion":"5.6.0","_nodeVersion":"9.10.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-xfX2YDJKRjd64+LSLS1H96JlQO3WozIK4zdI9fbQX6b1MwXYiKaWRdcNVgiau60whhck5NDTw3hqdrBbiIx8Kw==","shasum":"6765a7d6547eb7ec7d67063127262943c121bddb","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.9.5.tgz","fileCount":51,"unpackedSize":154323,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpbn5MLzUA/fYKoS0moSKtySSL5uhDSHK2M1PbqpbPLAiEA9QkclGE3D30mLYvndBZMoyJggKz2Y7wBcqUOowBJLGA="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.9.5_1522717957610_0.8051214974881289"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.10.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.10.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.2","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.3.0","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"d812ecd027150abe36dc2f018669ebf0fc3caf1a","_id":"komondor@4.10.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-vSBerdh2Z9GeBhb1EonlzyYOqv2LuptZkpcK7RKxX1fgTLy55kKOxV8F4YLSn3SEb8wmj8w6a3CFxRM6HS0KWw==","shasum":"8e21c4b7bf101d183ff244523fe3f331240aaa55","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.10.0.tgz","fileCount":55,"unpackedSize":156079,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKJXR5H2KOITBvmurJ2iPxwTskgMp3uXM3TMq8xITjjAIgMgA1xvwGrndyQUO4t2Logh5DnlI+7/b423HB6BCZfzM="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.10.0_1523326435525_0.11657421069021678"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.11.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.11.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.3","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.3.0","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"780517c05d7744a0f4034f18e25b9605047457ec","_id":"komondor@4.11.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-0sbnKbuv25qD1tltruKO17Yzed2KS2pPB/TXzmCaGwJM7BOXWwrWtMAe8Q7xHl2/j0SMDX4sVd8I5A7Gj5UqbQ==","shasum":"a5cb9cefc93d3b33977f9c9dd41b955297503b9a","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.11.0.tgz","fileCount":55,"unpackedSize":156666,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChACs6H0OkseBDWXoJtmWenjEeq4o0X0QDVgWt/7gt3wIhAKyvMlbPQpM/8asTY0i+NuHRLHHVttu2dPl1y34khLV2"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.11.0_1523396240813_0.8101995409135336"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.11.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.11.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.0","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"24bda92bd41ca3c5f8ccda9986f687398a4a4d6c","_id":"komondor@4.11.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-umyw/rq140uTTZlwxpmBNvwu01DFMmLPumZGAsUmHHIjH5QYUPdsyAhU5o9ba+rW90Ak2LJ5PnODnjuTc7jV3g==","shasum":"1fbcf098b592dbd3137ae80e199043959ef9c057","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.11.1.tgz","fileCount":55,"unpackedSize":156666,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6tGhlLYelfbk2JDttVY5Uzu9sf93Nm6oF10dTzB/kfgIhALW5dSY/XnHd362A/HvAF6STsBPdWlGlLzEsr69Gmf/F"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.11.1_1523410126415_0.7237046313355371"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.11.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.11.2","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.0","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"df94582e17c03e8dad2b61fd6d1718aed7dbfc41","_id":"komondor@4.11.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-50kv5mL6LVSkopHviin/70h9qpz9iRw5dF0V0qqgf4bfwmiv4wP91880UtCcIwqoABI955JvJi4oyi0U4hFiSg==","shasum":"a9b495a86578d03b229aa53de5d8bd20ef9d2575","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.11.2.tgz","fileCount":55,"unpackedSize":156741,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0MR+jjxEgZLva9PIrr05kWrC1g7u5QWOsXwSqiN1AWAiAFucSGRgGxNaXN7F4lFBQQphDgJPqJga4EtIfWA/5cHw=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.11.2_1523411151976_0.47926925318864"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.11.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.11.3","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.0","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"9b7e4ea3370ae41ee3ec732015c3f8177da2fa01","_id":"komondor@4.11.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-aMcWjf4yqf26qWWqVqU4hNug6foyrvNqDfViUeA5Jj4yuWteWY78BZcOPdW51XJaqlWvGGoZkzkIiIKsa1Sx+g==","shasum":"5f6ef8462fce2d723f1c7d90054d4116df410d12","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.11.3.tgz","fileCount":55,"unpackedSize":156677,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFgQ85FMyak5NI36jn3pQBLWhZ6yWNwVorAl8LU6o71CAiBK/bq3B7n7PeaHMdZJzcU7jpU+FKIr4HYXBL7KWSkjHw=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.11.3_1523417976172_0.4856993024131109"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"4.11.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"4.11.4","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.1","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"b20175994b8db81e2cc7ba8fc8fe4e63b102848d","_id":"komondor@4.11.4","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-IDg6jLErnIJPOHMMYHka6ZhA+nOZZ0xgPHJrlIfOvG8SpvA/BMbAtkThDW1OmmFsqQMR5ZBecQAZhbQ85dYbSg==","shasum":"352eb50839146dcaaeb4504dc4bf59c2e512d677","tarball":"https://registry.npmjs.org/komondor/-/komondor-4.11.4.tgz","fileCount":55,"unpackedSize":156720,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBww7OaaXOsSK+pxUeiUdXvzTWmZEeLmSI7r7OZ/x6UYAiBc05sWH5fSLodN00l5QiS8IImYwBhhDLFAwP2BDPT64A=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_4.11.4_1523472147189_0.8197648739454613"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.0","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.1","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"ca83c8051362da93e814a49e13ad079f295a1b5c","_id":"komondor@5.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-BoU3qJRJTv92lyWP/hHbkumYGrxPrWRjU77P0nmdpP7p/V013658DNB32D1unA34mNlaOzFCoMCpQNw6pW2IxA==","shasum":"40c3a80c344dbaf2a2410722dfe7ff7b3101727d","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.0.tgz","fileCount":55,"unpackedSize":157545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBUw6ZHt2c6rLXL6J8F183d28LIVDCGIE7tyYEA4oM5TAiEA2o3ijl5RcK/XpWhnoTzdn+OwP0KeCa9COjTC8k2Om6k="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.0_1523473886954_0.6635362384973895"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.1","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.1","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"e5bb2718ed99e8e55dfcbe8bd9a4d715997e7b39","_id":"komondor@5.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-Lic4RehfZyrM2CJoLTaRUIRaYdnCnzOYE/wZDia8G8x2sc3AO3emRsJtCa+W+gAAORVsAAGfLrfdzc93HcQZpw==","shasum":"429cdbb2b564478ce91fbd71aca36021633deeba","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.1.tgz","fileCount":55,"unpackedSize":157935,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGbvKcTZeq7tk2WOsVZafuuEXOvuQafHvEEOdIsJVBdVAiEAihpiuEsFzkPabHoauVNFF29u4DOhLkF06V1wlOqdwII="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.1_1523488280789_0.3830878418269852"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.2","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.1","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"1c86aafe4ee358823150922ba0933fa6cc56f953","_id":"komondor@5.0.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-GnH6jpLb35CtKpt/gUzG+izm0wZyoBZoH0uoU1s52aTlPOl2Uj8D6mdzXxenHwqkc1qE7PVFOhUeemmYucbyBw==","shasum":"481c456f20de67b5c824e09572e819ab056e64d3","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.2.tgz","fileCount":55,"unpackedSize":158396,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBDITOzuqbD4n/C766/RKPm9bb3mmE0vqpGmM6xWtRq+AiBU9ubKFndPcpWmvAJLSMfKztXW8Q+XWKabFpHB3zi0vw=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.2_1523489517952_0.5430161667080919"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.3","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.1","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"25b4bebbec5a570c620f7a84ee783cb8cb2ed688","_id":"komondor@5.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-KQG5ltuvxC7NeK0PnCOsii4EBD3j636cB+c1oxwh1zTAN8tpvZZ3VA5R/EZxBjWEW5QsN4zvfsa/KJu/wS04tg==","shasum":"fc53cefe8b6eeaf489b36112b36b3b2d8b7750ae","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.3.tgz","fileCount":55,"unpackedSize":158424,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+hhABs7nZygN8a7aMT8EhZNiBaogDqgwT+w40QhMM3gIgAb+4usHCZYHfQdvBqmu9dtvJJ7p9UVjyElpYJhf0VSc="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.3_1523499656285_0.7218996865407914"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.4","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.1","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"954d60d32081dbf590d540140ce51f3a59aae72b","_id":"komondor@5.0.4","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-GFewf4Ryz4DAT34Jj3V3K2TMGRk8qd11ferk5EY/y53gbJdE2FJkW73Pzg0iiTXxb0FfVqBp9MWRpK5/iZjrpA==","shasum":"d1c97281dc01edb1189356437b5ef51dfb3d5d05","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.4.tgz","fileCount":55,"unpackedSize":158412,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9KW2HpyTurxZzlJR2EWgjrVhhDZNZvyw0bXGoZMeicwIgSH2Vy0m9XeTHo9RmK0RVBaYZulY/SSlbBah266AbSVU="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.4_1523605438571_0.5187465757421923"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.5":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.5","main":"dist-es5/index.js","module":"dist-es2015/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es5","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.2","@types/node":"^9.6.4","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.5","ts-jest":"^22.4.2","tslint":"^5.9.1","tslint-config-unional":"^0.9.2","typescript":"^2.8.1"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.1","tersify":"^1.2.3","unpartial":"^0.4.1"},"gitHead":"56d0a4ab9442e1811806c843c400c25436c3e603","_id":"komondor@5.0.5","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-3bHNX5vjNK+oNDTf3OzEEKNIN35E3mdC85dDduCp9tP1PqI+Gx5kHgIzjFVeUQiKLGf9P4h2wh1mGeGB9alK1A==","shasum":"578410154f66d6ea281e122a14dc951b79beb98b","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.5.tgz","fileCount":55,"unpackedSize":158558,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2TM1CRA9TVsSAnZWagAASeMP/3EXOEo+3hFcB7v8UUcv\nM8/l+u28KjoEmKN98H+QWzaKz3arvQedh6RRvL3OHrzKJkSb0s1W/040MH+4\n4SUdNKTxFD8uOjycbIanP03ZW1Jnw/i0qTMgbhgy1md9pjD6gISmg2fMq7Bz\nEKYVfibu9dBBmpBQyydrhNnpssEajkFCRQgJgkgWAIQN2zXFAicOdakHNxBs\nPh6Lok/eOy1b2m+TjkHr4AZMmrCu6ntdvHIduK4mLBhVdSm/VX25EJIZYL1U\nawiz6d2fGXIYmNh2J5jtdhZyRr9H5dz9tKfWmq1iZvl+/03gI6uQoo/Jvfta\nLGz9O2pfZvHNYZFYs2CW1Pxh/6F2IvC55jj5RmsOAHhLa1/v9yAMVyYNIO1n\nJE30hfKSZHl/tnry/EUsJogAq6BHtv5F3VkkGDV3IFcmObeo/Xnvt4Hf8neP\nqxsUhF2wv6XAtUMHf4j+d9wKWq/zjZ4916tDEG9KgWQ+a7avKVDQ5es9n7RK\nZS3e2yj9hn8yyOlFATXg2LX6vo7HTbDrDYSsrwD29bBVmwfECyd+PsrSzQ0U\nbMakTVQ5XgdbvmPDQReseOFTK2XXeV+6usBvtSMeFOmxnhZ4r4hbXxXcsToE\nKm4tIp8FBmFVPjhhm0wFTWsAPiMmXnTN1jEy0QAqHTckvTkJtFTJR7H0W8HX\niWUF\r\n=Ynz6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDN2LePSN/NDJWLWpqS7uHPjr0VimnI986Lf/qyvBzqTwIgQy5hBfP1wP+zgQMS2YCjEEr1jaEcYliyHrg9MkwCKBQ="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.5_1524183859590_0.6557141028613163"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.6":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.6","main":"dist-es5/index.js","module":"dist-esnext/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-esnext"],"scripts":{"build":"npm run clean && npm run build-es5 && npm run build-esnext","build-es5":"tsc -p tsconfig.es5.json","build-esnext":"tsc -p tsconfig.esnext.json","clean":"rimraf dist dist-es5 && rimraf dist-esnext","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"f16d546a8beac29aead9f242ea341174305253ff","_id":"komondor@5.0.6","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-M/KscGVl1jZbsEl0DbT46osaIit333btKfBBMxtyb55f9l1HfBLiuoQlFqrevqFTE0GXaLb0OoiO+PVLIVIh4g==","shasum":"2338006463cbf6c72fdaaf609bf1e220fe6d012a","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.6.tgz","fileCount":107,"unpackedSize":278194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2U0uCRA9TVsSAnZWagAAULcP/i+wz4N7U3J1s1r04SjA\nf1NJT1aXhQxEf4UScT7A80lqf2m/2PacFdf4djT0t56eH7I7YgBxty9rzGgX\nVUbeybmuXwNdLNjmHaU7bU8k0FS1lbMWbvdf6T4l//AuYgNSl4Ms6RoA6h4h\ng6HNixZHRF9qO3bWIVjarf7a9DvmDhSGR/gryNqkzRX28eWgIOlp0vrPqCme\nUcVrD7c2DyS5Oih8W6xL7uA8BY+GyyoQ/rMbIqIDS2/N5lC039nFtqzdA4Lj\nngtkXCiHHNAZhsxL0jWR9GJZGcedVDxF2CLDw9N+rSeSgwW+YU4kSIRCZIDO\n8LlURWcmhQt+8nwbwJATna5QYVFrV7Qu6PSeWVAy/Q64cyQSG5JhUvoPnHjO\nWo/QPHzg6666GyorAKumlBTsC2kHsqNeCwuhFRsLMYGkdMg2FVHEvaVp1Y9X\n9O8kSsO6KMaBA3FT+NFmNDYIV2Da2+ZWE34UtxnjjcV+VDM2B3sWWi+zOs3V\nHjWIsaJ/Hc6mxMccXlrASiqNmVPSTt+MCm52cgWLjqxKvc4g0r6J5vBLZapQ\nvRGhnxsyh+9a/zkKBwfXZmlpgcRgID6PY26cHt8XwOLca+lkz+osj82WP12d\nWzoFYo1zpsqJXu4XH6xAqIbjROTa/mrdUCnYBYhyUHcUc8x73k+DFJQRRUXp\nsiPt\r\n=vi9u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGyRI/7N0GusDn5IjdFXO65umXl3JzSoQDRFoSBIBI5gAiBNBCd8CfEGTRwosSVRrBdFZXDWedPuJtfLrHUM7RR5dw=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.6_1524190509001_0.2616717712513603"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.7":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.7","main":"dist-es5/index.js","module":"dist-esnext/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-esnext"],"scripts":{"build":"npm run clean && npm run build-es5 && npm run build-esnext","build-es5":"tsc -p tsconfig.es5.json","build-esnext":"tsc -p tsconfig.esnext.json","clean":"rimraf dist dist-es5 && rimraf dist-esnext","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.23","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"f3cb7146e89d6b65ff82b35b1af685e32e3d9b70","_id":"komondor@5.0.7","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-1r1VNTxHyrfP9fXNo0I+BfG6Ajk14wm3day7Uk8lwfLo4RRM7qWsLijMm70n3blCiwQU5PW37oVPUv55co7/oQ==","shasum":"bb5ba58bdd5f4396511135450f9a0cfdf1569db0","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.7.tgz","fileCount":107,"unpackedSize":280722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2YzPCRA9TVsSAnZWagAAJAIQAI/ls4AEKTkHSbRnBJyP\nmFO4Qvf4AaTUnvIaO7pua/yUgxpEPp3hUc24qaJQxnjiz9J6z10z5jOn6IOl\n7AYFX1bCElNoXFauECyZ9mtOqfjM/gjfCUHEMWL49vPnp3nJHAZS4wTEX30/\nL7IO38ej9bOiXR00AI2I3Oa8c3k0/6jtpKVpK+yCoHJD37BrmbcGvVq2pglu\nn7VIODw7gQQwlCVndasIfwwOhzSuDJRzDL0XfTTHwvGPk34WelMKS/WDJ/b/\nl5HBUmJIJDtEm2k5RI7cZltE6ms+8f40vYu1qr/+pSRQfu3qtyRRN2jwVQ9o\nU3Xk7tD81YIvRqk2sVf2BRLL1zNy+hYlo7fE1ZAmqSzGc4TIjHJEcSgVJeH+\nfj347MSR7ceWngcRIy4ctKcVyVDzVKscg1KkhmqzdytHk0azRSoEyVt2uJCW\niDiXfRF6CucJ/L2aBfg76PyLu3ize66b9qb1YGDZaUA0qv+4dRSp2hZyT7xF\nWvmZjdPhmw7+E2CMhip+B2BJLDCRfKsD+m1eR9FpS0Gbpd4bLJrADJFub/O3\nWjNHPVd+fVq/lnmjoX/xxgnOkc0XYzHXGsjIUwBwDz1x29sYEFwmlVvqP3YM\ndo14gmsgBGnuhiO90o+svDhgvObhZJXes48KAk0fomCV3YcdLdQnG7S7uU/Q\nCYSh\r\n=QQGA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5aPNK2tSU+zumtCce6f8FtYuWqtCHAH2CVrURJIC7IgIgEgfMd3vxpMzayBI3MJ6Sh6WvobTGbifzvfKs61NDF5U="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.7_1524206798533_0.9041233989230137"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.0.8":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.0.8","main":"dist-es5/index.js","module":"dist-esnext/index.js","typings":"dist-es5/index.d.ts","files":["dist-es5","dist-esnext"],"scripts":{"build":"npm run clean && npm run build-es5 && npm run build-esnext","build-es5":"tsc -p tsconfig.es5.json","build-esnext":"tsc -p tsconfig.esnext.json","clean":"rimraf dist dist-es5 && rimraf dist-esnext","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.23","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"91bf527fce91393b0d76063997277b9d2b7a1ef3","_id":"komondor@5.0.8","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-HRqbI5pYaQLPYoh+AJBNQ0aIdy8ciR6HWAtENfDewbBnwlJ0C5y9zPidFez9fF1Lnzc0QUS6JJvwpt1I2wUhIw==","shasum":"3467090f793a111cbbd7f65e406aa8e3c0b2f358","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.0.8.tgz","fileCount":111,"unpackedSize":282983,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2aaPCRA9TVsSAnZWagAA/KkP/0mo6hNWQAsGYd2fKTBA\nbcrGVAQGLNKKTZ+M84Rj8b5rvO+URYamNFh0LLZy0M+NVk65UGAaQwZN6kNG\nY7bca/ya15zr9ruEER3I66CwSJ70re+RbOW1YSWXBZ53gYqHifJcc2DHMxIH\nU3qbh+sYPAf0ewWluuEIUYApBYj+p/EloRrv91TTWrK361HJ+ioR3vhYylS9\nXV2bES+yKML+379OdDT0DwyXjL9DWK0APNnBJY/pPwoms9oxe7w02plxLzTq\nd8wWxoFNdwZLDq8M0QKrXlmpnLpRYkXbVdt5/7ydnmDjcEDwGeE/LxkI8y01\n/8Q/+pWBgN0vB9ZCK8drQrR/6+uYQyvNMKmxp64jXS19w74AdPpkMUBcmups\nTpo4bOktUe5S/xZO884jdfjev2zExXKqw/WxPp5j0IjDUlG0TVtJ8tESQyxV\n6Psdx1NNzq97MxmG3MnY+IcYGatDRWC8N0afh1cgP7MvC49gEoh+bv1gfjxS\nznSxg+XxuntnmpcVFV/U90McfBpg4F84uEyzFCVP7Gg8T6cR7syyZjNM9pRF\nyvOuorGFNKJnQ6V5I1fQQDXoVh1nAT8blB+qnWQYtDVTvv4qoUar4o1Bk5QO\nk04rwGgBYyJ0OLk6hkFIbKRROd1DC3xfgANLekLyKwP9fP9F0oRPIIpKmCKH\nAPi3\r\n=fEi/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDafXfl+wVFBIwhLAk0SIxheEAyccMXDMcyGr25++dZ9QIhAKTn4qMw8HeeoB42E1PVF/IimsfsnCOBZAbOTBPgnG3y"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.0.8_1524213390221_0.03699997405957367"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.1.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.1.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.23","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"354942bda7c4d26d49f15ddb209a3fc616bd17d5","_id":"komondor@5.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-rBVOzmMy0dQdUi15K+E1jRx5acYjPiL486GOrCduYHu3QVqlnb5skeUdRbN1avuMnw4fkA3ibx2kIBUkYPRonA==","shasum":"cb10b39ae861188bf94e2ec926688c92c1e20762","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.1.0.tgz","fileCount":59,"unpackedSize":142225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2bKHCRA9TVsSAnZWagAAQowP/RZBeZUGmeFjVh2E0cxP\nS1FbflaJ8TNMl6et39KaO9MPXpSuRyi981FCQdxgGVVpUyfdKx6XIOm2DE5A\nlmKNO+sF6YcgPBgy8jGeGTnjr8hoTVRttYGWAQ78WQAlSjXAawwQxnCCm/kK\nxYXlb2j7EdKcVGcp1OyXYAGIhjwLKyC8WypDgUV4sl8S6QRGhhVs4PnvfFXo\nCb7iXQErLB9leaJjFF6gmHu/jAmltjCSkDgexrCR1BXaJ+l7kqRTKGxhY1m4\nkMoMvYce6M15a5IapU/H211AUAOlbzjo4hrUjLE8Jq8bh6ZD2a1w9pjnfyvK\nPSEsRA8Sby7Ke0R3JXlpSh/qIezOvnyzYFWsI455qzVEFQZCcKOX3L5KzCS1\ndxKM252tu9/0g+QW+quDgt3VRyRdVo+29zZ5Q+q9q1SH7T0I5gVhpqe0p8K1\n3P3G+usYWRG93C7YaNldmF0Cn0DpBYAaGmO5avAl5ZOAX2s6MT4kdZrGGCPS\nYncaISqhK0zIi0njkFDFbiLlkKSUtGlM9yXoY4v4vCDMIutEffn9iDm/jrEC\ndqd+MR7zwRlnSuu+fnBVkRkV5ZjkGk2m5/NS8Qs3Nes4HwpZksNGJyxgyDa/\nrnYBL8flJFTT+XANZLKaw/FZ5rU3y9q4HEqaG3HGdOajtqUBDZtCn8ZdOB6u\nAZRz\r\n=tD4Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH5hFABUgvLlbSgUvES0Kzmd2vYTt1mSexjIlSC06WzMAiEAyj9lf28UoQqBe6jIJM6kZ0WGU1OQNRhNOzUde5vpp/U="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.1.0_1524216454267_0.2372445052772716"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.1.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.1.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.23","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.4.1","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"9ba62273c098a9294d9787c57d9b3306389592a9","_id":"komondor@5.1.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-5r0ZeDLuvV0BPOspxBwnctgpAIC0rZ8g45cgGzI19dQEdMH8WXdOiXhm2XrdpVHJosqXYiCUL9RJ56gYkYBB5g==","shasum":"e832840595a92c433b4965fdfe40034f52aadf20","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.1.1.tgz","fileCount":59,"unpackedSize":142822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2gqRCRA9TVsSAnZWagAAG3kQAJ8zIU1mg3RT4iq9X0WU\nXQjlZ+HTydYZvGMmK8PMsSguHn7dVffR1VR0kQtNZCPIiNfTnIwg9GpnHag6\nrOnCG0k3zgZzZG5ObwdABBYaoU8C29TFWHRMp19RyXf9nTK7PyADcU4qVrkH\nJRQRza0VJBwbS8nmJPNSfMH6WmRtYG+bm/sc1LggfJjm//bZheU2aGqXkptw\nTHnnnB5e7JSTbamN2KerMUjGVDwznKMJ8YObLJlg9hHWG8CIvIewz+qNz7ZY\nrUuG5MS5ZOMMW8BO+icif3RhW6gVCjJhcENHln9i2KH/1kjrsMz/305rOwZ2\nyhnxfUCV+PFXCT5VNcgm2gM3YubYkXYToAFsC91wx4QtD2YN2oflPwFQ+qMM\nev9hPrQaiO8fBkvz2ZLdqEk5tWh1g00V4L8r/sjVztgF4pn98U7ryNz/kfpW\nrzn1SiSab4Mnfz44GWIn65qr0dAqZIJ+rYPUDvgHSxqg/pKcblU2Dw42DArB\nHDSLQsRPVbu59kKFLEq7wuRfs1di/xuqj44uT2HU4aBLGCJOLh9bOmsZOgGk\nSV9trGxP7jUtr8ZK8TgSPchr6gO/P5/Je8HgxlhYu8t95KXXSzJ8Awq7X3gn\nUWEvup9rGrTKgzdW+mRwLWjpLsf9TDwIGe73w24HVmc86AhAYdAg54oeBJJm\nZsif\r\n=9h2g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGCNpZ3gk+kEWGVKZufcZZopj25L3Y6X3JjJETScokPAiEAw+Tugwg5dXuFmOdBjvTAshhwP8KHikmHn/JdH1tNUg0="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.1.1_1524238991108_0.04927265506464118"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.1.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.1.2","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.23","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.0","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"13f89d51b83aa8b119d1bacb5cf1ed1a18396657","_id":"komondor@5.1.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-43irdjhczGv5/xA2ZAJzPUBPtH9C9ErFkbZsfMcxcP2WVMh57i2v2KJL1B0PbxP+EHrj5TMRLUtbbDxAWmo8LQ==","shasum":"503a6114c01e8105811e5b8916c21490155fe856","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.1.2.tgz","fileCount":59,"unpackedSize":141370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2ssbCRA9TVsSAnZWagAAvVkP/iR9wJUvc4TeXo7rzK2z\ngaf596DrQMMAYlzqeDyUD2f2qDZAP3vOF6lvlbQ3tgV71FIEVBJc6SLud8Yg\nzNrn+5KVTPrvbWbUIchpArv3ZN6oJiPls9ih85GC79Q0DeMeKG3rsx9PY8nl\nroV8qZW6bUI2S/TO7rKDrLCZc4FPVnficd+a5wpJMeCH3K99WVYX8S+Sh1V9\nAyWCSL5uFV6gSmgXneUOZ/obVWaG3nLzwlYu9eyZRsdtT7CBSQ4/l7vU4nFw\n48XI9S6UDeUPhKdCx90LzNVsmINPWE0IbOyTaQWIio4DQBu9dQugyuCHFH3D\nfn8ONMfPJXonvvGvAa7/j6xraipU5h2fFqy9pEqkQ7Ot7dRdYAw4xz+7wFlZ\n/yG/EvIg54HCiOYMpb0qGlZ93keZ+fYJOS8fi+c1frVoE5B1PqhklozFItxk\nIKZtPU42dD3Q1sYjN4/oG4XBaxziJw/GeNvio+37tpxwOAQGrfmhNON2fMv+\n15d6IXms61+z4WJJcXzGVmMEzz+GRCd3P/9pyzhLEkHdctGrkX1ruOuFTt4H\nYGDuJ5nul+qwEunGn+SFTagbNycPnw/IkCO42Vob5BQoDfr0qkKlIXeEn0tS\nEuCpbutscS6nr6koiqNQD/xbNeACSfJBB2IVeUEMTr+pqt/KbE3rmGSYhDqf\nsFWb\r\n=JvNf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEptg7igsFC9blqmzsVVkbLZDJGEdc+Q14YMoTI0o9AZAiBaaszwG7b64C+eEWJu/RqjDrHHLJPTCGNyGtz9JVySEA=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.1.2_1524288281348_0.24770559427047867"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.1.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.1.3","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"e0ab598dde58e083a0d370ba210fae1ef72cb4a6","_id":"komondor@5.1.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-P0Y0votKDBDUrxhQnZp8UmrwHoM5v5Uq5AZBRtyFpGEvEdIL91LVuCe33vZhQ5V2wucK2IVzxJn1S07qVm4Cmg==","shasum":"651293fde5932187d04c86d155272ae1f6637c02","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.1.3.tgz","fileCount":59,"unpackedSize":142167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2vifCRA9TVsSAnZWagAAApYP/ArFf2ewORs5+alkWvDU\noOUl8r2lp6zxvzI8S8LeA3R5hXUncVUuNQtf2zqQt5FmwkkTsded0kQN8Hv7\noiffC0Bx5AcmeBnydju/xbygu8j5lLPWBM20SroA51ejgwKf3tj8VLyz29uz\nT0XXW8UTSNui1v/1oVFhEeSKhKuK1jdcpe5YSDR9uq+qjmNbPToV4tk3BgKV\nivNrYjk9/eISBJAuUu62pm1GRWghzalJ0Wh9nK+YKSFuQTVjj2Ar7Fmg7y83\n0evQbz9ZaC8uH1wxjHKS1kTSqfuC124jPparSiXbGGbGZEQB3cYGDzt7Kmg5\n9diXVaLzVGnEj0eyIermMXpQL5Nfc5KiIayyHi0dfo9RkC08hJp2xX91qHM4\nKqzMEVjJetTPmFqfQMnKmT5GCJ2elJT0VpZlzGeD1Z8GDnDtoqBsFT5CQiEm\ny0zl41ocCg6G7Fp0g70nV/kziefi6MjFIiw7MYblwvSuiyfk2C9IAVj91zzL\nMnnfBHUJ/bD5F0uThIoh2gZUYwbHxHGKjhiAJX2jEJCaV2o8Bs7LBPBHDuoX\ngw8I+piWTkrEYLWsYGCzC18Ms8b3d4IiSrnzJJibIs9UFBPlq/R1+4Gn0Suo\nYoqZDJVu1WFM2W4E8t25jmfJtQjiOhcbX+smX0fOviXcK2t9D07+Yt4zigcz\nzf9l\r\n=BsJq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnLWoWofSjWvBJyNblRJ3YR1WhTkihnRB95IFoMbca0AIhAM8q4KTJ1MWAeLHogT93w64OkwZ7XKVxeyvpmEuiNbZd"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.1.3_1524299934188_0.4936768226890893"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"5.1.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"5.1.4","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","is-invalid-path":"^1.0.2","komondor-plugin":"^1.5.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"af2fce46e62d3bc05f5fe1e472ba7035625c06e6","_id":"komondor@5.1.4","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-Ttp3Awd0zMsteHb2CAPvJyE8nNvT4ct2mzoiXeKNYvqi/VYowmrAv5HzHSDysf7z/b+VGWHCmkeZH4uPIWHRqg==","shasum":"22a61d27d633da954a89c94c5936fda5dcd97c33","tarball":"https://registry.npmjs.org/komondor/-/komondor-5.1.4.tgz","fileCount":59,"unpackedSize":144152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa22m3CRA9TVsSAnZWagAAKNEP/0ReGnr4/ycfqAgWZVlW\nXP1/veQ1WFf5Jei1n89pwMEKphUb+/CDfQYEhaQGybHHk85DJV5YjNny7i5k\nVl6XV9yT1aao1bUiCLmidZpxSZzN+szMJkWF7bm+CL9Z2r/wMriiTLp0Yjon\nIQbZrgVV1q3yNDldlZnkSaWzIuZVnYOjfVJm6Ydizqrm/i+7oWlpYQRE9Dzg\nXKfHtAei5Uohbh0fsVAilDBukvbN62yNznubD+5yklGKqN0f9WODqqxaMWOV\n5ATU3MfAuEfhIbawmxz4woxshTgPFhlE6rsI7v8PMK9ihFAsOP2hexIf0GmC\nFNUq7JRx6T81G5f81SPX47jDmIyyMkxJMYTdzyxyOYhdunh4++kosGyikRLR\nR89pHpsHnH3Nzo21/yFtwdKMrwDciUYiE4jWIxIgBxPYkP//zcuoz9ib0JtM\n/UqZh1rc+3H/qGdqKZgQLZuopF2221o4iR9jgYK9JboImWF5kseL2Y5ANmky\nmL9DIO5SCqy8RcyqEnjOTYr6xaGmSiwCyGSjwyccoW37PMKnsaKa0WLElsc+\nm4xCLtB0M9D14STkZd4Md14J/eGftBd84eCQRibd4kRYwmtLJ6PbNk+TM4CK\nukfW3psHzoQdAFdg6cTY4fxcBgyohPIi2wxMZGr4zG5TEjUYeg0AO8N2b9s6\nHzur\r\n=AGOp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvJ+OTlV1H7Z2G+uKPk8Vy+q5/Crgj/Nb9QoWKtejCDQIgLa3sttLMVQXmGuY6ZIKck+zyX08UMnD0IaFpgvZIL6k="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_5.1.4_1524328885730_0.6873838050603409"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.0.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.0.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","is-invalid-path":"^1.0.2","komondor-plugin":"^1.7.0","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"51e005d8ec7fed1b4d6f27a046ef61ea13fc641d","_id":"komondor@6.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-PQKQowo+JlvIDBXnTb1CLoYD4YObfVUTchuhM1WhBq6MDfurnuGm5PGqD+OhJDvM1r+3QR+CwLOn6QWWGRTvBQ==","shasum":"09401730e731b3324cb8aaf6338568d9e52af43a","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.0.0.tgz","fileCount":59,"unpackedSize":154453,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3UotCRA9TVsSAnZWagAAOT0QAIrPpHKUR0/NJ08e+Gp8\nbwNKEwnDDUtyRTKWDIxCt11e+8lSRwdgJOt1lPDEnlYtySnm6b//VNJCGSA3\nH9N7HGwzZ8IsrX0Ovy8dgf2qz3SCGfCibBmYwx5lu/kRsOrRuD2/psrXFAVR\nOHKQZge9C1zQfv+S/91P5HIko7U0QBm0jmw+VUnuPU5z4f6dJ3kTS9DgWRKB\n9r481jGYztMj8B6shi3CIfsyDazbOgHJ3D7qCG6Hz+nPpkNBKQbLcbsZYxKC\ntfrXGJAK3Qf74g7QLHr6Wekf9/a1fl525XU0nsPeRVY4O0YYI0XbuqrgSGft\neZovzy2kRUNN6gfrgxA9d8mJbmSZrGk2QbRlxOO9qFjaelkH8x9dqlKKvmES\nRIxEADM+ue2MnVudJaxeqxbhbV8s2kObhPmcVPrgl2/QEVlpSOJtZFzPjyxW\npDY+K5SpxWA1MVQosGwb10d75tWJPnl1/aoqmzjweNB3LF+mRHtqlizOW89N\nrnszNsQYxcQ9o4UukeJO7qxHPAcM2XyN2c3VP1eb9dgrViNIc47DwRJzURZD\nm/hUYUKx6TM8WfJ4GzeM9q8ys/yjLRiZLri/pWg/vAtbzLpZgKl6iWHy6HuU\nK1nLZvk1S4ISMa4tbUqSZD1qREAeZ1FqUtov8EdKNqQvjriWeXUWxoiGNhXb\naOOa\r\n=EmgT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAU1AmTCsJrOamdupWaHty+FugPL/p9UjOtM0EY8FbYxAiADLSyca7Ygd0iLejD5j2CAfLogLDaBCk03+WxIVgExBQ=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.0.0_1524451883057_0.5150556987645971"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.0.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.0.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","is-invalid-path":"^1.0.2","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.4","unpartial":"^0.4.1"},"gitHead":"7e6226d130fa6b980317e71f270eca060a77d698","_id":"komondor@6.0.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-KO+PCb2na182csgC4vrnFQuu2Th4q9mpXhLAQkXcTxD71N/AOO7kZVr7X9HGOTXTuDGABNsH32qeXMbwl3+9zw==","shasum":"089a87bb588b44a3fac64bbe5a7f97e63657846f","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.0.1.tgz","fileCount":59,"unpackedSize":155793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3iluCRA9TVsSAnZWagAAFDoP/Ai1EIF9lYGnnH6z9LmP\ntx799J4uPQe3PfxBxm1lDqwj6Znynkd0qeec4Qe0gJe0/K/4fgwZEME62Ito\nk2tDKfSom2QhGrTkLPbS64uQ8yFo5rOFtOSQxxLTkYztdGlBD796pojbN1Ss\n34nkwryNG3C5oCIFcSt46W91kThhuyEwTsuFG+3Fr/828uLrtBcY3y0Hq6Zi\nwkwSMB9ljlHp0sB5f3N9a34gE2SQo3inabvy8Se1kxb4D8ylRzYic6Sjw0IU\nmW1SJoE6960yulhb577wrXXGLdWeknUPNl12Cf/ZWA3IRk5dDBuljGWeKmXn\nda7yzqR6TZ9bGnfVqKOaDRBRr1aPhgqEgU6Z3RbfzX3/VpamnXz/Gtf7cwuT\nY9arsb9Ois7yv+SFkltfvUTmDexs4FYoIxYwlY+9LCgjdrK5MWDf6NXKfEzY\n/H3gTeuh1xSloATB7ghLSYTcbxtqHX+liJtVhQhanuyEArMdivRHUNhbYtS6\nDU5wLi0hzsTK0XiuX2DDIO02ihjCj2tUA4WDYZyvVnXCuJEp5xk6chlZ1sYP\newPjoBtJyvXxPVwoucYw6fH6OgxsZ5SyFsDKWbSL427tHaKOkEhNjIKj3PSc\nhE9sOooRLiyarDfDc/OMulOZtuDrRp2sF8ZF+LsLos5PWLK7jf/bBcBd1x+d\ncDK8\r\n=T9NU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCM/4SNO6H/15N2win5JWcHMTQq40CNUUFeOEdwC5wUHwIgbfihpNJS8fIrpKEjCsNVb7dJxvAU7hRWNRwq4t1qhVE="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.0.1_1524509036566_0.3801647814409792"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.0.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.0.2","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"735a9a1c7d2c03d4b236032042ebfde996b2065a","_id":"komondor@6.0.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-3EmhY2FgzUOMwEDN0P14vkZQyLYSypAbaNM9MqRh35t5EiA4GDpd/u06mZ5FgJ30q/Yxg8GuzJ5bsVZ/q9Rw+g==","shasum":"a89aa0315e0678b390b829c5174c7dccd478efb4","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.0.2.tgz","fileCount":59,"unpackedSize":155538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3mwWCRA9TVsSAnZWagAAKxgQAJIkuJNJ5aahBC1C+rwR\n7FhzL/DawMZ1UWByrU7NaZ2QkPT+dey5JTOLLHnLkG0uAt0TY9G1qoCHAYlT\nLWvAbAK9Mqhc+p+LZ00O6PFxCYnGsuR8Ir5W9vD9zZlwzR9FQ1bX5h3sW99Y\n698H2moKQ3uTbgbmQhbaksQUJm524GOYPLYnLMq9/sL5pEnwDcsI+VKiVVqV\nOcBCALxiQe6hJrgGa4LhfFZlMIOzytTSTL6shkyJBhTGrSquJGBgqfi/0S1e\nnXMuErw76DHle+SlkRHgEttPbnAQ4Vd8nyKdmNtOt/f3zzSBMufKmPWWqMRe\nzd8vCvImRZwbXE97sYeykvOQOj22JleyTQdlnAX7zq8wt3cVlJiWjXx24TpR\n0f7H4BH8wHPwWZM8N5XbQaCcNlWTzX2AwHblquiPNgfcmJAnQd//dTuZAINZ\nEp5jT1Fhh/cSFZqBl6ORniB6K9QL17CbNewfTiH8S6UXle5+lMVAT7POZJIb\nglZdAohUKzyqA35PJHRc5xa37ihxzoF4Z4UI1IrNiNqXSxCYyNb+G2HiVyK/\nxLMzRepLo7VtMadDyF6J5FeN7pSPUdUyWJHkKr5h1HtxlEtzSJDT/NzOK87d\nXzAIP/llyhcdoHcm5XmQG1NGbpg51g3s2XmLn5b1rwEuq3NHtn/uYCdSV1Wc\n0KEp\r\n=DIQ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAbxUM7cFp0cS3yNCvfyojkWRItqpj1vlc6cMeBkukucAiEA+HtqkmcybdSUDd4xZiNSYUf4AgJ+xFEb/P/2XmzBlnY="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.0.2_1524526101335_0.06127676157245299"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.0.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.0.3","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"b677b27262e379763cf90dc0bc34c754d1d9d1a6","_id":"komondor@6.0.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-HWyn8mvDG43WtLVMUCkfQJ8RTmeTDTfrEFDciYP3oihlpsRHPikogDtTP9l9zJA6hBht7yS8Ms9U0GARZ06XJQ==","shasum":"c6219a30c14288fc2e67dd34216fb02ed6f0f4ce","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.0.3.tgz","fileCount":59,"unpackedSize":155637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4YO8CRA9TVsSAnZWagAAKiEP/2q7DGaYqlNZ3wxL2U+d\nzJW2/MNajV067HQdyg6KJk507jVsrb001tqeOQcHqlX1Lwcwo4yjHE95TRuf\n6AyfDBPDo3NQkjRANy7sfNCM8fiGnlmafi3A+V2cPPym86w9m33pZ8i9LqDW\noH3RM/mnJkzNTS0EB6RWjfim33QhzWF1SqviF+lJT0f/vW1kGM+hTyRkaRs9\njmk9tng9pOj2VIcwNXV8OZLd6HdtWS+U7p3+nv5HS+7HAdr9hESNjbGGJqAe\noPh738Ps1cawfJU6xMjhmad98fz6QIUA1hegI88okVjUIPgDEBiaVWiYtlD0\nk4rsEPOp+JIWbblZnIJjeFVW0ZhYrdnzs8VX6LF59T5a6olw6QTs25rtlL+V\n7Xs1XyenejGKvhw6FjfYBFFNbDzl+n6uAJLZedOUVPintzYZeKEmP8pUroy1\nO4rx3+7NFp9ZvNvRTAAudJAxMaHBGwx8ZjUwKEgdEQSIzuQ9pJGCuzpTz050\nC3R1BpsKI1H327C6vyuVV23WdkWfWEVEiIfLQ7sGUp+UGXI2jtFUtLiYsBgK\nW3BouHAk/a8Pwya5v4zCM7bjJenEvclPkCyLcvbZ6HNGXVlpQazPZFZalH9b\nDJUc/0n+b71BPPrSNLAI4iXwFRUlFEElFfGKdmnB/Q+LpHzAq546Gea3d1Go\ndEAh\r\n=CU/6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFGn6WSDtNXRSKp390sP6DjrLiqd1tlhwv0dUpUlqyk9AiA0Dw099O3+IMy8KEyPSyNN+OoH8wnGTxcPUzuvqhEtZA=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.0.3_1524728761797_0.4157183545678713"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.1.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.1.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"411eeab4dc7116e257de95a3c5b042db2e66375d","_id":"komondor@6.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-WxttUWf148HSOHnWDHhrxHh3aQUL15Bf6HiER3hScjxm8tU8WvvmZECKLB+7k65sdNxLcOuNBDhKl/R/pzp6fw==","shasum":"214db83d0a2a94d839204301ee1607a5c12c030c","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.1.0.tgz","fileCount":59,"unpackedSize":156250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4m8RCRA9TVsSAnZWagAAr7AP/1TfsjP9SNwgh0ZV6jFk\n9cbH21rp8QbAva0gWR0EEa9TIXMqUzu4v5UkaGh6fFYM8UWX5NA9GOyNpNYL\n4Y4P3gOal3zYi9pf67EFmZXOVMhoU1WjO/8vmbDHnCtCyMdYUF2B7HG87GY6\n0e9uzvNmIdRyrMcw9i1BP8pTCCu6+00EzoBO9USpWRuNW5k6r0ErFcyAF95c\n+jFCMnPx1XIzEFsjOjDCIAwDeIEqvsq3KddeyagL2ZuXzTV+wTqaBzUxCxTV\n8k7Ec8Nio3E5de0up4kZ14PyRlY33rqBPyFuv/Yh6Eghlkuwo4R6324sN+uo\nz+R76zf70rxRLR0VcCGftuo2cCykQlc8pii6OJ6/zJiuCp8q2z5AQ7olhlxF\nIzdjEo5YFijsgbeVXi1Aqyzz1072s2AluRi9RYQJ3gUvsLkHSY8BWeDUxRLY\nhVJhrlfa30EZ+ROocO2rbcsubulBtsW5kTD1xlEkne0mqlqMfsG+SjjmJPQO\nPO1LA1eTLtmmEy6goYUlq0d8Rnu/8eHQQdt+3H38VMgADfls5tT3Z15+ivXD\nUwpfvyqLn5XzV1srY4KxKMyIUHue5dD6dilIquqt/b3YDtaC/7JSN50V+xMY\nZWSUvt+EjEbOH74dQYBYuflHIj5Qq2MVLy0vcMA1mfrnbxnA2uxHwC0FdkWI\n5ZCj\r\n=MQN5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1DCV/7Qs2MAILC/2spFB9jyCzkoR3pS0IhBP33g3+AgIgTd8r0ZHThPwmPy+48HX76uMAlbhfshRIbuMSSqqwnYs="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.1.0_1524789007644_0.7625908924631832"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.2.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.2.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"0b862b7307e39f8699f7f8c5212a7a1c2d7e5f69","_id":"komondor@6.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-uBCuZw4aBVwDFfulyYU9n17+PPPToXQIz4h4Z1+BY51gXkQrc/GGWVUegzOb0hyqE7VbvJecd2oouAh2INnv+A==","shasum":"fe860ed48972b7ddfe896c1322d73edecff17528","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.2.0.tgz","fileCount":59,"unpackedSize":157051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa40dMCRA9TVsSAnZWagAAEAYP/jSXMoSvdGnJ219xPsXd\nQQVbyQ0Rj1ga+2q342+SAXkLDaFngWiFl7JTl5HFls84JkGMr74xMLIJnwkB\nWE/qS1VCdKahPByHO1AaqcEZq+ooM9MDoZsL6KEZ4AxxHw3QgWncPePdGfDZ\n/VabWKmHvKp9aCMimXN3Mqu6jCb2p1SFaima/0iBTFzHyk4eciwhcq7usZt7\nKro5lfVWfFLbxfiNCpJWHybShLNh4MgkLarjewLJkxFpXvbHbscorft/UTZo\n60sYmbQ7W4u/TKhRh6E5fOf51Ae53CFBq248aIAtzWOWncmPAeLzaCZb+nHB\nxeGf3dGq2/wNKElhvX2/yadjNZp4TYgvhVKwYf+hYeVJKJ10YA07PqHWSNIq\nAy8bAZFYnTYZoCLnqJraUWpRKQwwwzUDZunPOrDja6jamHrErZSO0SwgcObP\nGhvNpgqWUgZAmPpOYfildbzBZt5c/2AKOp8V8T3N9eF/Cq4Be+Px8W0Yknrg\nOAbYvWRRf66R4HlCghdJe8IvJvxBmc5ekuTGrotY5M2AFTvMtVetpTvn9+9d\nS9bNo0QR8Y0/XCRq21yKh0jCCFihZ2g3gf7vI275PcYhaYBOEzIWG0rXDqmP\nuw5+IqhxSyuG8zfPfx13G+sh45cJRyoYMmGZj9U+amgQgLMFwxP1eO9PowAW\nt+0k\r\n=ngbP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8v2AODQptpdtl8fEH7EBDxDlR/MgeW4nC4VfSLCy2twIhAJZ67kNpgIRnIINSSRmOFgAur6FT7SW9GTNDomo1GNRw"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.2.0_1524844363112_0.9369445702819783"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.3.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.3.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"33ae968fdd513f4d78aa2f521c48d316c2653a9d","_id":"komondor@6.3.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-OY4AaU8dn+zik9rXPB3RaJASu+4NUg5FoVsiRSUMn1A/7w/XJCZzUjPYTo66tJqVSr4J9ENffvKc9sNpypYPOw==","shasum":"716da2c3661cce08da313c56ab6899612ced0749","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.3.0.tgz","fileCount":59,"unpackedSize":159657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa40//CRA9TVsSAnZWagAAgA0P/i51AqmzcdfjAYSNWaSG\nfOSXQzhfF4uJ4EOti3GEkGqKM6ngvMsfXjs8N7jTE/oH8XyGc0useIy+IKFv\neWVn0ud7Z5wcdzp8Gd6QAuU/jQzXIT2JpMsce1heMOxVD0jx+3mQFiukSi2F\nNA+eG7GOt4U4g9nJMf4n8u6l9dTcxsR5uyOfUG1rQjC+FZ3i31C64ZhYFbK/\nHBlqfeovijt0mj+OObuCnrCZ7xHGnn5iX1J50e7FX2Q9Wwg0EHMzEkDk624k\n2ETQeAelGtEqmAfSLNOdum2BDo/k4hD95859cWcXPvND9P/sVo39PJamPFv5\nYtW2RgNSDJq0zTPTAT7witXRA2dvuNqq9yfU/v0y5wlCC9ymFUtJHHLqi8li\nhBe3wVA7UgrAgqgmkRssb/G70UfgBMoz3B0MZtNkkSx2EhcMigoLTsq5Bpfr\nSYBVUWP4NXCV2i4BsC55neECxs7CX4/CNUG15jR1vH7reBtwvyUkJKSrqEOJ\n7RQCtc1lbQBNb79INagDn356F4PIcbOfNueAtoB9Z6UTYTCaLm+FYEfZqazp\nZ/G+ICObZz6VNVV47R7DH9BGWn4V+1KuzEewiyF7u60wLEMQ42qzPtaCdc+p\nNQm8q0LHP57mZCWQBC/XnASCVJcN1z40/0UVezXdrx2hOYH9330e4HIEmwgg\nCZGN\r\n=tPpz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4bCKMaLE6GkDmlnS63IlRNfWPiZRJKIzR5wr/3rJFgwIgKdUBYpNRiJJfbYO4qr84N2gWrY5E6zH78yHBNI1IMLE="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.3.0_1524846590304_0.11327750605541032"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.3.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.3.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"fc57483a9a9eebcd6c9931680b6e4d755dce7d2a","_id":"komondor@6.3.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-v07CWbWBZJRFYOZ10AUEAsfT5YhMTo3N6FB7JrMIHHcxIJzRVynP3TOtbNUhrxKxdjE4Rud+8liwj58/DXNqlA==","shasum":"fc5b240e8f89db4de42bdee924a283ce321974bf","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.3.1.tgz","fileCount":59,"unpackedSize":159675,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6R7wCRA9TVsSAnZWagAAfHUP/2XKKDYOCMvFIg+zxOQh\nfUPGIJMuTjyet4RyOg9NJ6Lkdaup88yPxAOl6JHjfkqycXBg9tQu2lWdArom\nh3sdnqneohA3aY4PbDgTSdC0msguJwWZh5hq18++vVEVCZ8aI9c7aMTHY+c4\n4gk103s7fs5JtXeQkCIRHebDlZpw3a/4TzuXquWm67Lp55ExQKXmUcZElG0k\nm7aWKjPON3e/b54gvTks8PCLyHGvrKuHgKASpi7oXes7eJfKll7hT2+aeVz2\nelLGJYFHxjyl+ys5pwmflERMiZvcTU+qCss1mHM7pTnGK7N2AW1M0EK1+0TM\nD/Wskq1QdcHnCZqs3D0tCgatd0jzxxATIwPMeH55ZxM/Q2q8VUgQ5t7e1lB6\nkM21l1MRhZj7VQ+9GeupfGPDFjzb0k8z508lw7wxGE5+Xaq/7Q4fvGXOtV5W\nHBueArl5vyqNJ+eqBH4bFp3EYO0a5qJZkG6ulk8YmbOszKA9fezbP2hBpQIl\nKOTt3nThQgIYn/dnwQvU9PcAx/VVmjed+6Vu7g6Bsf30I2jcHJTPmL3Zmv/9\n4txZyEXu5eQ89MjbSvNDcIXEWbLSWYIxWyjeEkW271Df9SvQjCZE/S2p+LZg\nUTwUK86MQ1gs4HlPt/JrW9HTsL+y9iz8eW4xOSOfwRsPYhjZjTVj1D6ufEBB\nP5Q7\r\n=vpG2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAAw4x67CSDKJ+cNoZaqNqZVD3WINp4XSeozZ2GIff8gIhAKrF5S2P+bTyobK+RkySF93Ghs/sJsYZWOB4SSJoZtY8"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.3.1_1525227246148_0.5236645723307958"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.4.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.4.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"3506a92e97153386c5aab191aae59f2910cea393","_id":"komondor@6.4.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-iUN4t/LrCiK5IU/ayhhTdMMjvry8lrs7IzEaBwnPl7ccSA6pWB1LL3vqJJCEWgnD5I0QVnloPfk4zZwGmkacGg==","shasum":"5d2a5bce7e8d4f3e5a9c278c88ab045e156c0065","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.4.0.tgz","fileCount":63,"unpackedSize":165881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6t2KCRA9TVsSAnZWagAAgF4QAJutgtDxe15c50caOAPS\n9UxTUhtO++TxXQF6yQ7Z2C1dbz2ggNamD9OY5nFntDXl/4Fs0KZV3YXO+PRp\nSzm7SUll/zF6LjVkB5568qwYcTHYRwP/qdTxIJ2fECCGniGTp8oWS+3hVLnM\nta5OAjch/Dm7W+fzHTUlJHF1XTJs7Z2Nunrwo/qHvxoO94rrhs6CfR5MdK7S\nI7Cx3B2fIpTjSf5lFwESiZf8KwJLzhbacztdQMZnVhXB78xs79AZd4vA/m7W\njo2nKLc8YgsfZWR2ZsZQzn13OqH5gc/xW4adg+dho5NEpI+SLA21ZiYnSXyc\nymqwX726zb5NdGyvai47kvveicV2jD4fbpxBV3KhTRR2ovZEiidp8mnORSW+\nDg3MgvB6WP2va+PTV+xvMQsacFKe/9fAhYBNLLSLtiy1DJUAYXCNbqA3BhqA\npcdw19OZUJ+7KWrpX4gaAU4O3luw7BST7PyjWe4ZkLFsiRvk6ut3bHKEEfWZ\nAA1ZIYm9qQaZBiOXppOe2PcG4Bv3odv43At4aYsj/QJA2k5qvmgUWKubpwv5\nIzpwAbJzpyLQ7K4uueGvuXRHmmNL8SW72c9j61H5kQN1ttLU4zOGPDudPsmN\nCwaLnLHM2wA0qcDlHtsuwbw1g88eQAaPLadDysUVqRiI8Dr3YocCMe6fDF+C\nUah6\r\n=A3iL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDw0Wud2IjE2V8bJLo/pgNrpO4ZfpoHOLuR53gQDbm2nAiBuWhboHpa1eM40NYASlyYkyXpm7Yu7YM+mZioi9DdG+g=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.4.0_1525341576269_0.3177083598143289"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.4.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.4.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"b925b832d74e164be6ee373e8fe1db99269ad986","_id":"komondor@6.4.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-jDQepCMEuMSRQRGBxoUkHNE1R1p88rpTQB+6rU7QyQpeq0DYRkPoTGF9cOCdYG2yTrxluElZJqvyCxj50WQrQw==","shasum":"0a90b9eb4b0b0b7cc5f92aff310952b70667c9a2","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.4.1.tgz","fileCount":63,"unpackedSize":166821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7UYrCRA9TVsSAnZWagAAlSAP/0jdZD+dpzZxYFiEXWzE\ncbS6UgZ+hiMMNz01GCnqUvyWN0feBsRkctMHpnBAZn9b5LFfb4Bhf7jNcLUZ\ntjkW9mqoya9I31r0NMMTeOWp4l9Dimmxbb7VDRj4zDB9ohVBDGFxeeH/KJGx\n2VWmIhAtBSIESDl+m6sxX1Pp0L3fpYvSzRRId5vdLyjaEz1+59MVuQaTzgZz\nXM+4S46bw2U1dx4aDL006KGO0KEx5RR9aOIHks2E19c+J0x/AD2OLCyGnfIe\nCWIET/r3ru4CrPSiNvR3YPSLf5SdCLT465qYeIhe9k94wtit8TPRTgQnV8ac\nZX2JsgIDLmlmn7XhVcY5Afb88RZWcJo85bx9d2+EgavADVkDxc+EnghGrIXa\nz0DlpBsyWX08QirUK4ptnENZ0I0tzFZ7NgdTyXhJmoexBggNNstpeK+B8PXX\n7VXVxX7eXrTaxafQtGr1RIwI6d5u70JW4hKXjNmxucR/qMeTi9YzJauPC9Dq\nvW70USY5iR83YJjUNoBqy42YR+CaM9mqKGBEraYKAmvvyLG4P81YVSwkgmyW\nuMos9rGWxeNNBE294bqcUyY5G1OoI/OgWFNO6qPqxQVvZJQpwEZQl98zePe0\nHd39G7GJ9Nr+4IfI5J6iXyUG1gh8tyjQj4Q5V04fwhqgd9QTW4MMjAL7nWo2\nzDxK\r\n=nVlB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6aAY5B3B6ie6/fva3dTW5v3eebOd1pFU6hNfekZld4wIhAIMpsscRAu4vzhTx1MPAx9hytYn8emQ1Po+yrATBtoxc"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.4.1_1525499433701_0.2913670773753265"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.4.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.4.2","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"a0ef2854fefa41b89e245f65ad3fde3dea40a4ff","_id":"komondor@6.4.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-dLQY7iOX5rVFhxTzaIwhvfpZd9I151FzaLbuewp3HwHDzu+DNrh24CMnGHhLZ9fzCLwM/LCVSAC6N7q6dUWk0g==","shasum":"95e967643618131270288dccc646bda187f42c2f","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.4.2.tgz","fileCount":63,"unpackedSize":167241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7WrLCRA9TVsSAnZWagAAui4QAINgvVnKcf9AkR8oeKLS\nSvuZ7B3e7Jtdrx3kTPzt3xeOoliDIQBqTZT59jaMUrsQagPFLKr0mCaXelfN\nxnDnZnhrYV70+VxFoutULGAUOAeeH8PbozH/UnznIvLO+9qRLAhHSwkd2A/8\no9deX0lvZPfhpoNIAuurwxudJjKg0lFVW65JIVH5SRj+o2rChBDOnZAq+Ruc\nGgeizQuBj6hapCUU0ltquDozmEvcZlvUIxhvgSstAhtaqQJG81tTejuN/tSA\nVnZ+VGQ9DFLt0Ty0gIXG47twI1CiKwItRPvbUpdv+yyzqRZsOUxRBC4JhkQc\naKGJC0hECDUkX1y36T9Jt/NGJoWjpGC7YyXeGZTbhJDpujw9rEQJQEDYUmSp\nnJ9UjMjQKIkxhmxCcoqoFU79jsoKjnG8w19ecOM6PZm8pUDIhbHX62WGME0a\nDY8XVYmPGZ8XpZY+xxhAIdkl3oq6bnhO/K0vCP6wHmMWzB4eLKxU2qEGee2H\nAfLJ4wGSEt4Hg7dFl/yLxIpEkWFhlceuv2maM2WW076qTg7NltLlGZkyQne9\nofKmF4hAJ3ym5WQU6avNyv0PVhS0pSYsRpSLH2z4BbQzQFv8kI1YqpkVSqby\naNbxSpvHD7ZIXpbMUu7Qtj3h9bUlRGN+C54ZZR17L1nDxbE+j4UUumA91M8y\nxp8w\r\n=Eg83\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHHnxOslBreJeCBZA3d75ChwFiJnZIqzb316+sTx4DkPAiEA2+ijaD0wSHAoGnfttmOiXjoRnzZZifTBB2sYUvBvDCA="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.4.2_1525508809325_0.1294290633124029"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.4.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.4.3","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"8265b0caa5e3192e4b885cfc1e82ff0210fa2124","_id":"komondor@6.4.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-rj5xWnsJ/KythV+HrvFeFNg5kLgCNkekdXZu/uujQXh41JZ5yXoxpvLM9nTav8Uv7oSlJqyIo+SCMRLf606xkw==","shasum":"181183714bac1bf02e92ee5bb3ad321a18717686","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.4.3.tgz","fileCount":63,"unpackedSize":167255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7W81CRA9TVsSAnZWagAAM3kP/j4qztN/TdQxgj3mOICM\npESLoZtFg9/F/9wDpTyMmC6IfEa/JLBErttp3NVUXhILBuXZt8clf/08+obg\nnKfu+f0tTo1SYZqOudebLZefSiYjDEbA7Llrm1UkHFTADFJI3+mQb4kHd8q+\nGqB0Qny1r5XUd8a+Vm/JbqzGW4V5Om1+DDerO3ZHLbWnGsoMhOH8T4vFXwTh\n6fyWcHCPZMON+7ZXDsmdWEpYWHvM+5i4cnFghc6wtvifAqvxgS3qWbDz4brK\ndDijCGxogKAjsEJgO001ThNm9q4Uk2qgrF+2IkeYsYhRliMtKrbyV4vKJJa+\n5djfaGs32XpQtVe2ZUSKV36nQM7hRU8BvitS76zcle+5WkReLfZyVy7e2hvh\nzJIs0x7sFGNjNwIHGqj7736Dlp7Cfs4pbpzorvTkqQ2jU8E5S5lsu+1NW5ml\nuPKH8e+caMpf83RIjn4SaaHummILz2gNsP/Q2fHLthWyT92va/PShobO0PtN\nExqCsNeX6rO7Mtay9vDqT70GzEn4Fhdfd7p2SpZ91Y9dKIwgUOCKlyZhOivc\nhWzH2lpayy59lNXKzqlJt0zO35j8ebRkK4uCS8WPH4ZxhNKFgwWWV61teVox\nctRhEtM6mN7SflohSoEkKEJ7lMfluLsBEz+KnMg9nqa9Dtyu57gsZuo9yBj2\nKI4B\r\n=7CeL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD71X7xcZbvdxnI8mUEsxB+YiKL4lTaX7/a9jvrK2V8GQIgLySbrGfioLnjzwAO3e9BSD9r4YNNezoO8WqgyN8GyTc="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.4.3_1525509938992_0.5444282504384548"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.4.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.4.4","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.6","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.1.7","ts-jest":"^22.4.4","tslint":"^5.9.1","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.0","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.2","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"a922e774ef2a3d7f29386b3ed6b5062c8191236c","_id":"komondor@6.4.4","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-GPDJb67mxdW7dPCE4gznUb5ApXXeNon+QRH2bmfx6yE4F7Vqt/DlEJT2hnN4B3G1L0lrw9K+okfySaGNtmc4CA==","shasum":"b1fd4b0a9792de7b0d31e963b286b46c65cfc371","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.4.4.tgz","fileCount":63,"unpackedSize":167425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7dx0CRA9TVsSAnZWagAA6wUP+gMIXQVmONgrYaCfyWWQ\ntMU0hrI9kFSkAuXwJ5URsveGWwVLL7rzhlcYW19BbTh4tntvnSr/4qh8ErX2\noGmJ/aEv+8+bTRm47oEW7NW3dYQHuQk/wGUZo+D97tsReTaWZOLoaVkHOuwj\nA26BHJ9Sa5AR0/0s9SjnytGs2ck8pC/EGQOZUTNmrKyEHYWTKKGT3mxgMTWP\nTUB8mSD829kl6MJLLdsW+VOX4CczRIZgn8gfTCUbbo2m66t4QG832zvWi2Fx\nVmyTiNNCjF69CRm4PUTV6s9rnimrOh0mJwQ4Z9hetgCWggVNvG67j2iuJMDD\nv5KEZObJPLschN4doOqUfOT7MwnPY3GpCEaFbEZSE/cKXRi0ujKwXlLGfcw+\nkbCF/Dx8iNglnyXi+DOhM4NlKuqoO6p/HX3EvC8PTxKG2DosCJoZPuTD9heo\n/u8HYyKljDdB2sRJmY4SZIFoLgRJ7vjR59GjNEBpn3ykiafdVbM4l8fF+8t7\nCF5A21RRHOOmq4Z57Sc1uGNDDipUP5cHaDpVeMXSKzhIalX/H7STjYcPdg+6\nnDd3y0oDLFwpcCIo49JSyn6IfEFlUAEwrwwn8oOgdLEn68ZrMrhbO0PoTwcV\nKjXP27RxIHikouKt4SOnRCZgJ4pB7VdZOO1ojj26TDASBzxdffJCtP1J/CSR\nVta1\r\n=Gk1Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBtopb/OIQYhY5PnXZDNNfNp0xk2VCWhsng8BxgSCzePAiEA2FDUjunksa4Sbhz6kckqaZFyWEAj3OXFAjp6y3wygek="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.4.4_1525537906641_0.43054691820698054"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.4.5":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.4.5","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^4.3.1","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"bedc7b8114750a1f126fb6a262342684438d8cb9","_id":"komondor@6.4.5","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-+DiLtetqyK4PaYHz6kgtxlF814gx1zXDa+6ZIvFOgAAaFCgtd2ADJvOF6oARHYoiW66xoApR95lH28nrg+Bpvw==","shasum":"d9d2a504d8ae038087322bc5c8272cfa686bc1c2","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.4.5.tgz","fileCount":65,"unpackedSize":172745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa720ICRA9TVsSAnZWagAAE4IQAInaI01iKs/v+ZlVcnG4\nX43cMD1AG4d1gP+TlU4GFs4ywPHhpm0tdRBg/KgR9v2GqhqS65kEmN7MFcml\nJc1T62YL3g+nt0SIYK0Y3XhxWFYGxy9uFRWngQ4gL4MYKvgHHyMB6olEtupV\nT+UlKMKSqBPlNZn2iyynt7XorEw2S3imIj7NrElYMM6nwoJu8fMWHnXEa64K\nb/2t2iBFp1t2m7lKlJEkmfWNmk1smW+GDRIXh2Q6YtDf6yDuoN36agsI6xLi\nq+BOM+tGEGd6shdpArYxiAbbM+YxDwBJ4tk6OcT/ozxoZQsi/o4/LLMLK97c\nk68MB9f5o5Q92fJo5ZQUUHV3XQcs+EYqBTIMzkW1bK6n+eugQLqZQpxAcN2H\nWl08owsMl+bYF1PL7n4A5V3Hs8o8N6FKhT+3Dus7QWSi6WWVTbpxHBZ9TJNu\n9+Wct5A75rSvdVnYYW+WwqKgyZ5HjhDHgnJzm7s27ojhoFTfwaKSzEWlj0ar\noM89FjxBqB/V/L+plRU1Y0Qw7AAav3alw5SW7WWQDqS4B5lJNewMo/4t4BCq\nm6KX8Hf6OoFdd9EpaiSTuVAE4LhyalGlH2wEEKIPSig0q+nLVgij7D413glS\nVzKHNMx4uqQTOo3LesNva+LssamQJ3NOQjly77BlrsU+d9FvYeT/P0jFebwU\n5IZ6\r\n=6Ey7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD39WlglvnCNq1HO2rIudtyaHb9X+Cydu6NpHEkDxY4IAIgLUYuWo5mAhytn6O5Y2ISiFabqTFA76m/eZg7ttVhhjw="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.4.5_1525640454236_0.3810396547643653"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.5.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.5.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"4418cab3ee5e18b6f26b57ee2fdeb67a6a9477f7","_id":"komondor@6.5.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-sNxjTsJC7el05K4PZemlxO6zGGOlfrFM2ZmJIQV5N60BExUsxZmDTQ4RPiICPX3EtiSeXDtBsIz3Y7rwMxU2iQ==","shasum":"e2b3ffe79e47dedd26437cce412ed454eb4eba51","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.5.0.tgz","fileCount":67,"unpackedSize":190768,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8U5lCRA9TVsSAnZWagAAW68P/12Z3vHO6BzQ1NiIqdrw\nxIOhdEaNdHu9Ae7KWIK9CXQ0/vbyftfT3UXcN2AiW/7gYR3mf+6oIR0iOpDJ\nKacguIoHvJOmJJz0oJLfaYfK3Rn41pR4fYVey5l85q2CMAFeqPTafP24T4CP\nt3QrWP4o7xZXchVxXWE0hI1AoUQQ3KhZ+gwGu760hzzncksHPOeI2ax0nOUh\nYz2uGCNAht4F80KTVtkbeU5k0Om6FqeFFQq1p+7g1avtbg51WTCNbD+R+JAo\nitAhJmGO1OcjkoDXaXlWixRBfBwjVny3XW8lbNt7HVJD6kry9EXvTskzkiWu\npEXsz5afEnUlckHJXR8fWB521XFDyHxFTTah/FcqUSj7JfbqaST8HahgRpZi\nJFFp5V314UdJko9TR5UPEmBQVP0+QPvNl3U1u6O4ZulzWzdOJCvGOwp4FCKP\nRZrOdFxNksqLaAAf4f/Eew117zCLcccKNYoCyopoyHrB/BtQI3MxYzC0kkLW\nt6Ij/BGN26OS5rQccXSBiCX4QAcm/ksZvjuJ6U41qj9kq8RY4F0+Cn05cS5x\nqJ/wJXQI+fI3IGreTiYgBuzfji2ri7+mCjFAUUsSsQEhMPfJ0WAWqNe2yrCU\nvjXc9isr8SAmn0CHvWHWmQOlo6IHEiMQivw8mBvEwWCMlGcPO6cP7pX3dsgp\nJEjl\r\n=cHvu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFmUeOEK5CVvgHpPQPYP/x1xaOAvBo3nEaIuUDiiQuJTAiEAgXQ5oX5rGwaBTvy/mum6ZqkjD6+yQ+EmdmMl+NhPfEY="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.5.0_1525763684333_0.7284934057382284"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.5.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.5.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"3c58a11faaa8cb249252e24a1a642a4225d9b504","_id":"komondor@6.5.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-zEPiS/WCH5NbZOBVbOWD6IgR9t9vSh3MVx1kGLXtQ1nRbv8tltO2SqOnSBjoVXv7te02WarXVFakSoqpO+nUAw==","shasum":"c8efdcf4fec3861589563b80975ee7697d419fcd","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.5.1.tgz","fileCount":67,"unpackedSize":191104,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8VivCRA9TVsSAnZWagAA9uYP/35nLUdGIdo3XBpwk6Yv\njk/SlDDny5Y2ASGIc+8lSKAdU22ts80kZXZVlt5u6o9pa/vRy6M8IRJTWHn2\nFjDJUUU+JH79QePgG60Ew1OK2wR+jNQXr48rGgSymjDBX9AbskMjvLgJJ04G\nSFGV0Qzc8arVRQGDLkj1AgjcSxpQKoKAvq79V7zLVAzueNmAwoDIxh/38xsu\nUShpKdURBdX/Y88qLO8YTFZEliLXEL1KR72PwzZGFacXVCBokA+qVubw0SMk\nwakNj8uNtSXXS3XYHX8qaIZHL8oycwkO5EfcLsdhgpKO6Iv5XPwrxrFvCTn6\nkogqb9qFNADOrUH/GF2M/4apLXHOGYEcTLo+MM0+CIwZUv+zrpknWLIvPNam\no6hHq5jLo9xPPwKwC6KQo4z1Q2yrMEKEubgdCTlzvv2g2BpDxYyHCQDL8gYt\ncwmygu880xj82OKcvNkVC0EXqlvBV5tzP22g7zaEfsMKr888AqfdtL8hbb2x\nK3ej7TKzPxyJFpyE+hPkbtWukYSqA6uz3sb/B2oXEmHi9Z27FxrufPHUJzfr\nKKZoCAPZ7HaxX214C6/kCovTt61GLRW6xWQiqioz/dgAjPSDiwiFfhNmSmuB\nosZOGS9aaCJXZmmm7UQwVPvPUbIEyaPAaA3gHNKA6i0kGAhLpuUFm9Iqmi7k\nnHXV\r\n=d+Hk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTymgmEiSPEHAhEgkdjfv7nDgu+txJzs+eu5NwV0RXzgIgSqCkpoROu9VAz75Yu/j1DLiT9xikhNEzPwpPgqw+P54="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.5.1_1525766318318_0.010916123168653424"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.6.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.6.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"200ab41b4c879bc64dacb1741bed6841ca9c99a1","_id":"komondor@6.6.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-8okcNDR4jI127hTTAbRDnMEYZ17591kV5UBp+hGNNfU4vtwIbtYnkKfzq0xSbDZUjnlsDcdI+Z7V3FBIwaR2dw==","shasum":"204c0777d9964b396610688ea58bd58152cf51dd","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.6.0.tgz","fileCount":67,"unpackedSize":191588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8hWqCRA9TVsSAnZWagAACYoP/iYRrPnRJRKp7+hppLln\nMb/b+IzMj81JwwJD+scdEfCmgOu72x/v8oIa+xyUd6jZSrCf0Vkl59IZ86IK\nlL6BKKGBqPIc0Ia7I6C7qas2mlm6j25BUJ4qlfeKXaGGakBzdL1RwrRM5CtZ\noYRJaa0X4/JIUDA+Qsgmo7exH6/WHQFnwygxskcqyCNZVO0yL4Zo//GMSSou\nFp3hLBiWAogoI4RAU0BcpVqg7WbzSp4WfZ/HUX62MnmyS7L6WQI9GTh6LEYY\nBLwJPCaX05hHTk40c/bKdu5wlvdsAoLu/BjNZL/Z0wGFl6Tz6v4p+Eh0KPbq\nrb0K+esvkIzxhm9N/2BNPZvQ4sZdtSjQAqiwSIu201gc5l2VirbKaWla66jO\nLCX77oUw0DcOzx1YGldd8ei9R/hcubAvLd/CeD8vIEIlfJkSqUS0OM5iXUCj\nUXJWweQQINEeXS2aJeCLP5OktcHZjx8mPvAwkK4EV2rVTcKIydzurHQQWs3T\nBIj1uOAY9jvJl8Vx2tjlgdS7GGJJiUAr0dNT5lnv5GZfk6fll35uPh3HOzln\nGnHKsd3/mtP79HxKQr7XLBvp+u7/VFLsHnfE19uQeKGcTRwBCCRw4cWw1qXB\nf5YVtS0jh9b7wqPjeZFR9xGuVum/p1UXT9/3ySRYnmUjFJvfdfUK7tAT/zVo\na1sR\r\n=xBFC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDa6+ct/cTbIauTuSt8vVl46AnS3Q0G8mLV5I4RmpxGWAiAJkkhsWyFNYbF+Zt4X1gw+uuW+V4wjnkIgIUXTO8UoKg=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.6.0_1525814697067_0.5117210548961233"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"0e6b34d9d7afe6e3ad8b5d37ad3022f9a9201251","_id":"komondor@6.7.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-KthWAA3Hx27PEm1LPONdwg7ULSya8GRo1vtpFj+9a5tdF4B6I3LjPGZ/TILlAr+Y69SPGcqWgqP526oykz0T+w==","shasum":"5efa28409fe18f1d971df7e649f6646eacafe9ba","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.0.tgz","fileCount":67,"unpackedSize":192019,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8jESCRA9TVsSAnZWagAACOUQAIePh/AKSN3SsOtJmKJA\nA3ZfTkDnE/FGBxSP4MsU/yFAv32tjbnaEP6ql742O1lI95APE2uMVwork0NY\nMb31cBS6sNH/nQri3HGSUGc4x5Z/kZOYS2COlaCoNm7zuMdZBYsZj6yYMhuu\ndoQvqBcu0wLFijhcU6fe3T+bVMJddsDi3nePAkpFbXvxyLKCJw6xSApN/EMZ\nhOdkxU8LwnP/6R72B33LqG8/vHHAsoRRi5EI6yqMaR++dDvrxL7SM07Wugc0\nlQkXrvxSQSsI0efsJWEOP4yZIyDRVsBPqJkQC2oxz7d8h/h99QbbxIQbndUg\nDgMGOeujtMMd7Ghg82u4idoDtvSa3Hp0dTWxOerEiVSW3PWpgjh94ewieAHK\nx9OQcSJdX33Vm42COFeRec7LkxxuWPSGYtXnuLqsUHH1JhV1dlaF2CcpWRYs\n3/gzA0pH79KY6dZ0odDQFeL7pZTA+Wg0uHoT9JIvqEzkAwXHk1e10n8LqzEj\nPa9oT/P79vmuFM6gNbRpHAxI09t4Aw/6g1JXvBVno4MXLbnJdVTwOfpOKSK9\n1iaxzjgAoyKLUT/oAKHvBhS8oR0i5qJSJDDvrR0yVBU7Fn/cMyLUB26IeN+t\nxHfuw2Wi/UltmfuhWMhpfyNGD5/mdQLaL9ytNfx1DGaj39+om2xtr7LKfXkX\nUT1o\r\n=aA1X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBn9A6jVFeszxyr85rYF577VUN3O89wq26AH1iloR3F0AiEAvpCMF6xQqRgTl/YBT4wYa3dHZY5YaRMKTABS+eZCNwM="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.0_1525821711025_0.7424074643571863"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"b431fee8c667583f7f2bc66d0ea3537aeea5055e","_id":"komondor@6.7.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-ZWcGJSlmFbRNDzWsXCuEeLfzh9JT0TCbEELP9mgpT3u9YF9IhTfe+x0npiVcL/hHJKbWzVJgr+BS0IMndopRgA==","shasum":"0c6adea6994005d6967bc2689f9e17d516db77ad","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.1.tgz","fileCount":67,"unpackedSize":191502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8jkKCRA9TVsSAnZWagAAXt4P+gO+L0umyKkJvF0qKYAR\n+MmRvr0cH0hSPQmB7ld295SRcb4dhc4zCIEFbUOEUgowjKFkt5cIwws0RGGM\nBrixGmtBjfoSYRVel0WSAAca8LybJj51/py3xRj8I9VHvKiTbRIPYydmT2Pw\nKBNLPmkkUWjTeCtBWK+qWH8dO5dHCMrjJh3H8hdM3hNtTmbMY+XI0WAV+dn1\nCA9/dBp5ow8uRECyc7qmZ0fuV0+GdLSjuSwI+VXZGvovqrx1kIkDvq+l4wMs\n44vjjh2YwqUX+UixztfZS7dQ6t6QS2SkqEWdn1tkPWYNB/0w6BterWRc4n9h\nb8NYRFfJKyEYeM/VsTIr4lnqMuQs8dM0caQyOv4bBz/y1+9uoouZmg1INPE+\nILt3DqW8IXkSqLg2t4wNnx9ZQ//l1/RH+Yy25Oh6ZDYYpgEvMutiLEW6u6sU\nl996TQkFZO/xo68q7p6M30jfjjjsNjbdQyac1iwOb47chJrDk2TPu/DST46B\nAcFBcM6h+wllrzRr8mZL3bs3IGt03K5GEmS8/8XEJP/PK0b9SlQSfiS6dSS+\n75yptqvW17NSPhvfbV3Le8w+3m2U8gO6BymQjtNvGV4N+8rMLsGDorF0+pxn\ns0dY4go+dOFFyR75BSsDk1NksLAJekDFl7gVcPcnSgEZqAZRewVQTacVgdBn\nOnZ8\r\n=UCzy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAN+fWBO2grbJ/gCzoCwRvG57IGsmK/1YxwaK15R4K+iAiEAhDcTbpBKo0Adj/d47ZnjeHc+wXvEi4WuRehVgD238d8="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.1_1525823752391_0.3125748560911261"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.2","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"faaf8bda61d3d25150922c015ce33ad53234b6af","_id":"komondor@6.7.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-hCUl/fjU3rUL/8QiYwLYIFryn1HR+8vxoKcfEBeKlaqvxdAARNlVwE5t18wZJ0ccLSpHZRjDymU/OraM2uIx1g==","shasum":"dd608c20bc2bdc589ab0bfacd298ad9cd9f69c2b","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.2.tgz","fileCount":67,"unpackedSize":193090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8mEgCRA9TVsSAnZWagAAM3sP/R8ZmAwscdQlHFWxcykz\nUL6sAr7uWxwilOOehz7zJCf3jY14+ONWCwHr4vzupwKNNV+haWOwN4JXZUkM\nJteuL02us+VL8auX4/eQW8jfQ44JheIEpjqdX4QSCzIGB/sraSs9LUstQWWC\nG4T+iJV1oNPoxnKfInQbuLfQhg1/YlkhsWutZG0P1dGzUvpbOwpfpgm7sNZB\nag8bie+bZjeVd1lMQqQQ5AXqHMZyaQWk8Ojd2TgTnCognPoLLt8CBtJtrzmx\nDcyg0DhuC520x0lNwRbLdBCFRXeMmTGDgigN8qZRaAjlFwINGwtDkpEWaBVV\ngeRsFypCyV0sqjeYM2O8Cw3io/a9lw0kbT9W53CwF5cbPIR7WNVsjR+6eQm3\nB8Yn1DSPNiFP2SLq0Q/FyXawX59n0R8UcL1pS84GV976aXWxVlVZKDPPgPT5\nCIST8rMEbnT32MQkqhpMa9n8igBpsPI6HeCeTlfWaICV1ufzL1tMHG96TJ44\nqDdD5o+KRkZ6QSZEw4ZCcA53WP24xeXp4XTbgi7IZiXVy9kgtoiq+ka05P3J\n4frFFx51eZU2OsdYeLgMZf8jHkuy+laxHu9HglJZI4Yi5t1qH1qSMRPDI1AL\ngd3VdRa4kKRkRvzG0XGk3LMkys7P9XgpBCe3aT50XKRSRonkSln1MrOiac2C\nKThv\r\n=kUGL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRHs7opLOFR25ZX/YgSbT7T9YfTYDx1bkSHJ1n4ZpTsAIgISJLfDrOqQdCHQO5NFDe9J3py3JeZh5Hzd/KhrAnZgA="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.2_1525834014704_0.4178548253459913"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.3","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","node-fetch":"^2.1.2","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"6b39b7d42c8bb451eed9e3ae5890152ffa055503","_id":"komondor@6.7.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-VtOWaXEdfoxl0UrH+1Fpeqo133v4nSx8lOx+hhgkq0MjEw7wrVnE7Zq+x4qW4wO38wJno3bnJFffhfu1NkEzjQ==","shasum":"738fd84dc983b323e483b2cf76196e33ae90af3e","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.3.tgz","fileCount":67,"unpackedSize":190312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8qxpCRA9TVsSAnZWagAApEsQAKTtqc/97KmXQrYG3LaY\nBJEWPvtkHLrJAgLxzBjis6+eReoTziLV4S3SuKXxmxK3nNvcPpHT/nC5qXy6\n3Ilzgi4ZsOLH2hYRWpTN+snSIcP/2CLtj83QL07hajBxZnx+h/4WcqYMYztG\nh21YbcK92O5Dy0CC6hzVaKwtcDGb6Hk5ZB2HMn5UGegpOKfRzS5+zPGTJcDa\nimKw0uZcIzN/v90aCnmPWbLQszkOlb8WM00CsCdR0iCuj8Nv5fALAq1tUC+m\nfWtQBjtX6Ai99kRGufWSQpgZo7QZx3ocKcNp9j6vMamDUCOeZF3xcdaJguIx\ngGVUw9gjEI9SMY0XEoJtSMezjaDOaho14PMBjKk3q5YAMeAC8O4f7N3+QI3J\n0WnU9V8GNnwEqmOJdMsXxCSsitMRd54M+yG8wxNDYof+RQ9aWq/V6QEbLPNF\n4s5YXtxoRiVENczBmXsZdnuut1fBZrAtoAawfQ8y58rYhWenJcHkUu48eh8/\ndnY7ngXn3Kf99373D+dCKm+7W7Q4uWIVVcEfXd3GGVdITqbnVIAPR8pdwrad\n1eKYZ/JWGs3hts+thC8qwdjVZiBxMqwgOU+2p2DUYZQLTM5LIOSjKvFsJrzK\nEhFTd6yDZBRH4U/z5uZeADQLgDfZc/kej5oYiaeljZppQf/AGPHDfHZKAnsQ\nW9oL\r\n=c+h5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8tO2Xk3+6u8S6TC/QWcjLf0of+iQDCrjFCaOwS5yMSwIhAP8jxafxYcWQ1yXPNRAAXBgnBuwOyHuerYTyPkaceczB"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.3_1525853288285_0.8329169225103383"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.4","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","komondor-plugin":"^1.7.3","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"a4b90e5f692f809d299592cd586d3e1eda23069e","_id":"komondor@6.7.4","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-4ZtOYbTNa+bR6paJX4gHsFa1M75tofneColM1r+0WdREd62ywsXuibzaGD7mGYONQ2Da8mBqeQBiD805ELJQDg==","shasum":"4b2da26dbc02d0b99be6b5fd4305cb47801ef7f5","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.4.tgz","fileCount":67,"unpackedSize":186553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa93jECRA9TVsSAnZWagAAW9UP/1u1Y+OH5y4aeejoX1uh\nbY8BjU9A7RrSdCf+U3mXYcoUucc0C2ELAWR+rF4sIrJJTPZwCL7FDEsrbt4V\n0bafS7bIL3fTdfrkiv2cqtr5O8olsrtzdYPKTw6zIRo09VXWAsEQDSeE1Jui\nY8zP6zR2THLKflc5W3ceQ8mag7bvkVZRdB3JjlxPig+8BFf9ggViKKVM9t/F\nhc5oM5bsQJf4ABolMR5+kbnAx92Qd1/sguscqYi7RSkQghUWRG7Ck+v6/70n\nXoU0OEL+dbsCsjwmTPM1HmzXovDRN3dx9wJzemJEq3NBzzRXMBLRKSKwLxWy\nJsjFIHiWN/Qk6GpcgvRTW3ChSOPgXRfXTPDzOQ9UNWaUbmqBa6Mow0UCPN7R\nrKGD7d17fTVUWVj9WYFplj52b12l8l9rN1KedFDWmYJJIA5wAqv0OL4e9ljc\nwFfBVJ+mQQxTQrInN6zeG579ED8NbJpPHVDKif6Q2oCNC6Io88DA+sVrgD37\nN3sgEt4JU7NOIBPRnDaT9sJDWWafvbL5FgPEsn0lx+7cdXcTsNdJSunbNHgJ\nRxEoIuec9PhyI2WDwAPeKbD9ISqq6ccTWxQubc3XIFc+oysgQzil7XJ3krx8\nsAXVgWt4SpJHBK5G4bx9AH7eRhzsTXOBHSta72kbm9ogaWJ3j4l3xq/9oAZq\nN0F0\r\n=x5RT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCH1ARitvhCokjPQnHnd6T35svy5rUkrr7LRyP1aYthNUCIQDOQNNlQuC1AGJBRZmTTHGe4XJmRVlDTfut3GaDd0IRDA=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.4_1526167746303_0.714588499458932"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.5":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.5","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.3","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"54ee111d7a15d621920d9b176f22cef8c910d9e3","_id":"komondor@6.7.5","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-ycQZ/aAHYDnM73MZFRVgD2nWFwDghmk+UAAK0NeEyU1t/FmN0N+/Opc90aezCTxcuqsk2gZ8dQPuPNU1gwT9Aw==","shasum":"391b2ffc6057d3075da08678aa14e650bb82309e","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.5.tgz","fileCount":67,"unpackedSize":187989,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa974tCRA9TVsSAnZWagAAdGsP/0hMydDtuX+E97v5jH/3\nvPb2dv4yb9LY7w/Q7Zeja9KrECEizZKzX67XWTwXdpwCVbVfOFpPyLhpVOB2\nOGxPRCd4PxKgSqPmPhr0MfDPzpqnLkFzTX7HAdi/rrnXxLE+ZSyUxZr9r7Wk\nvZei6QxZwJCp/XPa4r3T3GC9IyonPPCsQ2bQYTK1m3+7pg6QH4pHWWLjTpqs\nq+J0rbZU77I7i2YV0TpYJp+O7cHeaNEpgyi+dwKi/gvIl+IlelD8NAYHjChe\nfXzC6bpL4DRA9keX/L7yoXDfzkvARF9HTnJzoJeEwTXBm/laZQazK8AmN+qV\nDlOGASOKiTW/uO+/N86+Iss5hg/BtGZO4NKvRzrV8A2w5OxZH+mkASn/UckK\nxksBvad0bvgfCDy0RElbXBLRsM/TapvJ5/KJPlK/D5piZB1uBLsPYKRRL3M6\nx3SpRp5M+niEiPn6O4rPhShBYr01u05sVATJLhbN1bqMAPEGuF9pkmEHRxoI\n5en9WmLHY4XQ00HjZel2fiSkozPXJnqVUvqN9tq8S8CWW3030Y+ZRH9SnKq2\na5dMwC7RZ9fsrnC9VhZpU27etgkvVd0oDnw7iBCAX8257ESMDPr5q2d6EsU7\nbZma6cUqEPufKsU09aW+qt9SeQLxaGH2TGzBpXcqqQqvpb6G+llEwvaie/LC\nMQpy\r\n=Yzsp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDV5pwsB6vijdGubK24EHX9F5Zs7fB4kOKBQ4CfGHCRYAiEAsGnN12npOOohx0/L7dVJeAdKp7VKs1zozSmE6QgpRdI="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.5_1526185515178_0.7615800727407811"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.6":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.6","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.3","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"a97c4ff909aba49580f95b3f199471ae969b9a92","_id":"komondor@6.7.6","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-rg2WGUlz/9tC4RGE73cP0eQ/jUQPkKu5szXBPgVdyuf+/xyKWCnJstRyBV+rno60humR4ycleiDWav7CQ+GzSQ==","shasum":"42bf2bc66a0f1f634683aec7670a2bb5e8d04098","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.6.tgz","fileCount":67,"unpackedSize":187945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa98XaCRA9TVsSAnZWagAALy0QAKAHvP97kDyRa/zhvgnb\nIpyzw7o8bRiYXjm3XoQRZa8fOKDernNT61O0dDo2IZF0TO7ExEZA6AzT4jwh\nOe5O/DYUh6n3bjKx2Kr56rwy6M6D6ggyCsShP9WDzfujG0Vq6RW4qijBY8zE\nPuQK4qylglM3NRUvIW40WM+bsqnBHf4+jNbAZx8TyeczXkwtZQF1tFqQtj+2\n4DwHX8eXBu1gdSf7YE9iUlm+jdbDdnYetG7DhSjldSUaPB3G2+olcFjptQ9/\nbOFZml6E6GNaE8kzPFjvI5HGNN88auXNurytESJKE88ttiLDqDLTwXyXkOA0\ncWrZ2FZc5HPK8CvzfX3I1sbJW4ewH21CEzzzEl8iCAPcTgX0u42223p1fjHT\nr3bgJeKNtnVrgSOw6pJ6K2+vDFooBHHShJo6Zmj18WNObd5GFlbMVvV7RRxl\npwFy//anKH94UqlBhWopY2d8zNdJQ6fQrgO2CPs9A/W2Pa3IFACHPzxJPoth\nZ8oBUiQobBwvfUlCBXCELTbRfBhfHi+idkCJk5gLbzcsF+MOgGUcXDGK4BnQ\nh+BiwinduDVWG9ZEFTvG4I2XKNxS5pKHiNI6KHP+rDV6a/U2RARsrxdpSx2A\nNrY6tMEF4XEQL3x1lY+uK1LahZ1wr106aHlEvn8/9AfsMDvjNLl3wjW+wvF7\nUVIx\r\n=SYux\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCroDU3RPgEFO5h3rpl1O8w668PfKSJTxlVuQZh+uaBNgIhALWvhvMOMq7b2mji3gn6xe3nqc5gcMpcEmvGmngyQbkQ"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.6_1526187480304_0.0080917214838081"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.7":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.7","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.3","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"c9daa1eecb38f488f1fa83c6a89251e8fba8498c","_id":"komondor@6.7.7","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-BHTOypIx3amR8j0qTlvveQ+n3lAOkwMyKnhCbDAseT/GmWPR9nwICytahkeLwsZDSPXzUiw/1RySScStSIEjxw==","shasum":"fe21e4d932b6428a41f6eb135745b133c731ee0a","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.7.tgz","fileCount":67,"unpackedSize":188667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa99aKCRA9TVsSAnZWagAAeAIP/2iwPNIMXuSaw46QaHpj\nn7cAtJcSQxMNyE6IxOvKAYNdHbhmKOa4OXZ95PuiFoF90lSSwxAlyj6qpt32\nf4LUY0E2YUppgqBccVHLx5oq5F3dqyTBDwNrKKzcMPwna+b7/XWpn/rnWIKD\nTESXyyOzmOVyp8ccBBI99U8RM9Y5a3gp0qSE+RP/2vMG1tezeEZrX6kUfWGT\nG3hd3S4A3OeBuJqRXZ+mnHGR3cQpieXKAoqpzIySMKzCaTPauSZxr6giF0Nv\nd25utaRWLdFL8C+xsnLePapgbbALBVbTsCJS9hqF1jddIYhZsdwfXslBFTLO\nmTO6wZhJIiXZa+xaYFLfvJsVZ8W8bOw+9ENWaQf6aQfMnUE4fIzXv7NM62bC\n2/2uZwmFYmAeRpUUh6EAS/XJSbU7KyWMM2IKCnn6Qq9geHw7OdcdoTW4Xrsb\nGHmTPq5DYgt2gh6Yv0dDWuqhhfl/YAjSSjIWkVbi50pBKzletvFVcX1kTpUS\n6sy6FC9NRXqq4wceADW55Iz14gcjFNWz/BYigbz1Fs6UMcBydTNtBLZRv1fO\n/LlRExM34fXwWPOcrCezSvLoR4iFL7f6wIdPfUq20kDWCLvWna4zBr6TSndf\np94ojhlc1OwZJY6gX7IiBx8VoB1WaL+Cs0Y3tQP33qjoeia+e/ZvFAX2wINL\nUYDM\r\n=6SuK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3PDE5UW9IlOEkTiq5Z2QhoFz3geawiwyYkWXgHOptaAiA+ctaLJMiaTHYbwF/CQCP5ztPWBRAejksH9+mmVAyDow=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.7_1526191753470_0.39556545768345663"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.8":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.8","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.3","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"16ba2c5828e5325b73e8a2164c42f69059f76555","_id":"komondor@6.7.8","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-hliPHglLfxqns47GAqIoZN36BrqJfJDanRCV9dC+D8p5ftzgNBP4QLSmdY8UMq+x4Emvwh0rRi5YoAowjJ/JJw==","shasum":"4cea8cd05758988da4791230694b2e84b5a6a57d","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.8.tgz","fileCount":71,"unpackedSize":190603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9+LmCRA9TVsSAnZWagAAnaEP/iSwcPh6KWtU8m+0502Y\nrgvgPlKVEwTQ3RJ2PSf0O8qa6JNFJhwZX6Z4qJjik/GQbdb/RbIfkgNFEXgz\neaScvp6mzSRdZpyqoUT/w2aeR9Uv6AtPbH3wB/Yb8A7mNnEE1SgHI7C0kIGY\nrvgpCCYCNzESkMPeilX6bRyr1oNlOenQL73NE/zS6zklpgsA9qeYXa2/yNja\ngG0+RFTFmL/8AJMHpDW/Lyx9rWLaKzLne06QEeU9zLD0COsl5YFpjrlt29Ez\nSinuU+3OzibNYeAn02gFl/dE9pGqj/1MhfG8q+MXN7iOn6lWeUq49sqXnL1k\ndzgPNYIcXxxdm/+Wy4hsyVcn/522cuMgZzoAosabSCL9gZPe5tdRAY+k9kRh\no095u1dBeU+9Rtr9sEuCvoHzqei5JGEwbDx3dZ1HVYxV0kFxVG8lc6Yo7KmA\nYuAbvaYndfNBAItzqCdEsyExboLZHeky3BZerUPaZaFVAIWn4g7LzsNkhPKe\nXNHv0V0LZ4zqikNJ8ixUJjNzVoeoBu7LuEln7mzRtBmEZ4Ecxf4XHclut9k6\nF8Dw702GRZBJMOMH2PkASfMNweI2BGzdvnFmLMNLNoHeWFl/BoAWJubRFWo2\nQ+Rqn4rgJUgmmenr5sgJl/lTvZvCBiLgLxReUFmSPuBfRG5hinxE7rluNUVW\ntdiX\r\n=nFNq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFWL11wOlnSTqQWo9apfwtty+pc+vIAVuHn5B8EPgLsQIgFQik75p+d/SN7M4J5kDIqm5okopiUmeQPOjElGioIMs="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.8_1526194916994_0.22426474243119765"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.7.9":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.7.9","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.5","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"29e52a6260feb3b237d59eb66b9e5db00691d6b0","_id":"komondor@6.7.9","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-75oPJgtRVc5jt6P4E3ibM99J+n8Eol9M2TO1UUOpcSdIVTENAsWTEi4STXp5Apj1TZ1bb5CkyGFr0K2ehSvwEA==","shasum":"5056d97ff00969cfe6691a4399676c96cde4e16b","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.7.9.tgz","fileCount":71,"unpackedSize":192716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+UC9CRA9TVsSAnZWagAA/DsP/Rn3hxM6dAqpC5SS5K1/\nQ0aijJMsi7//tgRvbvKpqtiL7+TjoO2n+npgRCiwXD9BXeHdGGfr7TLp30kL\nvcXrOX6Hb6Pb8LycH66DprO6d07eLKRs0KcM3AShYMk1ywqCg9QM5XiN53T6\npvbb31wcz7Ys02bsP5bVsYbDYnc6oLmC9gv/HaFztRT3HJnvtYVXbGN1fWBJ\ne6ybZVY+VMs4/JOwtPpG9ZY4G5LV2hURowYmbi8if2JLEpl3WZT3lAxVwxO7\njUq7be+j1cV08+iDXnX77cj/oHYqr9Gw3Qo5j5R2mutHvGgcCtn1a6wALEO/\n8F0Fsbuj7EerFQCyJTmIMlRp2ySLotqlHyW4BxedhJD+R/ilmyTV/UI8c921\n3BchE4NXjprymxB453DiNz0fyxjlU53UoG2HspgwxMtTIVXKc1v1S5nTy/qm\nq4JwHMX7wQg7Jvv7a5E9BrqVQUbzUa9RKKeCUiW52kMTr8Q30t/nrtaELoMU\nrNLUWyEIV+TUdFWaUGZsn5LTN9VZ2Nsnq6R1olenUXswOWiaw/ndy4DEZboI\nyLVfUNznxdM+n/D/41PiDi1vkbjr1tCiOtnAMBdoCQA0Ic1I07UptR+273/U\njpfCTl3ELQE+y0ghlvDxNhfdSeXKAykdbsre5m/IoD9wd+s6gucMxnS0f76u\nB2QH\r\n=C5py\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtCPbm6MJD1DA3KNYpdsuI9MqeBzuO0nWLHpNOsSPIqwIgZ2HRnr328OZynzE9SkcYw0upCAfJHEx6/kjMjuV81pY="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.7.9_1526284475465_0.5697415700683799"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.8.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.8.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^9.6.12","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.5","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"07afb58bbaa0bdcdc067d64ca2ed8f496a033d3b","_id":"komondor@6.8.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-zJn9Ya0F4M0sRggcwPrD9CVFtsJ4ic+ZV1WUIrduTi0F6ipcAuyhFVgdW05Q9jD9MveB43uecpu4l00DVI7tSg==","shasum":"c4ea89c7068c801b7dbc9399241549a83d4ebd8e","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.8.0.tgz","fileCount":81,"unpackedSize":202138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+eN4CRA9TVsSAnZWagAAhrgP/1oHho3BEJNRB7ZQrtyN\nqPCMRkBvGLREyjU8b+5/1xMgDbNaMxlBLob6HjZo3XKgjq71jFigq2JyicjS\nG+foBml/Mo2c7/5SHu5Q+T+fXuoCcsZWUNjpMubn1wLOlytqYAB5c3F+62sq\nVczFYN0u1mV/CGUPiGTx4ZUdFU6lYIDQdXt3fQfigKxtkyRD2q/+okiYmiaB\nhPw1tSMPsPdco1ysLmNfcDWp2I0LF3b53DfH7vmWJ/TXBGhUwvQEvD9QrC4q\nT5AzaHyfy/xaykHmQWOYuwvLjY4Hl3BSBEIWcllIKLh22Ut+TCF5Ny7aZWIX\n+F0aBZgocoPge7XyCBBioXfGLPDPvsr49zPhCNg4vz8rY8ksUfv4GgUHKwNr\n9+iKY3OgDyU54sOVqDT1oPR2kalurDOIvMKot+Ht14wBjplAgAiau5MoAaAd\n/I2jGT5G66ixPM0s12xJ6V4Up4R7xRiAb+Hdwwhhq4QL9bY6141QxMUR+Zul\nmtlivI+yyNMkOZBF5WqWT8XIyd7/jslR+cBnrGFcuBIvUSdB96JCCJXBVmH0\nZEgR2FKB/VyWbQaQY2mcT9b+rxdM1kQdldMexMmNhBY426FG5Cw7p3BeN6rM\n5q3Gk9h15J9le9KVNFEB8vbohxXZkUuNeRt5AB4OuPpN6VsaO2BOw6pAVaOj\nz/Nd\r\n=F4Q5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEamViLE+PGfO0UFr9v3yIXYM+2A9Zqufz1O8uWFXMQAIhAOSNh2d/dZrqAjX5s+FTscH9vPr2HvcmCs+VMpm5Q8yk"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.8.0_1526326134019_0.5784792885507242"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.8.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.8.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.24","aurelia-logging-color":"^0.5.15","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.3","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.3.1","ts-jest":"^22.4.5","tslint":"^5.10.0","tslint-config-unional":"^0.9.3","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.5","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"528520e10cc78c9e3d5893bf82c0e4e704fc7202","_id":"komondor@6.8.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-ktr4Mjmzvf/PzAuWsp8lx9U+dlTF3sUuD/pzwj/SZXdG/5K506RPikpGwkfgt6ktLQfpwubdgmJSjV7QtWjHFg==","shasum":"714ab6a4d389a4662ff66ec6a0611167ab882234","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.8.1.tgz","fileCount":81,"unpackedSize":202195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbA1bqCRA9TVsSAnZWagAArXEP/jjW6RuTSOgH85a7hvJG\nxTgoDm5J31+c9lx6VefvYJTTwAeUO+1NR4dN1lEEe1zVFShpsRdzuUYEAe7D\nRR6wvn0mhLTFAtSfHuT/10a6Zt9q8FJHku1uhiH1QlYfE6m2dL7RMTCT4b/C\nVQCBI3kqTrmJwbY+88QTJUOBBsi0HuDKOliCWw7x9fdOL/zvPrmnNrrjsrGd\nHOmRUMaCS5mbidfOqeK8lrzmdH68iegxgz/uNXKKbODLAeWicwZ5QI6Hc1Oc\n+oTiFtsTcmpZrUkOH0ip5oRERzT9yXcUECVmd22n+6dqY3NY1SmrN/vVWPjp\nj3PLUPv+pf5z8z4shhSCCEAX+T6ohvlSOsbq2nmYQmdI6rmnl87vrpEnIbHy\ncCKIYyPFMNSTqhUATrmwvZtDYMCyVoOdzBgi0TGWGvgjeN5XVdAOO3fIQV6u\nRnoFPT+r2+V9FdCeU8LiimM2jb2JQvfYcNkSJl0nyIJpzbEqWk8vWKVdL7K5\nwXxsyIVzWLc77w0R5fQMdJlskr2Eu9yjjyjq0RvzTjBSP2WL9RbPrJUHJ9D6\n6oeNJ/jTFcGdHw1yB+OfDFp0HgHNkoj5lJGyc/YB/N43JdY2EvYzMIYA9uHR\nN3CGhUFEQWJJ9uNOUa9gOVeMvLHqBh1CwrtULPfXK+48SObikjCu5raHtY4h\nAjGt\r\n=13Qy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGS+Nqljx12wmELsYnEx3yICQLm7XGbvK928+H2WK6GYAiAMBtpLmwr2OkYmkcBKRbiw1QKoYfUt9plx54GIsn2O+A=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.8.1_1526945512637_0.7785398030778119"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.8.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.8.2","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run clean && node scripts/watch.js","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.5.0","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.5","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"31082505c33fbfaa1ca3aedb28f8e2a9f465bd8a","_id":"komondor@6.8.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-w5mqOlU6Ql5e4fCZ/lhnYSTNlyQjeAtfEajwg9E1pd5sL/obXRSDhVKGI/r5DIdwGqVbnABDn0s0IJU7NPoW3Q==","shasum":"825b9af854ef5db4a7e46c3c2ec0cbede13d44bf","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.8.2.tgz","fileCount":81,"unpackedSize":204181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbA3mJCRA9TVsSAnZWagAA9NoQAKS0SyRLuAUKM5h8VNgw\n1gq9qRPUlqPLmDNeTGSWziAeZ4WPczDBc6ciTuZ9R2goyN5aeQY7uCUE5PBc\nf4GfXW+xJ5sduUoyGV9J2cAwfjvKuXfERco6Pelc8rCvO8YUZWlnB5NahoS8\nFneCBOVKX8mu2wkNpezT8Mplj92gtKNWOzsRmkB+YKGq3d4TYAcnTTfsNfkf\n0VnxZrH0OwyfDAm8PkwZg0HOQDosTw+f/C/I6S6ttmiRwmd9lCmNxXq0cUss\nmYKz5cptAN0cNsANQESgvFWo9xVawHVmbzB1ODs14uZpGPzM8ylQUxWDrXLn\nYqk2xsDERDTUaKvMlc2JVijpGnbsptC6CG9c0/ww4G/RVmgn3MgItPWvy5NJ\njh2v0iJ6bjW7d2RSQNboHUpBxTXFZDjDZKpC7+2L3PHEjKJC/wCqTY2o7ZAv\naGq21nYntbWHKrx0RTUXdXZg+PiyAU7Cw+rD8lTo/DK2+nNk4eWu4GWT//e2\n1alt088DCfHoRSTRDb93QBTbWgDz8U6enrelMNtNORaSkwUPA/xxmtXAZ/1H\n0U432ishQq7D4Bg/rZqReY/79TBSSTGXYX/e048TLVVytSAR54K8l6V4TnMj\nz4kNYPRstpkUZpbZ7lhdNKdbJOXV9AboWC71KX2zcOlai4p9Um/UqulzlIrb\nXRbs\r\n=xwLw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCC6/PawRLTQgrWBQOnKc9G0fiHdEOtC1hDZIjozaZAOwIhAMEWxOCMoXIWJ3tL/TzKtiM5n1NltHxwEWN8txqJvGYo"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.8.2_1526954375888_0.7807394240055416"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.8.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.8.3","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --entry ./dist-es2015/RecordService.js --entry ./dist-es2015/RecordClient.js --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.5.0","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","hashids":"^1.1.4","is-primitive":"^3.0.0","komondor-plugin":"^1.7.5","make-error":"^1.3.4","mkdirp":"^0.5.1","ramda":"^0.25.0","satisfier":"^4.4.1","serialize-error":"^2.1.0","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"4586451476929cb942a414d63ba1f1b3c0a7daf6","_id":"komondor@6.8.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-W5JR9M4WYglAMW2YCac/YA0AKVJMjJ/NLBSSnQX0CPE3mik1MMjqv4UAGI+pH9L43mNCJR9QLOBREnxk0TWDvA==","shasum":"2ef022675e7a8c036b1bfa506eb53f18ce412b57","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.8.3.tgz","fileCount":87,"unpackedSize":222313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBaWlCRA9TVsSAnZWagAA5bgQAIhHsEtxR6rtoB6CkpMd\nC/avlRB5qQ4W7qnK2PHvTTwUOqib1Ck0XARPqKI93dsfqXKo9rU2Dgx21VNe\n4MDCGmDYPBgq7Ye2+rYfVgsn+Cnk3/XzPqjKL4Xqp0CUjs4gUqOzoghypjnz\nn/H+LDudyG7UZsbpat4Dh+/8KoExGfWMNvGxgWhq6+XEy2kgeT7ZlgPbIwyW\nqfoJFKS3f4myuTcI6qmkgWzJmpUAMc7/NYDr6jWHhh4MzU8tFFwmTUej2lii\nYHXLiAiaysosjyEp83EZNlyRj/SoIWdiBMOiAPrQ4TW8fAK3yQZXXNEozTaF\nFB24VPh5hSYuRwW/Y+1i47/3vlRZVgzrVWoB/2q67tbH1YV+PDN7NDy2QmCe\nF27VulRqy2xpvDbziRAr5dId9l8Rdv0gpyrGKabd0yLTE5W3hhRV/0JBQodo\n2DNSunypBGT6yKPVWqCJmocSwPiJRWAe6qTCILujazrGmBpf/JQ/3OIUXcY8\nHDfcFPBAw5kG68u/frCnYEPZb+aUEZZfm1l7nVGEdwBCxWfqCgukx5lnCOoN\n0gPWFucuKwOYmf+Adt7FAcVbXPlUmd82eBnTupgcURk8e3hsYxJ8chiG8a8a\nTQp5rQwJ80oUjVhUg+LXynoky/AV1gepUgnFkWH247LR6cagIeF2X4KsxaxL\nXqtg\r\n=4ySe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtHr/wxjKKvPsvET+awLA4Wt7GU7mKB6EFnz0cVxB7zAIgOK4s8WYGUAgyF9EN657JMEKsQ3S77Um3/yagE8QF93g="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.8.3_1527096739074_0.05619195548851885"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.8.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.8.4","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --entry ./dist-es2015/RecordService.js --entry ./dist-es2015/RecordClient.js --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.5.0","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","hashids":"^1.1.4","is-primitive":"^3.0.0","komondor-plugin":"^1.7.5","make-error":"^1.3.4","mkdirp":"^0.5.1","ramda":"^0.25.0","satisfier":"^4.4.1","serialize-error":"^2.1.0","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"77fadb8a7990d92199363bd16d50abed70283735","_id":"komondor@6.8.4","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-O6x1LYl7FVqnMiLHw94N1GmGpo57/6VNBaipwoRtR2v/hj+urrwC5+CynqBKRNVhmFiGrueY7j5UlrHnKdbHOA==","shasum":"edd2e2edf6ab50f42b6e2fdd4cc88b7dff326409","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.8.4.tgz","fileCount":87,"unpackedSize":225724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBgjqCRA9TVsSAnZWagAABYoP/japZoRk/K/iHYaw+iqI\n0qS1/06ZUdujrHtgNVgxxbj5857VPbyM6BXYW/zqwKHagI2Cf3vl8+JR8yKq\nxP/Yv6qMxeZR5vlR+GkiueDDHX4Yy9/4fWBVIlTl08Udjmmw5dd4y8HTMiYG\norMOpe0UDE+y/zN35yeYR1egEyzD/lu49yBs/usL9ueRK5Ac8cxTU9hFDe0I\nA9ueZMhDVp8An0Yn+5SnqvbUg+wFxIw/DwMTQ0aYZ7EOjCp9YiG5Lxu/Jn9q\nsB50OOc7EE448mzSvaGV4d8NmIRRLDV90HxPOV3XudfHdDX2B8tGCiDR1Ld7\nUoLNWm8+rjMR35wPvmG+rKPE2sFHyZXI+2dqTyMyi+ZVgpyMrO9Mt5H3NNyP\nlcG6Z/q/l5wDwUFDbhgr3CDWOltEjyBdTr28Z2w0DmPgp93i8tzeX6aB4jxv\nvkVWDrT7uojtHOreAUHBRlGIMWj70CIsKBX30YqufTRRisohw0UYdoNmfExq\nfCNZrbXOJMKDTnbdBn8Gmqnof+vO7WiTzb4boHHO6URRqmRWloTO1DAF784Z\nqx1yqbk15oQkOxuDHSYzU6RY70VY4NOMtGhDodW5quiuSQhxQMMWnP5EyTWo\nqiLa7BDZnK2ZMd0KDYJruYpxXSkFxetSos6ppOTwyU3+Ad6g1fBQTLO/98KZ\nmDHA\r\n=e4DP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAM1EW3e9UsQJBOpbh1HgEEIhnBH2XOcLJsZhpTPDHHkAiBq7cLeTuk3EYllwJ5SwXxgY0HOBRXbUAo9RWoK1kQeWQ=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.8.4_1527122154095_0.5549673108860784"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.8.5":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.8.5","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --entry ./dist-es2015/RecordService.js --entry ./dist-es2015/RecordClient.js --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.5.0","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","hashids":"^1.1.4","is-primitive":"^3.0.0","komondor-plugin":"^1.7.5","make-error":"^1.3.4","mkdirp":"^0.5.1","ramda":"^0.25.0","satisfier":"^4.4.1","serialize-error":"^2.1.0","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"7a35f5d1b5fd1a122ffb40be8a3ffa7e6e0814e5","_id":"komondor@6.8.5","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-24SFzVf+fnWvRQReHFoyPsgSIUbrYak80Pjns4dJ39A5cObk5BZoKHMp08ce/h7cW7QxY/w5fTMaeicNJF9cCg==","shasum":"ef6f2185919942bc0cb4c2ecee16ffe3702d2a6a","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.8.5.tgz","fileCount":87,"unpackedSize":226430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCPUMCRA9TVsSAnZWagAAvNUP/09aRHiDU+m0LbKYPVIH\ndxw/K7xq2AMCGFtNzOKwVo3rCc+hZNA0R06QNJKKCQgx4RrurP50oRopTTti\neEB+FyIpoZwrS9uj8CO/saCmvPqT3kBBTpycPPlUUhdR5v+k25scYXEFcjN8\nXJcyrXZEXBPR14LE6vkA2IDWKxvoGA0VVcVAGFN8e8W64RO71H2P6R/YvpRR\nrpcCuOBxn9+DBBU1rnnd2LogF+TFpRowVvws+XOx4v3o1aWOp2eruRqTWQnJ\nNRvwTqjicijb8FkB5mmSA4sCXUFu/2zw7pNf0eyKdwWMwghcYq8uSkrmbE66\nj3MeFZAEdWGx6vALdtfH7PQhh7iszPCSvqn1heJM6xYR/34pYPx1I0q064mb\nVkOnv0qQ+yJL/a7UbqhI2dlKyh1QDfsNIvNbIiSerzSVgSzL5dzLybK/a6VD\nop4CxDLyA3tdhFMneEtypyjo+7vRVEXwPNcAIvbnPmi6NBFlhcUVw1i03b15\nzLxlaGT+DoBaznYg3usm9zMU0i6WIpCDr5iCBd48ycTejEf9z3WtChkNX0Ie\ndT+9D8GkYEdDuejLExyiY/ivu8JgnXnGcsfOBVOFFHU8wkZ1IdErTbnLH3bh\nAwIcmlDGV9yG0gRLAqRnbyzjPT6yv91/iJcL9oe1Jgnb7tROgiZ4Hc+9AXUW\nn1ll\r\n=Fifj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiKgt3Kd1ISFOIxmi1M7RoUzuOWW4HFBiyi+Cq/BUqtAIhALbdrlQ6QOmXYeP6QDegRv1H28/7MonO4qm6BQsziWwH"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.8.5_1527313675239_0.8982594854968824"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.8.6":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.8.6","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.5.0","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"^2.8.3"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.0","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.6","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.1","tersify":"^1.2.5","unpartial":"^0.4.1"},"gitHead":"4a53db41b8ee13861cc66ae475f48354c498b1a5","_id":"komondor@6.8.6","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-nQiSRVuzaXxF9iQLEPUovfSRVkb7D0WBsdg+SFhjtOOFJZgdmkIYpLi2xytBoCzYfjNnKcBlS/aUcNDBxfUvww==","shasum":"4e3fbacff459e41e843390ee89b8f386c02102f1","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.8.6.tgz","fileCount":81,"unpackedSize":211970,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCwVXCRA9TVsSAnZWagAA7ToP/1zsa9SfxZwfMFyK/Mme\nf7ZjaRJ/BJ47F+F+wVCU4/vz/gxvtWF3tkDzzaFHP7qKXt9wUYL7K+nWk5QF\n6/8Nn45RRgUfdazOBG1i2d/Wx1n/QotYusOGDxh4HebJOgKNW50yhC/erbZb\ncUWHDFuWKDfiaG6I2btlmhcvTrnlkJ0AJfrXo4CiOIRVIOIvp9yXfL4JBiDQ\nMwWQE0O0iSDKittZS1yk9XcVywJ+1ieg56edoxa4A/E+WzAQufxjyIeOBXEo\nfg3acrdG1uFTitcHWSulRkGGrPnFLNJ9KmJuYUu4wkL+8o9mI2KWy5ALXv0W\nmK7pm/hdzMwlOAeYyaW/vaY7hYPISZ/TV1fwQuE8TITuspITWSAgUvnjKG7V\nIfqDgtJO2fSgqKvy8FEzeyardMka8wLJkWO+BJwlen8WIRb21aFbDBKryLFF\n26xC3VC4he/6Li4dYfzO6aY8qXY29Gj9dm12pZXSQQQk1Nnf3kR/Lmm6IIjY\ntKJ7ExNFz7RhoLSCUPw39UwTUQCyOKiAOud+j0I4omEEb87Q5quRKHIGAX8Q\nV93vMxEOlRzp6wXqyvKdrK4NNpDMzZcHKHsHomw6ko/egR0N3/IA2GdpDZIU\nyb2IhKbCEgS9ahiS3JQyB1M7s9UDl1orwDsE/fZ+tmoXvp2M0wqxadpEySbL\nj4+/\r\n=Up4n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEe1Znu22W69unZKTr/U0iZnV//3MfGuqu1Ut+zK8c3jAiAfbLR0wBmGHfJyvtso2PAg5SSqU853hkrooPHS4pdmTw=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.8.6_1527448918157_0.9119004453052775"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.8.7":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.8.7","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.5.0","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"~2.8.4"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.2","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"61cb953fb7d375bfdba59565f485c6dd7b98a403","_id":"komondor@6.8.7","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-oKXBXl59WpS1+U2KswV4Mugg1pmY+N/ayhgzSNr09Lx+CmNNHjFunI6Lz81XHaMDPTAF79wkFcANgq0+a5yjNA==","shasum":"b26b9d1b65567be7224979bfe42d7b9c6b992bf4","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.8.7.tgz","fileCount":81,"unpackedSize":212332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGel6CRA9TVsSAnZWagAA1nIP/RvZy3/lLymEiNnI+OFK\nFmJp51w+DvlryZ5wf3TnTcuFPCACWjQXMsE55DyuQi+TrU2lc3rs6ovEngsc\nrE6M1wA2gGDu+o17B0uPpDJxGqXlwsZiJpb+JWllFIezrPFjxdbCdYvT13Ho\nHtz9AuokTWc1qLccSg+q4L7NlRk5czy3hwGWAtWEHP9/7EAGKCqCgX9TrnVn\nII7q1jCjd90RbvS674ddmAU9aJkUW15SzjR2yHQrr/vZtSctVMqBMmXR3dyz\nY5bSCosazCQcs2T/5EBc2C48XtVXfVpAJHLWBrZaI01TmU7oexWluCoF3mw3\nICFfykElgIgNysPL2WpGsXPc5opeyWYfackE+DRuJyYE2d3UxJuEyEAV2mVw\nOiVi+WYYwciFM/nuWa7pcEXrjOvLthVms8e7OQ/TBzesVfImX21rXrTn0bnn\nKHgiRocEFHaZN069kSXSqg0QR39BaH/3mxp552v0Tn5L/AEV7qnrtgc3PHMy\nxQE38F4eDNjHtukpv8zB2eDrqBqwA7ph0oJUllv01bR/VBt++hq/eLBAVizN\nwU0Tjb7wgQcbHctY5U2n4MEYGAj4TnYVCpoNIJMQhncv2TGpFvCqQNSbwjgX\nSgG3HeDWhkqJEEB9EA7oXUpBZYTrrtzFlrL024Xn5bIK8SIrQjWjGzIQ/oNy\n8zdI\r\n=cwYy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHkfE1gfis+VgHI+izN7FM9ycF8J6hnyTAKTDZA7TnrPAiA8ajfxp5XCwxij/6oeclyx9XkhilY0dV7UxyH0UNs8uA=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.8.7_1528424824799_0.46384621167327933"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.9.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.9.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.5.0","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"~2.8.4"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.2","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"c2098ac815769fc9e1af68702764b6aa42de435f","_id":"komondor@6.9.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-TtHPsemqx28XEh4c/ibAtpDPNf9FC0xuBjU7QsjLoxAzY2JyxrQBC+vcxNfNzOoeBs7Vf6EfpFGLLKGcEIpuCQ==","shasum":"b3db292e0995ec4acee9858facf03eaec4f6b9c2","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.9.0.tgz","fileCount":81,"unpackedSize":213146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGteHCRA9TVsSAnZWagAAMjMP/RSoUU+O2hlKj7FB0YAx\nIM1ddz59mL9RypRWcmNGlRUIxMDqRWxhKZ8VP5yfDjvN2qmpRQATLB7dX31x\nfuIl+glXuFMAT5C/+cZClqU06kk+yK+qWkyzEIicOiHV/xev1zpfh159CL8j\nqj1m3SIifoLp+t54k5B+KXR85Ab2UUqaZtloD61S9nkS8CXBbwPUbvXljsIn\n2pG8w6ZJBjUftgJRCTo/ZfUyU+4DWPndYRruivZeVYGereqtU1UkFCL2pNE9\nWirBRt0iD0q7v4DJWGNn48x6ESSI+97loE2URKKT+jrGCuElWDzJjz1Zy93x\nYzVJmnavNlSQLH+y9l+pwVxHVhIKMgj/Mexj7iqSqSk58O8vcCuS0okPpQOu\n1D/ZA5lh4EAt/7WCQyyl9WzV0Ncf5tTNM0bK2/luQ5V6jw27vI1DhJr74QxI\n1jQHv1RIfDdVhhB7NSWGrPyQD0dPdrBgOK5Wq0hzDR7li4hSTOFwdYNCGhgo\niYJQuavPUYnVnYIuD3nVrMRVQrDAJ6uYdwPfGM1VhWso2vXdnC5kZqxllK7N\nHFqEJUv1LAyuv2E/Lr08h2hAoa8byEfp+1rtZJ/xxEuEx+QB9fRLqWmF00Ht\nPVZbE61UaKn9wxm3hZu8/8QHkmC6RFKcf2rlzpy21LfVvG8FiZdoJFWSW2gz\nx196\r\n=5pxL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDbfMZ4JQrbMvEm1itDIf+nbGTxIS/hM399P52X95eL6AiEAgbEeh5EpWBWLw2yZh0gHr5zZy7oL8ZnIz1RdETwNOgQ="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.9.0_1528485766909_0.21058075825063138"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.10.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.10.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":".*\\.spec.ts$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.5.0","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"~2.8.4"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.2","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"69f77f7aecce32ec161c10bcd506e12385cc56fa","_id":"komondor@6.10.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-5wqygPqVlw+wapj6Gim2sH8qgC6hyBWs4Tg/KeIQNUSDrj6924oS6zhk69MkG6X+T0tDDQwG7R7ibWgfCJcStg==","shasum":"60bd400cb43f7eed1350788663f61b7962bb3d98","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.10.0.tgz","fileCount":81,"unpackedSize":213309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHEKaCRA9TVsSAnZWagAAAVMP/j9IKCIDJaZFEYKCqjyc\n4bC2GqmhdujFMLTSTvBrqLfIuPEnVweMMJVVeiyY9oL9HmF98GRdpsZcAsRv\nUrPYrvpMXbEJ4o276BJOaJR48/ZMX0VoORWRp1LVhzDEWCoqlUzWpGLHgPR7\neBOmqW/giaonADUL6ZWPiutamME1FCRdXLi/hG2AmIFxbTDGjGi1Q/rLt167\nILUQbKPtXq5joXR4PiL4KJs2THe2KQAo3WsvcTlECWRP5f46qwH/EjlyctIe\nl25/D9yymwsNIyuoIGW6rXjUbkBmmZF5J/dmPqEoHxXsxiFlqASwiJuyz+MG\n4oJ6lYF0W5vDUZhnsDS00FSym7t3WiXA46eTxo0zLKWe3U+R/ObAbOruJ+tT\nHM4V721EOz2ccNQHTfoIx7+cfW4JW8y+M8lCKW4xznMPddxYKxfgfDH0Gsvo\nqDlecjjUoS+vPWFMTuIhpfyFk5e6CWRyNWHq+NghV8Fh4mwwOpa4lOyA8wPF\n1l+jjC17gekF7VUlhN9QbQnadqixunIVLckBDPfJQYAc0OGo+TzIXlNTOISe\nywp+GdcynWMzLzc0OjdIc0IEC1GmFj2E++s789bnSwI9XBkKUx2pe5sjxfJR\nfBHSHMIgQnhP7M0bwcugf47wpxg9/UX2sTa3I6Ap8DFgW3r4maV1C6LGNhM/\nExie\r\n=gZHN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDedVXz92HsLLMTM/P8X7SyWduM2vEvizdr8ciRv7UWuQIhAMDZZ2YS39uu81q7dg7nyGUDJe3a5pI63PCaNBuU74kh"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.10.0_1528578712578_0.1730873590223898"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.10.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.10.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.7.1","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.2","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"3249d8d8e1abf7ed724615703051d63b6d7bcaed","_id":"komondor@6.10.1","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-UyL18JLoZuQPO2pvSuAYUdDGK/WqzbfvyUgwiAT5/QVKS85YWwWQVn70mPmEZSbNOW7l8TtR3OBcIemi2EW06A==","shasum":"da7ca626677c8c013d730ff01b53e3151069c313","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.10.1.tgz","fileCount":81,"unpackedSize":213233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbSGcpCRA9TVsSAnZWagAAHREP/RTf+DZlUPo6E9PLBE/d\nfS33cDyXkFllcHKCDTFP1hEQhkj+yEfS+uHY84nslimzZgr3rP7D2mRGk0Qh\nNyOdmhA14VEKibONmeO5xSnONEIu2Cn+4sn3SgFdj+iyWFJE9h2y1fx0OXKS\nQoZ3GXT89Ez1XvRNX5tLuJ4pGIcaaqR7jYGHS11haz3/AbKNKNDZi0N2blB/\nSSYQ9p2XSXS2Xg7sSqaHQhyA36RxdN09JeghE1gsrIuYj9lnE6MsmdEyvr7t\nuRMbLYaMKH9EpaR86ysub+GlqT5fdCg4gmKKODsvJ///MBK1QyFeXSaZahB8\nmyDuXbMWbdOeqosh2Nn6IGdEBEfKJ4BWMvs9z73rOjOCS8DPp+TSpxqCLBpl\n+62WI+7h9DBwVm/aLzC8Skxulqeh7zgnw/aSb7s0JPiWGzsX0+nR54WmY1I8\ngW0Vfy7gx1ZsgAmOfFRUZxzM9o05KYTgG6rni8UX3zWnOcQjsqqhtYCaApjL\nl33A40jExTzgG8X5thyZcmVKbTClG011C92SE1FKZx4bP38jEgPUxnmSfePR\n5YNgDu4A8wCk7Te0BY+SFvobpeN558qvQ6UN5OnbZOHlifXJtONGwjAOtgZn\nIm9F69aoNkse1ttZpVA2blNX3njn3DviLShWztGWJsFymLW7O5dTTTZV2Xqc\nSI4Q\r\n=ns+4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJG0wSm+Ay5UTENlsICQMCrHqcYWnj1/SeSvHFoBQiQgIhAJyHoPptXE3HPs1gcKLecnXgZ3MCkV0F8FGz6wL9Kdbv"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.10.1_1531471657296_0.5303530877919"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.10.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.10.2","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.7.1","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.2","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"44e0073c8b7c45fb4f5ba66919ab13fc51676703","_id":"komondor@6.10.2","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-m7A6LXMjiEc0xQPV4FSHfktLno9HtzDDWW1iTEMQhq2qnr4pU7D/XOFBex6e/g1+V9tec7TDOU3WmU7NrLNP5g==","shasum":"189223bd2aeb276b6195db462b2df8cbae54b59c","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.10.2.tgz","fileCount":81,"unpackedSize":213353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbSUPZCRA9TVsSAnZWagAA0TkP/1+efuLrm+jN0VU41HG6\nid+YU4xlQpM8Ns6ZcFSbt43tfyCMsTfwOb84ZxI8SG75AyrFLhE5HyYEmCT8\n/odaxqW5orfYYPn8lOYAV6FN9r51R+OVrXh4DkIXHIBLOAhK+sCY++2medBu\n8y2z58JiUGW9JSAAXe4GHVcBf4HGWXQftMTWwSetwOWVWN/3sCyXiyxx1KsS\nk4sE0g65F40KTsSlRvN0nJqD2wiL8zB/88J1Ay6xYr1faPqzU9kHAgl/y8YZ\nBj9wduLigtNLBrw3ixaWId40CyGVx4/vzMS92bC68RwcKfdNvs2FOJqewWqU\nrvfe4zRd77po2mBNlrheNnHXT9sUJLh83UzylzAMn/tQ4fs11xTcGc1Ta4r3\nJbwVWqKVlMEXvErY5vgzd5csy49hwSRg4MgST2JtTGyemBXzE0R6fsuBuGE1\nMHT/ayN3NJ6VZArYiU+rQur77a5GXL3NME86ElpFmvfFPgr/px3npevbScMg\nmt3RbKJy/HvLJSqNem6lMsPI9QppEx0dyonFzYwsCuzGQmDoaXXDiHFQwsqw\nhfKc21h0u9YCocCr8Pk7nz5CF6gTrnOLHVH7p2aDoe8QLkKlHV6iCzD5jfU+\nZLpjTILyA2u3bqBmbTmGA2oR5j3e0/anFbMyg/JwaHlp0DYN+UU1NSDj6IMz\nk/fJ\r\n=N6Kp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC962MVupGbyQZHE1y7jzU3RxTKJ3/eixuv1a6PG2fi/AIgFrGcT5mkeYCuShamZ2vlCg7I6DIe31bHMDUXz9e5h6I="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.10.2_1531528153487_0.21478401521260282"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.10.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.10.3","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^22.2.3","@types/node":"^10.1.1","@types/ramda":"^0.25.29","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^2.0.0","dependency-check":"^3.1.0","eslint":"^4.19.1","eslint-plugin-harmony":"^1.0.3","jest":"^22.4.4","power-assert":"^1.5.0","rimraf":"^2.6.2","semantic-release":"^15.7.1","ts-jest":"^22.4.6","tslint":"^5.10.0","tslint-config-unional":"^0.9.4","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.2","chalk":"^2.4.1","is-primitive":"^3.0.0","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"461b77fbda1ec21166baf380b7dfed62b5add66c","_id":"komondor@6.10.3","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-Iq2AY9ltfJbYiqWYfr9562D2i/UFFxGCo4qWIPiZqK/7RcFqnErvzqSeTyd5+IrNR6WkNgnSuMKCgQEpMv4wag==","shasum":"39cc31591f8db5eb04d3c16ca0bdfe9f35fb9d22","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.10.3.tgz","fileCount":81,"unpackedSize":213744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbStv7CRA9TVsSAnZWagAAZtwP/iVXiJ35qOg7zBNN1QXE\nZdXOFJRVOEBm7EHkaFx/ZhP9YSONpperETYJ0uGOauUm/lAVLXl0njl2PXXU\nZEHXLtNMuZjzlMZiqApauOJYtDm+RgGLOErZoqVqCqkqYlLUsFZ9MwWZMVZK\nSCGvUO0/cQoJuAmkFymUoAydjb3HVunkRJ4yaTnEX3beulea+o3KaJH2D4Av\ndrSMlf/jKfkhGfFxmVfaOxbtzKLmay1t52nHK1HqeL7MG+LcYw/THQtj3hSW\nHF/D3DiJy6uGAp7g70VZ6NOhjH81hQ0awmEwPiiepA/+K4rFL6ELJcQCBw+O\nrigM0ebfr5PR7btDbX0UU51QkQXZjc4qjOh5qQBPj8DwMqH16GjgOjswxrCA\nPchf98hOaUlZWD25dsjsH7CvQm1DiiNyyeSwEgzrf+Gys1wsfvt6zR9oFT5o\nLuLT5+bk6uRrteU05/IPG7KykPsPahlsoh1CRRAJsjBQYxexnwhxmmlUvNT3\nMyciIWKnwPosSIE7DO5qmQfnXfpdzvo3zRALMLIZ1faFD8CJwDNBNfLPrY+t\n90kWqBzPIO6WLI3v3pc9OU25OenuavxqWVAv9VwErTVpdpwSvtMUag5Dm+ER\nXYKnAq/z6ZFPY/nT5iPKfCKdvCwEmoDgRBmAg/JGc8bEnW4MfmwirscUlioj\n/3nA\r\n=F1VT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICFanF0tcpL9FodPCqhmYGKfY+uu/D1PiVxcg3UEmqDqAiEAuBkrDtEOweY/1JWsSL6pAqHsNTasE6jIO6+wy10uIZ8="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.10.3_1531632635350_0.7546195273050098"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.10.4":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.10.4","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^23.3.0","@types/node":"^10.5.2","@types/ramda":"^0.25.35","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^3.0.0","dependency-check":"^3.2.0","eslint":"^5.2.0","eslint-plugin-harmony":"^1.0.3","jest":"^23.4.1","power-assert":"^1.6.0","rimraf":"^2.6.2","semantic-release":"^15.8.1","ts-jest":"^23.0.1","tslint":"^5.11.0","tslint-config-unional":"^0.9.6","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.3","chalk":"^2.4.1","is-primitive":"^3.0.1","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"9028da306d7022ce5e5951ed13541e5f78a4338a","_id":"komondor@6.10.4","_npmVersion":"6.1.0","_nodeVersion":"10.7.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-DaCxLAEtjrsRqxayHCrlMCjTm5OPzzqc3eKuCEcnRETeJPn2xP/4JDRfnIOEcRNGWRTfWoEgpzF7mdyDV2+07Q==","shasum":"2dfcaef0eda9a0c58d9b934ddea90a52f87feb5c","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.10.4.tgz","fileCount":81,"unpackedSize":213096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbW25UCRA9TVsSAnZWagAAsrAP/iOA2ifPkF8kNyXltJoT\n2BaFjNUMJQsPy7h3NE4HL/4t1p8Nr1nrgToXm9MrWz0iMQ337ag0yK6+vswl\n+Ikn5P+dvU+uQsbNmLxY18L8Pq6fut7JYJZYmW8F6FkK3jHSN63r7HcMMOSe\nCKhSrE0x6+POf2RQ3BVWQwn3s4GN91HK/sAlnxtF5iarLHWL/2zn3PRs0h4g\ni6B9eynDwwiUqa3JK1J1PK5Ec3tRW1dEkeVi2UVcaPAM4gEU0MkWVUgsIY9W\n4d9kYuLX9UJ9mm6XN/ST2g38lR9/GEvefwoHQIwoEOcson7KoXLupr6+ZENw\nMRfpPLoS+u0mON7osfILJ1xUY8Hv5fFJabZXZNfReTq4E6XEWX4I0fsnXv9B\nRZDACM1sBjII02FdwNrQzrmr6vbnTFGPxkpE4a94TFU8+YytyV6iUHIJhzQa\nJeA+J2ax+7Nm5shE7isCcrvKoW8YLQTeUKfDho+st17Lg1uhVtQcmwdvSC0o\n5IdjvWjYhFXbwPjflWWMDYnYhVb8N9TUx148ifgzTXkvN5SCYZTNV1UZEgpl\n7rQEjm2cjrxmJ6ndUN6BhWCcDD9U6CshFgTs6vA9iaH8y6kW2Y2mLChApr+V\nQpd5LE/sg8bnDiLfasR87Str+DvHZvMYpMMkFx/E1cEBH+yoqPIh/fDP9HK5\nEHQs\r\n=e+3T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8GRbquJfmQIQJfQ9pnm0WKkXX2QakaGQt7sR2/dbfcAiEA+g3KI0tDD6j3n2Mi/zwi7t9EquGUkCLQbUv0b2RCXGw="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.10.4_1532718676711_0.1502179436271356"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.10.5":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.10.5","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^23.3.0","@types/node":"^10.5.2","@types/ramda":"^0.25.35","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^3.0.0","dependency-check":"^3.2.0","eslint":"^5.2.0","eslint-plugin-harmony":"^1.0.3","jest":"^23.4.1","power-assert":"^1.6.0","rimraf":"^2.6.2","semantic-release":"^15.8.1","ts-jest":"^23.0.1","tslint":"^5.11.0","tslint-config-unional":"^0.9.6","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.3","chalk":"^2.4.1","is-primitive":"^3.0.1","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"854d6124d5fea887acff16e0aef4816f143f8485","_id":"komondor@6.10.5","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-gbkFEqzKlfSBaM97Dbgc45O7qU79WnLHofk7/iRrTN8M9XOovYIMn0XZ0xhMWRdNZUY/43yD6b2HCJ6o9Eth5Q==","shasum":"7d3b42ee384ad862a180eb2d3e658467a6cfd230","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.10.5.tgz","fileCount":81,"unpackedSize":213176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZKPSCRA9TVsSAnZWagAAANYP/25mvOqOJoIcgyF42MZ0\nYFPhSxroj7Xiei4qHSdO5ubBgGKzIV1X2DV9LZTpKDsve73p4YJ55VLXQIYI\n+p+8PINzU5kLDbDFvOoSfjJC86uWBeHIggfWeiSxq3OAdMeOiWhxqxjdOvXg\niNAFHZddxG7ciF6T5Y9gMwZqHKXw8LkplImaZ6WnzOm6epZj6G6ZushzPqB8\n01z3WI9mpRTWDguA3o3hXjVbZuDhIrpXwDe02OsaA90TPo+6VttBA7GAtSoX\nHvIhj7uawTwWghHjSX8move4fxKZ0mVqdS0qv4cg+dTYlgmKutJeGD60GKVu\nC0NKczqdPUzahdHZe+effpd/664c6EhsjiJxZEfYlg5jqiFbznM2pS0MZ5eR\n+3qerplXRG0PhIqYYbK8mZJSqBKgf8cfijwS6Et92aVdmpnfxmor1h35um8k\nArQ/3CEKXVjpESU6rwKkWmgap54rkfKTS99FxZLIPKYArkL5hgaA6Q2/y0E7\nzduLnr1ZMQBfuWKV4oVmL7VwkYztGOVMaEp5uZDsjd01htXnufJbnFHjUA2z\nLaaeetaopP8GfspdFeOyMD99cO9tg8cCQCypdvLIT2XAscb7CZQwZu7cnzDb\nZUIyihmO18k+l8W0owD0JDBmRulFU2FDEvvBa/nrGLbkxIW9lmv0pq9U/tke\ndSHR\r\n=GpLb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGnrF0GxUxN3rggBlEn/j2X/H+eo55CrLHZq8T+M5BHNAiAKgukp1+PU+89rAm41ZE4dwG2AvTAuM0K0+dpd/GCsUw=="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.10.5_1533322193599_0.9823345140623179"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.10.6":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.10.6","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"<rootDir>/node_modules/ts-jest/preprocessor.js"}},"devDependencies":{"@types/jest":"^23.3.0","@types/node":"^10.5.2","@types/ramda":"^0.25.35","aurelia-logging-color":"^0.5.15","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^3.0.0","dependency-check":"^3.2.0","eslint":"^5.2.0","eslint-plugin-harmony":"^1.0.3","jest":"^23.4.1","power-assert":"^1.6.0","rimraf":"^2.6.2","semantic-release":"^15.8.1","ts-jest":"^23.0.1","tslint":"^5.11.0","tslint-config-unional":"^0.9.6","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.3","chalk":"^2.4.1","is-primitive":"^3.0.1","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.4.3","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"56ec803e8e40c3ec24237d88254cdb0900b7c16f","_id":"komondor@6.10.6","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-CM3Jj9+gp0GDhTPpAl/7d45P56xoIsSYJ92ga2es5H3cPMlJmW87ucfrXkxCD/LVD8Es+yWFcuEvtXqG2N0Riw==","shasum":"1ab8af49fe976cd084713b0b17861f8d37de8ae2","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.10.6.tgz","fileCount":81,"unpackedSize":213235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZKrzCRA9TVsSAnZWagAAkAgP/2jRBV8qPinvHMRkHbJi\nmt5uM6uXgzhV6bBYHtX+96XYL6nNIgyw7FmLTwVb2bAUVmgn0t2YTGa6hx4r\nHYV6f46Yx/dW/AOLUEr/wQ3YuvhkRHtXYYalKzp2K0RgGf23hi3EWnDM4rek\n8hVzCPe3d0tbHTXmu3DM/o9yrUDXkHAHFZqom4v3zGRlJrx1tauppvYwdclG\nHkHIUQlpK0zeVwoBRYVkDmFkDZ8l66Z7mkx1UDiNXLUAuabA5XXnHjMWnX+U\nHbxRQOXcIdK1w+Zd/V7U0Rk67YafCS/135Gqoh95fIH0GVxyYalHMfatGLv5\nrJFcdPDnMu5P6cIwBix0DzZXTubRUKgMUanMSefD16W4INeyqCv7CUbzFodF\nuLdNJ0Fawy4M6IkrcFBAZrOSTOtZxrhB8AidCRx1zQSVP053QIH7XSrctbYW\nOBg9SY4jbCTqQUVAvCEFs2+dlwEK5op292qApStcRpYVuToTjba/FGzfl/OE\nFvr2COuMpo5jIx+yTw/Mgc7xZBPBP3MDUFt/8hNxe36z+z/9sSHkiOnsZIqp\nSLffeV6q/dveGHcQCjjZ4PtVdipXhVanPiteISijBjY/9APBnyufEe9dREG4\nSZ8Tl/0lRNNhG/DJyds8ywAQV/lRIJkn5LJA2W7xO+1qQGIwDVPBC2NMFURN\nEuV9\r\n=m9qQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7xT3ffviiNpQnx7U12JIK9yoCIpMs8DRrwaBhsLnzSwIhAIxnqI0vtsZ0bDVNJblWHV6kPtF9IcCYGF3/kyUBL6oj"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.10.6_1533324018645_0.20556519870508683"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.11.0":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.11.0","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testEnvironment":"node","testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"ts-jest"}},"devDependencies":{"@types/jest":"^23.3.1","@types/node":"^10.9.2","@types/ramda":"^0.25.36","aurelia-logging-color":"^0.5.16","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^3.1.0","dependency-check":"^3.2.0","eslint":"^5.4.0","eslint-plugin-harmony":"^1.0.4","jest":"^23.5.0","power-assert":"^1.6.0","rimraf":"^2.6.2","semantic-release":"^15.9.11","ts-jest":"^23.1.4","tslint":"^5.11.0","tslint-config-unional":"^0.9.6","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.4","chalk":"^2.4.1","is-primitive":"^3.0.1","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.5.0","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"de9a3031c07c516b84bb184917f596e13a741a1e","_id":"komondor@6.11.0","_npmVersion":"6.4.0","_nodeVersion":"10.9.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-kgU1NwcWU20DMfUx4l8RZBJ4lseap6C4YzFptQVSvYMFFBeFiFuX7PP/otYpX2EFWNAI+qO8TREEaVG4RsABBw==","shasum":"79fcea62e4790e71ae6846e4c095d093f162ee94","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.11.0.tgz","fileCount":81,"unpackedSize":213945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbg7KzCRA9TVsSAnZWagAAVHEP/1XHAgDG1vReg8pUxheu\nu9uz13ypsw3rtYu37LWFzYzcJa9DDB3qs3ZnqInK+YKGWOir00KgkICYWg4D\n/CNTZEznjTjzMfRdxXlnpy/MG5Yeky2rApOuJk1NEXDEAAm/DAnrQN44Tr7S\nclnluURX8hyuvzzEI7FiALwAluHxp2RSwxVIDJGw6QGgc69KilhUVs2/yYOi\nzgf0LRBew4BLZX5we58/KUAWwI0eYwVdZhrh+pKGXhEqzW97Px6YfL2IVE/F\nJ/cmA/Dk0zKLYaS2rb+u2sim7x+PHFsTTMyewsjhGNyZk/7nogfs61CkAWgk\n4Ubw9uGN00v3BGKyAd1ZfPCRVIf5vQvOQKQ2mH0aciabSViJ9/xEGpCYrK/8\nsk2JVmj+KgIPxp/pA5Oa+sRTCV9eTCv2k3r4fLIL1uUoB5Z0AUYscWW2OBTs\nrCyzb45DmbJc8PASALfTWVT8Kk8dzSxdys8Yah085uk2jozyNgJCbRat8axn\nbrUZMOVUwaQIF7NuHtzuX/ANBHnADOZHMldRmaIzzV0RjJC7AUgbRmAV49Io\nLjkoOj2ihe81+hYy1bWkeATB4j9L1zbwHlsy6Rmhp/aefOBg0wPMMDetGtcM\nFMAV972HseB/jijF1UxGaR9KZX85tOmo/i4RVTCWh1M7xgkQFt9eFTkG+hqw\nv7VZ\r\n=vtBj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEMgDPrjfDg8UN5fXCV4ZwrqA/Mwg+77zfPXtWM45OUVAiEA56FG3RwaRn8UojMrVJdbxKeHmx1wH4rNozE1SpysV4U="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.11.0_1535357619174_0.21568642948335937"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.11.1":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.11.1","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testEnvironment":"node","testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"ts-jest"}},"devDependencies":{"@types/jest":"^23.3.1","@types/node":"^10.9.2","@types/ramda":"^0.25.36","aurelia-logging-color":"^0.5.16","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^3.1.0","dependency-check":"^3.2.0","eslint":"^5.4.0","eslint-plugin-harmony":"^1.0.4","jest":"^23.5.0","power-assert":"^1.6.0","rimraf":"^2.6.2","semantic-release":"^15.9.11","ts-jest":"^23.1.4","tslint":"^5.11.0","tslint-config-unional":"^0.9.6","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.4","chalk":"^2.4.1","is-primitive":"^3.0.1","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.5.0","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"47070f5abf8eb12f6899d0157cfe0462540ace78","_id":"komondor@6.11.1","_npmVersion":"6.4.0","_nodeVersion":"10.9.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-KPZcXtzr7wW/zzuMefCzfwq8ewIc/CHHiMmvwckpISYnczxUy54fMhYU3HsgJrUEMw/+OfVOpw17MuuCgGq5/w==","shasum":"cd5691c3f5820efb0c68e36871d44f234240e149","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.11.1.tgz","fileCount":81,"unpackedSize":214220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbg8AVCRA9TVsSAnZWagAA5JsP/A7h7JQ9ezjZc4+2jKOr\nIIDa6jmwOmHbSoAN4g6LvYSiyKIhJQERhJKT5MJpOownhKXjG+gW3matfy6/\ngr/5MLk2VBiUoZo9g581aA6Pg7hHvTPQcIu3MKV1+08FK1pW3/XaNbc7Cv4r\nB9HvFtELxKp+UYsI64w80EY91HqMnOxgrrFxw0xX1rC0TwjwG2UDDvdlPhwG\nle0VNzvOrcNvipkQdQUKQ2PQMfkaIbDjJUUqrBdBOB5QAQBE8Nbg3eMQ3ZfV\nghIrW81dd7WPfvMXLqicfANfa3p63M/wBV/rb6lz3xiZ0OtcN2rp7yN0+k04\nh4maDR7AqM2F8NPq3RenLSWsMH2Kd0i7nZFmHBktXi5OyTtP5e3QyoV8fY/0\nE5comrKmjUdYiyQY5IuJj1tSiZ8O47oK1ySA3YqLTMc4m7BKofkew3FCPiim\nD5SPdp9TYifhw47Ylh3+tIj0JlcB+HfqSLM5j9ztjA8y5gwDBQtyzGv3Hmxi\nhg8YqGTSrjDqUvwSacTezh1goyzHssdjjHFSaTC3yWRq1CKvggjz0g+zNklF\nrvF6fanpUeIaXlbOoIm/9XePOAM6XJDu3aLG9zNJ3wD5GaRLilw5ZDmaZP5M\nZ6P2M00B1BIPABSKbK4nRcJhTcwgfK/Wwry5sDgivPNRXoQ+8R4qtZU9Mzjx\nr9KJ\r\n=ZYp5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVyj+dZ1oc3+4vQs2FrGG/ZhU9ehppHHP4KersLNnNAgIhAISrsyQvBmv+kOvUENNms8PEOHaldhO2efIhCvGtD7gR"}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.11.1_1535361044342_0.3543945205750747"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.11.2":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.11.2","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","files":["dist-es2015"],"scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testEnvironment":"node","testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"ts-jest"}},"devDependencies":{"@types/jest":"^23.3.1","@types/node":"^10.9.2","@types/ramda":"^0.25.36","aurelia-logging-color":"^0.5.16","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^3.1.0","dependency-check":"^3.2.0","eslint":"^5.4.0","eslint-plugin-harmony":"^1.0.4","jest":"^23.5.0","power-assert":"^1.6.0","rimraf":"^2.6.2","semantic-release":"^15.9.11","ts-jest":"^23.1.4","tslint":"^5.11.0","tslint-config-unional":"^0.9.6","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.4","chalk":"^2.4.1","is-primitive":"^3.0.1","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.5.0","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"a5bbbd57c5d905ea7ab3852ca511619ada862646","_id":"komondor@6.11.2","_npmVersion":"6.4.0","_nodeVersion":"10.9.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-xOQ4EFq4nDnAa17FUXBTJGCgpM8ZGEJAp7C2iLTKjrU1edsalq2BZYYfufzqLhnPwBltwD5Q/9nTscfKIPAWvA==","shasum":"5b9847ac4642fbd2defc8807e9cf5809a57886d1","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.11.2.tgz","fileCount":81,"unpackedSize":214221,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbg8RNCRA9TVsSAnZWagAAUZkQAJTgKaqQyDiP0DFS1k2j\nxjnefgKC9L2uXRupII568TAwwvtraEJyLURRz/f7XzqDrjSqDyInuVxFtOCA\nTUgeXiA2dHQN45EsFJ1jsznbpGd6qIJzxINgMBaAHLhnC7h9HV31fFe+1VTq\nJ5tAW/9f2E802WKX0p9k5oqdq4bwv7gRowH0/viQHL3YW+zADgDQulk8LeU5\nGfOqKvtWsCXs+TTvHbdArmP4OQ1he3dN7eBzBzKP0BVyZF85Zs5ACxK68GuK\n1Qu5xLg6bw4APY/zDqNjOoDJxtKen8gyiJaqU+nKexTikMKs4YW/QwukNg0x\nWQHxsx19MbiUy6IO/oG+IjFrq4GmJvmHWssQy5kq6V5gl4f1DrN44H4/XGid\nf267OrPgpQZbHk4NPkUmXQkbimLDlE53h+FPtGx/0C2cGXuq0JyNG53kdXwz\nph7w15SwTZHR0YrjBsXGdWGKtpqk7DEqZbzRe/23rkNy/TXAa7+J8Kem8CMe\nlbZbNVnTiqp741X5Yrtwk+h3wJADWwNw7MSUSXDYOHSAJHai4fdgVeKNOCSG\nbE+rNT1LdyQAc4516CF/OamcYoAEA1zJTk1uSre47+NlEp57ltR2dtYpvIqg\n5o4o3L+h6y9cZ9VKCK+rxVi5vtszndo7LHiRPpQ8ju5RvM/VdyzyVLw8/ffA\nZPuN\r\n=8cmB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBr5D8sCl96WfofT7K22qCO9Z/VVNYmP7Picnl6u+Yo8AiEApMhBpnhg7wsDWpQLUhcckVC/5FLGaKIn6qZCeYyGpCM="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.11.2_1535362124943_0.3995857163632872"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.11.3":{"name":"komondor","description":"Your friendly guard dog for writing tests across boundaries","version":"6.11.3","main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","scripts":{"build":"npm run clean && npm run build-es2015","build-es5":"tsc -p tsconfig.es5.json","build-es2015":"tsc -p tsconfig.es2015.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","prepublishOnly":"npm run build","test":"npm run build && jest","ci-verify":"npm run build && npm run lint && npm run coverage -- --maxWorkers=4 && npm run dependency-check","verify":"npm run build && npm run lint && npm run coverage && npm run dependency-check","watch":"npm run build && jest --watch","semantic-release":"semantic-release"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"homepage":"https://github.com/unional/komondor","keywords":["testing","testing-tools","testing-framework","fixture","boundary","boundary-testing"],"jest":{"moduleFileExtensions":["ts","js","json","node"],"roots":["<rootDir>/src"],"setupFiles":["<rootDir>/scripts/setup-test-env.js"],"testEnvironment":"node","testRegex":"src/.*.spec.(t|j)s$","transform":{".(ts|tsx)":"ts-jest"}},"devDependencies":{"@types/jest":"^23.3.1","@types/node":"^10.9.2","@types/ramda":"^0.25.36","aurelia-logging-color":"^0.5.16","aurelia-logging-memory":"^0.3.2","cucumber":"^4.2.1","delay":"^3.1.0","dependency-check":"^3.2.0","eslint":"^5.4.0","eslint-plugin-harmony":"^1.0.4","jest":"^23.5.0","power-assert":"^1.6.0","rimraf":"^2.6.2","semantic-release":"^15.9.11","ts-jest":"^23.1.4","tslint":"^5.11.0","tslint-config-unional":"^0.9.6","typescript":"^2.9.2"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.1.4","chalk":"^2.4.1","is-primitive":"^3.0.1","komondor-plugin":"^1.7.7","make-error":"^1.3.4","ramda":"^0.25.0","satisfier":"^4.5.0","tersify":"^1.2.6","unpartial":"^0.4.1"},"gitHead":"a31fc9923a4adaf3a307cebc1e272d47c8da3fa0","_id":"komondor@6.11.3","_npmVersion":"6.4.0","_nodeVersion":"10.10.0","_npmUser":{"name":"unional","email":"homawong@gmail.com"},"dist":{"integrity":"sha512-4OHpf44hs/rKf6ELUNcK6qNtior5nlx9qFg/S7Ha4vC8BGWrG1dn6EexfzAVlpLrZ7wVhw3mvz7dp9zEF48t6A==","shasum":"7868a8142396dd8411e07669e577839703732da8","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.11.3.tgz","fileCount":81,"unpackedSize":214210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmGM2CRA9TVsSAnZWagAAyLQP/10TtNXjWXyfI8HYx5nQ\nZ+ZfyDNGiMeEduirc5+dNdqTuJCXv42zkY++h7mC8nCGh0L5ezZFeyH4z11K\n9nBx5byPbi6+mu9ZbIMG+uFuAxrwNlxIbNX+IvrQVl/Aw41xy4FYSNrFwUCY\nDE6MMBc5CSCCvt0eQiS8+SH6287vnofbKpwxm7artaaWYg142dVwMCbqjISE\nryl77o4dHpG/MTUMliTHV9woVVx55XaHfnuW+hgCOnHNlHhPkGEHB9UPCxNc\n107oxtgn8EZq0Bv1jb53oVFxYYgO6nl3oD7Gy/BamP8L90MUaCn+IWC1RE36\nGR+JJRBT7MpUoOfnuCz3iAX4PJqlZCAU8kkRyp6aW92cZyQ5O04SoJYgJSRc\nEk7SVjMrxhI9gzWbAcqG31Pv62NzC0yOiREASdUwPaZ2ckGFDwI8nmELZtv9\nVO8r1cQqR1Z863Rx4kyRJYLtjLJT9VEN5Unw4Q1cD2MHoaB0kBb4T8QDhtvN\nOkiP0omlNtk4RH5HiqmROGd2zaSLp6LFkbT3jODdYTNpZTWPdJYAOoCpJT41\n2kTrktqmz1VQW0MnRtum8zYSkcwau6iIv16oUqbYrvRRx3Y5TMakHAIllXFq\n7kilvXXruLR3fcByTwYhpNJEdBJPp9ZcPqJiiDODyMobN56OABy4pGVoIIqa\nyc3e\r\n=0dq5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkQ3W1G8zIFWUNji18e9X3Go2Df2f+Q+94wlvKIt3pDgIgabtvrOWqAZjMeIjiRZmxeq+Jxza2hzxaf2CzR8YqFaU="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.11.3_1536713525577_0.3003747108267798"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"6.11.4":{"name":"komondor","version":"6.11.4","description":"Your friendly guard dog for writing tests across boundaries","keywords":["boundary","boundary-testing","fixture","testing","testing-framework","testing-tools"],"homepage":"https://github.com/unional/komondor","bugs":{"url":"https://github.com/unional/komondor/issues"},"repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"license":"MIT","author":{"name":"Homa Wong","email":"homawong@gmail.com"},"main":"dist-es2015/index.js","typings":"dist-es2015/index.d.ts","scripts":{"build":"npm run build-es2015","build-es2015":"tsc -p tsconfig.es2015.json","build-es5":"tsc -p tsconfig.es5.json","clean":"rimraf dist dist-es5 && rimraf dist-es2015","codecov":"codecov","coverage":"jest --coverage","coveralls":"cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","dc":"npm run dependency-check","dependency-check":"dependency-check . --unused --no-dev && dependency-check . --missing --no-dev","lint":"tslint -p tsconfig.json 'src/**/*.ts'","test":"npm run build && jest","verify":"npm run lint && npm run build && jest --coverage && npm run dependency-check","verify-ci":"npm run lint && npm run build && jest --coverage --maxWorkers=4 --config jest.config.ci.json && npm run dependency-check","watch":"jest --watch"},"dependencies":{"@unional/logging":"^0.5.3","assertron":"^5.2.2","chalk":"^2.4.1","is-primitive":"^3.0.1","komondor-plugin":"^1.7.7","make-error":"^1.3.5","ramda":"^0.25.0","satisfier":"^4.5.0","tersify":"^1.2.6","unpartial":"^0.5.0"},"devDependencies":{"@types/jest":"^24.0.15","@types/node":"^12.0.8","@types/ramda":"^0.25.40","aurelia-logging-color":"^0.5.16","aurelia-logging-memory":"^0.3.2","codecov":"^3.1.0","cucumber":"^4.2.1","delay":"^3.1.0","dependency-check":"^3.2.1","eslint":"^5.16.0","eslint-plugin-harmony":"^1.0.4","greenkeeper-lockfile":"^1.15.1","jest":"^23.6.0","jest-audio-reporter":"^2.2.0","jest-junit":"^5.2.0","jest-progress-tracker":"^2.0.1","jest-watch-repeat":"^1.0.0","jest-watch-suspend":"^1.1.0","jest-watch-toggle-config":"^1.0.2","power-assert":"^1.6.1","rimraf":"^2.6.2","semantic-release":"^15.13.16","ts-jest":"^23.10.4","tslint":"^5.11.0","tslint-config-unional":"^0.10.0","tslint-language-service":"^0.9.9","typescript":"^3.5.2"},"gitHead":"e8ca076fa7c5814e5aba0f25138f0673d5864318","_id":"komondor@6.11.4","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-RQFsZbTFAmMi4nwKg//ofdKRRHMJljN4iGy2uz/x4d6jesBaiTVXND0C3JOz+jWuMq/rHQUCDmNO5IgfOOWvfA==","shasum":"1b125d5f9f007c41eed9f8e9b7fb4aafeea9ac1e","tarball":"https://registry.npmjs.org/komondor/-/komondor-6.11.4.tgz","fileCount":81,"unpackedSize":215753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdCKjlCRA9TVsSAnZWagAAhK8QAI5MNR3fwoM5B3v7sHIU\ng+aibjdOYqWcBvgz+CQaKIeaPhK8CZJWTxpSX/UqiLOh0NBtwCPEAqK5VKTW\nq98230AGDXbKKFZ2mLZ4BlGkIImHmB2gwee/H5cSIu8hUOGeG+zpFJ5ydLtJ\nHniThN+1IEkIcf8XmpUT7647Z4F5/4syLs9mLwgvYanB6t27KdN+oR++cf7B\nZ/7Co8utlsBfzV0f17tXd2ugVPW6lMNHd6C3RlkYiUj+uQp8tNWXMxiK270y\nm86ImON4HlcfGdLSRKmuO0qTah6jPmx/QNUr6lH2M3ZxvcZ5BZzvsmYFTSMC\n7fElwZ4FZskaBwp46hPA+ZvU/I4x484H0ohh8Xp6ypLyj9YjOwCFfOq+Mj92\ngjlv/46Ev4QEYs98PYzljERRZfhG+YamyAF+tPFTNeX+zG5igB8UUfu12xUt\nrOyybBDrFOGz0wHb/jqP8TRqUCWyo1ccT6ONy6x3SLSin5eykD+aFVfdeqb7\n4ISorQm92YfYhLo0UaTvnU0g1nRd8fZ3ULveRJWQMUH6d0ryOM1YIhIAU7xg\npQMOnNUi0ralnaYmz9nwI1sOyiKQP/jligJIcfPNDtv3delytNwJvzgAXqeo\nHQJ1h3QB9g4VSiH4JizPsLFusNz2IdAoxlAOc2dxh7P/kKRsYhu/VQvyBrUP\ncjeN\r\n=dot2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFSOOyIunWO2sIwrP1XEcauBZT6qivAVQ/P7K6ANwVXJAiEA3B6DKWlnDuDwvqP8h5FHb3bs4flXfKZNqSghGvpc+ek="}]},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmUser":{"name":"unional","email":"homawong@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/komondor_6.11.4_1560848612340_0.8358346083414028"},"_hasShrinkwrap":false,"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"readme":"# komondor\n\n![unstable][unstable-image]\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Circle CI][circleci-image]][circleci-url]\n[![Travis CI][travis-image]][travis-url]\n[![Codecov][codecov-image]][codecov-url]\n[![Coverage Status][coveralls-image]][coveralls-url]\n\n[![Greenkeeper][greenkeeper-image]][greenkeeper-url]\n[![Semantic Release][semantic-release-image]][semantic-release-url]\n\n[![Visual Studio Code][vscode-image]][vscode-url]\n[![Wallaby.js][wallaby-image]][wallaby-url]\n\n[![komondor](images/komondor.jpg)](https://github.com/unional/komondor)\n\n`komondor` is your friendly guard dog for writing tests across boundaries.\n\nCheck out my [pair programming schedule](docs/schedule.md) if you are interested in working together on this project.\n\n## The problem\n\nBoundary is where two systems meet and communicate with each other using data structures and primitive types.\n\nFor example, making calls to a remote server or a component written by another team in another language.\n\nWhen we write tests that needs to communicate across the boundary,\nwe often need to create a test double to similate the behavior.\n\nThis allow us to write tests that are fast to run and also decouple from the remote system,\nso that we don't have to configure the remote system to produce the expected behavior.\n\nHowever, if we only have these tests,\nwe will not be able to catch breakage when the remote system changes its behavior.\n\nTraditionally, we will have a suite of system integration test to make sure the system is working as a whole.\nHowever, these tests are hard to configure and slow.\nMost of the time we can only create or run a handful of these tests to make sure all or part of the critical paths are covered.\n\nWhen the behavior of the other system is changed,\nyou have to go through some manual process to make actual calls,\nadjust the test doubles you have, and fix the code.\n\nThat's a lot of manual work and the worst of all it reduces the level of trust you have on your test suite.\n\n## The solution\n\n`komondor` can turn your stubbed unit test to system integration test by a simple switch.\nIt also makes writing these tests systematic and simple.\n\nWhen writing a test that needs to access a remote system across a boundary,\nyou will do a three steps test-waltz:\n\n- write a test and making it pass while making actual remote calls\n- find out and record the data you recevied from the remote calls\n- use the recorded data to create a test double and use the test double in the test\n\nUsing `komondor`, these three steps becomes very straight forward.\n\nThe following example will create a test that needs to communicate to GitHub api.\n\n### step 1: writing a passing test with actual remote calls\n\nStep 1 is writing a passing test.\nYour logic should be unit testable,\ni.e. you can create a test double to mock out the remote calls.\nIt should be the same as what you have been doing.\n\n```ts\nimport { test } from 'ava'\n\n// test subject\nfunction getFollowers(github: GitHub, username: string) {\n  return new Promise((a, r) => {\n    github.users.getFollowersForUser({\n      username\n    }, (err, res) => {\n      if (err) r(err)\n      else {\n        // massage the response in some way that make sense to your application.\n        const response = messege(res)\n        a(response)\n      }\n    })\n  })\n}\n\ntest('get follower of a user', t => {\n  const github = new GitHub()\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // assert `followers` is correct.\n})\n```\n\n### step 2: find out and record the data\n\nThe test is passing.\nNow it is time to figure out the shape of the data (which you probably already know as you consumed it),\nand tell `komondor` to save the data.\n\nFirst thing to do is to use `komondor` to spy on the data.\nYou can do this in step 1, but I'm doing it here to make the steps more concrete for demostration purpose.\n\nUnchange (and uninterested) lines from the code above are omitted for clarity.\n\n```ts\n...\nimport { spec } from 'komondor'\n\n// test subject\n...\n\ntest('get follower of a user', async t => {\n  const github = new GitHub()\n  const s = await spec(github.users.getFollowersForUser)\n\n  // do `specs.subject.bind(github.users)` if needed.\n  github.users.getFollowersForUser = specs.subject\n\n  const followers = await getFollowers(github, 'someRealUser')\n\n  // (optional) get the actual actions recorded by `komondor` for inspection\n  console.log(s.actions)\n\n  // (required) tells spec that it is ready to save the record (in save mode).\n  await s.done()\n})\n```\n\nThe code above uses `komondor` to spy on the call and make sure the data received meet your expectation.\n\nOnce the test pass again (meaning the spy is working correctly and you have setup the right expectation),\nyou can now tell `komondor` to save the result.\n\nTo do that, all you need to do is changing the call from `spec()` to `spec.save()` and provide an `id`:\n\n```ts\n  const s = await spec.save(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nNote that the `id` needs to be unique across all tests.\nAnd in version 6, it cannot contain any invalid characters for file name.\nThis will be improved in version 7.\n\nWhen you run the test, the result will be saved.\n\n### step 3: replay the recorded data\n\nThe last step is to tell `komondor` to use the recorded data in the test.\n\nThe way to do it is extremely simple.\nAll you need is to change the call from `spec.save()` to `spec.simulate()`:\n\n```ts\n  const s = await spec.simulate(\n    'github getFollowersForUser',\n    github.users.getFollowersForUser)\n```\n\nThat's it! Now your test will be ran using the saved result and not making actual remote calls.\n\n## scenario\n\nYou can use `scenario()` to execute test steps defined using the `defineStep()` function.\nYou can execute the test steps in different context:\n\n- `ensure()`: run the test step and ignore any error. This is used for clean up before and after the test.\n- `setup()`: run a setup test step. Any failure will not fail the test, but a warning message will be printed.\n- `run()`: run a test step.\n- `spec()`: run a custom spec, if your tests are unique and do not need to be defined as a test step.\n- `teardown()`: run a teardown test step. Behavior is the same as `setup()`\\\n\n## artifact\n\nSometimes the input used in test are environment or time dependent, e.g. absolute path, `new Date()`, or random number.\nThose value does not work well with `komondor` because `komondor` will compare the actions performed to make sure they are the same.\n\nFor those values, you can use `artifact()` to tell `komonodor` to ignore them during validation.\n\n## API\n\n### spec()\n\n```ts\nfunction spec<T>(subject: T): Promise<Spec<T>>\nfunction spec<T>(name: string, subject: T): Promise<Spec<T>>\nfunction spec.save<T>(name: string, subject: T): Promise<Spec<T>>\nfunction spec.simulate<T>(name: string, subject: T): Promise<Spec<T>>\n```\n\n## Plugins\n\n`komondor` supports plugins to spec on subjects other than basic function, class, and promise.\n\n- [`komondor-plugin-node`](https://github.com/unional/komondor-plugin-node)\n- [`komondor-plugin-ws`](https://github.com/unional/komondor-plugin-ws)\n\nTo create a plugin, please check [`komondor-plugin`](https://github.com/unional/komondor-plugin)\n\n## Security\n\nSince `komondor` will record the calls,\nif they contain sensitive information you don't want to keep in the record,\nyou can remove them in the `spec.actions` before you make the `spec.done()` call.\n\n## speced.satisfy(expectations)\n\nYou can use this method instead of `speced.done()` if you want to validate the call has been performed correctly.\n\nIt is generally better than `speced.done()`;\nhowever, since there are still come changes need to be made to the spec record before it is stable,\nusing `speced.done()` saves you some tendious work in updating the expectations before that happens.\n\n## FAQ\n\n### Nothing happen when I change to save mode\n\nCheck if you have wait for `speced.done()`.\n\ni.e., you should have `await yourSpec.done(...)` in your test.\n\nThe record will be save when `done()` resolves.\n\n### Enable komondor log\n\n`komondor` provides some logs for debugging purpose.\nSince they are chatty, they are turned off by default.\n\nTo enable them, do the following:\n\n```ts\nimport { addAppender, getLogger, logLevel } from '@unional/logging'\nimport { ColorAppender } from 'aurelia-logging-color'\n\n// Skip if you have already done this for other purpose, or\n// you are already using a different appender.\naddAppender(new ColorAppender())\n\ngetLogger('komondor').setLevel(logLevel.debug)\n```\n\n### Using komondor with node-fetch\n\n`node-fetch` and some other libraries provides more features then just handling simple data structure.\nFor example they support streaming and web-socket.\n\n`komondor` cannot work with them directly because it needs to be able to serialize and deserialize the result.\n\nThe response object from `node-fetch` is not serializable:\n\n```ts\nimport fetch = require('node-fetch')\n\ntest('response is complex', async t => {\n  const response = await fetch('some url')\n  // it contains `.text()` method and others,\n  // so it is not serializable.\n  const json = JSON.parse(response.text())\n})\n```\n\nOne way to get around this is create a wraping function that returns DTO.\n`komondor` can then work on that function.\n\n```ts\nimport fetch = require('node-fetch')\n\nasync function fetchJson(url, options) {\n  const response = await fetch(url, options)\n  return JSON.parse(response.text())\n}\n\ntest('komondor can work with fetchJson', async t => {\n  const yourSpec = await spec(fetchJson)\n  const json = await yourSpec.fn('someUri')\n\n  yourSpec.satisfy({ ... })\n})\n```\n\nCreating `fetchJson()` is actually a good practice because it creates a separation between the layer.\nYour application code uses `fetchJson()` instead of `fetch()`,\nmeaning it does not know the information comes from the network.\n\n(yes, for that you should give it a more netural name and remove the HTTP specific options)\n\n### Test fails after upgrade\n\nSince the libary is still in unstable stage,\nwhen you upgrade to a version,\nyour test may break even if there is no breaking change.\n\nIt is due to the under lying record change and features being added.\n\nYou should able to get them pass again by running the `spec` and `scenario` in `save` mode to update the record.\nAfter you do that the test should pass again.\n\nThe easiest way to do that is using `config`:\n\n```ts\nimport { config } from 'komondor'\n\nconfig.spec('save')\nconfig.scenario('save')\n```\n\nDepends on your test environment,\nyou may use the filter to run only a subset of test in `save` mode,\nfitting the actual environment you can configure at a particular time.\n\n## Wallaby config\n\nSince `komondor` will write files to the file system, if you use wallaby you need configure it as follow so that the changed files will be written correctly:\n\n```js\nmodule.exports = () => {\n  return {\n    'files': [\n      // load spec records\n      { pattern: '__komondor__/**/*', instrument: false },\n      ...\n    ],\n    setup(wallaby) {\n      const fs = require('fs');\n      if (fs.patched) return;\n      const path = require('path');\n\n      const writeFile = fs.writeFileSync;\n      fs.writeFileSync = function(file, content) {\n        if (/__komondor__/.test(file)) {\n          writeFile(path.join(wallaby.localProjectDir, file.replace(wallaby.projectCacheDir, '')), content);\n        }\n        return writeFile.apply(this, arguments);\n      }\n      const mkdirSync = fs.mkdirSync;\n      fs.mkdirSync = function (dir, mode) {\n        if (/__komondor__/.test(dir)) {\n          mkdirSync(path.join(wallaby.localProjectDir, dir.replace(wallaby.projectCacheDir, '')), mode);\n        }\n        return mkdirSync.apply(this, arguments);\n      }\n      fs.patched = true;\n    },\n    ...\n  }\n}\n```\n\n## Contribute\n\n```sh\n# right after fork\nnpm install\n\n# begin making changes\ngit checkout -b <branch>\nnpm run watch\n\n# edit `webpack.config.dev.js` to exclude dependencies for the global build.\n\n# after making change(s)\ngit commit -m \"<commit message>\"\ngit push\n\n# create PR\n```\n\n## Npm Commands\n\nThere are a few useful commands you can use during development.\n\n```sh\n# Run tests (and lint) automatically whenever you save a file.\nnpm run watch\n\n# Run tests with coverage stats (but won't fail you if coverage does not meet criteria)\nnpm run test\n\n# Manually verify the project.\n# This will be ran during 'npm preversion' so you normally don't need to run this yourself.\nnpm run verify\n\n# Build the project.\n# You normally don't need to do this.\nnpm run build\n\n# Run tslint\n# You normally don't need to do this as `npm run watch` and `npm version` will automatically run lint for you.\nnpm run lint\n```\n\n[circleci-image]: https://circleci.com/gh/unional/komondor/tree/master.svg?style=shield\n[circleci-url]: https://circleci.com/gh/unional/komondor/tree/master\n[codecov-image]: https://codecov.io/gh/unional/satisfier/branch/master/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/unional/satisfier\n[coveralls-image]: https://coveralls.io/repos/github/unional/komondor/badge.svg\n[coveralls-url]: https://coveralls.io/github/unional/komondor\n[downloads-image]: https://img.shields.io/npm/dm/komondor.svg?style=flat\n[downloads-url]: https://npmjs.org/package/komondor\n[greenkeeper-image]: https://badges.greenkeeper.io/unional/komondor.svg\n[greenkeeper-url]: https://greenkeeper.io/\n[npm-image]: https://img.shields.io/npm/v/komondor.svg?style=flat\n[npm-url]: https://npmjs.org/package/komondor\n[semantic-release-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[semantic-release-url]: https://github.com/semantic-release/semantic-release\n[travis-image]: https://img.shields.io/travis/unional/komondor/master.svg?style=flat\n[travis-url]: https://travis-ci.org/unional/komondor?branch=master\n[unstable-image]: https://img.shields.io/badge/stability-unstable-yellow.svg\n[vscode-image]: https://img.shields.io/badge/vscode-ready-green.svg\n[vscode-url]: https://code.visualstudio.com/\n[wallaby-image]: https://img.shields.io/badge/wallaby.js-configured-green.svg\n[wallaby-url]: https://wallabyjs.com\n","maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"time":{"modified":"2022-11-14T01:06:27.664Z","created":"2018-01-12T09:46:45.114Z","1.0.0":"2018-01-12T09:46:45.114Z","1.0.1":"2018-01-12T09:47:55.788Z","1.1.0":"2018-01-14T13:37:34.028Z","1.1.1":"2018-01-15T06:12:21.259Z","1.1.2":"2018-01-16T02:07:27.172Z","2.0.0":"2018-01-18T20:45:51.571Z","2.0.1":"2018-01-19T01:19:47.207Z","2.1.0":"2018-01-19T08:57:30.063Z","2.2.0":"2018-01-21T01:44:50.702Z","2.2.1":"2018-01-21T02:16:35.247Z","2.2.2":"2018-01-21T02:33:28.381Z","3.0.0":"2018-01-22T03:26:37.057Z","3.0.1":"2018-01-22T10:29:30.460Z","3.1.0":"2018-01-24T02:47:29.744Z","3.2.0":"2018-01-24T08:58:44.585Z","3.3.0":"2018-01-26T01:59:00.542Z","4.0.0":"2018-01-26T09:05:11.220Z","4.0.1":"2018-01-27T02:41:52.534Z","4.1.0":"2018-01-28T00:08:55.698Z","4.1.1":"2018-01-28T02:15:34.928Z","4.1.2":"2018-01-28T09:24:20.404Z","4.2.0":"2018-02-05T23:33:24.970Z","4.3.0":"2018-02-09T09:11:43.717Z","4.4.0":"2018-02-12T02:18:12.298Z","4.5.0":"2018-02-12T03:05:41.936Z","4.6.0":"2018-02-12T09:00:18.241Z","4.7.0":"2018-02-13T01:26:51.710Z","4.7.1":"2018-02-13T02:34:25.389Z","4.7.2":"2018-02-13T06:44:47.479Z","4.7.3":"2018-02-21T03:32:12.526Z","4.7.4":"2018-03-01T07:09:17.269Z","4.7.5":"2018-03-13T00:22:06.361Z","4.7.6":"2018-03-18T07:24:04.193Z","4.8.0":"2018-03-31T07:20:50.717Z","4.9.0":"2018-04-01T03:12:44.842Z","4.9.1":"2018-04-01T03:22:22.934Z","4.9.2":"2018-04-01T04:04:07.607Z","4.9.3":"2018-04-01T07:22:26.558Z","4.9.4":"2018-04-01T08:21:09.501Z","4.9.5":"2018-04-03T01:12:37.690Z","4.10.0":"2018-04-10T02:13:55.622Z","4.11.0":"2018-04-10T21:37:20.899Z","4.11.1":"2018-04-11T01:28:46.507Z","4.11.2":"2018-04-11T01:45:52.105Z","4.11.3":"2018-04-11T03:39:36.308Z","4.11.4":"2018-04-11T18:42:27.325Z","5.0.0":"2018-04-11T19:11:27.043Z","5.0.1":"2018-04-11T23:11:20.935Z","5.0.2":"2018-04-11T23:31:58.076Z","5.0.3":"2018-04-12T02:20:56.351Z","5.0.4":"2018-04-13T07:43:59.034Z","5.0.5":"2018-04-20T00:24:19.677Z","5.0.6":"2018-04-20T02:15:09.105Z","5.0.7":"2018-04-20T06:46:38.682Z","5.0.8":"2018-04-20T08:36:30.352Z","5.1.0":"2018-04-20T09:27:34.404Z","5.1.1":"2018-04-20T15:43:11.296Z","5.1.2":"2018-04-21T05:24:41.429Z","5.1.3":"2018-04-21T08:38:54.286Z","5.1.4":"2018-04-21T16:41:25.903Z","6.0.0":"2018-04-23T02:51:23.163Z","6.0.1":"2018-04-23T18:43:56.650Z","6.0.2":"2018-04-23T23:28:21.427Z","6.0.3":"2018-04-26T07:46:01.972Z","6.1.0":"2018-04-27T00:30:07.750Z","6.2.0":"2018-04-27T15:52:43.283Z","6.3.0":"2018-04-27T16:29:50.437Z","6.3.1":"2018-05-02T02:14:06.395Z","6.4.0":"2018-05-03T09:59:36.354Z","6.4.1":"2018-05-05T05:50:33.901Z","6.4.2":"2018-05-05T08:26:49.429Z","6.4.3":"2018-05-05T08:45:39.138Z","6.4.4":"2018-05-05T16:31:46.805Z","6.4.5":"2018-05-06T21:00:54.315Z","6.5.0":"2018-05-08T07:14:44.427Z","6.5.1":"2018-05-08T07:58:38.424Z","6.6.0":"2018-05-08T21:24:57.281Z","6.7.0":"2018-05-08T23:21:51.677Z","6.7.1":"2018-05-08T23:55:52.694Z","6.7.2":"2018-05-09T02:46:54.829Z","6.7.3":"2018-05-09T08:08:08.405Z","6.7.4":"2018-05-12T23:29:06.405Z","6.7.5":"2018-05-13T04:25:15.927Z","6.7.6":"2018-05-13T04:58:01.305Z","6.7.7":"2018-05-13T06:09:13.661Z","6.7.8":"2018-05-13T07:01:57.185Z","6.7.9":"2018-05-14T07:54:35.570Z","6.8.0":"2018-05-14T19:28:54.567Z","6.8.1":"2018-05-21T23:31:52.725Z","6.8.2":"2018-05-22T01:59:35.989Z","6.8.3":"2018-05-23T17:32:19.132Z","6.8.4":"2018-05-24T00:35:54.336Z","6.8.5":"2018-05-26T05:47:55.372Z","6.8.6":"2018-05-27T19:21:58.286Z","6.8.7":"2018-06-08T02:27:04.871Z","6.9.0":"2018-06-08T19:22:46.989Z","6.10.0":"2018-06-09T21:11:52.634Z","6.10.1":"2018-07-13T08:47:37.402Z","6.10.2":"2018-07-14T00:29:13.572Z","6.10.3":"2018-07-15T05:30:35.502Z","6.10.4":"2018-07-27T19:11:16.804Z","6.10.5":"2018-08-03T18:49:53.690Z","6.10.6":"2018-08-03T19:20:18.733Z","6.11.0":"2018-08-27T08:13:39.292Z","6.11.1":"2018-08-27T09:10:44.449Z","6.11.2":"2018-08-27T09:28:45.040Z","6.11.3":"2018-09-12T00:52:05.800Z","6.11.4":"2019-06-18T09:03:32.491Z"},"homepage":"https://github.com/unional/komondor","repository":{"type":"git","url":"git+https://github.com/unional/komondor.git"},"author":{"name":"Homa Wong","email":"homawong@gmail.com"},"bugs":{"url":"https://github.com/unional/komondor/issues"},"license":"MIT","readmeFilename":"README.md","keywords":["boundary","boundary-testing","fixture","testing","testing-framework","testing-tools"]}