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
-
-
-
-
+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