nodejs icon indicating copy to clipboard operation
nodejs copied to clipboard

Optimize auth.js: Replace Buffer.from(x).toString('base64') with btoa

Open studentIvan opened this issue 4 years ago • 2 comments

Summary

IE10+ browsers support btoa function. Do we really need 50kb Buffer polyfill in the browser? With this pull request https://github.com/commercetools/nodejs/pull/1650 we can just get rid of the entire Buffer's polyfill

Todo

  • Tests
    • [ ] Unit
    • [ ] Integration
    • [ ] Acceptance
  • [ ] Documentation
  • [ ] Type label for the PR

studentIvan avatar Jan 24 '21 10:01 studentIvan

For ones who using it with Babel/Webpack and a browser, you can hack this using this way:

import SdkAuth, { TokenProvider } from '@commercetools/sdk-auth/dist/sdk-auth.es';

if (typeof Buffer === 'undefined' && typeof window !== 'undefined') {
  window.Buffer = {
    from: s => ({ toString: m => m === 'base64' ? btoa(s) : m }),
    byteLength: s => s.length,
  };
}

studentIvan avatar Jan 24 '21 11:01 studentIvan

⚠️ No Changeset found

Latest commit: ae681593112b86cd6bc95aae943b3d677fe214cf

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

changeset-bot[bot] avatar Jan 14 '23 23:01 changeset-bot[bot]