diff --git a/index.html b/index.html index 953f6b6..437f5e9 100644 --- a/index.html +++ b/index.html @@ -6,18 +6,77 @@ Jet Pham - Software Extremist - + + - + - + + + + + + - + + + @@ -25,27 +84,28 @@
- - -
+
-
-
Software Extremist
+

Jet Pham

+ +

Software Extremist

Jet
diff --git a/package-lock.json b/package-lock.json index e76196b..eb9f1ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "typescript": "^5.9.3", "typescript-eslint": "^8.56.1", "vite": "^7.3.1", + "vite-plugin-singlefile": "^2.3.0", "vite-plugin-top-level-await": "^1.6.0", "vite-plugin-wasm": "^3.5.0" } @@ -1899,6 +1900,19 @@ "node": "18 || 20 || >=22" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cgol": { "resolved": "cgol/pkg", "link": true @@ -2234,6 +2248,19 @@ "node": ">=16.0.0" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2350,6 +2377,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2699,6 +2736,33 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/minimatch": { "version": "10.2.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", @@ -3114,6 +3178,19 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/ts-api-utils": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", @@ -3294,6 +3371,23 @@ } } }, + "node_modules/vite-plugin-singlefile": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-singlefile/-/vite-plugin-singlefile-2.3.0.tgz", + "integrity": "sha512-DAcHzYypM0CasNLSz/WG0VdKOCxGHErfrjOoyIPiNxTPTGmO6rRD/te93n1YL/s+miXq66ipF1brMBikf99c6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">18.0.0" + }, + "peerDependencies": { + "rollup": "^4.44.1", + "vite": "^5.4.11 || ^6.0.0 || ^7.0.0" + } + }, "node_modules/vite-plugin-top-level-await": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.6.0.tgz", diff --git a/package.json b/package.json index 462d9db..b3819be 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "typescript": "^5.9.3", "typescript-eslint": "^8.56.1", "vite": "^7.3.1", + "vite-plugin-singlefile": "^2.3.0", "vite-plugin-top-level-await": "^1.6.0", "vite-plugin-wasm": "^3.5.0" }, diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..b19a3ea --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://jetpham.com/sitemap.xml diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..8e86b77 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,8 @@ + + + + https://jetpham.com/ + monthly + 1.0 + + diff --git a/src/main.ts b/src/main.ts index 1983b92..d810ae1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,17 +1,8 @@ import "~/styles/globals.css"; import Jet from "~/assets/Jet.txt?ansi"; +import init, { start } from "cgol"; document.getElementById("ansi-art")!.innerHTML = Jet; -import("cgol") - .then(async (cgolModule) => { - if (typeof cgolModule.default === "function") { - await cgolModule.default(); - } - if (typeof cgolModule.start === "function") { - cgolModule.start(); - } - }) - .catch((error: unknown) => { - console.error("Failed to initialize CGOL WebAssembly module:", error); - }); +await init(); +start(); diff --git a/vite.config.ts b/vite.config.ts index b1983ef..ef3f64c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,10 +2,17 @@ import { defineConfig } from "vite"; import tailwindcss from "@tailwindcss/vite"; import wasm from "vite-plugin-wasm"; import topLevelAwait from "vite-plugin-top-level-await"; +import { viteSingleFile } from "vite-plugin-singlefile"; import ansi from "./vite-plugin-ansi"; export default defineConfig({ - plugins: [ansi(), tailwindcss(), wasm(), topLevelAwait()], + plugins: [ + ansi(), + tailwindcss(), + wasm(), + topLevelAwait(), + viteSingleFile({ useRecommendedBuildConfig: false }), + ], resolve: { alias: { "~": "/src", @@ -25,5 +32,7 @@ export default defineConfig({ }, build: { target: "esnext", + assetsInlineLimit: 0, + cssCodeSplit: false, }, });