This commit is contained in:
Patrick Alvin Alcala 2025-11-28 09:42:36 +08:00
parent bcb83dfea5
commit 4430d24a3e
14 changed files with 99 additions and 106 deletions

View file

@ -1,10 +1,8 @@
/** biome-ignore-all lint/suspicious/noExplicitAny: <_> */
import dayjs from "dayjs";
import * as fs from "node:fs";
import { ofetch } from "ofetch";
import * as toml from "toml";
import { encryptRsa } from "../../scripts/index.ts";
import { encryptRsa } from "../../scripts/index";
const apiConfig = toml.parse(
fs.readFileSync("configs/config.api.toml", "utf-8"),
@ -13,11 +11,11 @@ const securityConfig = toml.parse(
fs.readFileSync("configs/config.security.toml", "utf-8"),
);
const TOKEN_NAME = securityConfig.token.token_name;
const TOKEN_EXPIRATION = securityConfig.token.token_expiration;
const URL = apiConfig.backend.backend_url;
const RETRY = apiConfig.request.request_retries;
const CODES = apiConfig.request.request_retry_codes;
const TOKEN_NAME = securityConfig.token.name;
const TOKEN_EXPIRATION = securityConfig.token.expiration;
const URL = apiConfig.backend.url;
const RETRY = apiConfig.request.retries;
const CODES = apiConfig.request.retry_codes;
export default async (api: string, body: { [key: string]: unknown }) => {
const today = new Date();

View file

@ -1,8 +1,12 @@
import { JSEncrypt } from "jsencrypt";
import { $rsaPublicKey } from "../../../configs/config.security.ts";
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 = $rsaPublicKey.get();
const PUBLIC_KEY = config.rsa.public_key;
export default (message: string) => {
enc.setPublicKey(PUBLIC_KEY);

View file

@ -1,17 +1,12 @@
FROM denoland/deno:alpine AS build
FROM oven/bun:canary-alpine AS build
WORKDIR /app
COPY package*.json deno.lock ./
RUN deno install && deno install --allow-scripts=npm:sharp,npm:@parcel/watcher
COPY package*.json bun.lock ./
RUN bun install && bun pm trust --all
COPY . .
ENV NODE_ENV=production
RUN deno task build
RUN bun run build
# FROM nginx:alpine AS runtime
# COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
# COPY --from=build /app/.output/public /usr/share/nginx/html
# EXPOSE 8080
FROM denoland/deno:alpine
WORKDIR /app
COPY --from=build /app .
CMD ["deno", "run", "--allow-env", "--allow-net", "--allow-read", ".output/server/index.mjs"]
FROM nginx:alpine AS runtime
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
COPY --from=build /app/.output/public /usr/share/nginx/html
EXPOSE 8080

View file

@ -19,11 +19,11 @@ podman:
podman-compose up -d
favicon:
deno --allow-env --allow-read --allow-ffi ./@dasig/scripts/node/generateFavicon.ts
bun ./@dasig/scripts/node/generateFavicon.ts
logo:
deno --allow-env --allow-read --allow-ffi ./@dasig/scripts/node/optimizeLogo.ts --size $(size)
bun ./@dasig/scripts/node/optimizeLogo.ts --size $(size)
image:
deno --allow-env --allow-read --allow-ffi ./@dasig/scripts/node/optimizeImage.ts --name $(name) --size $(size)
bun ./@dasig/scripts/node/optimizeImage.ts --name $(name) --size $(size)

View file

@ -1,11 +1,11 @@
import { defineConfig } from '@solidjs/start/config'
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({
ssr: true,
// server: {
// static: true,
// prerender: {
// crawlLinks: true,
// },
// },
})
ssr: false,
server: {
static: true,
prerender: {
crawlLinks: true,
},
},
});

View file

@ -1,52 +0,0 @@
{
"formatter": {
"enabled": true,
"formatWithErrors": false,
"indentStyle": "space",
"indentWidth": 2,
"lineEnding": "lf",
"lineWidth": 320,
"attributePosition": "auto",
"bracketSameLine": false,
"bracketSpacing": true,
"expand": "auto",
"useEditorconfig": true
},
"javascript": {
"formatter": {
"jsxQuoteStyle": "double",
"quoteProperties": "asNeeded",
"trailingCommas": "es5",
"semicolons": "asNeeded",
"arrowParentheses": "always",
"bracketSameLine": false,
"quoteStyle": "single",
"attributePosition": "auto",
"bracketSpacing": true
}
},
"json": { "formatter": { "enabled": false } },
"html": {
"formatter": {
"indentScriptAndStyle": false,
"selfCloseVoidElements": "always"
}
},
"linter": {
"rules": {
"style": {
"noNonNullAssertion": "off"
},
"a11y": {
"useKeyWithClickEvents": "off",
"noStaticElementInteractions": "off"
},
"complexity": {
"noUselessFragments": "off"
},
"suspicious": {
"noImplicitAnyLet": "off"
}
}
}
}

52
frontend/biome.jsonc Normal file
View file

@ -0,0 +1,52 @@
{
"formatter": {
"enabled": true,
"formatWithErrors": false,
"indentStyle": "space",
"indentWidth": 2,
"lineEnding": "lf",
"lineWidth": 320,
"attributePosition": "auto",
"bracketSameLine": false,
"bracketSpacing": true,
"expand": "auto",
"useEditorconfig": true
},
"javascript": {
"formatter": {
"jsxQuoteStyle": "double",
"quoteProperties": "asNeeded",
"trailingCommas": "es5",
"semicolons": "asNeeded",
"arrowParentheses": "always",
"bracketSameLine": false,
"quoteStyle": "single",
"attributePosition": "auto",
"bracketSpacing": true
}
},
"json": { "formatter": { "enabled": false } },
"html": {
"formatter": {
"indentScriptAndStyle": false,
"selfCloseVoidElements": "always"
}
},
"linter": {
"rules": {
"style": {
"noNonNullAssertion": "off"
},
"a11y": {
"useKeyWithClickEvents": "off",
"noStaticElementInteractions": "off"
},
"complexity": {
"noUselessFragments": "off"
},
"suspicious": {
"noImplicitAnyLet": "off"
}
}
}
}

View file

@ -1,6 +1,6 @@
[backend]
backend_url = "http://localhost:8080"
url = "http://localhost:8080"
[request]
request_retries = 3
request_retry_codes = [400, 404, 405, 500, 502]
retries = 3
retry_codes = [400, 404, 405, 500, 502]

View file

@ -1,10 +1,10 @@
[token]
token_name = "dasig" # output: dasig-token
token_encryption = "rsa"
token_expiration = 9 # seconds
name = "dasig" # output: dasig-token
encryption = "rsa"
expiration = 9 # seconds
[rsa]
rsa_public_key = '''-----BEGIN PUBLIC KEY-----
public_key = '''-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9Aw5Zasdanf2biS69qoQ
/YZbyIM+LS7LOLNN3ot6nZH1FiTqTNy61ffUA2Y/s3hGz9L0+k6gRu7uGBza6XPU
+iuGdXxZd2mc3lrnPfR6SSllMwGlAVkYpQhmkB19igd8aLUbFiJ3pPKkNocv/yQa

View file

@ -1,5 +1,5 @@
$lightBackground: #e2e7f2
$darkBackground: #0a152a
$light-background: #e2e7f2
$dark-background: #0a152a
$mobile: 575.98px
$tablet: 768px

View file

@ -6,4 +6,4 @@ services:
context: .
dockerfile: Dockerfile
ports:
- 8080:8080
- ${PORT}:8080

View file

@ -1,5 +1,4 @@
// @refresh reload
/** biome-ignore-all lint/style/noNonNullAssertion: <biome exception> */
import { mount, StartClient } from "@solidjs/start/client";
mount(() => <StartClient />, document.getElementById("app")!);

View file

@ -1,10 +1,7 @@
// deno-lint-ignore-file jsx-no-children-prop
import * as fs from "node:fs";
// import { $companyName, $font, $websiteDescription, $websiteName } from '../configs/config.site.ts';
import { createHandler, StartServer } from "@solidjs/start/server";
import * as fs from "node:fs";
import * as toml from "toml";
import { HTML } from "../@dasig/index.ts";
import { HTML } from "../@dasig/index";
const config = toml.parse(fs.readFileSync("configs/config.site.toml", "utf8"));
const websiteName = config.website.name;

View file

@ -4,12 +4,12 @@
:root
color-scheme: light dark
background-color: light-dark(design.$lightBackground, design.$darkBackground)
background-color: light-dark(design.$light-background, design.$dark-background)
transition: background-color 0.6s ease-out
body
color: light-dark(color.adjust(design.$lightBackground, $blackness: 95%), color.adjust(design.$darkBackground, $lightness: 95%))
transition: background-color 0.6s ease-out
color: light-dark(color.adjust(design.$light-background, $blackness: 95%), color.adjust(design.$dark-background, $lightness: 95%))
transition: color 0.6s ease-out
a
margin-right: 1rem