{"_id":"@remix-run/web-blob","_rev":"3140313","name":"@remix-run/web-blob","description":"Web API compatible Blob implementation","dist-tags":{"latest":"3.1.0","pre":"3.1.0-pre.0"},"maintainers":[{"name":"chancestrickland","email":""},{"name":"mjackson","email":""}],"time":{"modified":"2023-11-27T06:49:27.000Z","created":"2022-04-28T22:12:29.359Z","3.1.0":"2023-09-13T16:26:30.364Z","3.1.0-pre.0":"2023-09-01T16:53:02.607Z","3.0.5":"2023-08-01T22:12:11.980Z","3.0.4":"2022-04-28T22:12:29.359Z"},"users":{},"author":{"name":"Irakli Gozalishvili","email":"dev@gozala.io","url":"https://gozala.io"},"repository":{"type":"git","url":"git+https://github.com/remix-run/web-std-io.git"},"versions":{"3.1.0":{"name":"@remix-run/web-blob","version":"3.1.0","description":"Web API compatible Blob implementation","keywords":["blob","typed"],"type":"module","module":"./src/lib.js","main":"./dist/src/lib.node.cjs","types":"./dist/src/lib.d.ts","exports":{".":{"types":"./dist/src/lib.d.ts","browser":{"require":"./dist/src/lib.cjs","import":"./src/lib.js"},"require":"./dist/src/lib.node.cjs","import":"./src/lib.node.js"}},"dependencies":{"@remix-run/web-stream":"^1.1.0","web-encoding":"1.1.5"},"author":{"name":"Irakli Gozalishvili","email":"dev@gozala.io","url":"https://gozala.io"},"repository":{"type":"git","url":"git+https://github.com/remix-run/web-std-io.git"},"license":"MIT","devDependencies":{"@remix-run/web-fetch":"^4.4.0","@types/node":"15.0.2","git-validate":"2.2.4","husky":"^6.0.0","lint-staged":"^11.0.0","playwright-test":"^7.2.0","prettier":"^2.3.0","rimraf":"3.0.2","rollup":"2.47.0","rollup-plugin-multi-input":"1.2.0","typescript":"^4.4.4","uvu":"0.5.2"},"scripts":{"typecheck":"tsc","build":"npm run build:cjs && npm run build:types","build:cjs":"rollup --config rollup.config.js","build:types":"tsc --build","prepare":"npm run build","test:es":"uvu test all.spec.js","test:web":"playwright-test -r uvu test/web.spec.js","test:cjs":"rimraf dist && npm run build && node dist/test/all.spec.cjs","test":"npm run test:es && npm run test:web && npm run test:cjs","precommit":"lint-staged"},"lint-staged":{"*.js":["prettier --no-semi --write","git add"]},"gitHead":"e8418530bada7cbaaf224106384ce427b4341222","bugs":{"url":"https://github.com/remix-run/web-std-io/issues"},"homepage":"https://github.com/remix-run/web-std-io#readme","_id":"@remix-run/web-blob@3.1.0","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"shasum":"e0c669934c1eb6028960047e57a13ed38bbfb434","size":9811,"noattachment":false,"key":"/@remix-run/web-blob/-/@remix-run/web-blob-3.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@remix-run/web-blob/download/@remix-run/web-blob-3.1.0.tgz"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"directories":{},"maintainers":[{"name":"chancestrickland","email":""},{"name":"mjackson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-blob_3.1.0_1694622390117_0.5603446669203385"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-09-13T16:26:30.364Z","publish_time":1694622390364,"_source_registry_name":"default","_cnpm_publish_time":1694622390364},"3.1.0-pre.0":{"name":"@remix-run/web-blob","version":"3.1.0-pre.0","description":"Web API compatible Blob implementation","keywords":["blob","typed"],"type":"module","module":"./src/lib.js","main":"./dist/src/lib.node.cjs","types":"./dist/src/lib.d.ts","exports":{".":{"types":"./dist/src/lib.d.ts","browser":{"require":"./dist/src/lib.cjs","import":"./src/lib.js"},"require":"./dist/src/lib.node.cjs","import":"./src/lib.node.js"}},"dependencies":{"@remix-run/web-stream":"^1.1.0-pre.0","web-encoding":"1.1.5"},"author":{"name":"Irakli Gozalishvili","email":"dev@gozala.io","url":"https://gozala.io"},"repository":{"type":"git","url":"git+https://github.com/remix-run/web-std-io.git"},"license":"MIT","devDependencies":{"@remix-run/web-fetch":"^4.4.0-pre.0","@types/node":"15.0.2","git-validate":"2.2.4","husky":"^6.0.0","lint-staged":"^11.0.0","playwright-test":"^7.2.0","prettier":"^2.3.0","rimraf":"3.0.2","rollup":"2.47.0","rollup-plugin-multi-input":"1.2.0","typescript":"^4.4.4","uvu":"0.5.2"},"scripts":{"typecheck":"tsc","build":"npm run build:cjs && npm run build:types","build:cjs":"rollup --config rollup.config.js","build:types":"tsc --build","prepare":"npm run build","test:es":"uvu test all.spec.js","test:web":"playwright-test -r uvu test/web.spec.js","test:cjs":"rimraf dist && npm run build && node dist/test/all.spec.cjs","test":"npm run test:es && npm run test:web && npm run test:cjs","precommit":"lint-staged"},"lint-staged":{"*.js":["prettier --no-semi --write","git add"]},"readmeFilename":"Readme.md","gitHead":"e5fa79431539db79f0963cd317639a866619524e","bugs":{"url":"https://github.com/remix-run/web-std-io/issues"},"homepage":"https://github.com/remix-run/web-std-io#readme","_id":"@remix-run/web-blob@3.1.0-pre.0","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"shasum":"eae9f36e48395cf483b97becbbb71d40360d9bef","size":9815,"noattachment":false,"key":"/@remix-run/web-blob/-/@remix-run/web-blob-3.1.0-pre.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@remix-run/web-blob/download/@remix-run/web-blob-3.1.0-pre.0.tgz"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"directories":{},"maintainers":[{"name":"chancestrickland","email":""},{"name":"mjackson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-blob_3.1.0-pre.0_1693587182349_0.7414064440754224"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-09-01T16:53:02.607Z","publish_time":1693587182607,"_source_registry_name":"default","_cnpm_publish_time":1693587182607},"3.0.5":{"name":"@remix-run/web-blob","version":"3.0.5","description":"Web API compatible Blob implementation","keywords":["blob","typed"],"type":"module","module":"./src/lib.js","main":"./dist/src/lib.node.cjs","types":"./dist/src/lib.d.ts","exports":{".":{"types":"./dist/src/lib.d.ts","browser":"./src/lib.js","require":"./dist/src/lib.node.cjs","import":"./src/lib.node.js"}},"dependencies":{"@remix-run/web-stream":"^1.0.4","web-encoding":"1.1.5"},"author":{"name":"Irakli Gozalishvili","email":"dev@gozala.io","url":"https://gozala.io"},"repository":{"type":"git","url":"git+https://github.com/remix-run/web-std-io.git"},"license":"MIT","devDependencies":{"@remix-run/web-fetch":"^4.3.6","@types/node":"15.0.2","git-validate":"2.2.4","husky":"^6.0.0","lint-staged":"^11.0.0","playwright-test":"^7.2.0","prettier":"^2.3.0","rimraf":"3.0.2","rollup":"2.47.0","rollup-plugin-multi-input":"1.2.0","typescript":"^4.4.4","uvu":"0.5.2"},"scripts":{"check":"tsc --build","build":"npm run build:cjs && npm run build:types","build:cjs":"rollup --config rollup.config.js","build:types":"tsc --build","prepare":"npm run build","test:es":"uvu test all.spec.js","test:web":"playwright-test -r uvu test/web.spec.js","test:cjs":"rimraf dist && npm run build && node dist/test/all.spec.cjs","test":"npm run test:es && npm run test:web && npm run test:cjs","precommit":"lint-staged"},"lint-staged":{"*.js":["prettier --no-semi --write","git add"]},"gitHead":"4fc5047f3a54a07ffea81347ff5063b5874d3cf0","bugs":{"url":"https://github.com/remix-run/web-std-io/issues"},"homepage":"https://github.com/remix-run/web-std-io#readme","_id":"@remix-run/web-blob@3.0.5","_nodeVersion":"16.20.1","_npmVersion":"8.19.4","dist":{"shasum":"ead1d7334aafc8a8adcaea67cac8afca887e0f72","size":9798,"noattachment":false,"key":"/@remix-run/web-blob/-/@remix-run/web-blob-3.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/@remix-run/web-blob/download/@remix-run/web-blob-3.0.5.tgz"},"_npmUser":{"name":"mjackson","email":"npm@mjackson.me"},"directories":{},"maintainers":[{"name":"chancestrickland","email":""},{"name":"mjackson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-blob_3.0.5_1690927931776_0.8989188423494563"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-08-01T22:12:11.980Z","publish_time":1690927931980,"_source_registry_name":"default","_cnpm_publish_time":1690927931980},"3.0.4":{"name":"@remix-run/web-blob","version":"3.0.4","description":"Web API compatible Blob implementation","keywords":["blob","typed"],"type":"module","module":"./src/lib.js","main":"./dist/src/lib.node.cjs","types":"./dist/src/lib.d.ts","exports":{".":{"browser":"./src/lib.js","require":"./dist/src/lib.node.cjs","import":"./src/lib.node.js","types":"./dist/src/lib.d.ts"}},"dependencies":{"web-encoding":"1.1.5","@remix-run/web-stream":"^1.0.0"},"author":{"name":"Irakli Gozalishvili","email":"dev@gozala.io","url":"https://gozala.io"},"repository":{"type":"git","url":"git+https://github.com/remix-run/web-std-io.git"},"license":"MIT","devDependencies":{"@types/node":"15.0.2","@web-std/fetch":"^3.0.0","git-validate":"2.2.4","husky":"^6.0.0","lint-staged":"^11.0.0","playwright-test":"^7.2.0","prettier":"^2.3.0","rimraf":"3.0.2","rollup":"2.47.0","rollup-plugin-multi-input":"1.2.0","typescript":"^4.4.4","uvu":"0.5.2"},"scripts":{"check":"tsc --build","build":"npm run build:cjs && npm run build:types","build:cjs":"rollup --config rollup.config.js","build:types":"tsc --build","prepare":"npm run build","test:es":"uvu test all.spec.js","test:web":"playwright-test -r uvu test/web.spec.js","test:cjs":"rimraf dist && npm run build && node dist/test/all.spec.cjs","test":"npm run test:es && npm run test:web && npm run test:cjs","precommit":"lint-staged"},"lint-staged":{"*.js":["prettier --no-semi --write","git add"]},"gitHead":"acfbdba347005e9adf2c72886d4720e659dc20dc","bugs":{"url":"https://github.com/remix-run/web-std-io/issues"},"homepage":"https://github.com/remix-run/web-std-io#readme","_id":"@remix-run/web-blob@3.0.4","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"99c67b9d0fb641bd0c07d267fd218ae5aa4ae5ed","size":9814,"noattachment":false,"key":"/@remix-run/web-blob/-/@remix-run/web-blob-3.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/@remix-run/web-blob/download/@remix-run/web-blob-3.0.4.tgz"},"_npmUser":{"name":"mjackson","email":"npm@mjackson.me"},"directories":{},"maintainers":[{"name":"chancestrickland","email":""},{"name":"mjackson","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-blob_3.0.4_1651183949172_0.38990774008926876"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-28T22:13:41.414Z","publish_time":1651183949359,"_cnpm_publish_time":1651183949359}},"readme":"# @remix-run/web-blob\n\n[![ci][ci.icon]][ci.url]\n[![package][version.icon] ![downloads][downloads.icon]][package.url]\n[![styled with prettier][prettier.icon]][prettier.url]\n\nWeb API compatible [Blob][] for nodejs.\n\n## Comparison to Alternatives\n\n#### [fetch-blob][]\n\nThe reason this library exists is because [fetch-blob][] chooses to compromise\nWeb API compatibility of [`blob.stream()`][w3c blob.stream] by using nodejs\nnative [Readable][] stream. We found this to be problematic when sharing code\nacross nodejs and browser runtimes. Instead this library stays true to the\nspecification by using [ReadableStream][] implementation from [@remix-run/web-stream][]\nlibrary even if that is less convenient in nodejs context.\n\n> Note: Both node [Readable][] streams and web [ReadableStream][] implement\n> `AsyncIterable` interface and in theory either could be used with [for await][]\n> loops. In practice however major browsers do not yet ship `AsyncIterable`\n> support for [ReadableStream][]s which in our experience makes choice made by\n> [node-fetch][] impractical.\n\n[fetch-blob][] is build around node [Buffer][]s. This implementation is built\naround standard [Uint8Array][]s.\n\n[fetch-blob] chooses to use [WeakMap][]s for encapsulating private state. This\nlibrary chooses to use to use properties with names that start with `_`. While\nthose properties aren't truly private they do have better performance profile\nand make it possible to interop with this library, which we found impossible\nto do with [node-fetch][].\n\n### Usage\n\n```js\nimport { Blob } from \"@remix-run/web-blob\"\nconst blob = new Blob([\"hello\", new TextEncoder().encode(\"world\")])\nfor await (const chunk of blob.stream()) {\n  console.log(chunk)\n}\n```\n\n### Usage from Typescript\n\nThis library makes use of [typescript using JSDOC annotations][ts-jsdoc] and\nalso generates type definitions along with typed definition maps. So you should\nbe able to get all the type inference out of the box.\n\n## Install\n\n    npm install @remix-run/web-blob\n\n[ci.icon]: https://github.com/web-std/io/workflows/blob/badge.svg\n[ci.url]: https://github.com/web-std/io/actions/workflows/blob.yml\n[version.icon]: https://img.shields.io/npm/v/@remix-run/web-blob.svg\n[downloads.icon]: https://img.shields.io/npm/dm/@remix-run/web-blob.svg\n[package.url]: https://npmjs.org/package/@remix-run/web-blob\n[downloads.image]: https://img.shields.io/npm/dm/@remix-run/web-blob.svg\n[downloads.url]: https://npmjs.org/package/@remix-run/web-blob\n[prettier.icon]: https://img.shields.io/badge/styled_with-prettier-ff69b4.svg\n[prettier.url]: https://github.com/prettier/prettier\n[blob]: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob\n[fetch-blob]: https://github.com/node-fetch/fetch-blob\n[readablestream]: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n[readable]: https://nodejs.org/api/stream.html#stream_readable_streams\n[w3c blob.stream]: https://w3c.github.io/FileAPI/#dom-blob-stream\n[@remix-run/web-stream]: https://github.com/web-std/io/tree/main/stream\n[for await]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of\n[buffer]: https://nodejs.org/api/buffer.html\n[weakmap]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap\n[ts-jsdoc]: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html\n[uint8array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array\n[node-fetch]: https://github.com/node-fetch/\n","_attachments":{},"homepage":"https://github.com/remix-run/web-std-io#readme","bugs":{"url":"https://github.com/remix-run/web-std-io/issues"},"license":"MIT"}