From 626888fbd95a6504e47cdacd1e65098502950a13 Mon Sep 17 00:00:00 2001
From: overflowerror <mail@overflowerror.com>
Date: Fri, 16 Aug 2024 20:31:40 +0200
Subject: [PATCH] split into files

---
 src/content.js | 18 ++++++++++++++++++
 src/hash.js    | 23 +++++++++++++++++++++++
 src/main.js    | 43 ++-----------------------------------------
 3 files changed, 43 insertions(+), 41 deletions(-)
 create mode 100644 src/content.js
 create mode 100644 src/hash.js

diff --git a/src/content.js b/src/content.js
new file mode 100644
index 0000000..0ad3c99
--- /dev/null
+++ b/src/content.js
@@ -0,0 +1,18 @@
+const suffixCharset = [
+    "0123456789",
+    "abcdefghijklmnopqrstuvwxyz",
+    "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
+    "+-",
+].flatMap(set => set.split(""));
+const suffixCharsetBits = 6;
+
+export function makeSuffix(index) {
+    let result = "";
+
+    while (index > 0) {
+        result += suffixCharset[index & ((1 << suffixCharsetBits) - 1)];
+        index >>= suffixCharsetBits;
+    }
+
+    return result;
+}
\ No newline at end of file
diff --git a/src/hash.js b/src/hash.js
new file mode 100644
index 0000000..bd7f2fb
--- /dev/null
+++ b/src/hash.js
@@ -0,0 +1,23 @@
+const hexCharset = "0123456789abcdef".split("");
+
+export const sha256 = "SHA-256";
+
+Uint8Array.prototype.toHex = function() {
+    return [...this].map(c => hexCharset[c >> 4] + hexCharset[c & 15]).join("");
+};
+
+Uint8Array.prototype.hasPrefix = function(array, bits) {
+    for(let i = 0; i < array.length && i * 8 < bits; i++) {
+        const bitsForByte = Math.min(8, bits - i * 8);
+        const bitMask = ((1 << bitsForByte) - 1) << (8 - bitsForByte);
+
+        if ((this[i] & bitMask) != (array[i] & bitMask)) {
+            return false;
+        }
+    }
+    return true;
+};
+
+export async function digest(algo, input) {
+    return new Uint8Array(await crypto.subtle.digest(algo, new TextEncoder().encode(input)));
+}
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 37c57c1..c3364a7 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,44 +1,5 @@
-const hexCharset = "0123456789abcdef".split("");
-const suffixCharset = [
-    "0123456789", 
-    "abcdefghijklmnopqrstuvwxyz",
-    "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 
-    "+-",
-].flatMap(set => set.split(""));
-const suffixCharsetBits = 6;
-
-const sha256 = "SHA-256";
-
-Uint8Array.prototype.toHex = function() {
-    return [...this].map(c => hexCharset[c >> 4] + hexCharset[c & 15]).join("");
-};
-
-Uint8Array.prototype.hasPrefix = function(array, bits) {
-    for(let i = 0; i < array.length && i * 8 < bits; i++) {
-        const bitsForByte = Math.min(8, bits - i * 8);
-        const bitMask = ((1 << bitsForByte) - 1) << (8 - bitsForByte);
-        
-        if ((this[i] & bitMask) != (array[i] & bitMask)) {
-            return false;
-        }
-    }
-    return true;
-};
-
-async function digest(algo, input) {
-    return new Uint8Array(await crypto.subtle.digest(algo, new TextEncoder().encode(input)));
-}
-
-function makeSuffix(index) {
-    let result = "";
-    
-    while (index > 0) {
-        result += suffixCharset[index & ((1 << suffixCharsetBits) - 1)];
-        index >>= suffixCharsetBits;
-    }
-    
-    return result;
-}
+import {makeSuffix} from "./content";
+import {digest, sha256} from "./hash";
 
 async function findHashWithPrefix(hashPrefixBits, inputPrefix) {
     const hashPrefix = new Uint8Array(Array(Math.ceil(hashPrefixBits / 8)).map(c => 0));