diff --git a/frontend/@dasig/api/functions/postApi.ts b/frontend/@dasig/api/functions/postApi.ts index 527f40a..b832044 100644 --- a/frontend/@dasig/api/functions/postApi.ts +++ b/frontend/@dasig/api/functions/postApi.ts @@ -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(); diff --git a/frontend/@dasig/scripts/functions/encryptRsa.ts b/frontend/@dasig/scripts/functions/encryptRsa.ts index d9274f8..b929281 100644 --- a/frontend/@dasig/scripts/functions/encryptRsa.ts +++ b/frontend/@dasig/scripts/functions/encryptRsa.ts @@ -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); diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 0a616ef..d4b9331 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -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"] \ No newline at end of file +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 \ No newline at end of file diff --git a/frontend/Makefile b/frontend/Makefile index cd5afbe..991af04 100644 --- a/frontend/Makefile +++ b/frontend/Makefile @@ -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) diff --git a/frontend/app.config.ts b/frontend/app.config.ts index 377e62d..9f1e512 100644 --- a/frontend/app.config.ts +++ b/frontend/app.config.ts @@ -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, + }, + }, +}); diff --git a/frontend/biome.json b/frontend/biome.json deleted file mode 100644 index 05cb023..0000000 --- a/frontend/biome.json +++ /dev/null @@ -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" - } - } - } -} diff --git a/frontend/biome.jsonc b/frontend/biome.jsonc new file mode 100644 index 0000000..63ca42c --- /dev/null +++ b/frontend/biome.jsonc @@ -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" + } + } + } +} diff --git a/frontend/configs/config.api.toml b/frontend/configs/config.api.toml index 9170170..95721c3 100644 --- a/frontend/configs/config.api.toml +++ b/frontend/configs/config.api.toml @@ -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] diff --git a/frontend/configs/config.security.toml b/frontend/configs/config.security.toml index 6f705d9..d4fd30d 100644 --- a/frontend/configs/config.security.toml +++ b/frontend/configs/config.security.toml @@ -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 diff --git a/frontend/configs/design.site.sass b/frontend/configs/design.site.sass index 47a2fdd..6aa6b27 100644 --- a/frontend/configs/design.site.sass +++ b/frontend/configs/design.site.sass @@ -1,5 +1,5 @@ -$lightBackground: #e2e7f2 -$darkBackground: #0a152a +$light-background: #e2e7f2 +$dark-background: #0a152a $mobile: 575.98px $tablet: 768px diff --git a/frontend/docker-compose.yml b/frontend/docker-compose.yml index a9b3c4c..1ac48cb 100644 --- a/frontend/docker-compose.yml +++ b/frontend/docker-compose.yml @@ -6,4 +6,4 @@ services: context: . dockerfile: Dockerfile ports: - - 8080:8080 + - ${PORT}:8080 diff --git a/frontend/src/entry-client.tsx b/frontend/src/entry-client.tsx index af45706..0ca4e3c 100644 --- a/frontend/src/entry-client.tsx +++ b/frontend/src/entry-client.tsx @@ -1,5 +1,4 @@ // @refresh reload -/** biome-ignore-all lint/style/noNonNullAssertion: */ import { mount, StartClient } from "@solidjs/start/client"; mount(() => , document.getElementById("app")!); diff --git a/frontend/src/entry-server.tsx b/frontend/src/entry-server.tsx index 4c1b481..c08752c 100644 --- a/frontend/src/entry-server.tsx +++ b/frontend/src/entry-server.tsx @@ -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; diff --git a/frontend/src/styles/app.sass b/frontend/src/styles/app.sass index 91595a7..7cf18cb 100644 --- a/frontend/src/styles/app.sass +++ b/frontend/src/styles/app.sass @@ -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