From 3d9787d04b670f0ea63b629944cb31141b78e76d Mon Sep 17 00:00:00 2001 From: IKB3D <150914724+IKB3D@users.noreply.github.com> Date: Mon, 29 Jan 2024 18:55:21 +0000 Subject: [PATCH 01/27] Update trademark-grants.mdx Added IKB3D Grant --- docs/legal/trademark-grants.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/legal/trademark-grants.mdx b/docs/legal/trademark-grants.mdx index 6ffe8eed..0d736dd9 100644 --- a/docs/legal/trademark-grants.mdx +++ b/docs/legal/trademark-grants.mdx @@ -51,3 +51,5 @@ This process ensures transparency and community involvement in the granting of t - Details: Emmett is producing 'Axanar!,' a non-commercial Star Trek fan puppet show. The Meshtastic logo/trademark will used only in a positive manner, to hint to the audience that Meshtastic is still up and running in the year 2380. The use of the Meshtastic Logo and Trademarks does not imply Emmett Plant or Axanar! is sponsored or endorsed by Meshtastic. Emmett also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revocable at any time for any reason. - Grant: [Simon - muzi.works](https://instagram.com/muzi.works) - Details: Simon is a Meshtastic designer of devices, device enclosures and accessories that carry the "Meshtastic" , Meshtastic.org URL and "M" logos. The use of the Meshtastic Logo and Trademarks does not imply Simon is sponsored or endorsed by Meshtastic. Simon also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason. +- Grant: [Chris Ridley - IKB3D](https://ikb3d.co.uk) + - Details: Chris designs devices, device enclosures and accessories which are sold through his online shop and other online marketplaces. Many of these carry the "Meshtastic" , Meshtastic.org URL and "M" logos. The use of the Meshtastic Logo and Trademarks does not imply Simon is sponsored or endorsed by Meshtastic. Simon also agrees to maintain compliance with the Meshtastic Legal requirements. This grant is revokable at any time for any reason. From 3b70d5301b2612e66c88245b650c90567c2c4a7e Mon Sep 17 00:00:00 2001 From: jopdyke <111011098+jopdyke@users.noreply.github.com> Date: Wed, 7 Feb 2024 15:38:39 -0500 Subject: [PATCH 02/27] Update core-modules.mdx added US distributor for RAK11310 --- docs/hardware/devices/rak/core-modules.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/hardware/devices/rak/core-modules.mdx b/docs/hardware/devices/rak/core-modules.mdx index 77dcc300..c33ea429 100644 --- a/docs/hardware/devices/rak/core-modules.mdx +++ b/docs/hardware/devices/rak/core-modules.mdx @@ -164,6 +164,8 @@ The RAK11200 does not contain a LoRa transceiver, and thus needs to be added sep - International - [RAK Wireless Store](https://store.rakwireless.com/products/rak11310-wisblock-lpwan-module) - [RAK Wireless Aliexpress](https://www.aliexpress.us/item/3256803225175784.html) + - US + - [Rokland](https://store.rokland.com/products/rak-raspberry-pi-rp2040-core-module-for-lorawan-with-lora-sx1262-us915-mhz-rak11310-pid-116003) From 0849ac5b31f5cc704792cee9238a7f410b03edc2 Mon Sep 17 00:00:00 2001 From: Andrew Beresford Date: Wed, 7 Feb 2024 23:12:50 +0000 Subject: [PATCH 03/27] Fix typos in Meshtastic flasher URLs (#983) * Update nrf52-erase.mdx Fix typo in flasher URL * Update drag-n-drop.mdx Fix typo in Flasher URL --- docs/getting-started/flashing-firmware/nrf52/drag-n-drop.mdx | 2 +- docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting-started/flashing-firmware/nrf52/drag-n-drop.mdx b/docs/getting-started/flashing-firmware/nrf52/drag-n-drop.mdx index 4f37a841..27bff140 100644 --- a/docs/getting-started/flashing-firmware/nrf52/drag-n-drop.mdx +++ b/docs/getting-started/flashing-firmware/nrf52/drag-n-drop.mdx @@ -12,7 +12,7 @@ import Link from "@docusaurus/Link"; ## Flash Firmware :::info -You may now use the [Meshtastic Web Flasher](https://flasher.mesthastic.org) to download and copy firmware to your nRF52 or RP2040-based devices. Alternatively, follow the instructions below to download and install firmware. +You may now use the [Meshtastic Web Flasher](https://flasher.meshtastic.org) to download and copy firmware to your nRF52 or RP2040-based devices. Alternatively, follow the instructions below to download and install firmware. ::: ### nRF52 diff --git a/docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx b/docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx index 15314e47..2b19073a 100644 --- a/docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx +++ b/docs/getting-started/flashing-firmware/nrf52/nrf52-erase.mdx @@ -10,7 +10,7 @@ import Link from "@docusaurus/Link"; Meshtastic uses the [littlefs](https://github.com/littlefs-project/littlefs) library to store configuration, logs, and other data in the internal flash of nRF52 & RP2040 devices. Updating the firmware does _not_ erase this additional data, which can cause issues when the format and location of data changes between releases. :::info -You may now use the [Meshtastic Web Flasher](https://flasher.mesthastic.org) to Factory Erase your nRF52 or RP2040-based devices. Visit the flasher, select your board, and click the trash can icon to the right of the Flash button. This will open a dialogue to begin the erase procedure. +You may now use the [Meshtastic Web Flasher](https://flasher.meshtastic.org) to Factory Erase your nRF52 or RP2040-based devices. Visit the flasher, select your board, and click the trash can icon to the right of the Flash button. This will open a dialogue to begin the erase procedure. Alternatively, follow the instructions below. ::: From 9bf9637614e4b68ac971456a2ed0715fffed6ec0 Mon Sep 17 00:00:00 2001 From: HarukiToreda <116696711+5kamisama5@users.noreply.github.com> Date: Wed, 7 Feb 2024 18:47:00 -0500 Subject: [PATCH 04/27] Add triple press button action for heltec (#976) Just adding the triple click function. Co-authored-by: rcarteraz Co-authored-by: Tommy Ekstrand --- docs/hardware/devices/heltec/buttons.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/hardware/devices/heltec/buttons.mdx b/docs/hardware/devices/heltec/buttons.mdx index 1e4ff0c4..cba4792a 100644 --- a/docs/hardware/devices/heltec/buttons.mdx +++ b/docs/hardware/devices/heltec/buttons.mdx @@ -13,3 +13,4 @@ sidebar_position: 1 - **Long press:** Will signal the device to shutdown after 5 seconds. - **Single press:** Changes the information page displayed on the device's screen. - **Double press:** Sends an adhoc ping of the device's position to the network. + - **Triple press:** Enables/Disables the GPS Module on demand. If an NPN Transistor is added it will cut power to the GPS board. The NPN pin must be configured on the PIN_GPS_EN inside the Position module in the App for this switching to work. From 3795f6a2c2c92629a199d7285e3926211cd9eeca Mon Sep 17 00:00:00 2001 From: pdxlocations <117498748+pdxlocations@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:04:04 -0800 Subject: [PATCH 05/27] MQTT subpage path forwrading --- vercel.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vercel.json b/vercel.json index 960c91f9..e8ea1798 100644 --- a/vercel.json +++ b/vercel.json @@ -57,6 +57,10 @@ "source": "/docs/software/mqtt/", "destination": "/docs/software/integrations/mqtt" }, + { + "source": "/docs/software/mqtt/:path*/", + "destination": "/docs/software/integrations/mqtt/:path*/" + }, { "source": "/docs/getting-started/faq", "destination": "/docs/faq/" From ddc2b53af9953d246aeda83b28db371758082a44 Mon Sep 17 00:00:00 2001 From: Tommy Ekstrand Date: Thu, 8 Feb 2024 15:23:54 -0600 Subject: [PATCH 06/27] fix biome errors (#977) --- .github/workflows/ci.yml | 4 +- biome.json | 3 +- docusaurus.config.js | 252 +++++++++--------- package.json | 2 +- pnpm-lock.yaml | 56 ++-- sidebars.js | 12 +- src/components/ColorMode.tsx | 2 +- src/components/PageLayout.tsx | 2 +- src/components/homepage/SocialCard.tsx | 2 +- src/components/tools/FrequencyCalculator.tsx | 162 +++++------ .../downloads/_components/FirmwareCard.tsx | 6 +- src/pages/downloads/index.tsx | 5 +- src/pages/index.tsx | 5 +- src/pages/tools/OEM.tsx | 13 +- src/utils/calculateADC.ts | 4 +- tailwind.config.ts | 38 +-- 16 files changed, 288 insertions(+), 280 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index faac55cb..6a941be2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: version: latest - name: Run Biome - run: biome ci . + run: biome ci . --diagnostic-level=error build: runs-on: ubuntu-latest steps: @@ -40,4 +40,4 @@ jobs: run: pnpm install - name: Build Package - run: pnpm run build \ No newline at end of file + run: pnpm run build diff --git a/biome.json b/biome.json index 32a4e0fe..570d35bb 100644 --- a/biome.json +++ b/biome.json @@ -4,7 +4,8 @@ "enabled": true }, "files": { - "ignoreUnknown": true + "ignoreUnknown": true, + "ignore": ["*.json"] }, "vcs": { "enabled": true, diff --git a/docusaurus.config.js b/docusaurus.config.js index 0199cfeb..25e054f8 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -4,137 +4,137 @@ require("dotenv").config(); /** @type {import('@docusaurus/types').Config} */ const config = { - title: "Meshtastic", - tagline: - "An open source, off-grid, decentralized, mesh network built to run on affordable, low-power devices", - url: "https://meshtastic.org", - baseUrl: "/", - trailingSlash: true, - onBrokenLinks: "throw", - onBrokenMarkdownLinks: "warn", - favicon: "design/web/favicon.ico", - organizationName: "meshtastic", - projectName: "meshtastic", - themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ { - docs: { - sidebar: { - autoCollapseCategories: true, - }, - }, - navbar: { - title: "Meshtastic", - hideOnScroll: true, - logo: { - alt: "Meshtastic Logo", - src: "design/logo/svg/Mesh_Logo_Black.svg", - srcDark: "design/logo/svg/Mesh_Logo_White.svg", - }, - items: [ - { - label: "Docs", - to: "docs/introduction", - }, - { - label: "Downloads", - to: "downloads", - }, - { - label: "About", - position: "right", - items: [ - { - label: "Introduction", - to: "docs/introduction", - }, - { - label: "Getting Started", - to: "docs/getting-started", - }, - { - label: "Contributing", - to: "docs/contributing", - }, - { - label: "Legal", - to: "docs/legal", - }, - { - label: "FAQs", - to: "docs/faq", - }, - ], - }, - { - href: "https://github.com/meshtastic", - position: "right", - className: "header-github-link", - "aria-label": "GitHub repository", - }, - ], - }, - footer: { - copyright: `Powered by ▲ Vercel | Meshtastic® is a registered trademark of Meshtastic LLC. | Legal Information.`, - }, - algolia: { - appId: "IG2GQB8L3V", - apiKey: "2e4348812173ec7ea6f7879c7032bb21", - indexName: "meshtastic", - contextualSearch: false, - searchPagePath: "search", - }, - colorMode: { - respectPrefersColorScheme: true, - }, - mermaid: { - theme: { light: "base", dark: "base" }, - options: { - themeVariables: { - primaryColor: "#67EA94", - primaryTextColor: "var(--tw-prose-headings)", - primaryBorderColor: "#4D4D4D", - lineColor: "#EAD667", - secondaryColor: "#EA67BD", - tertiaryColor: "#677CEA", - }, - }, - }, + title: "Meshtastic", + tagline: + "An open source, off-grid, decentralized, mesh network built to run on affordable, low-power devices", + url: "https://meshtastic.org", + baseUrl: "/", + trailingSlash: true, + onBrokenLinks: "throw", + onBrokenMarkdownLinks: "warn", + favicon: "design/web/favicon.ico", + organizationName: "meshtastic", + projectName: "meshtastic", + themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ { + docs: { + sidebar: { + autoCollapseCategories: true, + }, }, - plugins: [ - () => { - return { - name: "docusaurus-tailwindcss", - configurePostCss(postcssOptions) { - postcssOptions.plugins.push(require("tailwindcss")); - postcssOptions.plugins.push(require("autoprefixer")); - return postcssOptions; - }, - }; + navbar: { + title: "Meshtastic", + hideOnScroll: true, + logo: { + alt: "Meshtastic Logo", + src: "design/logo/svg/Mesh_Logo_Black.svg", + srcDark: "design/logo/svg/Mesh_Logo_White.svg", + }, + items: [ + { + label: "Docs", + to: "docs/introduction", }, - ], - presets: [ - [ - "@docusaurus/preset-classic", - /** @type {import('@docusaurus/preset-classic').Options} */ + { + label: "Downloads", + to: "downloads", + }, + { + label: "About", + position: "right", + items: [ { - docs: { - sidebarPath: require.resolve("./sidebars.js"), - editUrl: "https://github.com/meshtastic/meshtastic/edit/master/", - breadcrumbs: false, - showLastUpdateAuthor: true, - }, - theme: { - customCss: require.resolve("./src/css/custom.css"), - }, + label: "Introduction", + to: "docs/introduction", }, - ], + { + label: "Getting Started", + to: "docs/getting-started", + }, + { + label: "Contributing", + to: "docs/contributing", + }, + { + label: "Legal", + to: "docs/legal", + }, + { + label: "FAQs", + to: "docs/faq", + }, + ], + }, + { + href: "https://github.com/meshtastic", + position: "right", + className: "header-github-link", + "aria-label": "GitHub repository", + }, + ], + }, + footer: { + copyright: `Powered by ▲ Vercel | Meshtastic® is a registered trademark of Meshtastic LLC. | Legal Information.`, + }, + algolia: { + appId: "IG2GQB8L3V", + apiKey: "2e4348812173ec7ea6f7879c7032bb21", + indexName: "meshtastic", + contextualSearch: false, + searchPagePath: "search", + }, + colorMode: { + respectPrefersColorScheme: true, + }, + mermaid: { + theme: { light: "base", dark: "base" }, + options: { + themeVariables: { + primaryColor: "#67EA94", + primaryTextColor: "var(--tw-prose-headings)", + primaryBorderColor: "#4D4D4D", + lineColor: "#EAD667", + secondaryColor: "#EA67BD", + tertiaryColor: "#677CEA", + }, + }, + }, + }, + plugins: [ + () => { + return { + name: "docusaurus-tailwindcss", + configurePostCss(postcssOptions) { + postcssOptions.plugins.push(require("tailwindcss")); + postcssOptions.plugins.push(require("autoprefixer")); + return postcssOptions; + }, + }; + }, + ], + presets: [ + [ + "@docusaurus/preset-classic", + /** @type {import('@docusaurus/preset-classic').Options} */ + { + docs: { + sidebarPath: require.resolve("./sidebars.js"), + editUrl: "https://github.com/meshtastic/meshtastic/edit/master/", + breadcrumbs: false, + showLastUpdateAuthor: true, + }, + theme: { + customCss: require.resolve("./src/css/custom.css"), + }, + }, ], - customFields: { - API_URL: process.env.API_URL, - }, - markdown: { - mermaid: true, - }, - themes: ["@docusaurus/theme-mermaid"], + ], + customFields: { + API_URL: process.env.API_URL, + }, + markdown: { + mermaid: true, + }, + themes: ["@docusaurus/theme-mermaid"], }; module.exports = config; diff --git a/package.json b/package.json index 7190f1d0..060e19c9 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "tailwindcss": "^3.4.1" }, "devDependencies": { - "@biomejs/biome": "^1.5.0", + "@biomejs/biome": "^1.5.3", "@buf/meshtastic_protobufs.bufbuild_es": "1.6.0-20240106203407-94f78518ac45.1", "@docusaurus/module-type-aliases": "3.1.0", "@tailwindcss/typography": "^0.5.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e7f8a2e..0c6cfb15 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,8 +65,8 @@ dependencies: devDependencies: '@biomejs/biome': - specifier: ^1.5.0 - version: 1.5.0 + specifier: ^1.5.3 + version: 1.5.3 '@buf/meshtastic_protobufs.bufbuild_es': specifier: 1.6.0-20240106203407-94f78518ac45.1 version: 1.6.0-20240106203407-94f78518ac45.1(@bufbuild/protobuf@1.6.0) @@ -1551,24 +1551,24 @@ packages: to-fast-properties: 2.0.0 dev: false - /@biomejs/biome@1.5.0: - resolution: {integrity: sha512-ln+o5jbs109qpeDoA+5n+vlAPai3DhlK0tHtZXzQvu4tswFgxNiJCeIXmlW1DYHziTmtBImV3Y0uhbm2iVSE3Q==} + /@biomejs/biome@1.5.3: + resolution: {integrity: sha512-yvZCa/g3akwTaAQ7PCwPWDCkZs3Qa5ONg/fgOUT9e6wAWsPftCjLQFPXBeGxPK30yZSSpgEmRCfpGTmVbUjGgg==} engines: {node: '>=14.*'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.5.0 - '@biomejs/cli-darwin-x64': 1.5.0 - '@biomejs/cli-linux-arm64': 1.5.0 - '@biomejs/cli-linux-arm64-musl': 1.5.0 - '@biomejs/cli-linux-x64': 1.5.0 - '@biomejs/cli-linux-x64-musl': 1.5.0 - '@biomejs/cli-win32-arm64': 1.5.0 - '@biomejs/cli-win32-x64': 1.5.0 + '@biomejs/cli-darwin-arm64': 1.5.3 + '@biomejs/cli-darwin-x64': 1.5.3 + '@biomejs/cli-linux-arm64': 1.5.3 + '@biomejs/cli-linux-arm64-musl': 1.5.3 + '@biomejs/cli-linux-x64': 1.5.3 + '@biomejs/cli-linux-x64-musl': 1.5.3 + '@biomejs/cli-win32-arm64': 1.5.3 + '@biomejs/cli-win32-x64': 1.5.3 dev: true - /@biomejs/cli-darwin-arm64@1.5.0: - resolution: {integrity: sha512-3+D7axf04dpadGMOaqb2q+zyQnhWW0o/Imt7TJBWsoE0N3/+28Wht8g3UEHHcUL5FPuGIfsE+NcYntBaaAsEIg==} + /@biomejs/cli-darwin-arm64@1.5.3: + resolution: {integrity: sha512-ImU7mh1HghEDyqNmxEZBoMPr8SxekkZuYcs+gynKlNW+TALQs7swkERiBLkG9NR0K1B3/2uVzlvYowXrmlW8hw==} engines: {node: '>=14.*'} cpu: [arm64] os: [darwin] @@ -1576,8 +1576,8 @@ packages: dev: true optional: true - /@biomejs/cli-darwin-x64@1.5.0: - resolution: {integrity: sha512-8k5aaLWE/B6ZAXLC+z/Vwh9ogyiSaiRIfvg+F9foxuneHl2R/D/2Iy7pvd3Yoi4Kf6/MBdowekPVezGP4/Kbcw==} + /@biomejs/cli-darwin-x64@1.5.3: + resolution: {integrity: sha512-vCdASqYnlpq/swErH7FD6nrFz0czFtK4k/iLgj0/+VmZVjineFPgevOb+Sr9vz0tk0GfdQO60bSpI74zU8M9Dw==} engines: {node: '>=14.*'} cpu: [x64] os: [darwin] @@ -1585,8 +1585,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-arm64-musl@1.5.0: - resolution: {integrity: sha512-+1B3J8tWLTOvP3+00Cap+XhEXMvxwCHvVfuywUsB7Sqd66NWic3wKJuGbGcS3PuCWtGuIFsiQMNAGqiOXG4uBQ==} + /@biomejs/cli-linux-arm64-musl@1.5.3: + resolution: {integrity: sha512-DYuMizUYUBYfS0IHGjDrOP1RGipqWfMGEvNEJ398zdtmCKLXaUvTimiox5dvx4X15mBK5M2m8wgWUgOP1giUpQ==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] @@ -1594,8 +1594,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-arm64@1.5.0: - resolution: {integrity: sha512-RiecxG71E1jnqiJZ3FaikVBDRkk2ohIxBo0O4o68g87y6Hug//G0S83sj6Wqyn8DgKMCRWQg+XYMgk5CwLVowA==} + /@biomejs/cli-linux-arm64@1.5.3: + resolution: {integrity: sha512-cupBQv0sNF1OKqBfx7EDWMSsKwRrBUZfjXawT4s6hKV6ALq7p0QzWlxr/sDmbKMLOaLQtw2Qgu/77N9rm+f9Rg==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] @@ -1603,8 +1603,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-x64-musl@1.5.0: - resolution: {integrity: sha512-4S2rLluc0WT+XTbLTgcm9+5EEFwJmoGiUEzR6N0P2sIjZD8c5KNf9Ou46BP1Pdg5AgqV+IIClGPK1I80ApSh1Q==} + /@biomejs/cli-linux-x64-musl@1.5.3: + resolution: {integrity: sha512-UUHiAnlDqr2Y/LpvshBFhUYMWkl2/Jn+bi3U6jKuav0qWbbBKU/ByHgR4+NBxpKBYoCtWxhnmatfH1bpPIuZMw==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] @@ -1612,8 +1612,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-x64@1.5.0: - resolution: {integrity: sha512-TlTsG+ptSmnDTUsAAYsXyGOXMcFiF8SiwhPdj4YsNkJRgx9M2curEVcTVm66FINIPK6VJTUcEDahFlx3NPUOzA==} + /@biomejs/cli-linux-x64@1.5.3: + resolution: {integrity: sha512-YQrSArQvcv4FYsk7Q91Yv4uuu5F8hJyORVcv3zsjCLGkjIjx2RhjYLpTL733SNL7v33GmOlZY0eFR1ko38tuUw==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] @@ -1621,8 +1621,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-arm64@1.5.0: - resolution: {integrity: sha512-sWOi1SR+YqJuXElBncGRnWBR7IN7ni6GQY4Zm/vTpP6nVA0dX5C301eQUW1N/VnFQb6fyrJTcBslDUKyemsN/g==} + /@biomejs/cli-win32-arm64@1.5.3: + resolution: {integrity: sha512-HxatYH7vf/kX9nrD+pDYuV2GI9GV8EFo6cfKkahAecTuZLPxryHx1WEfJthp5eNsE0+09STGkKIKjirP0ufaZA==} engines: {node: '>=14.*'} cpu: [arm64] os: [win32] @@ -1630,8 +1630,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-x64@1.5.0: - resolution: {integrity: sha512-OoqgUXyzmRwX466bklOsWS7WdcvWtBuxF94DXATNe7bUiBa2tlW8QX7VVZvPnMKH57E5J619AkB3b5fhzyUhXA==} + /@biomejs/cli-win32-x64@1.5.3: + resolution: {integrity: sha512-fMvbSouZEASU7mZH8SIJSANDm5OqsjgtVXlbUqxwed6BP7uuHRSs396Aqwh2+VoW8fwTpp6ybIUoC9FrzB0kyA==} engines: {node: '>=14.*'} cpu: [x64] os: [win32] diff --git a/sidebars.js b/sidebars.js index bad0a43f..59c9276a 100644 --- a/sidebars.js +++ b/sidebars.js @@ -2,10 +2,10 @@ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ module.exports = { - Sidebar: [ - { - type: "autogenerated", - dirName: ".", - }, - ], + Sidebar: [ + { + type: "autogenerated", + dirName: ".", + }, + ], }; diff --git a/src/components/ColorMode.tsx b/src/components/ColorMode.tsx index ae020458..dbfdde8b 100644 --- a/src/components/ColorMode.tsx +++ b/src/components/ColorMode.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type React from "react"; export interface ColorModeProps { children: React.ReactNode; diff --git a/src/components/PageLayout.tsx b/src/components/PageLayout.tsx index 2554bd29..6426846a 100644 --- a/src/components/PageLayout.tsx +++ b/src/components/PageLayout.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type React from "react"; import Layout from "@theme/Layout"; diff --git a/src/components/homepage/SocialCard.tsx b/src/components/homepage/SocialCard.tsx index df145aa3..eee77026 100644 --- a/src/components/homepage/SocialCard.tsx +++ b/src/components/homepage/SocialCard.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type React from "react"; import { FiExternalLink } from "react-icons/fi"; diff --git a/src/components/tools/FrequencyCalculator.tsx b/src/components/tools/FrequencyCalculator.tsx index 475691e3..aeb53e7a 100644 --- a/src/components/tools/FrequencyCalculator.tsx +++ b/src/components/tools/FrequencyCalculator.tsx @@ -2,11 +2,11 @@ import { Protobuf, Types } from "@meshtastic/js"; import React, { useEffect } from "react"; interface Region { - freq_start: number; - freq_end: number; - duty_cycle: number; + freqStart: number; + freqEnd: number; + dutyCycle: number; spacing: number; - power_limit: number; + powerLimit: number; } interface Modem { @@ -22,181 +22,181 @@ const RegionData = new Map< [ Protobuf.Config.Config_LoRaConfig_RegionCode.US, { - freq_start: 902.0, - freq_end: 928.0, - duty_cycle: 100, + freqStart: 902.0, + freqEnd: 928.0, + dutyCycle: 100, spacing: 0, - power_limit: 30, + powerLimit: 30, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.EU_433, { - freq_start: 433.0, - freq_end: 434.0, - duty_cycle: 10, + freqStart: 433.0, + freqEnd: 434.0, + dutyCycle: 10, spacing: 0, - power_limit: 12, + powerLimit: 12, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.EU_868, { - freq_start: 869.4, - freq_end: 869.65, - duty_cycle: 10, + freqStart: 869.4, + freqEnd: 869.65, + dutyCycle: 10, spacing: 0, - power_limit: 27, + powerLimit: 27, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.CN, { - freq_start: 470.0, - freq_end: 510.0, - duty_cycle: 100, + freqStart: 470.0, + freqEnd: 510.0, + dutyCycle: 100, spacing: 0, - power_limit: 19, + powerLimit: 19, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.JP, { - freq_start: 920.8, - freq_end: 927.8, - duty_cycle: 100, + freqStart: 920.8, + freqEnd: 927.8, + dutyCycle: 100, spacing: 0, - power_limit: 16, + powerLimit: 16, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.ANZ, { - freq_start: 915.0, - freq_end: 928.0, - duty_cycle: 100, + freqStart: 915.0, + freqEnd: 928.0, + dutyCycle: 100, spacing: 0, - power_limit: 30, + powerLimit: 30, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.RU, { - freq_start: 868.7, - freq_end: 869.2, - duty_cycle: 100, + freqStart: 868.7, + freqEnd: 869.2, + dutyCycle: 100, spacing: 0, - power_limit: 20, + powerLimit: 20, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.KR, { - freq_start: 920.0, - freq_end: 923.0, - duty_cycle: 100, + freqStart: 920.0, + freqEnd: 923.0, + dutyCycle: 100, spacing: 0, - power_limit: 0, + powerLimit: 0, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.TW, { - freq_start: 920.0, - freq_end: 925.0, - duty_cycle: 100, + freqStart: 920.0, + freqEnd: 925.0, + dutyCycle: 100, spacing: 0, - power_limit: 0, + powerLimit: 0, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.IN, { - freq_start: 865.0, - freq_end: 867.0, - duty_cycle: 100, + freqStart: 865.0, + freqEnd: 867.0, + dutyCycle: 100, spacing: 0, - power_limit: 30, + powerLimit: 30, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.NZ_865, { - freq_start: 864.0, - freq_end: 868.0, - duty_cycle: 100, + freqStart: 864.0, + freqEnd: 868.0, + dutyCycle: 100, spacing: 0, - power_limit: 36, + powerLimit: 36, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.TH, { - freq_start: 920.0, - freq_end: 925.0, - duty_cycle: 100, + freqStart: 920.0, + freqEnd: 925.0, + dutyCycle: 100, spacing: 0, - power_limit: 16, + powerLimit: 16, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.UA_433, { - freq_start: 433.0, - freq_end: 434.7, - duty_cycle: 10, + freqStart: 433.0, + freqEnd: 434.7, + dutyCycle: 10, spacing: 0, - power_limit: 10, + powerLimit: 10, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.UA_868, { - freq_start: 868.0, - freq_end: 868.6, - duty_cycle: 1, + freqStart: 868.0, + freqEnd: 868.6, + dutyCycle: 1, spacing: 0, - power_limit: 14, + powerLimit: 14, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.MY_433, { - freq_start: 433.0, - freq_end: 435.0, - duty_cycle: 100, + freqStart: 433.0, + freqEnd: 435.0, + dutyCycle: 100, spacing: 0, - power_limit: 20, + powerLimit: 20, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.MY_919, { - freq_start: 919.0, - freq_end: 924.0, - duty_cycle: 100, + freqStart: 919.0, + freqEnd: 924.0, + dutyCycle: 100, spacing: 0, - power_limit: 27, + powerLimit: 27, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.LORA_24, { - freq_start: 2400.0, - freq_end: 2483.5, - duty_cycle: 100, + freqStart: 2400.0, + freqEnd: 2483.5, + dutyCycle: 100, spacing: 0, - power_limit: 10, + powerLimit: 10, }, ], [ Protobuf.Config.Config_LoRaConfig_RegionCode.UNSET, { - freq_start: 902.0, - freq_end: 928.0, - duty_cycle: 100, + freqStart: 902.0, + freqEnd: 928.0, + dutyCycle: 100, spacing: 0, - power_limit: 30, + powerLimit: 30, }, ], ]); @@ -290,7 +290,7 @@ export const FrequencyCalculator = (): JSX.Element => { const selectedRegion = RegionData.get(region); const selectedModemPreset = modemPresets.get(modemPreset); const calculatedNumChannels = Math.floor( - (selectedRegion.freq_end - selectedRegion.freq_start) / + (selectedRegion.freqEnd - selectedRegion.freqStart) / (selectedRegion.spacing + selectedModemPreset.bw / 1000), ); @@ -304,7 +304,7 @@ export const FrequencyCalculator = (): JSX.Element => { setChannel(updatedChannel); setChannelFrequency( - selectedRegion.freq_start + + selectedRegion.freqStart + selectedModemPreset.bw / 2000 + updatedChannel * (selectedModemPreset.bw / 1000), ); @@ -318,7 +318,7 @@ export const FrequencyCalculator = (): JSX.Element => { value={modemPreset} onChange={(e) => setModemPreset( - parseInt( + Number.parseInt( e.target.value, ) as Protobuf.Config.Config_LoRaConfig_ModemPreset, ) @@ -335,7 +335,7 @@ export const FrequencyCalculator = (): JSX.Element => { setChannel(parseInt(e.target.value))} + onChange={(e) => setChannel(Number.parseInt(e.target.value))} > {Array.from(Array(numChannels).keys()).map((key) => (