rename modules after moving to appropriate folders

This commit is contained in:
buzz-lightsnack-2007 2024-04-26 21:32:32 +08:00
parent 0b7be21d03
commit a226f12645
16 changed files with 17 additions and 17 deletions

41
scripts/utils/common.js Normal file
View file

@ -0,0 +1,41 @@
// common.js provides the advanced data structures.
export class Queue {
#elements;
constructor() {
this.#elements = [];
}
enqueue(element) {
this.#elements.push(element);
}
dequeue() {
return this.#elements.shift();
}
isEmpty() {
return this.#elements.length <= 0;
}
}
export class Stack {
#elements;
constructor() {
this.#elements = [];
}
push(element) {
this.#elements.push(element);
}
pop() {
return this.#elements.pop();
}
isEmpty() {
return this.#elements.length <= 0;
}
}

51
scripts/utils/net.js Normal file
View file

@ -0,0 +1,51 @@
/* net.js
This script provides network utilities.
*/
import texts from "/scripts/mapping/read.js";
import logging from "/scripts/logging.js";
export default class net {
/*
Download a file from the network or locally.
@param {string} URL the URL to download
@param {string} TYPE the expected TYPE of file
@param {boolean} VERIFY_ONLY whether to verify the file only, not return its content
@param {boolean} STRICT strictly follow the file type provided
@returns {Promise} the downloaded file
*/
static async download(URL, TYPE, VERIFY_ONLY = false, STRICT = false) {
let CONNECT, DATA;
try {
CONNECT = await fetch(URL);
if (CONNECT.ok && !VERIFY_ONLY) {
DATA = await CONNECT.text();
if (
TYPE
? TYPE.toLowerCase().includes(`json`) || TYPE.toLowerCase().includes(`dictionary`)
: false
) {
try {
DATA = JSON.parse(DATA);
// When not in JSON, run this.
} catch(err) {
if (STRICT) {
// Should not allow the data to be returned since it's not correct.
DATA = null;
throw new TypeError(texts.localized(`error_msg_notJSON`, false));
} else {logging.warn(texts.localized(`error_msg_notJSON`, false));}
};
};
}
} catch(err) {
throw err;
}
// Return the filter.
return VERIFY_ONLY ? CONNECT.ok : DATA;
}
}