a collection of tools for fly for fun universe skillulator.lol

update imports

besaid.zone fbf2ea3b 1e905ea8

verified
Changed files
+75 -104
apps
apps/skillulator/data/tree-old.ts apps/skillulator/src/data/tree-old.ts
apps/skillulator/data/tree.ts apps/skillulator/src/data/tree.ts
+38 -39
apps/skillulator/package.json
··· 1 1 { 2 - "name": "flyff-skill-calc", 3 - "private": true, 4 - "version": "0.0.0", 5 - "type": "module", 6 - "scripts": { 7 - "dev": "vite", 8 - "build": "vite build", 9 - "preview": "vite preview", 10 - "clean": "rm -rf dist/" 11 - }, 12 - "dependencies": { 13 - "@tanstack/react-router": "^1.81.0", 14 - "clsx": "^2.1.1", 15 - "i18next": "^23.16.5", 16 - "i18next-browser-languagedetector": "^8.0.0", 17 - "i18next-http-backend": "^2.6.2", 18 - "immer": "^10.1.1", 19 - "lz-string": "^1.5.0", 20 - "react": "^18.3.1", 21 - "react-dom": "^18.3.1", 22 - "react-helmet": "^6.1.0", 23 - "react-i18next": "^15.1.1", 24 - "react-router": "^7.0.0-pre.0", 25 - "zustand": "^5.0.1" 26 - }, 27 - "devDependencies": { 28 - "@tailwindcss/forms": "^0.5.9", 29 - "@tanstack/router-devtools": "^1.81.0", 30 - "@tanstack/router-plugin": "^1.79.0", 31 - "@types/node": "^22.9.0", 32 - "@types/react": "^18.3.12", 33 - "@types/react-dom": "^18.3.1", 34 - "@vitejs/plugin-react": "^4.3.3", 35 - "autoprefixer": "^10.4.20", 36 - "postcss": "^8.4.47", 37 - "tailwindcss": "^3.4.14", 38 - "typescript": "^5.6.3", 39 - "vite": "^5.4.10" 40 - } 2 + "name": "skillulator", 3 + "private": true, 4 + "version": "0.0.0", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite", 8 + "build": "vite build", 9 + "preview": "vite preview", 10 + "clean": "rm -rf dist/" 11 + }, 12 + "dependencies": { 13 + "@tanstack/react-router": "^1.81.0", 14 + "clsx": "^2.1.1", 15 + "i18next": "^23.16.5", 16 + "i18next-browser-languagedetector": "^8.0.0", 17 + "i18next-http-backend": "^2.6.2", 18 + "immer": "^10.1.1", 19 + "lz-string": "^1.5.0", 20 + "react": "^18.3.1", 21 + "react-dom": "^18.3.1", 22 + "react-helmet": "^6.1.0", 23 + "react-i18next": "^15.1.1", 24 + "zustand": "^5.0.1" 25 + }, 26 + "devDependencies": { 27 + "@tailwindcss/forms": "^0.5.9", 28 + "@tanstack/router-devtools": "^1.81.0", 29 + "@tanstack/router-plugin": "^1.79.0", 30 + "@types/node": "^22.9.0", 31 + "@types/react": "^18.3.12", 32 + "@types/react-dom": "^18.3.1", 33 + "@vitejs/plugin-react": "^4.3.3", 34 + "autoprefixer": "^10.4.20", 35 + "postcss": "^8.4.47", 36 + "tailwindcss": "^3.4.14", 37 + "typescript": "^5.6.3", 38 + "vite": "^5.4.10" 39 + } 41 40 }
+1 -1
apps/skillulator/src/components/Navbar.tsx
··· 1 1 import type { ChangeEvent } from "react"; 2 2 import { useTranslation } from "react-i18next"; 3 - import { languages } from "../utils/constants"; 3 + import { languages } from "@/utils/constants"; 4 4 5 5 export function Navbar() { 6 6 const { i18n } = useTranslation();
+1 -1
apps/skillulator/src/i18n.ts
··· 3 3 4 4 import Backend from "i18next-http-backend"; 5 5 import LanguageDetector from "i18next-browser-languagedetector"; 6 - import { languages } from "./utils/constants"; 6 + import { languages } from "@/utils/constants"; 7 7 8 8 i18n 9 9 .use(Backend)
+2 -2
apps/skillulator/src/routes/__root.tsx
··· 1 1 import { createRootRoute, Outlet } from "@tanstack/react-router"; 2 - import { Navbar } from "../components/Navbar"; 3 - import { Footer } from "../components/Footer"; 2 + import { Navbar } from "@/components/Navbar"; 3 + import { Footer } from "@/components/Footer"; 4 4 5 5 export const Route = createRootRoute({ 6 6 component: () => (
+3 -3
apps/skillulator/src/routes/c/$class/components/Skill.tsx
··· 1 - import type { Skill as SkillType } from "../../../../types"; 2 - import { languages } from "../../../../utils/constants"; 3 - import { getLanguageForSkill } from "../../../../utils/language"; 1 + import type { Skill as SkillType } from "@/types"; 2 + import { languages } from "@/utils/constants"; 3 + import { getLanguageForSkill } from "@/utils/language"; 4 4 import { 5 5 DecreaseSkillPointButton, 6 6 IncreaseSkillToMaxButton,
+2 -2
apps/skillulator/src/routes/c/$class/components/action-buttons.tsx
··· 1 1 import clsx from "clsx"; 2 - import { useTreeStore } from "../../../../zustand/treeStore"; 3 - import type { Skill } from "../../../../types"; 2 + import { useTreeStore } from "@/zustand/treeStore"; 3 + import type { Skill } from "@/types"; 4 4 5 5 export function DecreaseSkillPointButton(props: { 6 6 skill: Skill;
+2 -2
apps/skillulator/src/routes/c/$class/route.tsx
··· 15 15 decodeTree, 16 16 encodeTree, 17 17 getJobByName, 18 - } from "../../../utils/skill-tree-helpers"; 19 - import { useTreeStore } from "../../../zustand/treeStore"; 18 + } from "@/utils/skill-tree-helpers"; 19 + import { useTreeStore } from "@/zustand/treeStore"; 20 20 import { t } from "i18next"; 21 21 22 22 export const Route = createFileRoute("/c/$class")({
+1 -1
apps/skillulator/src/routes/index/route.lazy.tsx
··· 1 1 import { Suspense } from "react"; 2 2 import { useTranslation } from "react-i18next"; 3 - import { JOBS } from "../../utils/constants"; 3 + import { JOBS } from "@/utils/constants"; 4 4 import { createLazyFileRoute, Link } from "@tanstack/react-router"; 5 5 import { LinkCard } from "./components/LinkCard"; 6 6
+1 -1
apps/skillulator/src/zustand/treeStore.ts
··· 1 1 import { produce } from "immer"; 2 2 import { create } from "zustand"; 3 - import { tree as jobTree } from "../../data/tree"; 3 + import { tree as jobTree } from "@/data/tree"; 4 4 import { 5 5 getJobById, 6 6 getJobTotalSkillPoints,
+24 -20
apps/skillulator/tsconfig.json
··· 1 1 { 2 - "compilerOptions": { 3 - "target": "ESNext", 4 - "useDefineForClassFields": true, 5 - "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 - "allowJs": false, 7 - "skipLibCheck": true, 8 - "esModuleInterop": false, 9 - "allowSyntheticDefaultImports": true, 10 - "noImplicitAny": false, 11 - "strict": true, 12 - "forceConsistentCasingInFileNames": true, 13 - "module": "ESNext", 14 - "moduleResolution": "Node", 15 - "resolveJsonModule": true, 16 - "isolatedModules": true, 17 - "noEmit": true, 18 - "jsx": "react-jsx" 19 - }, 20 - "include": ["src", "data"], 21 - "references": [{ "path": "./tsconfig.node.json" }] 2 + "compilerOptions": { 3 + "target": "ESNext", 4 + "useDefineForClassFields": true, 5 + "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 + "allowJs": false, 7 + "skipLibCheck": true, 8 + "esModuleInterop": false, 9 + "allowSyntheticDefaultImports": true, 10 + "noImplicitAny": false, 11 + "strict": true, 12 + "forceConsistentCasingInFileNames": true, 13 + "module": "ESNext", 14 + "moduleResolution": "Node", 15 + "resolveJsonModule": true, 16 + "isolatedModules": true, 17 + "noEmit": true, 18 + "jsx": "react-jsx", 19 + "baseUrl": ".", 20 + "paths": { 21 + "@/*": ["./src/*"] 22 + } 23 + }, 24 + "include": ["src", "src/data"], 25 + "references": [{ "path": "./tsconfig.node.json" }] 22 26 }
-32
pnpm-lock.yaml
··· 69 69 react-i18next: 70 70 specifier: ^15.1.1 71 71 version: 15.7.4(i18next@23.16.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3) 72 - react-router: 73 - specifier: ^7.0.0-pre.0 74 - version: 7.9.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 75 72 zustand: 76 73 specifier: ^5.0.1 77 74 version: 5.0.8(@types/react@18.3.27)(immer@10.2.0)(react@18.3.1)(use-sync-external-store@1.6.0(react@18.3.1)) ··· 918 915 cookie-es@2.0.0: 919 916 resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} 920 917 921 - cookie@1.1.1: 922 - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} 923 - engines: {node: '>=18'} 924 - 925 918 cross-fetch@4.0.0: 926 919 resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} 927 920 ··· 1279 1272 resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} 1280 1273 engines: {node: '>=0.10.0'} 1281 1274 1282 - react-router@7.9.6: 1283 - resolution: {integrity: sha512-Y1tUp8clYRXpfPITyuifmSoE2vncSME18uVLgaqyxh9H35JWpIfzHo+9y3Fzh5odk/jxPW29IgLgzcdwxGqyNA==} 1284 - engines: {node: '>=20.0.0'} 1285 - peerDependencies: 1286 - react: '>=18' 1287 - react-dom: '>=18' 1288 - peerDependenciesMeta: 1289 - react-dom: 1290 - optional: true 1291 - 1292 1275 react-side-effect@2.1.2: 1293 1276 resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} 1294 1277 peerDependencies: ··· 1355 1338 seroval@1.4.0: 1356 1339 resolution: {integrity: sha512-BdrNXdzlofomLTiRnwJTSEAaGKyHHZkbMXIywOh7zlzp4uZnXErEwl9XZ+N1hJSNpeTtNxWvVwN0wUzAIQ4Hpg==} 1357 1340 engines: {node: '>=10'} 1358 - 1359 - set-cookie-parser@2.7.2: 1360 - resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} 1361 1341 1362 1342 solid-js@1.9.10: 1363 1343 resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==} ··· 2347 2327 2348 2328 cookie-es@2.0.0: {} 2349 2329 2350 - cookie@1.1.1: {} 2351 - 2352 2330 cross-fetch@4.0.0: 2353 2331 dependencies: 2354 2332 node-fetch: 2.7.0 ··· 2668 2646 2669 2647 react-refresh@0.17.0: {} 2670 2648 2671 - react-router@7.9.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 2672 - dependencies: 2673 - cookie: 1.1.1 2674 - react: 18.3.1 2675 - set-cookie-parser: 2.7.2 2676 - optionalDependencies: 2677 - react-dom: 18.3.1(react@18.3.1) 2678 - 2679 2649 react-side-effect@2.1.2(react@18.3.1): 2680 2650 dependencies: 2681 2651 react: 18.3.1 ··· 2759 2729 seroval@1.3.2: {} 2760 2730 2761 2731 seroval@1.4.0: {} 2762 - 2763 - set-cookie-parser@2.7.2: {} 2764 2732 2765 2733 solid-js@1.9.10: 2766 2734 dependencies: