Skip to content
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

Merged
merged 3 commits into from
Jul 28, 2020

Conversation

achingbrain
Copy link
Member

@achingbrain achingbrain commented Jul 24, 2020

Node Buffers are subclasses of Uint8Array and we don't use any
Buffer-specific functions, so do not demand Buffers where
Uint8Arrays will do. If other modules in the stack actually require
Buffers, let the failure occur there.

Buffers are still used in the tests because the Buffer requirement
needs pull out of (at least) the cids and multihash modules first.

Related, but not required:

BREAKING CHANGE: does not convert input to node Buffers any more, uses Uint8Arrays instead

@achingbrain achingbrain marked this pull request as ready for review July 24, 2020 07:57
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.
@achingbrain achingbrain force-pushed the chore/remove-buffers-from-runtime-code branch from db3dcd1 to 9243bc5 Compare July 24, 2020 09:57
Copy link
Member

@vasco-santos vasco-santos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Copy link
Contributor

@Gozala Gozala left a 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)
Copy link
Contributor

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)

Copy link
Member Author

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/README.md Outdated Show resolved Hide resolved
packages/ipfs-unixfs-importer/src/dir-sharded.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",
Copy link
Contributor

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/README.md Outdated Show resolved Hide resolved
packages/ipfs-unixfs-exporter/README.md Outdated Show resolved Hide resolved
packages/ipfs-unixfs-exporter/README.md Outdated Show resolved Hide resolved
packages/ipfs-unixfs-importer/src/dir-sharded.js Outdated Show resolved Hide resolved
@achingbrain achingbrain merged commit db60a42 into master Jul 28, 2020
@achingbrain achingbrain deleted the chore/remove-buffers-from-runtime-code branch July 28, 2020 11:02
achingbrain added a commit that referenced this pull request Aug 3, 2020
Follow up to #66 that removes node Buffers from the tests and uses
version of protons that returns uint8arrays.
achingbrain added a commit that referenced this pull request Aug 5, 2020
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
github-actions bot pushed a commit that referenced this pull request Apr 26, 2022
## 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))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants