diff --git a/js/app.js b/js/app.js
index fb2dccc..ae7be43 100644
--- a/js/app.js
+++ b/js/app.js
@@ -6,7 +6,8 @@
// MIT License.
//
-import { urlSearchParams, formatString, sourceURL } from "./utilities.js";
+import { urlSearchParams, sourceURL } from "./constants.js";
+import { formatString } from "./utilities.js";
import { main } from "./main.js";
if (!urlSearchParams.has('id')) exit();
diff --git a/js/components/AltStoreBanner.js b/js/components/AltStoreBanner.js
index a7aa2d2..2578d7a 100644
--- a/js/components/AltStoreBanner.js
+++ b/js/components/AltStoreBanner.js
@@ -6,7 +6,7 @@
// MIT License.
//
-import { sourceURL } from "../utilities.js";
+import { sourceURL } from "../constants.js";
export const AltStoreBanner = (sourceName) => `
diff --git a/js/components/AppHeader.js b/js/components/AppHeader.js
index 4ab7ef0..8dfd2a6 100644
--- a/js/components/AppHeader.js
+++ b/js/components/AppHeader.js
@@ -6,7 +6,7 @@
// MIT License.
//
-import { sourceURL } from "../utilities.js";
+import { sourceURL } from "../constants.js";
export const AppHeader = app => app ? `
diff --git a/js/constants.js b/js/constants.js
new file mode 100644
index 0000000..7ebebcf
--- /dev/null
+++ b/js/constants.js
@@ -0,0 +1,12 @@
+//
+// constants.js
+// altsource-viewer (https://github.com/therealFoxster/altsource-viewer)
+//
+// Copyright (c) 2023 Foxster.
+// MIT License.
+//
+
+export const urlSearchParams = new URLSearchParams(window.location.search);
+export const sourceURL = urlSearchParams.get('source')?.replaceAll("+", "%2B");
+// https://stackoverflow.com/a/8943487
+export const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
\ No newline at end of file
diff --git a/js/index.js b/js/index.js
index a075544..6001f76 100644
--- a/js/index.js
+++ b/js/index.js
@@ -6,7 +6,8 @@
// MIT License.
//
-import { sourceURL, formatString } from "./utilities.js";
+import { sourceURL } from "./constants.js";
+import { formatString } from "./utilities.js";
import { NewsItem } from "./components/NewsItem.js";
import { AppHeader } from "./components/AppHeader.js";
import { main } from "./main.js";
diff --git a/js/main.js b/js/main.js
index 46e3863..280f035 100644
--- a/js/main.js
+++ b/js/main.js
@@ -6,7 +6,8 @@
// MIT License.
//
-import { urlSearchParams, sourceURL, search, isValidHTTPURL, setTintColor, insertAltStoreBanner, setUpBackButton } from "./utilities.js";
+import { urlSearchParams, sourceURL } from "./constants.js";
+import { search, isValidHTTPURL, setTintColor, insertAltStoreBanner, setUpBackButton } from "./utilities.js";
export function main(callback) {
(() => {
diff --git a/js/search.js b/js/search.js
index 2ed4923..8a463e4 100644
--- a/js/search.js
+++ b/js/search.js
@@ -6,7 +6,8 @@
// MIT License.
//
-import { urlSearchParams, sourceURL, isValidHTTPURL } from "./utilities.js";
+import { urlSearchParams, sourceURL } from "./constants.js";
+import { isValidHTTPURL } from "./utilities.js";
(function main() {
const success = url => window.location.replace(`index.html?source=${url}`);
diff --git a/js/utilities.js b/js/utilities.js
index 6ee05aa..586b592 100644
--- a/js/utilities.js
+++ b/js/utilities.js
@@ -8,11 +8,7 @@
import { AltStoreBanner } from "./components/AltStoreBanner.js";
import { NavigationBar } from "./components/NavigationBar.js";
-
-export const urlSearchParams = new URLSearchParams(window.location.search);
-export const sourceURL = urlSearchParams.get('source')?.replaceAll("+", "%2B");
-// https://stackoverflow.com/a/8943487
-export const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
+import { urlRegex } from "./constants.js";
export function insertAltStoreBanner(sourceName) {
document.getElementById("top")?.insertAdjacentHTML("afterbegin", AltStoreBanner(sourceName));