{"_id":"it-goodbye","_rev":"4664784","name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","dist-tags":{"latest":"4.0.6"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"time":{"modified":"2026-04-10T22:32:54.000Z","created":"2019-04-02T08:33:23.098Z","4.0.6":"2023-12-28T09:34:28.160Z","4.0.5":"2023-12-28T09:21:19.335Z","4.0.4":"2023-12-28T08:37:35.867Z","4.0.3":"2023-12-28T08:31:00.249Z","4.0.2":"2023-08-14T06:31:31.207Z","4.0.1":"2022-01-13T16:56:59.688Z","4.0.0":"2022-01-12T10:54:53.760Z","3.0.0":"2021-04-01T14:31:28.127Z","2.0.2":"2020-07-03T21:49:51.461Z","2.0.1":"2019-04-23T09:13:18.562Z","2.0.0":"2019-04-03T08:31:24.634Z","1.0.0":"2019-04-02T08:33:23.098Z"},"users":{},"author":{"name":"Alan Shaw"},"repository":{"type":"git","url":"git+https://github.com/alanshaw/it-goodbye.git"},"versions":{"4.0.6":{"name":"it-goodbye","version":"4.0.6","description":"Add a goodbye handshake to a duplex async iterable","author":{"name":"Alan Shaw"},"license":"Apache-2.0 OR MIT","homepage":"https://github.com/alanshaw/it-goodbye#readme","repository":{"type":"git","url":"git+https://github.com/alanshaw/it-goodbye.git"},"bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"publishConfig":{"access":"public","provenance":true},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"project":true,"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check -i buffer","build":"tsc","pretest":"npm run build","test":"aegir test -f ./dist/test","test:chrome":"npm run test -- -t browser --cov","test:chrome-webworker":"npm run test -- -t webworker","test:firefox":"npm run test -- -t browser -- --browser firefox","test:firefox-webworker":"npm run test -- -t webworker -- --browser firefox","test:node":"npm run test -- -t node --cov","test:electron-main":"npm run test -- -t electron-main","release":"semantic-release","docs":"aegir docs"},"dependencies":{"it-stream-types":"^2.0.1","uint8arrays":"^5.0.1"},"devDependencies":{"aegir":"^41.3.2","async-iterator-to-pull-stream":"^1.3.0","buffer":"^6.0.3","it-all":"^3.0.4","it-filter":"^3.0.4","it-pipe":"^3.0.1","muxrpc":"^8.0.0","pull-stream":"^3.6.9"},"_id":"it-goodbye@4.0.6","gitHead":"15ec7dc45e022ea72c3a0f8d7b2d4e936590091c","_nodeVersion":"20.10.0","_npmVersion":"9.9.2","dist":{"shasum":"4801b4fc0473044e4aa46bdd8a3358bd905e9a0d","size":4531,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-4.0.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-4.0.6.tgz"},"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_4.0.6_1703756068008_0.4831180794683092"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-12-28T09:34:28.160Z","publish_time":1703756068160,"_source_registry_name":"default","_cnpm_publish_time":1703756068160},"4.0.5":{"name":"it-goodbye","version":"4.0.5","description":"Add a goodbye handshake to a duplex async iterable","author":{"name":"Alan Shaw"},"license":"Apache-2.0 OR MIT","homepage":"https://github.com/alanshaw/it-goodbye#readme","repository":{"type":"git","url":"git+https://github.com/alanshaw/it-goodbye.git"},"bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"publishConfig":{"access":"public","provenance":true},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"project":true,"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check -i buffer","build":"tsc","pretest":"npm run build","test":"aegir test -f ./dist/test","test:chrome":"npm run test -- -t browser --cov","test:chrome-webworker":"npm run test -- -t webworker","test:firefox":"npm run test -- -t browser -- --browser firefox","test:firefox-webworker":"npm run test -- -t webworker -- --browser firefox","test:node":"npm run test -- -t node --cov","test:electron-main":"npm run test -- -t electron-main","release":"semantic-release","docs":"aegir docs"},"dependencies":{"it-stream-types":"^2.0.1","uint8arrays":"^5.0.1"},"devDependencies":{"aegir":"^41.3.2","async-iterator-to-pull-stream":"^1.3.0","buffer":"^6.0.3","it-all":"^3.0.4","it-filter":"^3.0.4","it-pipe":"^3.0.1","muxrpc":"^6.4.2","pull-stream":"^3.6.9"},"_id":"it-goodbye@4.0.5","gitHead":"619f32fbfe57b1d513943cfe588e90cbd909f89b","_nodeVersion":"20.10.0","_npmVersion":"9.9.2","dist":{"shasum":"7ee7277631adac69b8ec5d2ebf726dff0f5e2a0e","size":4530,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-4.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-4.0.5.tgz"},"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_4.0.5_1703755279167_0.44986266406808073"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-12-28T09:21:19.335Z","publish_time":1703755279335,"_source_registry_name":"default","_cnpm_publish_time":1703755279335},"4.0.4":{"name":"it-goodbye","version":"4.0.4","description":"Add a goodbye handshake to a duplex async iterable","author":{"name":"Alan Shaw"},"license":"Apache-2.0 OR MIT","homepage":"https://github.com/alanshaw/it-goodbye#readme","repository":{"type":"git","url":"git+https://github.com/alanshaw/it-goodbye.git"},"bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"publishConfig":{"access":"public","provenance":true},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"project":true,"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check -i buffer","build":"tsc","pretest":"npm run build","test":"aegir test -f ./dist/test","test:chrome":"npm run test -- -t browser --cov","test:chrome-webworker":"npm run test -- -t webworker","test:firefox":"npm run test -- -t browser -- --browser firefox","test:firefox-webworker":"npm run test -- -t webworker -- --browser firefox","test:node":"npm run test -- -t node --cov","test:electron-main":"npm run test -- -t electron-main","release":"semantic-release","docs":"aegir docs"},"dependencies":{"it-stream-types":"^1.0.3","uint8arrays":"^5.0.1"},"devDependencies":{"aegir":"^41.3.2","async-iterator-to-pull-stream":"^1.3.0","buffer":"^6.0.3","it-all":"^3.0.4","it-filter":"^3.0.4","it-pipe":"^3.0.1","muxrpc":"^6.4.2","pull-stream":"^3.6.9"},"_id":"it-goodbye@4.0.4","gitHead":"0ebbb8f45b25a52a75a16dadc67e95d8fb88784d","_nodeVersion":"20.10.0","_npmVersion":"9.9.2","dist":{"shasum":"bc545d60f45947759d92ccd7ece33f0af2042759","size":4511,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-4.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-4.0.4.tgz"},"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_4.0.4_1703752655692_0.5752069274187064"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-12-28T08:37:35.867Z","publish_time":1703752655867,"_source_registry_name":"default","_cnpm_publish_time":1703752655867},"4.0.3":{"name":"it-goodbye","version":"4.0.3","description":"Add a goodbye handshake to a duplex async iterable","author":{"name":"Alan Shaw"},"license":"Apache-2.0 OR MIT","homepage":"https://github.com/alanshaw/it-goodbye#readme","repository":{"type":"git","url":"git+https://github.com/alanshaw/it-goodbye.git"},"bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"publishConfig":{"access":"public","provenance":true},"type":"module","types":"./dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"project":true,"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"type":"deps","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Documentation"},{"type":"deps","section":"Dependencies"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check -i buffer","build":"tsc","pretest":"npm run build","test":"aegir test -f ./dist/test","test:chrome":"npm run test -- -t browser --cov","test:chrome-webworker":"npm run test -- -t webworker","test:firefox":"npm run test -- -t browser -- --browser firefox","test:firefox-webworker":"npm run test -- -t webworker -- --browser firefox","test:node":"npm run test -- -t node --cov","test:electron-main":"npm run test -- -t electron-main","release":"semantic-release","docs":"aegir docs"},"dependencies":{"it-stream-types":"^1.0.3","uint8arrays":"^5.0.1"},"devDependencies":{"aegir":"^41.3.2","async-iterator-to-pull-stream":"^1.3.0","buffer":"^6.0.3","it-all":"^1.0.6","it-filter":"^3.0.4","it-pipe":"^2.0.0","muxrpc":"^6.4.2","pull-stream":"^3.6.9"},"_id":"it-goodbye@4.0.3","gitHead":"e0babcefe3260b2f2c686b6ca893a01572acc1be","_nodeVersion":"20.10.0","_npmVersion":"9.9.2","dist":{"shasum":"496e60ef8cafc5fefa850d33c9d1e34a0f2feb81","size":4513,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-4.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-4.0.3.tgz"},"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_4.0.3_1703752259984_0.6125213233104714"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-12-28T08:31:00.249Z","publish_time":1703752260249,"_source_registry_name":"default","_cnpm_publish_time":1703752260249},"4.0.2":{"name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","version":"4.0.2","type":"module","types":"./dist/src/index.d.ts","exports":{".":{"import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check dist/src/**/*.js dist/test/**/*.js","build":"tsc","pretest":"npm run build","test":"aegir test -f ./dist/test","test:chrome":"npm run test -- -t browser --cov","test:chrome-webworker":"npm run test -- -t webworker","test:firefox":"npm run test -- -t browser -- --browser firefox","test:firefox-webworker":"npm run test -- -t webworker -- --browser firefox","test:node":"npm run test -- -t node --cov","test:electron-main":"npm run test -- -t electron-main","release":"semantic-release"},"homepage":"https://github.com/alanshaw/it-goodbye","repository":{"type":"git","url":"git://github.com/alanshaw/it-goodbye.git"},"dependencies":{"it-stream-types":"^1.0.3","uint8arrays":"^3.0.0"},"devDependencies":{"aegir":"^36.1.3","async-iterator-to-pull-stream":"^1.3.0","buffer":"^6.0.3","it-all":"^1.0.6","it-filter":"^1.0.3","it-pipe":"^2.0.0","muxrpc":"^6.4.2","pull-stream":"^3.6.9"},"author":{"name":"Alan Shaw"},"license":"MIT","gitHead":"d5b0f5ab78a16f8aded87a7e4a48e219a6ac04de","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"_id":"it-goodbye@4.0.2","_nodeVersion":"18.17.0","_npmVersion":"7.24.2","dist":{"shasum":"3fd1eca2e0a29f7e0ff8bb99fe3d973a898b55d9","size":4522,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-4.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-4.0.2.tgz"},"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_4.0.2_1691994690974_0.12393341725262341"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-08-14T06:31:31.207Z","publish_time":1691994691207,"_source_registry_name":"default","_cnpm_publish_time":1691994691207},"4.0.1":{"name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","version":"4.0.1","type":"module","types":"./dist/src/index.d.ts","exports":{".":{"import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check dist/src/**/*.js dist/test/**/*.js","build":"tsc","pretest":"npm run build","test":"aegir test -f ./dist/test","test:chrome":"npm run test -- -t browser --cov","test:chrome-webworker":"npm run test -- -t webworker","test:firefox":"npm run test -- -t browser -- --browser firefox","test:firefox-webworker":"npm run test -- -t webworker -- --browser firefox","test:node":"npm run test -- -t node --cov","test:electron-main":"npm run test -- -t electron-main","release":"semantic-release"},"homepage":"https://github.com/alanshaw/it-goodbye","repository":{"type":"git","url":"git://github.com/alanshaw/it-goodbye.git"},"dependencies":{"it-stream-types":"^1.0.3","uint8arrays":"^3.0.0"},"devDependencies":{"aegir":"^36.1.3","async-iterator-to-pull-stream":"^1.3.0","buffer":"^6.0.3","it-all":"^1.0.6","it-filter":"^1.0.3","it-pipe":"^2.0.0","muxrpc":"^6.4.2","pull-stream":"^3.6.9"},"author":{"name":"Alan Shaw"},"license":"MIT","gitHead":"0e96af2752139d3a47f19a80ab34e9e1649f9bb8","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"_id":"it-goodbye@4.0.1","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"shasum":"ef11b2554b2eadfee57c1034a28ad1f8ad5f53f0","size":4521,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-4.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-4.0.1.tgz"},"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_4.0.1_1642093019522_0.5917156703596405"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-01-13T16:57:08.257Z","publish_time":1642093019688,"_cnpm_publish_time":1642093019688},"4.0.0":{"name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","version":"4.0.0","type":"module","types":"./dist/src/index.d.ts","exports":{".":{"import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog","@semantic-release/npm","@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check dist/src/**/*.js dist/test/**/*.js","build":"tsc","pretest":"npm run build","test":"aegir test -f ./dist/test","test:chrome":"npm run test -- -t browser","test:chrome-webworker":"npm run test -- -t webworker","test:firefox":"npm run test -- -t browser -- --browser firefox","test:firefox-webworker":"npm run test -- -t webworker -- --browser firefox","test:node":"npm run test -- -t node --cov","test:electron-main":"npm run test -- -t electron-main","release":"semantic-release"},"homepage":"https://github.com/alanshaw/it-goodbye","repository":{"type":"git","url":"git://github.com/alanshaw/it-goodbye.git"},"dependencies":{"it-stream-types":"^1.0.3","uint8arrays":"^3.0.0"},"devDependencies":{"aegir":"^36.1.3","async-iterator-to-pull-stream":"^1.3.0","buffer":"^6.0.3","it-all":"^1.0.6","it-filter":"^1.0.3","it-pipe":"^2.0.0","muxrpc":"^6.4.2","pull-stream":"^3.6.9","streaming-iterables":"^6.0.0"},"author":{"name":"Alan Shaw"},"license":"MIT","gitHead":"205cf6e461827a153cea62edd2c83679aa18ac31","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"_id":"it-goodbye@4.0.0","_nodeVersion":"16.13.1","_npmVersion":"7.24.2","dist":{"shasum":"73324bb6b842584a8b13732e5011f73e5385ee63","size":4500,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-4.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-4.0.0.tgz"},"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_4.0.0_1641984893617_0.9815730715188078"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-01-12T10:55:00.316Z","publish_time":1641984893760,"_cnpm_publish_time":1641984893760},"3.0.0":{"name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","version":"3.0.0","homepage":"https://github.com/alanshaw/it-goodbye","repository":{"type":"git","url":"git://github.com/alanshaw/it-goodbye.git"},"dependencies":{"buffer":"^6.0.3"},"devDependencies":{"async-iterator-to-pull-stream":"^1.3.0","muxrpc":"^6.4.2","pull-stream":"^3.6.9","streaming-iterables":"^5.0.4","tape":"^5.2.2"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done","lint":"standard"},"author":{"name":"Alan Shaw"},"license":"MIT","gitHead":"d1f3977b95f21bc1ffb8552f994278972802c690","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"_id":"it-goodbye@3.0.0","_nodeVersion":"15.12.0","_npmVersion":"7.6.3","dist":{"shasum":"14c8f7e8f692a6b2a0955b285853860eb9ab1bff","size":3140,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-3.0.0.tgz"},"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_3.0.0_1617287487988_0.16506582551969795"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-25T06:58:38.464Z","publish_time":1617287488127,"_cnpm_publish_time":1617287488127},"2.0.2":{"name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","version":"2.0.2","homepage":"https://github.com/alanshaw/it-goodbye","repository":{"type":"git","url":"git://github.com/alanshaw/it-goodbye.git"},"dependencies":{"buffer":"^5.6.0"},"devDependencies":{"async-iterator-to-pull-stream":"^1.3.0","muxrpc":"^6.4.2","pull-stream":"^3.6.9","streaming-iterables":"^4.0.2","tape":"^4.6.3"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done","lint":"standard"},"author":{"name":"Alan Shaw"},"license":"MIT","gitHead":"237ac649298ae68189fedabccdcb82b69cc208cc","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"_id":"it-goodbye@2.0.2","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"shasum":"b18de8f2eac4506e8a7aca62f70ca0cb3b64b97a","size":3142,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-2.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-2.0.2.tgz"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_2.0.2_1593812991325_0.9774976067010075"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-25T06:58:37.539Z","publish_time":1593812991461,"_cnpm_publish_time":1593812991461},"2.0.1":{"name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","version":"2.0.1","homepage":"https://github.com/alanshaw/it-goodbye","repository":{"type":"git","url":"git://github.com/alanshaw/it-goodbye.git"},"dependencies":{},"devDependencies":{"async-iterator-to-pull-stream":"^1.3.0","muxrpc":"^6.4.2","pull-stream":"^3.6.9","streaming-iterables":"^4.0.2","tape":"^4.6.3"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done","lint":"standard"},"author":{"name":"Alan Shaw"},"license":"MIT","gitHead":"251361d1e3ac91e87ec2316d26f0842e7c8c48c2","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"_id":"it-goodbye@2.0.1","_nodeVersion":"11.14.0","_npmVersion":"6.7.0","_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"dist":{"shasum":"c8e5c810050eaf0a39bdf5343947dea768d833b0","size":3128,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-2.0.1.tgz"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_2.0.1_1556010798374_0.4781183822120223"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-25T06:58:37.448Z","publish_time":1556010798562,"_cnpm_publish_time":1556010798562},"2.0.0":{"name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","version":"2.0.0","homepage":"https://github.com/alanshaw/it-goodbye","repository":{"type":"git","url":"git://github.com/alanshaw/it-goodbye.git"},"dependencies":{},"devDependencies":{"async-iterator-to-pull-stream":"^1.3.0","muxrpc":"^2.1.0","pull-stream":"^3.6.9","streaming-iterables":"^4.0.2","tape":"^4.6.3"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Alan Shaw"},"license":"MIT","gitHead":"30e64721a90cee2de6d86b8cd9a3223c6ec6a666","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"_id":"it-goodbye@2.0.0","_nodeVersion":"11.11.0","_npmVersion":"6.7.0","_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"dist":{"shasum":"48afddf06d6d11bc6bdca78c5a1bf7ba1586627c","size":2834,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-2.0.0.tgz"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_2.0.0_1554280284508_0.17369903165839573"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-25T06:58:36.543Z","publish_time":1554280284634,"_cnpm_publish_time":1554280284634},"1.0.0":{"name":"it-goodbye","description":"Add a goodbye handshake to a duplex async iterable","version":"1.0.0","homepage":"https://github.com/alanshaw/it-goodbye","repository":{"type":"git","url":"git://github.com/alanshaw/it-goodbye.git"},"dependencies":{},"devDependencies":{"async-iterator-to-pull-stream":"^1.3.0","muxrpc":"^2.1.0","pull-stream":"^3.6.9","streaming-iterables":"^4.0.2","tape":"^4.6.3"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Alan Shaw"},"license":"MIT","gitHead":"a4ee9001d9f72a0c948bf166ee0fa52e05d4ea96","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"_id":"it-goodbye@1.0.0","_nodeVersion":"11.11.0","_npmVersion":"6.7.0","_npmUser":{"name":"alanshaw","email":"alan138@gmail.com"},"dist":{"shasum":"acd591d190d7f0ec40b6fd2a72d51ed17b6d06ca","size":2772,"noattachment":false,"key":"/it-goodbye/-/it-goodbye-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/it-goodbye/download/it-goodbye-1.0.0.tgz"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"alanshaw","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/it-goodbye_1.0.0_1554194002982_0.6592997434563543"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2021-12-25T06:58:35.619Z","publish_time":1554194003098,"_cnpm_publish_time":1554194003098}},"readme":"# it-goodbye\n\n[![codecov](https://img.shields.io/codecov/c/github/alanshaw/it-goodbye.svg?style=flat-square)](https://codecov.io/gh/alanshaw/it-goodbye)\n[![CI](https://img.shields.io/github/actions/workflow/status/alanshaw/it-goodbye/js-test-and-release.yml?branch=master\\&style=flat-square)](https://github.com/alanshaw/it-goodbye/actions/workflows/js-test-and-release.yml?query=branch%3Amaster)\n\n> Add a goodbye handshake to a duplex async iterable\n\n# About\n\nAdd a goodbye handshake to a [duplex async iterable](https://gist.github.com/alanshaw/591dc7dd54e4f99338a347ef568d6ee9#duplex-it).\n\nIn a uniplex stream, the end event signifies the end of the stream. But a duplex stream, it's a little more complicated - there are two paired streams that may end independently.\n\nnode's net module has an [allowHalfOpen](http://nodejs.org/api/net.html#net_new_net_socket_options) mode, but support for this method is patchy - more often, by default duplex streams are like a telephone - when one side hangs up, both streams are terminated. Humans deal with this problem by moving stream termination into the \"application\" layer - it's polite to say \"goodbye\", and to wait to receive \"goodbye\" before call termination.\n\n## Example\n\nGiven another duplex stream, wrap it with `it-goodbye`.\n\n`goodbye(stream, goodbye_message)` takes a duplex stream and a message (by default, the string `\"GOODBYE\"`), this must be encodable whatever codec the stream uses. The codec should probably be applied outside of `it-goodbye`.\n\n```TypeScript\nimport { goodbye } from 'it-goodbye'\n\n// a duplex stream from somewhere...\nvar duplex = whatever.createStream()\n\nreturn goodbye(duplex, 'GoodBye')\n```\n\n# Install\n\n```console\n$ npm i it-goodbye\n```\n\n## Browser `<script>` tag\n\nLoading this module through a script tag will make it's exports available as `ItGoodbye` in the global namespace.\n\n```html\n<script src=\"https://unpkg.com/it-goodbye/dist/index.min.js\"></script>\n```\n\n# API Docs\n\n- <https://alanshaw.github.io/it-goodbye>\n\n# License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)\n- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)\n\n# Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","_attachments":{},"homepage":"https://github.com/alanshaw/it-goodbye#readme","bugs":{"url":"https://github.com/alanshaw/it-goodbye/issues"},"license":"Apache-2.0 OR MIT"}