-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: remove node buffers from runtime code #66
Conversation
Node `Buffers` are subclasses of `Uint8Array` and we don't use any `Buffer`-specific functions, so do not demand `Buffer`s where `Uint8Array`s will do. `Buffer`s are still used in the tests because the `Buffer` requirement needs pull out of (at least) the `cids` and `multihash` modules first.
db3dcd1
to
9243bc5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Provided feedback, used emojys are read as:
🚨 - Please address this
📝 - Just a note
📎 - Nitpicking (Feel free to disregard)
@@ -185,7 +185,7 @@ for await (const chunk of entry.content({ | |||
} | |||
|
|||
// `data` contains the first 5 bytes of the file | |||
const data = Buffer.concat(bufs) | |||
const data = new Uint8Array(bufs) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm afraid this is incorrect:
[...new Uint8Array([ new Uint8Array([1, 2, 3]), new Uint8Array([4, 5]) ])] // [0, 0]
It's probably best to change line 184 to bufs.push(...chunk)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've updated it to use Unit8Array.set
instead.
packages/ipfs-unixfs-exporter/src/utils/extract-data-from-block.js
Outdated
Show resolved
Hide resolved
@@ -36,15 +36,16 @@ | |||
"homepage": "https://github.com/ipfs/js-ipfs-unixfs#readme", | |||
"devDependencies": { | |||
"abort-controller": "^3.0.0", | |||
"aegir": "^22.0.0", | |||
"aegir": "^25.0.0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📝 Probably this package needs major version bump because output is not backwards compatible.
packages/ipfs-unixfs-exporter/src/utils/extract-data-from-block.js
Outdated
Show resolved
Hide resolved
Follow up to #66 that removes node Buffers from the tests and uses version of protons that returns uint8arrays.
Follow up to #66 that removes node Buffers from the tests and uses version of protons that returns uint8arrays. BREAKING CHANGES: - All use of node Buffers have been replaced with Uint8Arrays - CIDs exported by this module have breaking API changes, see: multiformats/js-cid#117
## ipfs-unixfs-v1.0.0 (2022-04-26) ### ⚠ BREAKING CHANGES * ./src/dir-sharded is not in the exports map so cannot be imported Co-authored-by: Alex Potsides <alex@achingbrain.net> * uses new multiformats stack and takes a blockservice instead of the block api Co-authored-by: Rod Vagg <rod@vagg.org> Co-authored-by: achingbrain <alex@achingbrain.net> * switches to named exports * types are now included with all unixfs modules * does not convert input to node Buffers any more, uses Uint8Arrays instead ### Features * add types ([#114](#114)) ([ca26353](ca26353)) ### Bug Fixes * add pbjs namespace ([#145](#145)) ([dd26b92](dd26b92)) * declare types in .ts files ([#168](#168)) ([76ec6e5](76ec6e5)) * ignore high mode bits passed to constructor ([#53](#53)) ([8e8d83d](8e8d83d)) * ignore undefined values in options ([#173](#173)) ([200dff3](200dff3)) * individual packages can use npm 6 ([#167](#167)) ([2b429cc](2b429cc)) * publish with types in package.json ([#166](#166)) ([0318c98](0318c98)) * remove node globals ([#52](#52)) ([5414412](5414412)) * replace node buffers with uint8arrays ([#69](#69)) ([8a5aed2](8a5aed2)), closes [#66](#66) * types with ipjs build ([#165](#165)) ([fea85b5](fea85b5)) * use @ipld/dag-pb instead of ipld-dag-pb ([#116](#116)) ([bab1985](bab1985)) ### Trivial Changes * add travis file and configure build scripts ([5a25c87](5a25c87)) * consolidate .gitignore files ([b05e468](b05e468)) * declare interface types in .d.ts file ([#122](#122)) ([eaa8449](eaa8449)) * dep updates ([cf9480b](cf9480b)) * **deps-dev:** bump aegir from 26.0.0 to 28.1.0 ([#86](#86)) ([87541c7](87541c7)) * **deps-dev:** bump aegir from 28.2.0 to 29.2.2 ([#101](#101)) ([010ab47](010ab47)) * exclude docs and tests from npm package ([63b8ba0](63b8ba0)) * move files into packages folder ([943be9d](943be9d)) * publish ([5203595](5203595)) * publish ([0f9092e](0f9092e)) * publish ([2713329](2713329)) * publish ([35e2059](35e2059)) * publish ([137a4ad](137a4ad)) * publish ([f173850](f173850)) * publish ([2ea467f](2ea467f)) * publish ([dedbd82](dedbd82)) * publish ([dc2d400](dc2d400)) * publish ([27d57df](27d57df)) * publish ([5ccac2f](5ccac2f)) * publish ([172548b](172548b)) * publish ([9a2b5f2](9a2b5f2)) * publish ([e57ba16](e57ba16)) * publish ([9e8f077](9e8f077)) * publish ([22e29bb](22e29bb)) * publish ([dabbb48](dabbb48)) * publish ([32e5165](32e5165)) * publish ([5d3f4bd](5d3f4bd)) * publish ([49c8c54](49c8c54)) * publish ([db2c878](db2c878)) * publish ([9237250](9237250)) * remove changes from readme ([7c727ef](7c727ef)) * remove node buffers from runtime code ([#66](#66)) ([db60a42](db60a42)) * remove redundant test files ([3078608](3078608)) * small readme change ([f45436c](f45436c)) * swap to prereleaseOnly ([efb01ac](efb01ac)) * switch to auto-release ([#208](#208)) ([99386e6](99386e6)) * switch to ESM ([#161](#161)) ([819267f](819267f)), closes [skypackjs/skypack-cdn#171](skypackjs/skypack-cdn#171) * tighten up input types ([#133](#133)) ([47f295b](47f295b)) * update build scripts ([37d96ee](37d96ee)) * update deps ([#144](#144)) ([f5f5fe4](f5f5fe4)) * update deps ([#78](#78)) ([2bf5d07](2bf5d07)) * update lockfiles ([9d11252](9d11252)) * update package.json scripts and readmes ([bda3717](bda3717)) * update readme ([a012f22](a012f22)) * update readme ([7f93da1](7f93da1)) * update readmes ([#188](#188)) ([273a141](273a141)) * upgrade deps ([3a43e92](3a43e92)) * use npm 7 workspaces instead of lerna bootstrap ([#120](#120)) ([1ceb097](1ceb097))
Node
Buffers
are subclasses ofUint8Array
and we don't use anyBuffer
-specific functions, so do not demandBuffer
s whereUint8Array
s will do. If other modules in the stack actually requireBuffer
s, let the failure occur there.Buffer
s are still used in the tests because theBuffer
requirementneeds pull out of (at least) the
cids
andmultihash
modules first.Related, but not required:
BREAKING CHANGE: does not convert input to node Buffers any more, uses Uint8Arrays instead