From 3165daeace8db998bd03d1670195a837a0623fbf Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Tue, 18 Mar 2025 20:57:44 -0400 Subject: [PATCH] feat: migrate package.json into deno config format --- deno.json | 34 ---------- deno.jsonc | 132 +++++++++++++++++++++++++++++++++++++ deno.lock | 149 ++++++++++++++++++++++-------------------- package.json | 110 ------------------------------- simple-git-hooks.json | 3 + 5 files changed, 212 insertions(+), 216 deletions(-) delete mode 100644 deno.json create mode 100644 deno.jsonc delete mode 100644 package.json create mode 100644 simple-git-hooks.json diff --git a/deno.json b/deno.json deleted file mode 100644 index 2ab367be..00000000 --- a/deno.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "imports": { - "@app/": "./src/", - "@pages/": "./src/pages/", - "@components/": "./src/components/", - "@core/": "./src/core/", - "@layouts/": "./src/layouts/" - }, - "compilerOptions": { - "lib": [ - "DOM", - "DOM.Iterable", - "ESNext", - "deno.window", - "deno.ns" - ], - "jsx": "react-jsx", - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - "strictNullChecks": true, - "types": [ - "vite/client", - "node", - "@types/web-bluetooth", - "@types/w3c-web-serial" - ], - "strictPropertyInitialization": false - }, - "unstable": [ - "sloppy-imports" - ] -} diff --git a/deno.jsonc b/deno.jsonc new file mode 100644 index 00000000..82f538d3 --- /dev/null +++ b/deno.jsonc @@ -0,0 +1,132 @@ +{ + "version": "2.3.3-0", + "description": "Meshtastic web client", + "license": "GPL-3.0-only", + "homepage": "https://meshtastic.org", + "repository": "https://github.com/meshtastic/web", + "compilerOptions": { + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext", + "deno.window", + "deno.ns" + ], + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "types": [ + "vite/client", + "@types/node", + "@types/web-bluetooth", + "@types/w3c-web-serial" + ] + }, + "imports": { + "@app/": "./src/", + "@pages/": "./src/pages/", + "@components/": "./src/components/", + "@core/": "./src/core/", + "@layouts/": "./src/layouts/", + + // --- NPM dependencies --- + "@bufbuild/protobuf": "npm:@bufbuild/protobuf@^2.2.3", + "@meshtastic/core": "npm:@jsr/meshtastic__core@2.6.0-0", + "@meshtastic/js": "npm:@jsr/meshtastic__js@2.6.0-0", + "@meshtastic/transport-http": "npm:@jsr/meshtastic__transport-http", + "@meshtastic/transport-web-serial": "npm:@jsr/meshtastic__transport-web-serial", + "@noble/curves": "npm:@noble/curves@^1.8.1", + "@radix-ui/react-accordion": "npm:@radix-ui/react-accordion@^1.2.3", + "@radix-ui/react-checkbox": "npm:@radix-ui/react-checkbox@^1.1.4", + "@radix-ui/react-dialog": "npm:@radix-ui/react-dialog@^1.1.6", + "@radix-ui/react-dropdown-menu": "npm:@radix-ui/react-dropdown-menu@^2.1.6", + "@radix-ui/react-label": "npm:@radix-ui/react-label@^2.1.2", + "@radix-ui/react-menubar": "npm:@radix-ui/react-menubar@^1.1.6", + "@radix-ui/react-popover": "npm:@radix-ui/react-popover@^1.1.6", + "@radix-ui/react-scroll-area": "npm:@radix-ui/react-scroll-area@^1.2.3", + "@radix-ui/react-select": "npm:@radix-ui/react-select@^2.1.6", + "@radix-ui/react-separator": "npm:@radix-ui/react-separator@^1.1.2", + "@radix-ui/react-switch": "npm:@radix-ui/react-switch@^1.1.3", + "@radix-ui/react-tabs": "npm:@radix-ui/react-tabs@^1.1.3", + "@radix-ui/react-toast": "npm:@radix-ui/react-toast@^1.2.6", + "@radix-ui/react-tooltip": "npm:@radix-ui/react-tooltip@^1.1.8", + "@turf/turf": "npm:@turf/turf@^7.2.0", + "base64-js": "npm:base64-js@^1.5.1", + "class-validator": "npm:class-validator@^0.14.1", + "class-variance-authority": "npm:class-variance-authority@^0.7.1", + "clsx": "npm:clsx@^2.1.1", + "cmdk": "npm:cmdk@^1.0.4", + "crypto-random-string": "npm:crypto-random-string@^5.0.0", + "immer": "npm:immer@^10.1.1", + "js-cookie": "npm:js-cookie@^3.0.5", + "lucide-react": "npm:lucide-react@^0.477.0", + "maplibre-gl": "npm:maplibre-gl@5.1.1", + "react": "npm:react@^19.0.0", + "react-dom": "npm:react-dom@^19.0.0", + "react-error-boundary": "npm:react-error-boundary@^5.0.0", + "react-hook-form": "npm:react-hook-form@^7.54.2", + "react-map-gl": "npm:react-map-gl@8.0.1", + "react-qrcode-logo": "npm:react-qrcode-logo@^3.0.0", + "react-scan": "npm:react-scan@^0.2.8", + "rfc4648": "npm:rfc4648@^1.5.4", + "vite-plugin-node-polyfills": "npm:vite-plugin-node-polyfills@^0.23.0", + "zustand": "npm:zustand@5.0.3", + + // --- NPM devDependencies --- + "@tailwindcss/postcss": "npm:@tailwindcss/postcss@^4.0.9", + "@testing-library/jest-dom": "npm:@testing-library/jest-dom@^6.6.3", + "@testing-library/react": "npm:@testing-library/react@^16.2.0", + "@testing-library/user-event": "npm:@testing-library/user-event@^14.6.1", + "@types/chrome": "npm:@types/chrome@^0.0.307", + "@types/js-cookie": "npm:@types/js-cookie@^3.0.6", + "@types/node": "npm:@types/node@^22.13.7", + "@types/react": "npm:@types/react@^19.0.10", + "@types/react-dom": "npm:@types/react-dom@^19.0.4", + "@types/serviceworker": "npm:@types/serviceworker@^0.0.123", + "@types/w3c-web-serial": "npm:@types/w3c-web-serial@^1.0.8", + "@types/web-bluetooth": "npm:@types/web-bluetooth@^0.0.21", + "@vitejs/plugin-react": "npm:@vitejs/plugin-react@^4.3.4", + "autoprefixer": "npm:autoprefixer@^10.4.20", + "gzipper": "npm:gzipper@^8.2.0", + "happy-dom": "npm:happy-dom@^17.2.2", + "postcss": "npm:postcss@^8.5.3", + "simple-git-hooks": "npm:simple-git-hooks@^2.11.1", + "tailwind-merge": "npm:tailwind-merge@^3.0.2", + "tailwindcss": "npm:tailwindcss@^4.0.9", + "tailwindcss-animate": "npm:tailwindcss-animate@^1.0.7", + "tar": "npm:tar@^7.4.3", + "testing-library": "npm:testing-library@^0.0.2", + "typescript": "npm:typescript@^5.8.2", + "vite": "npm:vite@^6.2.0", + "vitest": "npm:vitest@^3.0.7", + "vite-plugin-pwa": "npm:vite-plugin-pwa@^0.21.1" + }, + "tasks": { + "install:hooks": "deno run -A npm:simple-git-hooks", + "build": "vite build", + "build:analyze": "BUNDLE_ANALYZE=true deno task build", + "lint": "deno lint src/", + "lint:fix": "deno lint --fix src/", + "format": "deno fmt src/", + "dev": "deno task dev:ui", + "dev:ui": "deno run -A npm:vite dev", + "dev:scan": "VITE_DEBUG_SCAN=true deno task dev:ui", + "test": "deno run -A npm:vitest", + "preview": "deno run -A npm:vite preview", + "package": "gzipper c -i html,js,css,png,ico,svg,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ ." + }, + "lint": { + "files": { + "include": ["src/"] + } + }, + "fmt": { + "files": { + "include": ["src/"] + } + } +} diff --git a/deno.lock b/deno.lock index b7f18099..42ad235b 100644 --- a/deno.lock +++ b/deno.lock @@ -28,6 +28,7 @@ "npm:@turf/turf@^7.2.0": "7.2.0", "npm:@types/chrome@^0.0.307": "0.0.307", "npm:@types/js-cookie@^3.0.6": "3.0.6", + "npm:@types/node@*": "22.12.0", "npm:@types/node@^22.13.7": "22.13.8", "npm:@types/react-dom@^19.0.4": "19.0.4_@types+react@19.0.10", "npm:@types/react@^19.0.10": "19.0.10", @@ -3537,6 +3538,12 @@ "undici-types@6.19.8" ] }, + "@types/node@22.12.0": { + "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", + "dependencies": [ + "undici-types@6.20.0" + ] + }, "@types/node@22.13.8": { "integrity": "sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==", "dependencies": [ @@ -7096,77 +7103,75 @@ } }, "workspace": { - "packageJson": { - "dependencies": [ - "npm:@bufbuild/protobuf@^2.2.3", - "npm:@jsr/meshtastic__core@2.6.0-0", - "npm:@jsr/meshtastic__js@2.6.0-0", - "npm:@jsr/meshtastic__transport-http@*", - "npm:@jsr/meshtastic__transport-web-serial@*", - "npm:@noble/curves@^1.8.1", - "npm:@radix-ui/react-accordion@^1.2.3", - "npm:@radix-ui/react-checkbox@^1.1.4", - "npm:@radix-ui/react-dialog@^1.1.6", - "npm:@radix-ui/react-dropdown-menu@^2.1.6", - "npm:@radix-ui/react-label@^2.1.2", - "npm:@radix-ui/react-menubar@^1.1.6", - "npm:@radix-ui/react-popover@^1.1.6", - "npm:@radix-ui/react-scroll-area@^1.2.3", - "npm:@radix-ui/react-select@^2.1.6", - "npm:@radix-ui/react-separator@^1.1.2", - "npm:@radix-ui/react-switch@^1.1.3", - "npm:@radix-ui/react-tabs@^1.1.3", - "npm:@radix-ui/react-toast@^1.2.6", - "npm:@radix-ui/react-tooltip@^1.1.8", - "npm:@tailwindcss/postcss@^4.0.9", - "npm:@testing-library/jest-dom@^6.6.3", - "npm:@testing-library/react@^16.2.0", - "npm:@testing-library/user-event@^14.6.1", - "npm:@turf/turf@^7.2.0", - "npm:@types/chrome@^0.0.307", - "npm:@types/js-cookie@^3.0.6", - "npm:@types/node@^22.13.7", - "npm:@types/react-dom@^19.0.4", - "npm:@types/react@^19.0.10", - "npm:@types/serviceworker@^0.0.123", - "npm:@types/w3c-web-serial@^1.0.8", - "npm:@types/web-bluetooth@^0.0.21", - "npm:@vitejs/plugin-react@^4.3.4", - "npm:autoprefixer@^10.4.20", - "npm:base64-js@^1.5.1", - "npm:class-validator@~0.14.1", - "npm:class-variance-authority@~0.7.1", - "npm:clsx@^2.1.1", - "npm:cmdk@^1.0.4", - "npm:crypto-random-string@5", - "npm:gzipper@^8.2.0", - "npm:happy-dom@^17.2.2", - "npm:immer@^10.1.1", - "npm:js-cookie@^3.0.5", - "npm:lucide-react@0.477", - "npm:maplibre-gl@5.1.1", - "npm:postcss@^8.5.3", - "npm:react-dom@19", - "npm:react-error-boundary@5", - "npm:react-hook-form@^7.54.2", - "npm:react-map-gl@8.0.1", - "npm:react-qrcode-logo@3", - "npm:react-scan@~0.2.8", - "npm:react@19", - "npm:rfc4648@^1.5.4", - "npm:simple-git-hooks@^2.11.1", - "npm:tailwind-merge@^3.0.2", - "npm:tailwindcss-animate@^1.0.7", - "npm:tailwindcss@^4.0.9", - "npm:tar@^7.4.3", - "npm:testing-library@^0.0.2", - "npm:typescript@^5.8.2", - "npm:vite-plugin-node-polyfills@0.23", - "npm:vite-plugin-pwa@~0.21.1", - "npm:vite@^6.2.0", - "npm:vitest@^3.0.7", - "npm:zustand@5.0.3" - ] - } + "dependencies": [ + "npm:@bufbuild/protobuf@^2.2.3", + "npm:@jsr/meshtastic__core@2.6.0-0", + "npm:@jsr/meshtastic__js@2.6.0-0", + "npm:@jsr/meshtastic__transport-http@*", + "npm:@jsr/meshtastic__transport-web-serial@*", + "npm:@noble/curves@^1.8.1", + "npm:@radix-ui/react-accordion@^1.2.3", + "npm:@radix-ui/react-checkbox@^1.1.4", + "npm:@radix-ui/react-dialog@^1.1.6", + "npm:@radix-ui/react-dropdown-menu@^2.1.6", + "npm:@radix-ui/react-label@^2.1.2", + "npm:@radix-ui/react-menubar@^1.1.6", + "npm:@radix-ui/react-popover@^1.1.6", + "npm:@radix-ui/react-scroll-area@^1.2.3", + "npm:@radix-ui/react-select@^2.1.6", + "npm:@radix-ui/react-separator@^1.1.2", + "npm:@radix-ui/react-switch@^1.1.3", + "npm:@radix-ui/react-tabs@^1.1.3", + "npm:@radix-ui/react-toast@^1.2.6", + "npm:@radix-ui/react-tooltip@^1.1.8", + "npm:@tailwindcss/postcss@^4.0.9", + "npm:@testing-library/jest-dom@^6.6.3", + "npm:@testing-library/react@^16.2.0", + "npm:@testing-library/user-event@^14.6.1", + "npm:@turf/turf@^7.2.0", + "npm:@types/chrome@^0.0.307", + "npm:@types/js-cookie@^3.0.6", + "npm:@types/node@^22.13.7", + "npm:@types/react-dom@^19.0.4", + "npm:@types/react@^19.0.10", + "npm:@types/serviceworker@^0.0.123", + "npm:@types/w3c-web-serial@^1.0.8", + "npm:@types/web-bluetooth@^0.0.21", + "npm:@vitejs/plugin-react@^4.3.4", + "npm:autoprefixer@^10.4.20", + "npm:base64-js@^1.5.1", + "npm:class-validator@~0.14.1", + "npm:class-variance-authority@~0.7.1", + "npm:clsx@^2.1.1", + "npm:cmdk@^1.0.4", + "npm:crypto-random-string@5", + "npm:gzipper@^8.2.0", + "npm:happy-dom@^17.2.2", + "npm:immer@^10.1.1", + "npm:js-cookie@^3.0.5", + "npm:lucide-react@0.477", + "npm:maplibre-gl@5.1.1", + "npm:postcss@^8.5.3", + "npm:react-dom@19", + "npm:react-error-boundary@5", + "npm:react-hook-form@^7.54.2", + "npm:react-map-gl@8.0.1", + "npm:react-qrcode-logo@3", + "npm:react-scan@~0.2.8", + "npm:react@19", + "npm:rfc4648@^1.5.4", + "npm:simple-git-hooks@^2.11.1", + "npm:tailwind-merge@^3.0.2", + "npm:tailwindcss-animate@^1.0.7", + "npm:tailwindcss@^4.0.9", + "npm:tar@^7.4.3", + "npm:testing-library@^0.0.2", + "npm:typescript@^5.8.2", + "npm:vite-plugin-node-polyfills@0.23", + "npm:vite-plugin-pwa@~0.21.1", + "npm:vite@^6.2.0", + "npm:vitest@^3.0.7", + "npm:zustand@5.0.3" + ] } } diff --git a/package.json b/package.json deleted file mode 100644 index 1bea604b..00000000 --- a/package.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "name": "meshtastic-web", - "version": "2.3.3-0", - "type": "module", - "description": "Meshtastic web client", - "license": "GPL-3.0-only", - "scripts": { - "build": "vite build", - "build:analyze": "BUNDLE_ANALYZE=true deno task build", - "lint": "deno lint src/", - "lint:fix": "deno lint --fix src/", - "format": "deno fmt src/", - "dev": "deno task dev:ui", - "dev:ui": "deno run -A npm:vite dev", - "dev:scan": "VITE_DEBUG_SCAN=true deno task dev:ui", - "test": "deno run -A npm:vitest", - "preview": "deno run -A npm:vite preview", - "package": "gzipper c -i html,js,css,png,ico,svg,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ ." - }, - "repository": { - "type": "git", - "url": "git+https://github.com/meshtastic/web.git" - }, - "bugs": { - "url": "https://github.com/meshtastic/web/issues" - }, - "simple-git-hooks": { - "pre-commit": "deno task lint:fix && deno task format" - }, - "lint-staged": { - "*.{ts,tsx}": [ - "deno task lint:fix", - "deno task format" - ] - }, - "homepage": "https://meshtastic.org", - "dependencies": { - "@bufbuild/protobuf": "^2.2.3", - "@meshtastic/core": "npm:@jsr/meshtastic__core@2.6.0-0", - "@meshtastic/js": "npm:@jsr/meshtastic__js@2.6.0-0", - "@meshtastic/transport-http": "npm:@jsr/meshtastic__transport-http", - "@meshtastic/transport-web-serial": "npm:@jsr/meshtastic__transport-web-serial", - "@noble/curves": "^1.8.1", - "@radix-ui/react-accordion": "^1.2.3", - "@radix-ui/react-checkbox": "^1.1.4", - "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-dropdown-menu": "^2.1.6", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-menubar": "^1.1.6", - "@radix-ui/react-popover": "^1.1.6", - "@radix-ui/react-scroll-area": "^1.2.3", - "@radix-ui/react-select": "^2.1.6", - "@radix-ui/react-separator": "^1.1.2", - "@radix-ui/react-switch": "^1.1.3", - "@radix-ui/react-tabs": "^1.1.3", - "@radix-ui/react-toast": "^1.2.6", - "@radix-ui/react-tooltip": "^1.1.8", - "@turf/turf": "^7.2.0", - "base64-js": "^1.5.1", - "class-validator": "^0.14.1", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "^1.0.4", - "crypto-random-string": "^5.0.0", - "immer": "^10.1.1", - "js-cookie": "^3.0.5", - "lucide-react": "^0.477.0", - "maplibre-gl": "5.1.1", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-error-boundary": "^5.0.0", - "react-hook-form": "^7.54.2", - "react-map-gl": "8.0.1", - "react-qrcode-logo": "^3.0.0", - "react-scan": "^0.2.8", - "rfc4648": "^1.5.4", - "vite-plugin-node-polyfills": "^0.23.0", - - "zustand": "5.0.3" - }, - "devDependencies": { - "@tailwindcss/postcss": "^4.0.9", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.2.0", - "@testing-library/user-event": "^14.6.1", - "@types/chrome": "^0.0.307", - "@types/js-cookie": "^3.0.6", - "@types/node": "^22.13.7", - "@types/react": "^19.0.10", - "@types/react-dom": "^19.0.4", - "@types/serviceworker": "^0.0.123", - "@types/w3c-web-serial": "^1.0.8", - "@types/web-bluetooth": "^0.0.21", - "@vitejs/plugin-react": "^4.3.4", - "autoprefixer": "^10.4.20", - "gzipper": "^8.2.0", - "happy-dom": "^17.2.2", - "postcss": "^8.5.3", - "simple-git-hooks": "^2.11.1", - "tailwind-merge": "^3.0.2", - "tailwindcss": "^4.0.9", - "tailwindcss-animate": "^1.0.7", - "tar": "^7.4.3", - "testing-library": "^0.0.2", - "typescript": "^5.8.2", - "vite": "^6.2.0", - "vitest": "^3.0.7", - "vite-plugin-pwa": "^0.21.1" - } -} diff --git a/simple-git-hooks.json b/simple-git-hooks.json new file mode 100644 index 00000000..9c6f55d1 --- /dev/null +++ b/simple-git-hooks.json @@ -0,0 +1,3 @@ +{ + "pre-commit": "deno task lint:fix && deno task format" +}