about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-03-19 19:45:59 -0500
committerPaul Frazee <pfrazee@gmail.com>2023-03-19 19:45:59 -0500
commit1dcd7e57359e487895d5f2c07fe25a991c5a1905 (patch)
treed30602030f12e60bea23cb966e1c2801c6c4463f /src
parent1de724b24b9607d4ee83dc0dbb92c13b2b77dcaf (diff)
parent994332af917418c833ffd092e8ded904a0030212 (diff)
downloadvoidsky-1dcd7e57359e487895d5f2c07fe25a991c5a1905.tar.zst
Merge branch 'onboarding-and-discovery' into main
Diffstat (limited to 'src')
-rw-r--r--src/platform/polyfills.ts49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/platform/polyfills.ts b/src/platform/polyfills.ts
index 336ce12bb..3dbd13981 100644
--- a/src/platform/polyfills.ts
+++ b/src/platform/polyfills.ts
@@ -1 +1,50 @@
 export {}
+
+/**
+https://github.com/MaxArt2501/base64-js
+The MIT License (MIT)
+Copyright (c) 2014 MaxArt2501
+ */
+
+const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
+// Regular expression to check formal correctness of base64 encoded strings
+const b64re =
+  /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/
+
+globalThis.atob = (str: string): string => {
+  // atob can work with strings with whitespaces, even inside the encoded part,
+  // but only \t, \n, \f, \r and ' ', which can be stripped.
+  str = String(str).replace(/[\t\n\f\r ]+/g, '')
+  if (!b64re.test(str)) {
+    throw new TypeError(
+      "Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.",
+    )
+  }
+
+  // Adding the padding if missing, for semplicity
+  str += '=='.slice(2 - (str.length & 3))
+  var bitmap,
+    result = '',
+    r1,
+    r2,
+    i = 0
+  for (; i < str.length; ) {
+    bitmap =
+      (b64.indexOf(str.charAt(i++)) << 18) |
+      (b64.indexOf(str.charAt(i++)) << 12) |
+      ((r1 = b64.indexOf(str.charAt(i++))) << 6) |
+      (r2 = b64.indexOf(str.charAt(i++)))
+
+    result +=
+      r1 === 64
+        ? String.fromCharCode((bitmap >> 16) & 255)
+        : r2 === 64
+        ? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)
+        : String.fromCharCode(
+            (bitmap >> 16) & 255,
+            (bitmap >> 8) & 255,
+            bitmap & 255,
+          )
+  }
+  return result
+}