Coder Social home page Coder Social logo

base64-url's Introduction

base64-url

Base64 encode, decode, escape and unescape for URL applications.

Build StatusCoverage StatusISC LicenseNodeJS

JavaScript Style Guide

API

const base64url = require('base64-url')

examples

base64url.encode('Node.js is awesome.')
// returns Tm9kZS5qcyBpcyBhd2Vzb21lLg

base64url.decode('Tm9kZS5qcyBpcyBhd2Vzb21lLg')
// returns Node.js is awesome.

base64url.escape('This+is/goingto+escape==')
// returns This-is_goingto-escape

base64url.unescape('This-is_goingto-escape')
// returns This+is/goingto+escape==

//
// setting a different encoding 
//

base64url.encode(string to encode, encoding)
base64url.decode(string to decode, encoding)

ISC License (ISC)

Alternatives

Attention: only tested with NodeJS

base64-url's People

Contributors

bradvogel avatar dependabot[bot] avatar dougwilson avatar graingert avatar imyelo avatar joaquimserafim avatar kennethlombardi avatar yezhiming avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

base64-url's Issues

Cannot import only some methods from library (losing scope for `this`)

If I do something like this:

const { escape } = require('base64-url')

escape('someBase64String')

I get the following error:

TypeError: Cannot read property 'escape' of undefined
    at encode (.../node_modules/base64-url/index.js:18:15)

Instead if I change my code to:

const b64 = require('base64-url')

b64.escape('someBase64String')

Everything works as expected

I think this can be easily fixed by just changing the way functions are defined in the might module.

Something like this might work (untested):

// index.js

function unescape (str) {
  return (str + '==='.slice((str.length + 3) % 4))
    .replace(/-/g, '+')
    .replace(/_/g, '/')
}

function escape (str) {
  return str.replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=/g, '')
}

function encode (str, encoding) {
  return escape(Buffer.from(str, encoding || 'utf8').toString('base64'))
}

function decode (str, encoding) {
  return Buffer.from(unescape(str), 'base64').toString(encoding || 'utf8')
}

module.exports = {
  unescape,
  escape,
  encode,
  decode
}

If that works, it should also be backward compatible.

Backward compatibility for IE11

I know this is an unusual request, but we're using this in a project, and because of the shorthand operator in the index, we can't use it in IE11. Other than this, it would work perfectly.

Is there any intention to allow backward compatibility or has this been chosen as a purely node-only module?

Cheers ๐Ÿ‘

Does not support Browsers?

With webpack v4 (angular/cli v9)
Project I get an error with using Buffer.

The Buffer class does not appear to exist in chrome.
The npm package Buffer has an issue with webpack usage.

If you can't/won't fix this, then please indicate that Browsers are unsupported.

1.2.1 release not tagged

It appears that you've released version 1.2.1 via the npm registry, but haven't yet tagged that release here in GitHub. Could you please do so?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.