{"_id":"stream-mime-type","_rev":"4-054ed4265e824073f6b870880d1fe84e","name":"stream-mime-type","dist-tags":{"latest":"2.0.0"},"versions":{"1.0.0":{"name":"stream-mime-type","version":"1.0.0","description":"Get the mime type of a stream","author":{"name":"Gustaf Räntilä"},"license":"MIT","bugs":{"url":"https://github.com/grantila/stream-mime-type/issues"},"homepage":"https://github.com/grantila/stream-mime-type#readme","main":"./dist/index.js","types":"./dist/index.d.ts","directories":{},"engines":{"node":">=10"},"scripts":{"build":"rimraf dist && tsc -p tsconfig.prod.json","test":"jest","cz":"git-cz"},"pre-commit":["build","test"],"repository":{"type":"git","url":"git+https://github.com/grantila/stream-mime-type.git"},"keywords":["stream","mime","content","type","mime-type","content-type"],"devDependencies":{"@types/jest":"^26.0.10","@types/mime-types":"^2.1.0","cz-conventional-changelog":"^3.1.0","jest":"^26.4.2","pre-commit":"^1.2.2","rimraf":"^3.0.1","ts-jest":"^26.3.0","ts-node":"^9.0.0","typescript":"^4.0.2"},"dependencies":{"file-type":"^16.0.1","mime-types":"^2.1.27","stream-head":"^2.0.0"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"bc58b75430c3b16e020958479ac17c60ab8bd527","_id":"stream-mime-type@1.0.0","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eIEHlt82TLFCLv1RaGAgrBdNKPbqxRmt51iIlgVyb71dxKL2aQcVfW+8vvSSMuyDecsuPZatlTAkD3T8Zsm5QA==","shasum":"4d83d942fdd9800f19254ebf38c595b820e41295","tarball":"https://registry.npmjs.org/stream-mime-type/-/stream-mime-type-1.0.0.tgz","fileCount":5,"unpackedSize":10336,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfujRbCRA9TVsSAnZWagAAj7EQAJubUzLmtZ1OTsnxt0eD\nbdKRcVszQwUpN9cNV+8IckQOFDf+Zwl2WtwliZOlfqJQ1ZyyoqquPFsL/6Db\nFCqSfdoLqBB2q0wbAbTeBiuqrv2YLmWV/4oW2SSqqTrZ6VkPD8vP2mnw8aQL\n2n2VWJ1zpU36TDZNljP8/AvZ2KbBgMumCJVHKVbtdfumvRlOXhpVwyPntcQp\n2x/53zEPLPycTp61MnoPxwxG1rNNQH9eP0RTUELLVu9ADAmx2pKe3o/f1pHQ\nH+F0I9PAiX1uHPndFUzxCw95KjBo5ZKFqhwwnW0YOBYgqLfxSJeZseOo0Zh6\nieDrAPAOud72HaZ7O+bi9NwCL8sQpK59o0h4hVDJdEA9TlwBLcoyb+k7Jew3\nYENHbKbn6gqtHgxWHq4Q+yoPTIt5m7TN2/H1e1kTqoVT2dPx1cU2/hLqzktx\njnQqERBINRUzPipRr0f5d/CEfIgVVjo8YmYLj0wTfrW+9Cca/g5nsFflB7hp\nu8gfiJdgXRnnemGvXW1cGZzJ8ccXikf3nIOS/gNWdyIQHK2JkOC9hQ/IfLv8\n6G63YEiOzgJpycqqth81rh9PJOgTizjtUVaW9yUGCb3C83zbljd259nEZC4Q\nM16JngRtVmCSaBmxLcIMKIJVTt2gyZLhWA8DdsgdpPCvp84hSFJT/MXqD8VI\nFZq3\r\n=GAvE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICgAlhjTOB6LflkNgIC8SdrCG4lCOsZxeWdKe5BsKqjLAiBqWx2jFWAE4XvyFSuAu3sVTQJq9WQ0ZF99iWHzAf3QuQ=="}]},"_npmUser":{"name":"grantila","email":"g.rantila@gmail.com"},"maintainers":[{"name":"grantila","email":"g.rantila@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stream-mime-type_1.0.0_1606038618538_0.4424724063748595"},"_hasShrinkwrap":false},"1.0.1":{"name":"stream-mime-type","version":"1.0.1","description":"Get the mime type of a stream","author":{"name":"Gustaf Räntilä"},"license":"MIT","bugs":{"url":"https://github.com/grantila/stream-mime-type/issues"},"homepage":"https://github.com/grantila/stream-mime-type#readme","main":"./dist/index.js","types":"./dist/index.d.ts","directories":{},"engines":{"node":">=10"},"scripts":{"build":"rimraf dist && tsc -p tsconfig.prod.json","test":"jest","cz":"git-cz"},"pre-commit":["build","test"],"repository":{"type":"git","url":"git+https://github.com/grantila/stream-mime-type.git"},"keywords":["stream","mime","content","type","mime-type","content-type"],"devDependencies":{"@types/jest":"^26.0.10","@types/mime-types":"^2.1.0","cz-conventional-changelog":"^3.1.0","jest":"^26.4.2","pre-commit":"^1.2.2","rimraf":"^3.0.1","ts-jest":"^26.3.0","ts-node":"^9.0.0","typescript":"^4.0.2"},"dependencies":{"file-type":"^16.0.1","mime-types":"^2.1.27","stream-head":"^2.0.0"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"864a45a19afb8b4ef6c5cbd798a3b63b3916a3e6","_id":"stream-mime-type@1.0.1","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KYiyALFxfeJyCDzwrTNPCWdthyiahmZhGmlxzl97vdMoom1nu3BdG6o4kqKIyQ1Kuyk+bEjrTgeVCWsESNXg9A==","shasum":"c1286df70807a69ab387ba19c69e834987f1ca96","tarball":"https://registry.npmjs.org/stream-mime-type/-/stream-mime-type-1.0.1.tgz","fileCount":5,"unpackedSize":11027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfukkKCRA9TVsSAnZWagAAw9UP/1ZuK1ZC8ejqYadI6h5i\nAQ7zqQg4ASC9YutHlV1IOCzBHgYY8fJB9N9fvRmI7DVUdAAMpdBOeERWxZs8\nZrgM8IaMqbj7PFlLHxQkPSpkoKHSnNzfrRzB0Ps3sXkThGo0yUqL2BSavZGW\n7wUBbEKaZd/Oi5rmB9lrpvHEk/M4lyDD81PG+yGHc74YatEXwOCWvTa6WHQF\nHyvoRhmsNqcc3r4xsVV6fmY6xz/xK/XCQlFAZieUpIwGrfLujHv7JpjbTG6J\n3IZ8suGZVmfLsQaYL/fw6diI9IbvdDQ4oAzaWaEatJV99GrLf7GqZEFB/2aI\njBxcpBq3La3KanKjVdPoDeMUNsc962kZI2pgARnI+EPDLoxcsg59m9+ax/H/\n0Ewsxl+qtyX+EnQDN+cmfjw1jKT/LOu8Nf0iaM+ZYlzIE5I2XsgkArYZw0q3\neRWmSozhUgSj1YxJ2h0E+qG0/VKtQN1Xm2Ef9C6PVHtkrZKoulvg1grv6iEx\nfgVXj7dKrqVU/8xPBpuQzQ26LPULWjyZcmP+MjIf/K9BPJYmW5UMS3IDgbjw\nuXvJF8kH+zaxxnVXkra9VOKtRKtlI259UMpOUqT6bblwinowjcVZEk6l2ka+\nByy0DXW+/Tf3H4sIjxIdFvOZGNP/zBCwE8Z15t0KhqLo/gXXzrOPRvPnNHIP\nz1SN\r\n=v5hN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDq9RUqnAsAP3PjGwArFnfjfq784KEvEq4P3d1QoqCIpAIgNVBn0Qa6a/IWuWRiIZsIUMO0IHbvn4bzf/2QDvJKuqg="}]},"_npmUser":{"name":"grantila","email":"g.rantila@gmail.com"},"maintainers":[{"name":"grantila","email":"g.rantila@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stream-mime-type_1.0.1_1606043914168_0.6600988311820128"},"_hasShrinkwrap":false},"1.0.2":{"name":"stream-mime-type","version":"1.0.2","description":"Get the mime type of a stream","author":{"name":"Gustaf Räntilä"},"license":"MIT","bugs":{"url":"https://github.com/grantila/stream-mime-type/issues"},"homepage":"https://github.com/grantila/stream-mime-type#readme","main":"./dist/index.js","types":"./dist/index.d.ts","directories":{},"engines":{"node":">=10"},"scripts":{"build":"rimraf dist && tsc -p tsconfig.prod.json","test":"jest","cz":"git-cz"},"pre-commit":["build","test"],"repository":{"type":"git","url":"git+https://github.com/grantila/stream-mime-type.git"},"keywords":["stream","mime","content","type","mime-type","content-type"],"devDependencies":{"@types/jest":"^26.0.10","@types/mime-types":"^2.1.0","cz-conventional-changelog":"^3.1.0","jest":"^26.4.2","pre-commit":"^1.2.2","rimraf":"^3.0.1","ts-jest":"^26.3.0","ts-node":"^9.0.0","typescript":"^4.0.2"},"dependencies":{"file-type":"^16.0.1","mime-types":"^2.1.27","stream-head":"^2.0.1"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"21008788ca70e3acb2520423aaef69b8f9b2dd2d","_id":"stream-mime-type@1.0.2","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-80GzRn7JICPDEPBhSyqJjbztqX66+3DpkuUUcgDHtRBQlZRTkbCz0BsISggUl7AnyinJk9zyHVnd2lftlZXDdg==","shasum":"32dfe256f6efb5955d6470197c17de6a1f278d08","tarball":"https://registry.npmjs.org/stream-mime-type/-/stream-mime-type-1.0.2.tgz","fileCount":5,"unpackedSize":11066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu/41CRA9TVsSAnZWagAAyxYP/0dkBo8pBR4xUIM2vw7U\n+P3PlY2c1KJ7XLLHtuaFTCJrMjNVUOwlwPHb3hEQmxHVpRcq9xEbd/u2ZW1a\nZZn9pJgSiJZVXR33DqyhXBQJ+9AvQtNXfX6Gu3mcLAttQnXTQjIvlt9Mrcyi\nSYinVXqYnyq2dtjtdXv50TkEcJPA+jpkQIyPq8uWd69ykaEgT5xPXVi47Qhf\n85/bh8nCY2a7H91OU/hz85bTHSHO+bAFIKXqwUxc7HansnbUn4/7w+uA/9xC\nXUI15F3aWb1zlFyM0+4GUPdah5yB22GU+V5eR3kovN7JwzsNxAUla3GuHARW\n64EtiVJN5zs9qN7Bvt0OMt5tfw6j94byX8UgVuCAPHkP0Cx6ENPE6ojV7DqP\nczVSQGo/FeJNu5L8igDPaV9JN1ZC3/iaBlDgKnniTfaSVKlHOQ0s/htDEv0v\nAVoiLnacCk6QqJB0WQFVIOSnl1439ZwOH33vV4uHudSW2voQoFNxq+YJJqLT\nNmwpoTTctok177jBxaB/IhyBZzPRUpBA7xtCPB6U35dZpqaEK4Ex4/5E8oeL\nP8MzyTpXiy+7lPVitSvFb+N89kkcmdaH06DnQnNSegzgnjaXnxuUOEpTveZp\ncEYYaty5kDx2Nfa+JF/yfjB5YHumM0N7vhRKIuUeH95efTjxn4I1YzC1RfTx\n/fdo\r\n=0wcN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC7LBckqgsNYIhEqHgKBKTH+mhh4+SI+4Ymf5g74d5zBAiAfenbJXNXhao8lniM60mbBu4sIlSs3aaIaCAHGgzRzgA=="}]},"_npmUser":{"name":"grantila","email":"g.rantila@gmail.com"},"maintainers":[{"name":"grantila","email":"g.rantila@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stream-mime-type_1.0.2_1606155829134_0.660547758450071"},"_hasShrinkwrap":false},"2.0.0":{"name":"stream-mime-type","version":"2.0.0","description":"Get the mime type of a stream","author":{"name":"Gustaf Räntilä"},"license":"MIT","bugs":{"url":"https://github.com/grantila/stream-mime-type/issues"},"homepage":"https://github.com/grantila/stream-mime-type#readme","type":"module","sideEffects":false,"types":"./dist/index.d.ts","main":"./dist/index.js","engines":{"node":">=14.13.1"},"scripts":{"build":"rimraf dist && tsc -p tsconfig.prod.json","test":"NODE_OPTIONS=--experimental-vm-modules jest","cz":"git-cz"},"pre-commit":["build","test"],"repository":{"type":"git","url":"git+https://github.com/grantila/stream-mime-type.git"},"keywords":["stream","mime","content","type","mime-type","content-type"],"devDependencies":{"@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@types/jest":"^29.4.0","@types/mime-types":"^2.1.1","cz-conventional-changelog":"^3.3.0","jest":"^29.4.1","pre-commit":"^1.2.2","rimraf":"^4.1.2","ts-jest-resolver":"^2.0.0","ts-node":"^10.9.1","typescript":"^4.9.5"},"dependencies":{"file-type":"^18.2.0","mime-types":"^2.1.35","stream-head":"^3.0.0"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"packageManager":"yarn@3.2.4","gitHead":"e051177193f73f4198c58e0a883692dcc05fc7b6","_id":"stream-mime-type@2.0.0","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-JKka2v3YRBr0P2nWeJIWTBtMhYO1CHQp/TecKuSdz6+33Tm5Z5xH2raLalkVrRYloHa3FZKAe7DCVAQeRPYUGQ==","shasum":"584aeeea2f45bd1a732d8bd248f8bcfba1130bad","tarball":"https://registry.npmjs.org/stream-mime-type/-/stream-mime-type-2.0.0.tgz","fileCount":5,"unpackedSize":9769,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFUVe0M86GhdbLQkxcu418fHXzmPDEyFRC9LwxHPMGPVAiEAohH1zfD+7Jf09gHjHqgH+qR5geseFGGQxAM5S9eb/1s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4plfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmppUg//aTVONvMHyOFAUGoxPyWl++3Yu7iO8g5ToFAchTZfWuUcCru7\r\n51eXHgbYgInX7YhZ4Lu+pLvAsy1MbnlCZNmCkofu5BPCCGudgdjii5Kjb/hP\r\ncYUTSNzKxEgQpmz+zkZcnzJmym1E8J2N6wO/MJfHzZW5Bqg48m0VnreqeVQY\r\nqiiIfHCDDCXFi2xxNFfZJ9m7zHhBc3he3THy4O4Lk0fnv4ehQEayJ0GMiB0e\r\nUcAMYpp82ACmcNczRoV4bi4CVknt/KasHQH4iRjPNE1nOrPrvTLiwc9NLTGE\r\nrEjbsEKqC1HZ8SkdCNFZDpKvmcd2cDJcLjbNBcN0+cIIAUOEF6ysap7XRknA\r\nO6yzb+GiONUWO8WkFeM0IqHnAWcjB5ZOG8LKcX6ccFmqcrnHrcfMfjs3qdXD\r\n6xzL35AQEgQfX9WIES8pbXNiMLzVcyk43A1I4v06BFzHPX+T54ipzy27AvMB\r\nrbf99dcqBFi0IEhKCzb4XO88ScADbL06gMGUtvIgOiPtS9p9+oKrLKOXccUb\r\nASG2+svUfZJQtlLILT0fZIoLA0NnpZrycSfW7tT8NBclUcd0eYrkFxm+Aufj\r\nOHkcJGJYIhXWYwUN6ROfvdGcCfmOD8hybV7no/mxYRlm0EFNYgLZstUWve99\r\nKFE0b/G/Wc8pE8bPk9s3h6BCWMmihhwClw8=\r\n=DPqI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"grantila","email":"g.rantila@gmail.com"},"directories":{},"maintainers":[{"name":"grantila","email":"g.rantila@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stream-mime-type_2.0.0_1675794783583_0.1369822826182534"},"_hasShrinkwrap":false}},"time":{"created":"2020-11-22T09:50:18.538Z","1.0.0":"2020-11-22T09:50:18.699Z","modified":"2023-02-07T18:33:03.829Z","1.0.1":"2020-11-22T11:18:34.300Z","1.0.2":"2020-11-23T18:23:49.301Z","2.0.0":"2023-02-07T18:33:03.722Z"},"maintainers":[{"name":"grantila","email":"g.rantila@gmail.com"}],"description":"Get the mime type of a stream","homepage":"https://github.com/grantila/stream-mime-type#readme","keywords":["stream","mime","content","type","mime-type","content-type"],"repository":{"type":"git","url":"git+https://github.com/grantila/stream-mime-type.git"},"author":{"name":"Gustaf Räntilä"},"bugs":{"url":"https://github.com/grantila/stream-mime-type/issues"},"license":"MIT","readme":"[![npm version][npm-image]][npm-url]\n[![downloads][downloads-image]][npm-url]\n[![build status][build-image]][build-url]\n[![coverage status][coverage-image]][coverage-url]\n\n\n# stream-mime-type\n\nGet the mime type of a stream by inspecting its header. The stream is being consumed, but a new readable stream is returned together with the mime type.\n\nSupports both [Node.js ReadableStream](https://nodejs.org/api/stream.html) (of Buffers, not *object-mode*) and [Streams API ReadableStream](https://developer.mozilla.org/docs/Web/API/Streams_API) of [typed arrays](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) (such as e.g. [Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)), [ArrayBuffers](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) or [DataViews](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/DataView).\n\nThe first couple of kilobytes are necessary to deduce the filetype. After that, the returned promise is resolved with a new stream (from the beginning of the input stream) and the mime type.\n\nIt also supports buffers (of type `Uint8Array`, such as [Node.js Buffers](https://nodejs.org/api/buffer.html)) and file descriptors instead of streams.\n\n\n## Versions\n\nFrom v2:\n * This package is a pure ESM, no CommonJS support\n\n\n# Usage\n\n`getMimeType` takes either a number (file descriptor), a buffer (`Uint8Array`) or a readable stream as first argument. The returned promise contains the mime type and a new readable stream (if the input was a stream) for further streaming, on the form:\n\n```ts\ninterface ReturnType {\n    stream: ReadableStream; // If the input was a stream, otherwise undefined\n    mime: string;\n}\n```\n\nTo aid finding the mime-type if it is unclear given the *content* of the stream (or buffer or file descriptor), a filename can be provided, in which case a mime-type can be deduced as a fallback.\n\n\n## API\n\n```ts\ngetMimeType( stream | buffer | fd, opts? ): Promise<ReturnType>;\n```\n\n\n## Stream example\n\n```ts\nimport { getMimeType } from 'stream-mime-type'\n\nlet inStream: NodeJS.ReadableStream; // Get from somewhere\nconst { stream, mime } = await getMimeType( inStream );\n\nconsole.log(mime); // e.g. 'image/png'\nstream.pipe(outStream); // Keep streaming\n```\n\n\n## Buffer example\n\n```ts\nimport { readFileSync } from 'fs'\nimport { getMimeType } from 'stream-mime-type'\n\nconst imageBuffer = readFileSync(\"file.png\", null); // Returns a Buffer\nconst { mime } = await getMimeType( imageBuffer, { filename: \"file.png\" } );\n\nconsole.log(mime); // 'image/png'\n```\n\n\n## File descriptor\n\n```ts\nimport { openSync } from 'fs'\nimport { getMimeType } from 'stream-mime-type'\n\nconst fd = openSync(\"file.png\", \"r\");\nconst { mime } = await getMimeType( fd, { filename: \"file.png\" } );\n\nconsole.log(mime); // 'image/png'\n```\n\n\n## Options\n\nThe second argument to `getMimeType` is an options object on the format:\n\n```ts\ninterface GetMimeTypeOptions {\n    strict?: boolean;\n    filename?: string;\n}\n```\n\nThe `filename` can provide a hint to the content type if it's not found by the file contents.\n\nThe `strict` can be set to `true` (defaults to `false`) in which case the result will not fallback to `application/octet-stream` if no other mime type was found. The return value will be `undefined` instead.\n\n\n\n[npm-image]: https://img.shields.io/npm/v/stream-mime-type.svg\n[npm-url]: https://npmjs.org/package/stream-mime-type\n[downloads-image]: https://img.shields.io/npm/dm/stream-mime-type.svg\n[build-image]: https://img.shields.io/github/actions/workflow/status/grantila/stream-mime-type/master.yml?branch=master\n[build-url]: https://github.com/grantila/stream-mime-type/actions?query=workflow%3AMaster\n[coverage-image]: https://coveralls.io/repos/github/grantila/stream-mime-type/badge.svg?branch=master\n[coverage-url]: https://coveralls.io/github/grantila/stream-mime-type?branch=master\n","readmeFilename":"README.md"}