Update src/client/types/ext.ts
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-02-25 16:06:20 +01:00
parent ca2e2c11d2
commit aacefdce94

94
src/client/types/ext.ts Normal file
View File

@@ -0,0 +1,94 @@
// DATE EXTENTION
declare global {
interface Date {
toJSONLocal: () => string;
toLocal: () => string;
}
}
Date.prototype.toJSONLocal = function () {
function addZ(n: number): string {
return n <= 9 ? `0${n}` : `${n}`;
}
return [
this.getFullYear(),
addZ(this.getMonth() + 1),
addZ(this.getDate()),
].join("-");
}
Date.prototype.toLocal = function () {
return [["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][this.getDay()],
this.getDate(),
[
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
][this.getMonth()]].join(" ")
;
}
// ARRAY EXTENTION
declare global {
interface Array<T> {
foldl<B>(f: (x: T, acc: B) => B, acc: B): B;
foldr<B>(f: (x: T, acc: B) => B, acc: B): B;
}
}
Array.prototype.foldr = function <T, B>(f: (x: T, acc: B) => B, acc: B): B {
return this.reverse().foldl(f, acc);
};
Array.prototype.foldl = function <T, B>(f: (x: T, acc: B) => B, acc: B): B {
for (let i = 0; i < this.length; i++) acc = f(this[i], acc);
return acc;
};
// STRING EXTENTION
declare global {
interface String {
toEncoded: () => String;
toDecoded: () => String;
}
}
String.prototype.toEncoded = function () {
return window.btoa(encodeURIComponent(Array.from(this as string, (c) => c.charCodeAt(0)).foldl(
(e, v) => v + String.fromCharCode(e),
"",
)))
};
String.prototype.toDecoded = function () {
return Array.from(decodeURIComponent(window.atob(this as string)), (c) => c.charCodeAt(0)).foldl(
(e, v) => v + String.fromCharCode(e),
"",
);
};
declare global {
interface StringConstructor {
gen_id: (l: Number) => String;
}
}
String.gen_id = function (length) {
const characters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return Array.from(Array(length))
.map((_v) =>
characters.charAt(Math.floor(Math.random() * characters.length)),
)
.join("");
};
export { };