aboutsummaryrefslogtreecommitdiff
path: root/browser/src/eqmc.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-06-14 12:34:28 +0200
committerMinteck <contact@minteck.org>2022-06-14 12:34:28 +0200
commitc246f73616c0c3e99a35e52ee6f6a55116b91c09 (patch)
tree7a37435a0ac4806173f0de9e2753cb161c14c39f /browser/src/eqmc.js
parenta6eabecc147b17aae29c9dcfe2bfded153a0f548 (diff)
downloadelac-c246f73616c0c3e99a35e52ee6f6a55116b91c09.tar.gz
elac-c246f73616c0c3e99a35e52ee6f6a55116b91c09.tar.bz2
elac-c246f73616c0c3e99a35e52ee6f6a55116b91c09.zip
Browser lib
Diffstat (limited to 'browser/src/eqmc.js')
-rw-r--r--browser/src/eqmc.js79
1 files changed, 0 insertions, 79 deletions
diff --git a/browser/src/eqmc.js b/browser/src/eqmc.js
deleted file mode 100644
index fddab1a..0000000
--- a/browser/src/eqmc.js
+++ /dev/null
@@ -1,79 +0,0 @@
-class EQMCData extends Object {
- constructor(obj) {
- super();
-
- for (let key of Object.keys(obj)) {
- this[key] = obj[key];
- }
- }
-}
-
-class EQMCAudioStream extends Object {
- constructor(obj) {
- super();
-
- for (let key of Object.keys(obj)) {
- this[key] = obj[key];
- }
- }
-}
-
-class EQMCError extends Error {
- constructor(props) {
- super(props);
- this.name = "EQMCError";
- }
-}
-
-window.EQMC = {
- _base64ToArrayBuffer: (base64) => {
- var binary_string = window.atob(base64);
- var len = binary_string.length;
- var bytes = new Uint8Array(len);
- for (var i = 0; i < len; i++) {
- bytes[i] = binary_string.charCodeAt(i);
- }
- return bytes.buffer;
- },
-
- isEQMCData: async (data) => {
- return data instanceof EQMCData && data["_eqmc"];
- },
-
- isEQMCAudioStream: async (data) => {
- return data instanceof EQMCAudioStream && data["data"];
- },
-
- create: async (file) => {
- try {
- return new EQMCData(JSON.parse(new TextDecoder("utf-8").decode(pako.inflate(new Uint8Array((await (await (await window.fetch(file)).blob()).arrayBuffer()))))));
- } catch (e) {
- console.error(e);
- throw new EQMCError("Failed to construct EQMCData object");
- }
- },
-
- decodeFile: async (data, file) => {
- if (!await EQMC.isEQMCData(data)) throw new EQMCError("Invalid input, expected EQMCData");
-
- if (data.files.length - 1 >= file) {
- let s = data.files[file];
- s["data"] = new Blob([pako.inflate(EQMC._base64ToArrayBuffer(s.data))]);
- return new EQMCAudioStream(s);
- } else {
- throw new EQMCError("File index is out of range");
- }
- },
-
- toAudio: async (data) => {
- if (!await EQMC.isEQMCAudioStream(data)) throw new EQMCError("Invalid input, expected EQMCAudioStream");
-
- return new Audio(window.URL.createObjectURL(data.data));
- },
-
- quickAudio: async (url, id) => {
- let eqmc = await EQMC.create(url);
- let file = await EQMC.decodeFile(eqmc, id);
- return await EQMC.toAudio(file);
- }
-} \ No newline at end of file