diff --git a/.editorconfig b/.editorconfig index 75045ef..d04c90f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,3 +8,7 @@ end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true max_line_length = 150 + +[*.yml] +indent_size = 2 +indent_style = space diff --git a/.github/workflows/demo.yml b/.github/workflows/demo.yml index 2f5e33d..12cc6f0 100644 --- a/.github/workflows/demo.yml +++ b/.github/workflows/demo.yml @@ -5,32 +5,34 @@ on: types: [closed] branches: [ "master" ] - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow one concurrent deployment concurrency: group: 'pages' cancel-in-progress: true jobs: - # Single deploy job since we're just deploying - deploy: + if_merged: + if: github.event.pull_request.merged == true + permissions: + contents: read + pages: write + id-token: write + strategy: + matrix: + include: + - platform: 'ubuntu-latest' environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest + + runs-on: ${{ matrix.platform }} + steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node uses: actions/setup-node@v4 + with: + node-version: lts/* - name: Install dependencies run: | corepack enable diff --git a/.gitignore b/.gitignore index 4e73467..a84886b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,18 @@ +# Frontend node_modules/ -dist/ bundle-prod/ bundle-demo/ bundle-dev/ -.DS_Store -*.log* .yarn -.perf/ +!resources/data/*.sample.csv +*.csv +#a different index.html will be copied to root folder depending, on what package.json script is run +index.html +# Backend src-tauri/target/ src-tauri/gen/schemas -*.csv -!resources/data/*.sample.csv +#a different tauri.conf.json will be copied to ./src-tauri/ folder, depending on what package.json script is run +src-tauri/tauri.conf.json +# other +.DS_Store +*.log* diff --git a/.vscode/extensions.json b/.vscode/extensions.json index a2f209b..892fa80 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -7,6 +7,7 @@ "aaron-bond.better-comments", "ms-vscode.vscode-typescript-next", "esbenp.prettier-vscode", - "vadimcn.vscode-lldb" + "vadimcn.vscode-lldb", + "rust-lang.rust-analyzer" ] } diff --git a/.yarnrc.yml b/.yarnrc.yml index f9236b8..0cf5e44 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,4 +1,7 @@ -enableTelemetry: 0 enableGlobalCache: false -nmMode: "classic" -nodeLinker: "node-modules" + +enableTelemetry: 0 + +nmMode: classic + +nodeLinker: node-modules diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 16b8850..95cb390 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,9 +16,9 @@ Anyone can contribute. This is not a Pet-Project nor do I follow any agenda with - [articles_db](#articles_db) - [documents_db](#documents_db) - [Local Storage](#local-storage) - - [Session Storage](#session-storage) - [Sample Data](#sample-data) - [Build](#build) +- [Versioning](#versioning) ## Getting Started @@ -36,7 +36,8 @@ corepack enable git clone https://github.com/39zde/factor.git cd factor yarn install -yarn dev +yarn dev:tauri +yarn action:devtools ``` ## Workspace @@ -55,13 +56,9 @@ To use yarn the official way [corepack](https://nodejs.org/api/corepack.html) mu Run ```bash npm install -g react-devtools -yarn devtools +yarn dev:tauri +yarn action:devtool ``` -and uncomment -```html - -``` -in [index.html](./index.html) ## Theming @@ -120,7 +117,7 @@ Ratings: Here is an Example made with [DrawDB](https://github.com/drawdb-io/drawdb) of the customers_db database. Each "table" is an oStore. `row` is always the keyPath. The data types don't match entirely. Fields with a key icon are indexed fields, where indexed means [IDBIndex](https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex). Every field, from which a `1->n` connection originates, is of type `ArrayBuffer`. The `ArrayBuffer`, when decoded with `Uint32`, has n = `ArrayBuffer.byteLength` / `2` references. The reference (the `Uint32` number) is then the row number in the other oStore. The other oStore name is always the key. Thats how relations are stored. - ![customers_db](./resources/img/customers_db.png) + ![customers_db](./resources/images//customers_db.png) Also have a look at [`./src/renderer/src/util/types/database`](./src/renderer/src/util/types/database/) @@ -132,7 +129,7 @@ Index Names have the following structure: There is a way to generate sample data, which is ready for importing. The script is located at [`./resources/data/genData.cli.js`](./resources/data/genData.cli.js). ```bash -node genData.cli.js +yarn gen:sample-customers ``` After calling the script you will be asked, how many rows you want. Shortly after a file will appear, ready to be used. @@ -142,3 +139,6 @@ node genData.cli.js yarn build ``` This command does the trick. For further details consult the official docs. Also keep in mind [Tauri v2](https://v2.tauri.app/) is very young + +## Versioning +This project aims to follow [Semantic Versioning 2.0.0](https://semver.org/) diff --git a/README.md b/README.md index b6d5188..8eae7b8 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ I have not run any benchmarks yet, but scrolling in a Table with: - column-count: 12 columns - column with of 250px - 5 dereferencing operations per row - - in dev mode (2x the number of hooks are beeing called) + - in dev mode (2x the number of hooks are being called) - on old hardware - - Memory usage at 3MB + - small memory profile works without problems. WebWorkers[^4] do most of the heavy lifting. Certainly more performant, than using `useLiveQuery` from Dexie.js[^5]. That being said there is much more performance to be gained at various places. Looking at what already is accomplished, this approach looks very promising. With this in mind, if the only goal was performance, React would not be the best choice. To my understanding the purpose of React is to make the development easy and comprehensible, not to archive the best possible performance. @@ -31,10 +31,7 @@ There are also some major performance gains everywhere, which is really nice to ## Screen Shots -Context Menu -Settings Page -Settings Page - +see [Screenshots Folder](./resources/images/screenshots/SCREENSHOT.md) ## Quick Start diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 9e07462..8e8b154 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,5 +1,8 @@ # Release Notes +## Version v2.1.2 + - bugfixes and polishing + ## Version v2.1.1 - sanding and optimizations - github pages demo diff --git a/factor.code-workspace b/factor.code-workspace index b1b2fa8..56e2f4d 100644 --- a/factor.code-workspace +++ b/factor.code-workspace @@ -19,8 +19,10 @@ ".gitignore": true, ".prettierignore": true, ".prettierrc.yaml": true, - "vite.config.ts":false, - "eslint.config.mjs": false, + "eslint.config.mjs": true, + "vite.demo.config.ts": true, + "vite.dev.config.ts": true, + "vite.prod.config.ts": true, "tsconfig.json": true, "tsconfig.node.json": true, "yarn.lock": true, diff --git a/index.html b/index.html deleted file mode 100644 index 387430d..0000000 --- a/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Factor - - -
- - - diff --git a/package.json b/package.json index ef206ed..a6db0df 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "factor", - "version": "v2.1.1", + "version": "2.1.2", "description": "An invoicing application built with TypeScript:React on top of IndexDB packaged with Tauri", "author": "39zde", "type": "module", @@ -8,15 +8,17 @@ "repository": "https://github.com/39zde/factor", "license": "Apache-2.0", "scripts": { - "action:devtools": "react-devtools", - "action:format": "prettier --write .", - "action:lint": "eslint ./src -c ./eslint.config.mjs --fix", + "action:devtools": "react-devtools", + "action:format": "prettier --write .", + "action:lint": "eslint ./src -c ./eslint.config.mjs --fix", + "action:version": "node ./scripts/upgradeVersion.js", + "action:check-types": "tsc", "build": "node ./scripts/preTauriBuild.mjs && tauri build", "bundle:dev": "vite build -c ./vite.dev.config.ts", "bundle:demo": "node ./scripts/preDemoBundle.mjs && vite build -c ./vite.demo.config.ts && node ./scripts/includeFiles.mjs ", "bundle:prod": "tsc && vite build -c ./vite.prod.config.ts", "dev:vite": "vite -c ./vite.dev.config.ts", - "dev:demo": "node ./scripts/preDemoBundle.mjs && vite -c ./vite.demo.config.ts", + "dev:demo": "node ./scripts/preDemoBundle.mjs && vite -c ./vite.demo.config.ts", "dev:tauri": "node ./scripts/preTauriDev.mjs && tauri dev", "gen:sample-customers": "node ./scripts/genData.cli.js" }, @@ -27,35 +29,35 @@ "@tauri-apps/plugin-notification": "^2.0.0-rc.1", "@tauri-apps/plugin-shell": "^2.0.0-rc.1", "@tauri-apps/plugin-window-state": "^2.0.0-rc.1", - "lucide-react": "^0.445.0", + "lucide-react": "^0.446.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, "devDependencies": { - "@eslint/js": "^9.11.0", + "@eslint/js": "^9.11.1", "@tauri-apps/cli": "^2.0.0-rc.16", "@types/eslint__js": "^8.42.3", - "@types/node": "^20.16.5", - "@types/react": "^18.3.8", + "@types/node": "^20.16.8", + "@types/react": "^18.3.9", "@types/react-dom": "^18.3.0", - "@typescript-eslint/eslint-plugin": "^8.6.0", - "@typescript-eslint/parser": "^8.6.0", + "@typescript-eslint/eslint-plugin": "^8.7.0", + "@typescript-eslint/parser": "^8.7.0", "@vitejs/plugin-react": "^4.3.1", - "eslint": "^9.11.0", + "eslint": "^9.11.1", "eslint-plugin-react": "^7.36.1", "globals": "^15.9.0", "prettier": "^3.3.3", "typescript": "^5.6.2", - "typescript-eslint": "^8.6.0", - "vite": "^5.4.7", + "typescript-eslint": "^8.7.0", + "vite": "^5.4.8", "vite-plugin-mkcert": "^1.17.6" }, - "packageManager": "yarn@4.1.1+sha512.ec40d0639bb307441b945d9467139cbb88d14394baac760b52eca038b330d16542d66fef61574271534ace5a200518dabf3b53a85f1f9e4bfa37141b538a9590", + "packageManager": "yarn@4.5.0", "engines": { "node": "v20.17.0" }, "resolutions": { - "micromatch": "4.0.8" + "rollup": "4.22.4" }, "readme": "./README.md" } diff --git a/resources/images/screenshots/SCREENSHOT.md b/resources/images/screenshots/SCREENSHOT.md new file mode 100644 index 0000000..8cb21e0 --- /dev/null +++ b/resources/images/screenshots/SCREENSHOT.md @@ -0,0 +1,5 @@ +# Screenshots + +![screenshot1](./contextMenu.png) +![screenshot2](./settings.png) +![screenshot3](./upload.png) diff --git a/scripts/includeFiles.mjs b/scripts/includeFiles.js similarity index 100% rename from scripts/includeFiles.mjs rename to scripts/includeFiles.js diff --git a/scripts/preDemoBundle.mjs b/scripts/preDemoBundle.js similarity index 100% rename from scripts/preDemoBundle.mjs rename to scripts/preDemoBundle.js diff --git a/scripts/preTauriBuild.mjs b/scripts/preTauriBuild.js similarity index 100% rename from scripts/preTauriBuild.mjs rename to scripts/preTauriBuild.js diff --git a/scripts/preTauriDev.mjs b/scripts/preTauriDev.js similarity index 100% rename from scripts/preTauriDev.mjs rename to scripts/preTauriDev.js diff --git a/scripts/upgradeVersion.js b/scripts/upgradeVersion.js new file mode 100644 index 0000000..2b735f9 --- /dev/null +++ b/scripts/upgradeVersion.js @@ -0,0 +1,86 @@ +import { readFileSync, writeFileSync } from 'fs'; +const args = process.argv; +// relative to root +const packageJsonPath = './package.json'; +const cargoTomlPath = './src-tauri/Cargo.toml'; +const tauriDevConfPath = './src-tauri/conf/tauri.dev.conf.json'; +const tauriProdConfPath = './src-tauri/conf/tauri.prod.conf.json'; + +const version = { + major: 0, + minor: 0, + patch: 0, +}; + +const displayHelp = () => + console.log( + ` + +upgradeVersion.js +A help script to increase the the version numbers across all files +Scheme: a.b.c +--major overwrites --minor overwrites --patch +==================================== +-h --help Shows this message +--usage + +-M --major Increase the version to [a+1].0.0 +-m --minor Increase the version to a.[b+1].0 +-p --patch Increase the version to a.b.[c+1] + +` + ); + +const versionJsonMatcher = /(?<=\"version\"\:[\s]{0,}\")[\d]{1,}\.[\d]{1,}\.[\d]{1,}(?=\"\,)/gm; +const versionTomlMatcher = /(?<=version\s\=\s\")[\d]{1,}\.[\d]{1,}\.[\d]{1,}(?=\")/gm; + +function main() { + if (args.includes('-h') || args.includes('--help') || args.includes('--usage')) { + displayHelp(); + } else { + if ( + args.includes('-M') || + args.includes('-m') || + args.includes('-p') || + args.includes('--major') || + args.includes('--minor') || + args.includes('--patch') + ) { + const packageJsonFile = readFileSync(packageJsonPath, 'utf8'); + const currentVersion = packageJsonFile.match(versionJsonMatcher); + if (currentVersion !== null) { + const versions = currentVersion[0].split('.'); + version.major = parseInt(versions[0]); + version.minor = parseInt(versions[1]); + version.patch = parseInt(versions[2]); + if (args.includes('--patch') || args.includes('-p')) { + version.patch += 1; + } + if (args.includes('--minor') || args.includes('-m')) { + version.minor += 1; + version.patch = 0; + } + if (args.includes('--major') || args.includes('-M')) { + version.major += 1; + version.minor = 0; + version.patch = 0; + } + const newVersion = `${version.major}.${version.minor}.${version.patch}`; + const newPackageJsonFile = packageJsonFile.replace(versionJsonMatcher, newVersion); + writeFileSync(packageJsonPath, newPackageJsonFile, 'utf8'); + const cargoTomlFile = readFileSync(cargoTomlPath, 'utf8'); + const newTauriDevConfigFile = cargoTomlFile.replace(versionTomlMatcher, newVersion); + writeFileSync(cargoTomlPath, newTauriDevConfigFile, 'utf8'); + const tauriDevConfFile = readFileSync(tauriDevConfPath, 'utf8'); + const newTauriDevConfFile = tauriDevConfFile.replace(versionJsonMatcher, newVersion); + writeFileSync(tauriDevConfPath, newTauriDevConfFile, 'utf8'); + const tauriProdConfFile = readFileSync(tauriProdConfPath, 'utf8'); + const newTauriProdConfFile = tauriProdConfFile.replace(versionJsonMatcher, newVersion); + writeFileSync(tauriProdConfPath, newTauriProdConfFile, 'utf8'); + } + } else { + displayHelp(); + } + } +} +main(); diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index bb028e1..f2a9c24 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -202,9 +202,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", @@ -967,7 +967,7 @@ dependencies = [ [[package]] name = "factor" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_json", @@ -987,9 +987,9 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" dependencies = [ "simd-adler32", ] @@ -1584,9 +1584,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -1597,7 +1597,6 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] @@ -1861,9 +1860,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libloading" @@ -2559,26 +2558,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", -] - [[package]] name = "pin-project-lite" version = "0.2.14" @@ -2604,9 +2583,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plist" @@ -2845,9 +2824,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "redox_syscall" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +checksum = "355ae415ccd3a04315d3f8246e86d67689ea74d88d915576e1589a351062a13b" dependencies = [ "bitflags 2.6.0", ] @@ -3127,9 +3106,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -3459,9 +3438,9 @@ dependencies = [ [[package]] name = "tao" -version = "0.30.1" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e7ede56f9ef03a0bb384c7b2bed4f3985ee7f3f79ec887c50d8466eec21096" +checksum = "06e48d7c56b3f7425d061886e8ce3b6acfab1993682ed70bef50fd133d721ee6" dependencies = [ "bitflags 2.6.0", "cocoa", @@ -3853,18 +3832,18 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", @@ -4014,27 +3993,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - [[package]] name = "tower-service" version = "0.3.3" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index daa82b1..b9bd3ea 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "factor" -version = "2.1.1" +version = "2.1.2" description = "An invoicing application built with TypeScript:React on top of IndexDB packaged with Tauri" authors = ["39zde"] license = "Apache-2.0" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json deleted file mode 100644 index e037a74..0000000 --- a/src-tauri/capabilities/default.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "enables the default permissions", - "windows": [ - "main" - ], - "permissions": [ - "core:app:allow-tauri-version", - "core:app:allow-app-hide", - "core:app:allow-app-show", - "core:app:allow-default-window-icon", - "core:app:allow-name", - "core:app:allow-version", - "core:event:deny-emit", - "core:event:deny-emit-to", - "core:event:deny-listen", - "core:event:deny-unlisten", - "core:image:deny-from-bytes", - "core:image:deny-from-path", - "core:image:deny-new", - "core:image:deny-rgba", - "core:image:deny-size", - "core:menu:deny-create-default", - "core:menu:deny-popup", - "core:menu:deny-insert", - "core:menu:deny-new", - "core:menu:deny-append", - "core:menu:deny-get", - "core:menu:deny-is-checked", - "core:menu:deny-is-enabled", - "core:menu:deny-items", - "core:menu:deny-remove", - "core:menu:deny-prepend", - "core:menu:deny-remove-at", - "core:menu:deny-set-accelerator", - "core:menu:deny-set-as-app-menu", - "core:menu:deny-set-as-window-menu", - "core:menu:deny-set-icon", - "core:menu:deny-set-as-help-menu-for-nsapp", - "core:menu:deny-set-checked", - "core:menu:deny-set-as-windows-menu-for-nsapp", - "core:menu:deny-set-enabled", - "core:menu:deny-set-text", - "core:menu:deny-text", - "core:path:default", - "core:resources:default", - "core:tray:default", - "core:webview:deny-print", - "core:webview:deny-set-webview-zoom", - "core:webview:allow-internal-toggle-devtools", - "fs:allow-download-write", - "fs:allow-download-read", - "fs:allow-appconfig-read", - "fs:allow-appconfig-write", - "notification:allow-request-permission", - "notification:allow-check-permissions", - "notification:allow-is-permission-granted", - "notification:allow-notify", - "notification:allow-show", - "notification:allow-permission-state", - "notification:default", - "shell:allow-open", - "shell:allow-execute", - "shell:default" -] -} diff --git a/src-tauri/capabilities/main.json b/src-tauri/capabilities/main.json new file mode 100644 index 0000000..72b155c --- /dev/null +++ b/src-tauri/capabilities/main.json @@ -0,0 +1,67 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "enables the default permissions", + "windows": [ + "main" + ], + "permissions": [ + "core:app:allow-tauri-version", + "core:app:allow-app-hide", + "core:app:allow-app-show", + "core:app:allow-default-window-icon", + "core:app:allow-name", + "core:app:allow-version", + "core:event:deny-emit", + "core:event:deny-emit-to", + "core:event:deny-listen", + "core:event:deny-unlisten", + "core:image:deny-from-bytes", + "core:image:deny-from-path", + "core:image:deny-new", + "core:image:deny-rgba", + "core:image:deny-size", + "core:menu:deny-create-default", + "core:menu:deny-popup", + "core:menu:deny-insert", + "core:menu:deny-new", + "core:menu:deny-append", + "core:menu:deny-get", + "core:menu:deny-is-checked", + "core:menu:deny-is-enabled", + "core:menu:deny-items", + "core:menu:deny-remove", + "core:menu:deny-prepend", + "core:menu:deny-remove-at", + "core:menu:deny-set-accelerator", + "core:menu:deny-set-as-app-menu", + "core:menu:deny-set-as-window-menu", + "core:menu:deny-set-icon", + "core:menu:deny-set-as-help-menu-for-nsapp", + "core:menu:deny-set-checked", + "core:menu:deny-set-as-windows-menu-for-nsapp", + "core:menu:deny-set-enabled", + "core:menu:deny-set-text", + "core:menu:deny-text", + "core:path:default", + "core:resources:default", + "core:tray:default", + "core:webview:deny-print", + "core:webview:deny-set-webview-zoom", + "core:webview:allow-internal-toggle-devtools", + "fs:allow-download-write", + "fs:allow-download-read", + "fs:allow-appconfig-read", + "fs:allow-appconfig-write", + "notification:allow-request-permission", + "notification:allow-check-permissions", + "notification:allow-is-permission-granted", + "notification:allow-notify", + "notification:allow-show", + "notification:allow-permission-state", + "notification:default", + "shell:allow-open", + "shell:allow-execute", + "shell:default" + ] +} diff --git a/src-tauri/conf/tauri.dev.conf.json b/src-tauri/conf/tauri.dev.conf.json index 26cd18d..baf585a 100644 --- a/src-tauri/conf/tauri.dev.conf.json +++ b/src-tauri/conf/tauri.dev.conf.json @@ -1,6 +1,6 @@ { "productName": "Factor", - "version": "2.1.1", + "version": "2.1.2", "identifier": "factor", "build": { "frontendDist": "../bundle-dev", @@ -20,73 +20,7 @@ ], "security": { "capabilities": [ - { - "$schema": "./gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "enables the default permissions", - "windows": [ - "main" - ], - "permissions": [ - "core:app:allow-tauri-version", - "core:app:allow-app-hide", - "core:app:allow-app-show", - "core:app:allow-default-window-icon", - "core:app:allow-name", - "core:app:allow-version", - "core:event:deny-emit", - "core:event:deny-emit-to", - "core:event:deny-listen", - "core:event:deny-unlisten", - "core:image:deny-from-bytes", - "core:image:deny-from-path", - "core:image:deny-new", - "core:image:deny-rgba", - "core:image:deny-size", - "core:menu:deny-create-default", - "core:menu:deny-popup", - "core:menu:deny-insert", - "core:menu:deny-new", - "core:menu:deny-append", - "core:menu:deny-get", - "core:menu:deny-is-checked", - "core:menu:deny-is-enabled", - "core:menu:deny-items", - "core:menu:deny-remove", - "core:menu:deny-prepend", - "core:menu:deny-remove-at", - "core:menu:deny-set-accelerator", - "core:menu:deny-set-as-app-menu", - "core:menu:deny-set-as-window-menu", - "core:menu:deny-set-icon", - "core:menu:deny-set-as-help-menu-for-nsapp", - "core:menu:deny-set-checked", - "core:menu:deny-set-as-windows-menu-for-nsapp", - "core:menu:deny-set-enabled", - "core:menu:deny-set-text", - "core:menu:deny-text", - "core:path:default", - "core:resources:default", - "core:tray:default", - "core:webview:deny-print", - "core:webview:deny-set-webview-zoom", - "core:webview:allow-internal-toggle-devtools", - "fs:allow-download-write", - "fs:allow-download-read", - "fs:allow-appconfig-read", - "fs:allow-appconfig-write", - "notification:allow-request-permission", - "notification:allow-check-permissions", - "notification:allow-is-permission-granted", - "notification:allow-notify", - "notification:allow-show", - "notification:allow-permission-state", - "notification:default", - "shell:allow-open", - "shell:allow-execute", - "shell:default" - ] - } + "main" ], "assetProtocol": { "enable": false, @@ -162,12 +96,5 @@ "homepage": "https://github.com/39zde/factor" }, - "plugins": { - "deep-link":{ - "desktop":{ - "schemes":["https"] - } - } - }, - "$schema": "../node_modules/@tauri-apps/cli/config.schema.json" + "$schema": "../../node_modules/@tauri-apps/cli/config.schema.json" } diff --git a/src-tauri/conf/tauri.prod.conf.json b/src-tauri/conf/tauri.prod.conf.json index 68dad06..667d038 100644 --- a/src-tauri/conf/tauri.prod.conf.json +++ b/src-tauri/conf/tauri.prod.conf.json @@ -1,6 +1,6 @@ { "productName": "Factor", - "version": "2.1.1", + "version": "2.1.2", "identifier": "factor", "build": { "frontendDist": "../bundle-prod", @@ -18,73 +18,7 @@ ], "security": { "capabilities": [ - { - "$schema": "./gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "enables the default permissions", - "windows": [ - "main" - ], - "permissions": [ - "core:app:allow-tauri-version", - "core:app:allow-app-hide", - "core:app:allow-app-show", - "core:app:allow-default-window-icon", - "core:app:allow-name", - "core:app:allow-version", - "core:event:deny-emit", - "core:event:deny-emit-to", - "core:event:deny-listen", - "core:event:deny-unlisten", - "core:image:deny-from-bytes", - "core:image:deny-from-path", - "core:image:deny-new", - "core:image:deny-rgba", - "core:image:deny-size", - "core:menu:deny-create-default", - "core:menu:deny-popup", - "core:menu:deny-insert", - "core:menu:deny-new", - "core:menu:deny-append", - "core:menu:deny-get", - "core:menu:deny-is-checked", - "core:menu:deny-is-enabled", - "core:menu:deny-items", - "core:menu:deny-remove", - "core:menu:deny-prepend", - "core:menu:deny-remove-at", - "core:menu:deny-set-accelerator", - "core:menu:deny-set-as-app-menu", - "core:menu:deny-set-as-window-menu", - "core:menu:deny-set-icon", - "core:menu:deny-set-as-help-menu-for-nsapp", - "core:menu:deny-set-checked", - "core:menu:deny-set-as-windows-menu-for-nsapp", - "core:menu:deny-set-enabled", - "core:menu:deny-set-text", - "core:menu:deny-text", - "core:path:default", - "core:resources:default", - "core:tray:default", - "core:webview:deny-print", - "core:webview:deny-set-webview-zoom", - "core:webview:allow-internal-toggle-devtools", - "fs:allow-download-write", - "fs:allow-download-read", - "fs:allow-appconfig-read", - "fs:allow-appconfig-write", - "notification:allow-request-permission", - "notification:allow-check-permissions", - "notification:allow-is-permission-granted", - "notification:allow-notify", - "notification:allow-show", - "notification:allow-permission-state", - "notification:default", - "shell:allow-open", - "shell:allow-execute", - "shell:default" - ] - } + "main" ], "csp": "default-src 'self'; script-src 'self'; connect-src 'self'; worker-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:", "devCsp": "default-src 'self'", @@ -162,12 +96,5 @@ "homepage": "https://github.com/39zde/factor" }, - "plugins": { - "deep-link":{ - "desktop":{ - "schemes":["https"] - } - } - }, - "$schema": "../node_modules/@tauri-apps/cli/config.schema.json" + "$schema": "../../node_modules/@tauri-apps/cli/config.schema.json" } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json deleted file mode 100644 index 68dad06..0000000 --- a/src-tauri/tauri.conf.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "productName": "Factor", - "version": "2.1.1", - "identifier": "factor", - "build": { - "frontendDist": "../bundle-prod", - "beforeBuildCommand": "yarn bundle:prod" - }, - "app": { - "windows": [ - { - "title": "Factor", - "resizable": true, - "fullscreen": false, - "center": true, - "zoomHotkeysEnabled": false - } - ], - "security": { - "capabilities": [ - { - "$schema": "./gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "enables the default permissions", - "windows": [ - "main" - ], - "permissions": [ - "core:app:allow-tauri-version", - "core:app:allow-app-hide", - "core:app:allow-app-show", - "core:app:allow-default-window-icon", - "core:app:allow-name", - "core:app:allow-version", - "core:event:deny-emit", - "core:event:deny-emit-to", - "core:event:deny-listen", - "core:event:deny-unlisten", - "core:image:deny-from-bytes", - "core:image:deny-from-path", - "core:image:deny-new", - "core:image:deny-rgba", - "core:image:deny-size", - "core:menu:deny-create-default", - "core:menu:deny-popup", - "core:menu:deny-insert", - "core:menu:deny-new", - "core:menu:deny-append", - "core:menu:deny-get", - "core:menu:deny-is-checked", - "core:menu:deny-is-enabled", - "core:menu:deny-items", - "core:menu:deny-remove", - "core:menu:deny-prepend", - "core:menu:deny-remove-at", - "core:menu:deny-set-accelerator", - "core:menu:deny-set-as-app-menu", - "core:menu:deny-set-as-window-menu", - "core:menu:deny-set-icon", - "core:menu:deny-set-as-help-menu-for-nsapp", - "core:menu:deny-set-checked", - "core:menu:deny-set-as-windows-menu-for-nsapp", - "core:menu:deny-set-enabled", - "core:menu:deny-set-text", - "core:menu:deny-text", - "core:path:default", - "core:resources:default", - "core:tray:default", - "core:webview:deny-print", - "core:webview:deny-set-webview-zoom", - "core:webview:allow-internal-toggle-devtools", - "fs:allow-download-write", - "fs:allow-download-read", - "fs:allow-appconfig-read", - "fs:allow-appconfig-write", - "notification:allow-request-permission", - "notification:allow-check-permissions", - "notification:allow-is-permission-granted", - "notification:allow-notify", - "notification:allow-show", - "notification:allow-permission-state", - "notification:default", - "shell:allow-open", - "shell:allow-execute", - "shell:default" - ] - } - ], - "csp": "default-src 'self'; script-src 'self'; connect-src 'self'; worker-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:", - "devCsp": "default-src 'self'", - "assetProtocol": { - "enable": false, - "scope": [] - }, - "pattern": { - "use": "brownfield" - }, - "dangerousDisableAssetCspModification": false, - "freezePrototype": false - }, - "withGlobalTauri": true - }, - "bundle": { - "linux": { - "appimage": { - "bundleMediaFramework": false, - "files": {} - }, - "deb": { - "files": {} - }, - "rpm": { - "epoch": 0, - "files": {}, - "release": "1" - } - }, - "macOS": { - "dmg": { - "appPosition": { - "x": 180, - "y": 170 - }, - "applicationFolderPosition": { - "x": 480, - "y": 170 - }, - "windowSize": { - "height": 400, - "width": 660 - } - }, - "files": {}, - "hardenedRuntime": true, - "minimumSystemVersion": "10.13" - }, - "windows": { - "allowDowngrades": true, - "certificateThumbprint": null, - "digestAlgorithm": null, - "nsis": null, - "signCommand": null, - "timestampUrl": null, - "tsp": false, - "webviewInstallMode": { - "silent": true, - "type": "downloadBootstrapper" - }, - "wix": null - }, - "active": true, - "targets": "all", - "icon": [ - "./icons/32x32.png", - "./icons/128x128.png", - "./icons/128x128@2x.png", - "./icons/icon.icns", - "./icons/icon.ico" - ], - "category": "Utility", - "licenseFile": "../LICENSE", - "homepage": "https://github.com/39zde/factor" - - }, - "plugins": { - "deep-link":{ - "desktop":{ - "schemes":["https"] - } - } - }, - "$schema": "../node_modules/@tauri-apps/cli/config.schema.json" -} diff --git a/src/README.md b/src/README.md index 8c4ef1d..dc41ba2 100644 --- a/src/README.md +++ b/src/README.md @@ -30,6 +30,19 @@ There are 3 entry points, which all server different purposes. Depending on what - [`pages`](./pages/) Contains all pages All pages reachable from the Side bar -- [`util`](./util/) +- [`util`](./util/) Utility functions + Sorted by Page, Comp, or whatever. Rough sorting should suffice, since the functions will be used across the whole project. + +- [`worker`](./worker/) The WebWorkers + + - [`export.worker.ts`](./worker/export.worker.ts) + Compiles the data from indexedDB and sends it to the main thread. Then from there a write-stream (tauri-plugin/fs) saves the data to the systems download folder + - [`import.worker.ts`](./worker/import.worker.ts) + Converts the assigned columns in the Upload-Page into rows and inserts them into a database and oStore + - [`table.worker.ts`](./worker/table.worker.ts) + Returns the requested rows to the table, for display + +- [`types`](./types/) + All TypeScript type definitions, sorted like [`factor/src/`](../src/) diff --git a/src/comps/CheckBox/CheckBox.tsx b/src/comps/CheckBox/CheckBox.tsx index 606d4a9..96f2088 100644 --- a/src/comps/CheckBox/CheckBox.tsx +++ b/src/comps/CheckBox/CheckBox.tsx @@ -2,9 +2,10 @@ import React from 'react'; import { Check } from 'lucide-react'; // non-lib imports import { solids } from '@app'; +import { CheckBoxProps } from '@type'; import './CheckBox.css'; -export function CheckBox({ ticked }: { ticked: boolean }): React.JSX.Element { +export function CheckBox({ ticked }: CheckBoxProps): React.JSX.Element { return ( <>
(PlaceHolderTableContext); -const TableDispatchContext = - //!TODO find the correct type for this to not need ts-ignore - // @ts-expect-error unintuitive typing with useReducer in combination with useContext - createContext>(tableReducer); +const TableDispatchContext = createContext>((value: TableDispatchAction) => { + tableReducer(PlaceHolderTableContext, value); +}); -export function useTableContext() { +export function useTableContext(): TableContextType { return useContext(TableContext); } -export function useTableDispatch() { - return useContext(TableDispatchContext); +export function useTableDispatch(): Dispatch { + return useContext>(TableDispatchContext); } export function Table({ dataBaseName, tableName, colsHook, entriesHook, updateHook, uniqueKey, nativeColumnNames }: TableProps): React.JSX.Element { + /** width of the first columns in every tabes, it displays the row number */ const rowColumnWidth = 40; + /** the height of the horizontal scrollbar */ const scrollBarHeight = 5; const { database, appearances, worker, general } = useAppContext(); const notify = useChangeContext(); @@ -157,7 +158,8 @@ export function Table({ dataBaseName, tableName, colsHook, entriesHook, updateHo } }, [tableBodyRef.current, tableState.hasStarted]); - // listen for any updates + // if we register a prop change of updateHook?.update, set the new update value + // and if update is true init the table state again useEffect(() => { setMenuActive(false); const newUpdate = updateHook?.update; @@ -175,7 +177,7 @@ export function Table({ dataBaseName, tableName, colsHook, entriesHook, updateHo } }, [updateHook?.update]); - // if we register a change from out side the table component execute it + // if we register a prop change of colsHook.cols, set the new columns useEffect(() => { if (colsHook !== undefined) { dispatch({ @@ -220,7 +222,7 @@ export function Table({ dataBaseName, tableName, colsHook, entriesHook, updateHo // don't put tableState.scope into the deps array, because the function updateSizing changes tableState.scope, therefore creating a cycle }, [appearances.height, appearances.rowHeight, tableState.hasStarted]); - // handle the messages coming from table.worker.ts + // handle the messages coming from table.worker.ts // this also includes responses from messages made in files other than this one. // dispatches: rows, lastReceived, start, columns, allColumns, resizeStyles, columnWidths, count, hasStarted worker.TableWorker.onmessage = (e: MessageEvent) => { diff --git a/src/pages/ExportPage/ExportPage.tsx b/src/pages/ExportPage/ExportPage.tsx index c060c08..fc2cc16 100644 --- a/src/pages/ExportPage/ExportPage.tsx +++ b/src/pages/ExportPage/ExportPage.tsx @@ -20,13 +20,6 @@ export function ExportPage(): React.JSX.Element { oStoreName: string | undefined, compression: CompressionTypes | undefined ) => { - console.log({ - type: type, - dataBaseName: dataBaseName, - oStoreName: oStoreName, - format: format, - compression: compression, - }); setFileHandle(undefined); context.worker.ExportWorker.postMessage({ @@ -42,7 +35,6 @@ export function ExportPage(): React.JSX.Element { const formatHandler = () => { if (formatRef.current !== null) { if (formatRef.current.value !== undefined) { - console.log(formatRef.current.value); setFormat(formatRef.current.value as 'json' | 'csv'); } } @@ -64,7 +56,6 @@ export function ExportPage(): React.JSX.Element { create(fileName, { baseDir: BaseDirectory.Download }).then((handle) => { setFileHandle(handle); if (eventData.scope !== undefined) { - console.log('create'); channel.postMessage({ type: 'create', name: fileName, scope: eventData.scope }); } }); diff --git a/src/pages/Upload/RowShifter.tsx b/src/pages/Upload/RowShifter.tsx index f0f88a1..edce559 100644 --- a/src/pages/Upload/RowShifter.tsx +++ b/src/pages/Upload/RowShifter.tsx @@ -61,12 +61,6 @@ export function RowShifter({ }); } updateHook.setUpdate(true); - console.log({ - col: colInput, - value: valInput, - offset: offsetInput, - direction: directionInput, - }); worker.ImportWorker.postMessage({ type: 'align', dbVersion: database.dbVersion, diff --git a/src/types/comps/CheckBox/CheckBox.d.ts b/src/types/comps/CheckBox/CheckBox.d.ts new file mode 100644 index 0000000..fe88cf6 --- /dev/null +++ b/src/types/comps/CheckBox/CheckBox.d.ts @@ -0,0 +1 @@ +export type CheckBoxProps = { ticked: boolean }; diff --git a/src/types/types.d.ts b/src/types/types.d.ts index e119946..ea4ec04 100644 --- a/src/types/types.d.ts +++ b/src/types/types.d.ts @@ -1,7 +1,8 @@ import { app, core, dpi, event, image, menu, mocks, path, tray, webview, webviewWindow, window } from '@tauri-apps/api'; -export type { SideBarProps, RouterButtonProps, LowerButtonProps } from './comps/SideBar/SideBarProps'; -export type { RouteType } from './comps/SideBar/routes'; +// pages + +export type { HelpTexts, HelpItem } from './pages/Help/HelpTexts'; export type { ImportModuleProps, @@ -11,6 +12,22 @@ export type { ColumnSetterProps, } from './pages/Upload/Upload'; +// database +export type { ArticleDBObjectStores, ArticleSortingMap } from './database/ArticleTypes'; + +export type { DocumentDBObjectStores, DocumentSortingMap } from './database/DocumentTypes'; + +export type { + TableRow, + DerefRow, + CustomerKeys, + CustomerReferences, + BaseRow, + UploadRow, + TableRowCounter, + DataBaseNames, +} from './database/DataBaseData'; + export type { Customer, DerefCustomer, @@ -33,10 +50,7 @@ export type { BaseCustomer, } from './database/CustomerTypes'; -export type { TableProps, TableDispatchAction, TableContextType, ResizeStyle, TableRowItemProps, ResizeElementProps } from './comps/Table/Table'; - -export type { HelpTexts, HelpItem } from './pages/Help/HelpTexts'; - +// worker export type { TableWorkerRequestMessage, TableWorkerRequestMessageAction, @@ -62,24 +76,20 @@ export type { UpdateMessage, } from './worker/import.worker'; -export type { - TableRow, - DerefRow, - CustomerKeys, - CustomerReferences, - BaseRow, - UploadRow, - TableRowCounter, - DataBaseNames, -} from './database/DataBaseData'; +export type { CompressionTypes, ExportWorkerRequest, ExportWorkerResponse, ExportFileStreamer } from './worker/export.worker'; + +// comps + +export type { CheckBoxProps } from './comps/CheckBox/CheckBox'; export type { ContextMenuProps, MenuItem } from './comps/ContextMenu/ContextMenu'; -export type { ArticleDBObjectStores, ArticleSortingMap } from './database/ArticleTypes'; +export type { RouteType } from './comps/SideBar/routes'; +export type { SideBarProps, RouterButtonProps, LowerButtonProps } from './comps/SideBar/SideBarProps'; -export type { DocumentDBObjectStores, DocumentSortingMap } from './database/DocumentTypes'; +export type { TableProps, TableDispatchAction, TableContextType, ResizeStyle, TableRowItemProps, ResizeElementProps } from './comps/Table/Table'; -export type { CompressionTypes, ExportWorkerRequest, ExportWorkerResponse, ExportFileStreamer } from './worker/export.worker'; +// globals export type { AppContextType, diff --git a/src/util/App/AppUtil.ts b/src/util/App/AppUtil.ts index b7d4f6d..51e156f 100644 --- a/src/util/App/AppUtil.ts +++ b/src/util/App/AppUtil.ts @@ -62,8 +62,7 @@ export async function getSettings(): Promise { } return settings; } catch (e) { - console.log('failed to read settings'); - console.error(e); + console.error('failed to read settings', e); } return defaultSettings; } diff --git a/src/worker/import.worker.ts b/src/worker/import.worker.ts index d8a4f96..ac906f5 100644 --- a/src/worker/import.worker.ts +++ b/src/worker/import.worker.ts @@ -313,30 +313,30 @@ function importData(dataBaseName: string, dbVersion: number, oStore: string, fil }; transaction.oncomplete = () => { // db.close(); - // console.log('completed'); // return postMessage({ // type: 'imported', // data: [pos, columns], // }); }; transaction.onerror = (ev) => { - console.log(ev); - return postMessage({ + console.error(ev); + postMessage({ type: 'error', data: 'Database transaction failed', }); }; clearRequest.onerror = () => { - console.log('clear error'); + console.error('clear error'); }; }; request.onerror = () => { - console.log(oStore); - return postMessage({ + postMessage({ type: 'error', data: 'failed to open database', }); + // temporary use oStore + oStore = oStore.trim(); }; } @@ -431,7 +431,6 @@ function putRow(dataBaseName: string, dbVersion: number, oStoreName: string, row } function alignData(dataBaseName: string, dbVersion: number, alignVariables: AlignVariables) { - console.log(alignVariables); function performShift(to: number, item: TableRow) { const out = item; const copy = structuredClone(item); @@ -784,8 +783,6 @@ function restoreBackup(dbVersion: number, data: ReadableStream) { // resolve all promises Promise.all(promises).then(() => { // then inform the user we are done here - console.log('restore done'); - console.log('all promises resolved'); postMessage({ type: 'restore-done', data: dataBaseName, @@ -1282,7 +1279,6 @@ function parseCustomerData( // this is the finalizing function, once it is done the will be no more function insertCustomers(customer: PreInsertCustomer) { parseCustomer([customer], (result: Customer[] | null) => { - // console.log('parseCustomerCallback'); if (result !== null) { // the will be only one entry in result for (let i = 0; i < result.length; i++) { @@ -1937,7 +1933,6 @@ function sortData( if (prop === 'add') { if (typeof value !== 'number') { target['promises'].push(value); - // console.log(target['promises'].length / target['total']); if (target['promises'].length === target['total']) { postMessage({ type: 'sort-progress', @@ -1976,7 +1971,6 @@ function sortData( parseArticleData('article_db', dbVersion, sortingMap as ArticleSortingMap, cursor.value); break; case 'customer_db': - // console.log('starting with: ', cursor.value.row); proxy.add = new Promise((resolve) => { parseCustomerData('customer_db', dbVersion, sortingMap as CustomerSortingMap, cursor.value, (result) => { resolve(result); diff --git a/src/worker/table.worker.ts b/src/worker/table.worker.ts index 0dd58bf..47d6a65 100644 --- a/src/worker/table.worker.ts +++ b/src/worker/table.worker.ts @@ -36,19 +36,16 @@ self.onmessage = function requestHandler(e: MessageEvent) { }; const proxy = new Proxy(starterPackage, starterHandler); getCount(eventData.dataBaseName, eventData.dbVersion, eventData.storeName, (count: number | undefined) => { - // console.log('count: ', count); if (count !== undefined) { proxy.startingCount = count; } }); getColumns(eventData.dataBaseName, eventData.dbVersion, eventData.storeName, (cols: string[] | undefined) => { - // console.log('columns: ', cols); if (cols !== undefined) { proxy.startingColumns = cols; } }); getStartingRows(eventData.dataBaseName, eventData.dbVersion, eventData.storeName, eventData.scope, (rows: DerefRow[] | undefined) => { - // console.log('row: ', rows); if (rows !== undefined) { proxy.starterRows = rows; } @@ -138,7 +135,6 @@ function getStartingRows( }, }; const doneHandler = new Proxy(done, doneListener); - // console.log('db does contain oStore'); const cursorRequest = oStore.openCursor(null, 'nextunique'); cursorRequest.onsuccess = function startingCursorSuccess() { const cursor: IDBCursorWithValue | null = cursorRequest.result; @@ -336,7 +332,7 @@ function fillReferences( proxy.count += 1; }; request.onerror = function fillReferencesRequestError() { - console.log('referencing error'); + console.error('referencing error'); proxy.count += 1; }; } diff --git a/vite.dev.config.ts b/vite.dev.config.ts index 935b503..b4c46d0 100644 --- a/vite.dev.config.ts +++ b/vite.dev.config.ts @@ -19,7 +19,6 @@ export default defineConfig({ format: 'es', intro: `window.__FACTOR_VERSION__= ${JSON.stringify(process.env.npm_package_version)}; window.__USE_TAURI__ = true;`, }, - logLevel: 'silent', }, }, worker: { diff --git a/yarn.lock b/yarn.lock index 80294ef..5530aba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -472,6 +472,13 @@ __metadata: languageName: node linkType: hard +"@eslint/core@npm:^0.6.0": + version: 0.6.0 + resolution: "@eslint/core@npm:0.6.0" + checksum: 10c0/fffdb3046ad6420f8cb9204b6466fdd8632a9baeebdaf2a97d458a4eac0e16653ba50d82d61835d7d771f6ced0ec942ec482b2fbccc300e45f2cbf784537f240 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^3.1.0": version: 3.1.0 resolution: "@eslint/eslintrc@npm:3.1.0" @@ -489,10 +496,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.11.0, @eslint/js@npm:^9.11.0": - version: 9.11.0 - resolution: "@eslint/js@npm:9.11.0" - checksum: 10c0/7403aeba28ba9cae3470d149b334a51375eb7fd850f167555c81cc72fe98e5cc5ac3059ccdbe68eb255a49d7498a7288d25429af0c7d20afeb4b3c0748349bb4 +"@eslint/js@npm:9.11.1, @eslint/js@npm:^9.11.1": + version: 9.11.1 + resolution: "@eslint/js@npm:9.11.1" + checksum: 10c0/22916ef7b09c6f60c62635d897c66e1e3e38d90b5a5cf5e62769033472ecbcfb6ec7c886090a4b32fe65d6ce371da54384e46c26a899e38184dfc152c6152f7b languageName: node linkType: hard @@ -923,114 +930,114 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.21.0" +"@rollup/rollup-android-arm-eabi@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.22.4" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-android-arm64@npm:4.21.0" +"@rollup/rollup-android-arm64@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-android-arm64@npm:4.22.4" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.21.0" +"@rollup/rollup-darwin-arm64@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-darwin-arm64@npm:4.22.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.21.0" +"@rollup/rollup-darwin-x64@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-darwin-x64@npm:4.22.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.21.0" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.22.4" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.21.0" +"@rollup/rollup-linux-arm-musleabihf@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.22.4" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.21.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.22.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.21.0" +"@rollup/rollup-linux-arm64-musl@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.22.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.0" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.4" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.21.0" +"@rollup/rollup-linux-riscv64-gnu@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.22.4" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.21.0" +"@rollup/rollup-linux-s390x-gnu@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.22.4" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.21.0" +"@rollup/rollup-linux-x64-gnu@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.22.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.21.0" +"@rollup/rollup-linux-x64-musl@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.22.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.21.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.22.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.21.0" +"@rollup/rollup-win32-ia32-msvc@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.22.4" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.21.0" +"@rollup/rollup-win32-x64-msvc@npm:4.22.4": + version: 4.22.4 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.22.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1273,19 +1280,26 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*": +"@types/estree@npm:^1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db languageName: node linkType: hard -"@types/node@npm:^20.16.5": - version: 20.16.5 - resolution: "@types/node@npm:20.16.5" +"@types/node@npm:^20.16.8": + version: 20.16.8 + resolution: "@types/node@npm:20.16.8" dependencies: undici-types: "npm:~6.19.2" - checksum: 10c0/6af7994129815010bcbc4cf8221865559c8116ff43e74a6549525c2108267596fc2d18aff5d5ecfe089fb60a119f975631343e2c65c52bfa0955ed9dc56733d6 + checksum: 10c0/3b3bd96885cbbe49e5f701be91f9a69b904a60b23fd4812083b053a802a03e38227919ff800aff2961fd11147b471a1a4fc09f1df171f372698f16d39859aebf languageName: node linkType: hard @@ -1315,25 +1329,25 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18.3.8": - version: 18.3.8 - resolution: "@types/react@npm:18.3.8" +"@types/react@npm:^18.3.9": + version: 18.3.9 + resolution: "@types/react@npm:18.3.9" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10c0/367312c9fe276639ecb142265e090a4dd04bb39f8d718cbab546de3f1ddcfddeff415e1147d0fc40f734badaa7420b7b109d511bd4304b2c4c9c36164612fdf8 + checksum: 10c0/a92b8e061d0c833e096254782c56a802316593f4a907fb834b557cabe848a0829b9eb6056404ea239eb4d5ec5ac7b7724309761516c0a7a277916fa04dd4f805 languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.6.0, @typescript-eslint/eslint-plugin@npm:^8.6.0": - version: 8.6.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.6.0" +"@typescript-eslint/eslint-plugin@npm:8.7.0, @typescript-eslint/eslint-plugin@npm:^8.7.0": + version: 8.7.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.7.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.6.0" - "@typescript-eslint/type-utils": "npm:8.6.0" - "@typescript-eslint/utils": "npm:8.6.0" - "@typescript-eslint/visitor-keys": "npm:8.6.0" + "@typescript-eslint/scope-manager": "npm:8.7.0" + "@typescript-eslint/type-utils": "npm:8.7.0" + "@typescript-eslint/utils": "npm:8.7.0" + "@typescript-eslint/visitor-keys": "npm:8.7.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -1344,66 +1358,66 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/c777f01535b896d3092f9886a67ccf9e50bf9e0f581ffab607c5e95dbf3092299b0d9f3e6041b134d69059a6fa5691785940b81015f73bb9a0e9d1605f6442ea + checksum: 10c0/f04d6fa6a30e32d51feba0f08789f75ca77b6b67cfe494bdbd9aafa241871edc918fa8b344dc9d13dd59ae055d42c3920f0e542534f929afbfdca653dae598fa languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.6.0, @typescript-eslint/parser@npm:^8.6.0": - version: 8.6.0 - resolution: "@typescript-eslint/parser@npm:8.6.0" +"@typescript-eslint/parser@npm:8.7.0, @typescript-eslint/parser@npm:^8.7.0": + version: 8.7.0 + resolution: "@typescript-eslint/parser@npm:8.7.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.6.0" - "@typescript-eslint/types": "npm:8.6.0" - "@typescript-eslint/typescript-estree": "npm:8.6.0" - "@typescript-eslint/visitor-keys": "npm:8.6.0" + "@typescript-eslint/scope-manager": "npm:8.7.0" + "@typescript-eslint/types": "npm:8.7.0" + "@typescript-eslint/typescript-estree": "npm:8.7.0" + "@typescript-eslint/visitor-keys": "npm:8.7.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10c0/3f280d289b486359194d422d89df9896b3f10a6d45cdf851d1d5f3200489271a31ab503c127cb5656f9b0ad6d795dd708b960f21fb105750aac19f41f8f815d1 + checksum: 10c0/1d5020ff1f5d3eb726bc6034d23f0a71e8fe7a713756479a0a0b639215326f71c0b44e2c25cc290b4e7c144bd3c958f1405199711c41601f0ea9174068714a64 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.6.0": - version: 8.6.0 - resolution: "@typescript-eslint/scope-manager@npm:8.6.0" +"@typescript-eslint/scope-manager@npm:8.7.0": + version: 8.7.0 + resolution: "@typescript-eslint/scope-manager@npm:8.7.0" dependencies: - "@typescript-eslint/types": "npm:8.6.0" - "@typescript-eslint/visitor-keys": "npm:8.6.0" - checksum: 10c0/37092ef70171c06854ac67ebfb2255063890c1c6133654e6b15b6adb6d2ab83de4feafd1599f4d02ed71a018226fcb3a389021758ec045e1904fb1798e90b4fe + "@typescript-eslint/types": "npm:8.7.0" + "@typescript-eslint/visitor-keys": "npm:8.7.0" + checksum: 10c0/8b731a0d0bd3e8f6a322b3b25006f56879b5d2aad86625070fa438b803cf938cb8d5c597758bfa0d65d6e142b204dc6f363fa239bc44280a74e25aa427408eda languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.6.0": - version: 8.6.0 - resolution: "@typescript-eslint/type-utils@npm:8.6.0" +"@typescript-eslint/type-utils@npm:8.7.0": + version: 8.7.0 + resolution: "@typescript-eslint/type-utils@npm:8.7.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.6.0" - "@typescript-eslint/utils": "npm:8.6.0" + "@typescript-eslint/typescript-estree": "npm:8.7.0" + "@typescript-eslint/utils": "npm:8.7.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/914b4637caa40c102117655a9b4451e0db611a61309ed39d6c57522655463c059f4dfd4e2d7ffdefcc9ab7533be21fb877b740c58f5be11f3530aa29f3d2cb62 + checksum: 10c0/2bd9fb93a50ff1c060af41528e39c775ae93b09dd71450defdb42a13c68990dd388460ae4e81fb2f4a49c38dc12152c515d43e845eca6198c44b14aab66733bc languageName: node linkType: hard -"@typescript-eslint/types@npm:8.6.0": - version: 8.6.0 - resolution: "@typescript-eslint/types@npm:8.6.0" - checksum: 10c0/e7051d212252f7d1905b5527b211e335db4ec5bb1d3a52d73c8d2de6ddf5cbc981f2c92ca9ffcef35f7447bda635ea1ccce5f884ade7f243d14f2a254982c698 +"@typescript-eslint/types@npm:8.7.0": + version: 8.7.0 + resolution: "@typescript-eslint/types@npm:8.7.0" + checksum: 10c0/f7529eaea4ecc0f5e2d94ea656db8f930f6d1c1e65a3ffcb2f6bec87361173de2ea981405c2c483a35a927b3bdafb606319a1d0395a6feb1284448c8ba74c31e languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.6.0": - version: 8.6.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.6.0" +"@typescript-eslint/typescript-estree@npm:8.7.0": + version: 8.7.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.7.0" dependencies: - "@typescript-eslint/types": "npm:8.6.0" - "@typescript-eslint/visitor-keys": "npm:8.6.0" + "@typescript-eslint/types": "npm:8.7.0" + "@typescript-eslint/visitor-keys": "npm:8.7.0" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -1413,31 +1427,31 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/33ab8c03221a797865301f09d1d198c67f8b0e3dbf0d13e41f699dc2740242303a9fcfd7b38302cef318541fdedd832fd6e8ba34a5041a57e9114fa134045385 + checksum: 10c0/d714605b6920a9631ab1511b569c1c158b1681c09005ab240125c442a63e906048064151a61ce5eb5f8fe75cea861ce5ae1d87be9d7296b012e4ab6d88755e8b languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.6.0": - version: 8.6.0 - resolution: "@typescript-eslint/utils@npm:8.6.0" +"@typescript-eslint/utils@npm:8.7.0": + version: 8.7.0 + resolution: "@typescript-eslint/utils@npm:8.7.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.6.0" - "@typescript-eslint/types": "npm:8.6.0" - "@typescript-eslint/typescript-estree": "npm:8.6.0" + "@typescript-eslint/scope-manager": "npm:8.7.0" + "@typescript-eslint/types": "npm:8.7.0" + "@typescript-eslint/typescript-estree": "npm:8.7.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 10c0/5b615106342dfdf09f5a73e2554cc0c4d979c262a9a4548eb76ec7045768e0ff0bf0316cf8a5eb5404689cd476fcd335fc84f90eb985557559e42aeee33d687e + checksum: 10c0/7355b754ce2fc118773ed27a3e02b7dfae270eec73c2d896738835ecf842e8309544dfd22c5105aba6cae2787bfdd84129bbc42f4b514f57909dc7f6890b8eba languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.6.0": - version: 8.6.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.6.0" +"@typescript-eslint/visitor-keys@npm:8.7.0": + version: 8.7.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.7.0" dependencies: - "@typescript-eslint/types": "npm:8.6.0" + "@typescript-eslint/types": "npm:8.7.0" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10c0/9bd5d5daee9de7e009fdd1b64b1eca685a699d1b2639373bc279c97e25e769fff56fffef708ef66a2b19bc8bb201d36daf9e7084f0e0872178bfcf9d923b41f3 + checksum: 10c0/1240da13c15f9f875644b933b0ad73713ef12f1db5715236824c1ec359e6ef082ce52dd9b2186d40e28be6a816a208c226e6e9af96e5baeb24b4399fe786ae7c languageName: node linkType: hard @@ -2420,19 +2434,22 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^9.11.0": - version: 9.11.0 - resolution: "eslint@npm:9.11.0" +"eslint@npm:^9.11.1": + version: 9.11.1 + resolution: "eslint@npm:9.11.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.11.0" "@eslint/config-array": "npm:^0.18.0" + "@eslint/core": "npm:^0.6.0" "@eslint/eslintrc": "npm:^3.1.0" - "@eslint/js": "npm:9.11.0" + "@eslint/js": "npm:9.11.1" "@eslint/plugin-kit": "npm:^0.2.0" "@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/retry": "npm:^0.3.0" "@nodelib/fs.walk": "npm:^1.2.8" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.2" @@ -2465,7 +2482,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/3438a78172bc667dc87bc4ad864671bd93231c82c9d366899ea3a77fc3444c8cdd158e7fe3ca1cfe4cb566045b1b36c0ccae9fc20efeb4b187f1a534075a1177 + checksum: 10c0/fc9afc31155fef8c27fc4fd00669aeafa4b89ce5abfbf6f60e05482c03d7ff1d5e7546e416aa47bf0f28c9a56597a94663fd0264c2c42a1890f53cac49189f24 languageName: node linkType: hard @@ -2530,7 +2547,7 @@ __metadata: version: 0.0.0-use.local resolution: "factor@workspace:." dependencies: - "@eslint/js": "npm:^9.11.0" + "@eslint/js": "npm:^9.11.1" "@react-pdf/renderer": "npm:^3.4.5" "@tauri-apps/api": "npm:^2.0.0-rc.5" "@tauri-apps/cli": "npm:^2.0.0-rc.16" @@ -2539,22 +2556,22 @@ __metadata: "@tauri-apps/plugin-shell": "npm:^2.0.0-rc.1" "@tauri-apps/plugin-window-state": "npm:^2.0.0-rc.1" "@types/eslint__js": "npm:^8.42.3" - "@types/node": "npm:^20.16.5" - "@types/react": "npm:^18.3.8" + "@types/node": "npm:^20.16.8" + "@types/react": "npm:^18.3.9" "@types/react-dom": "npm:^18.3.0" - "@typescript-eslint/eslint-plugin": "npm:^8.6.0" - "@typescript-eslint/parser": "npm:^8.6.0" + "@typescript-eslint/eslint-plugin": "npm:^8.7.0" + "@typescript-eslint/parser": "npm:^8.7.0" "@vitejs/plugin-react": "npm:^4.3.1" - eslint: "npm:^9.11.0" + eslint: "npm:^9.11.1" eslint-plugin-react: "npm:^7.36.1" globals: "npm:^15.9.0" - lucide-react: "npm:^0.445.0" + lucide-react: "npm:^0.446.0" prettier: "npm:^3.3.3" react: "npm:^18.3.1" react-dom: "npm:^18.3.1" typescript: "npm:^5.6.2" - typescript-eslint: "npm:^8.6.0" - vite: "npm:^5.4.7" + typescript-eslint: "npm:^8.7.0" + vite: "npm:^5.4.8" vite-plugin-mkcert: "npm:^1.17.6" languageName: unknown linkType: soft @@ -3519,12 +3536,12 @@ __metadata: languageName: node linkType: hard -"lucide-react@npm:^0.445.0": - version: 0.445.0 - resolution: "lucide-react@npm:0.445.0" +"lucide-react@npm:^0.446.0": + version: 0.446.0 + resolution: "lucide-react@npm:0.446.0" peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc - checksum: 10c0/4cf20d21c139d524a7e93c67679ac0e9e45573a77a3e1f074324058bee677ebf316c1406ecb2311b5bed96e617873150c09a223f27321e69755bd9b56d7b3b43 + checksum: 10c0/40bc6613b20760451a83508cf164c48488f79acdfb7cac47b71a24d07795ce53c9ab3891f250db3ce40560f9070825b205640ea7ea0cc5098018d183cfcf77a2 languageName: node linkType: hard @@ -3562,7 +3579,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:4.0.8": +"micromatch@npm:^4.0.4": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -4218,26 +4235,26 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.20.0": - version: 4.21.0 - resolution: "rollup@npm:4.21.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.21.0" - "@rollup/rollup-android-arm64": "npm:4.21.0" - "@rollup/rollup-darwin-arm64": "npm:4.21.0" - "@rollup/rollup-darwin-x64": "npm:4.21.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.21.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.21.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.21.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.21.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.21.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.21.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.21.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.21.0" - "@rollup/rollup-linux-x64-musl": "npm:4.21.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.21.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.21.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.21.0" +"rollup@npm:4.22.4": + version: 4.22.4 + resolution: "rollup@npm:4.22.4" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.22.4" + "@rollup/rollup-android-arm64": "npm:4.22.4" + "@rollup/rollup-darwin-arm64": "npm:4.22.4" + "@rollup/rollup-darwin-x64": "npm:4.22.4" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.22.4" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.22.4" + "@rollup/rollup-linux-arm64-gnu": "npm:4.22.4" + "@rollup/rollup-linux-arm64-musl": "npm:4.22.4" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.22.4" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.22.4" + "@rollup/rollup-linux-s390x-gnu": "npm:4.22.4" + "@rollup/rollup-linux-x64-gnu": "npm:4.22.4" + "@rollup/rollup-linux-x64-musl": "npm:4.22.4" + "@rollup/rollup-win32-arm64-msvc": "npm:4.22.4" + "@rollup/rollup-win32-ia32-msvc": "npm:4.22.4" + "@rollup/rollup-win32-x64-msvc": "npm:4.22.4" "@types/estree": "npm:1.0.5" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -4277,7 +4294,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/984beb858da245c5e3a9027d6d87e67ad6443f1b46eab07685b861d9e49da5856693265c62a6f8262c36d11c9092713a96a9124f43e6de6698eb84d77118496a + checksum: 10c0/4c96b6e2e0c5dbe73b4ba899cea894a05115ab8c65ccff631fbbb944e2b3a9f2eb3b99c2dce3dd91b179647df1892ffc44ecee29381ccf155ba8000b22712a32 languageName: node linkType: hard @@ -4765,17 +4782,17 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:^8.6.0": - version: 8.6.0 - resolution: "typescript-eslint@npm:8.6.0" +"typescript-eslint@npm:^8.7.0": + version: 8.7.0 + resolution: "typescript-eslint@npm:8.7.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.6.0" - "@typescript-eslint/parser": "npm:8.6.0" - "@typescript-eslint/utils": "npm:8.6.0" + "@typescript-eslint/eslint-plugin": "npm:8.7.0" + "@typescript-eslint/parser": "npm:8.7.0" + "@typescript-eslint/utils": "npm:8.7.0" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/d009170af1cffece3a63784c3f6d6f5074fd42d198540f3140dd0fed4f37b1888d59abb5992624099834cae2ea4863b6c526b5f11ecbfd105f41a87e300305db + checksum: 10c0/c0c3f909227c664f193d11a912851d6144a7cfcc0ac5e57f695c3e50679ef02bb491cc330ad9787e00170ce3be3a3b8c80bb81d5e20a40c1b3ee713ec3b0955a languageName: node linkType: hard @@ -4791,11 +4808,11 @@ __metadata: "typescript@patch:typescript@npm%3A^5.6.2#optional!builtin": version: 5.6.2 - resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=5adc0c" + resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/e6c1662e4852e22fe4bbdca471dca3e3edc74f6f1df043135c44a18a7902037023ccb0abdfb754595ca9028df8920f2f8492c00fc3cbb4309079aae8b7de71cd + checksum: 10c0/94eb47e130d3edd964b76da85975601dcb3604b0c848a36f63ac448d0104e93819d94c8bdf6b07c00120f2ce9c05256b8b6092d23cf5cf1c6fa911159e4d572f languageName: node linkType: hard @@ -4918,9 +4935,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.4.7": - version: 5.4.7 - resolution: "vite@npm:5.4.7" +"vite@npm:^5.4.8": + version: 5.4.8 + resolution: "vite@npm:5.4.8" dependencies: esbuild: "npm:^0.21.3" fsevents: "npm:~2.3.3" @@ -4957,7 +4974,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/0ca7ca60f71c61f3855bbabf7e33909bec32933b35914d4d281813c728183e78e7ce5be05735a7671df3a994613d3881f520a32a80715faa92effb28deee9320 + checksum: 10c0/af70af6d6316a3af71f44ebe3ab343bd66450d4157af73af3b32239e1b6ec43ff6f651d7cc4193b21ed3bff2e9356a3de9e96aee53857f39922e4a2d9fad75a1 languageName: node linkType: hard