base64url.js 945 B

1234567891011121314151617181920212223242526
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.base64url = void 0;
  4. exports.normalize = normalize;
  5. exports.is = is;
  6. exports.encode = encode;
  7. exports.decode = decode;
  8. const base64_js_1 = require("./base64.js");
  9. const BASE64URL_REGEX = /^[A-Za-z0-9_-]*$/;
  10. function normalize(text) {
  11. return text.replace(/[\n\r\t ]/g, "");
  12. }
  13. function is(text) {
  14. return typeof text === "string" && BASE64URL_REGEX.test(normalize(text));
  15. }
  16. function encode(data, _options) {
  17. return base64_js_1.base64.encode(data).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
  18. }
  19. function decode(text, _options) {
  20. const normalized = normalize(text);
  21. if (!is(normalized)) {
  22. throw new TypeError("Input is not valid Base64Url text");
  23. }
  24. return base64_js_1.base64.decode(base64_js_1.base64.pad(normalized.replace(/-/g, "+").replace(/_/g, "/")));
  25. }
  26. exports.base64url = { encode, decode, is, normalize };