Initial commit

This commit is contained in:
Patrick Alvin Alcala 2026-02-10 19:45:22 +08:00
commit eb8731d039
90 changed files with 6380 additions and 0 deletions

View file

@ -0,0 +1,17 @@
import { JSEncrypt } from "jsencrypt";
import * as fs from "node:fs";
import * as toml from "toml";
const config = toml.parse(
fs.readFileSync("configs/config.security.toml", "utf-8"),
);
const enc = new JSEncrypt();
const PUBLIC_KEY = config.rsa.public_key;
export default (message: string) => {
enc.setPublicKey(PUBLIC_KEY);
const encrypted = enc.encrypt(message).toString();
const fixedEncrypted = encrypted.replace(/\//g, "~");
return fixedEncrypted;
};

1
@dasig/scripts/index.ts Normal file
View file

@ -0,0 +1 @@
export { default as encryptRsa } from "./functions/encryptRsa.ts";

View file

@ -0,0 +1,110 @@
import { consola } from "consola";
import * as fs from "fs";
import * as path from "path";
import sharp from "sharp";
import * as toml from 'toml'
try {
const dirPath = path.resolve("./public");
const config = toml.parse(fs.readFileSync("configs/config.site.toml", "utf8"));
if (fs.existsSync(dirPath)) {
const inputSrc = "./src/images/favicon.png";
const favicon = dirPath + "/favicon.png";
const chrome192 = dirPath + "/android-chrome-192x192.png";
const chrome512 = dirPath + "/android-chrome-512x512.png";
const apple = dirPath + "/apple-touch-icon.png";
const favicon16 = dirPath + "/favicon-16x16.png";
const favicon32 = dirPath + "/favicon-32x32.png";
const faviconBuffer = await sharp(inputSrc)
.png({ quality: 90 })
.resize(48)
.toBuffer();
await sharp(faviconBuffer).toFile(favicon);
consola.success("Favicon generated successfully");
const favicon32Buffer = await sharp(inputSrc)
.png({ quality: 90 })
.resize(32)
.toBuffer();
await sharp(favicon32Buffer).toFile(favicon32);
consola.success("Favicon-32x32 generated successfully");
const favicon16Buffer = await sharp(inputSrc)
.png({ quality: 90 })
.resize(16)
.toBuffer();
await sharp(favicon16Buffer).toFile(favicon16);
consola.success("Favicon-16x16 generated successfully");
const chrome512Buffer = await sharp(inputSrc)
.png({ quality: 90 })
.resize(512)
.toBuffer();
await sharp(chrome512Buffer).toFile(chrome512);
const chrome192Buffer = await sharp(inputSrc)
.png({ quality: 90 })
.resize(192)
.toBuffer();
await sharp(chrome192Buffer).toFile(chrome192);
consola.success("Android icon generated successfully");
const appleBuffer = await sharp(inputSrc)
.png({ quality: 90 })
.resize(180)
.toBuffer();
await sharp(appleBuffer).toFile(apple);
consola.success("iOS icon generated successfully");
const manifestPath = path.resolve(dirPath, "site.webmanifest");
const manifestContent = JSON.stringify(
{
name: config.website.name,
short_name: config.website.short_name,
start_url: "/",
display: "standalone",
background_color: "#ffffff",
theme_color: "#000000",
icons: [
{
src: "/android-chrome-192x192.png",
sizes: "192x192",
type: "image/png",
},
{
src: "/android-chrome-512x512.png",
sizes: "512x512",
type: "image/png",
},
{
src: "/apple-touch-icon.png",
sizes: "180x180",
type: "image/png",
},
{
src: "/favicon-32x32.png",
sizes: "32x32",
type: "image/png",
},
{
src: "/favicon-16x16.png",
sizes: "16x16",
type: "image/png",
},
],
},
null,
2,
);
fs.writeFileSync(manifestPath, manifestContent);
consola.success("Site Webmanifest file created successfully");
} else {
consola.error("Directory does not exist:", dirPath);
}
} catch (error: any) {
if (error.message.includes("missing")) {
consola.error("Source favicon does not exist");
}
}

View file

@ -0,0 +1,23 @@
import { consola } from "consola";
import sharp from "sharp";
(async () => {
try {
const inputSrc = 'src/images/background.png'
const webpOutput = "./@dasig/images/background.webp"
const avifOutput = "./@dasig/images/background.avif"
const avifBuffer = await sharp(inputSrc).avif({ quality: 60 }).resize(1920).toBuffer()
await sharp(avifBuffer).toFile(avifOutput)
consola.success('Background successfully optimized in Avif');
const webpBuffer = await sharp(inputSrc).webp({ quality: 75 }).resize(1920).toBuffer()
await sharp(webpBuffer).toFile(webpOutput)
consola.success('Background successfully optimized in Webp');
} catch (error: any) {
consola.error("Error optimizing background:", error);
if (error.message.includes("missing"))
consola.error(`${name} could not be found on image folder`);
}
})();

View file

@ -0,0 +1,47 @@
import { consola } from "consola";
import process from "node:process";
import sharp from "sharp";
import yargs from "yargs";
import { hideBin } from "yargs/helpers";
(async () => {
const argv = yargs(hideBin(process.argv))
.option("name", {
alias: "n",
describe: "Specify the name of the image",
type: "string",
demandOption: true,
})
.option("size", {
alias: "s",
describe: "Specify the size of the image",
type: "number",
demandOption: true,
}).argv;
const name = argv.name;
const size = argv.size;
try {
const avifOutputPath = `./@dasig/images/${name.toString().split(".").slice(0, -1).join(".")}.avif`;
const webpOutputPath = `./@dasig/images/${name.toString().split(".").slice(0, -1).join(".")}.webp`;
const avifBuffer = await sharp(`./src/images/${name}`)
.avif({ quality: 60 })
.resize(size)
.toBuffer();
await sharp(avifBuffer).toFile(avifOutputPath);
consola.success(`${name} successfully optimized in Avif`);
const webpBuffer = await sharp(`./src/images/${name}`)
.webp({ quality: 75 })
.resize(size)
.toBuffer();
await sharp(webpBuffer).toFile(webpOutputPath);
consola.success(`${name} successfully optimized in Webp`);
} catch (error: any) {
consola.error("Error optimizing image:", error);
if (error.message.includes("missing"))
consola.error(`${name} could not be found on image folder`);
}
})();

View file

@ -0,0 +1,36 @@
import { consola } from "consola";
import process from "node:process";
import sharp from "sharp";
import yargs from "yargs";
import { hideBin } from "yargs/helpers";
(async () => {
const size = yargs(hideBin(process.argv)).option("size", {
alias: "s",
describe: "Specify the size of the logo",
type: "number",
demandOption: true,
}).argv.size;
try {
const webpImage = "./@dasig/images/logo.webp";
const avifImage = "./@dasig/images/logo.avif";
const inputSrc = "./src/images/logo.png";
const avifBuffer = await sharp(inputSrc)
.avif({ quality: 60 })
.resize(size)
.toBuffer();
await sharp(avifBuffer).toFile(avifImage);
consola.success("Logo successfully optimized in Avif");
const webpBuffer = await sharp(inputSrc)
.webp({ quality: 75 })
.resize(size)
.toBuffer();
await sharp(webpBuffer).toFile(webpImage);
consola.success("Logo successfully optimized in Webp");
} catch (error) {
consola.error("Error generating favicon:", error);
}
})();