├── .bruno
└── logseq-todoist-plugin
│ ├── Test Synnc.bru
│ └── bruno.json
├── .github
├── FUNDING.yml
└── workflows
│ └── publish.yml
├── .gitignore
├── .husky
└── pre-commit
├── .prettierrc
├── LICENSE.md
├── README.md
├── eslint.config.mjs
├── icon.png
├── index.html
├── package.json
├── pnpm-lock.yaml
├── screenshots
├── enter-variables2.png
├── inline-filter.gif
├── plugin-settings.png
├── pull-tasks-todoist.gif
├── pull-tasks.png
├── sample-env.png
├── scheduled.png
├── send-task-todoist.gif
└── todoist-url.png
├── src
├── constants.ts
├── features
│ ├── helpers.ts
│ ├── retrieve
│ │ ├── index.ts
│ │ └── insert-tasks-into-graph.ts
│ └── send
│ │ ├── components
│ │ ├── SendTask.tsx
│ │ └── style.css
│ │ └── index.ts
├── handleListeners.ts
├── index.tsx
└── settings
│ └── index.ts
├── tsconfig.json
└── vite.config.ts
/.bruno/logseq-todoist-plugin/Test Synnc.bru:
--------------------------------------------------------------------------------
1 | meta {
2 | name: Test Synnc
3 | type: http
4 | seq: 2
5 | }
6 |
7 | get {
8 | url: https://api.todoist.com/sync/v9/sync
9 | body: none
10 | auth: none
11 | }
12 |
--------------------------------------------------------------------------------
/.bruno/logseq-todoist-plugin/bruno.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1",
3 | "name": "logseq-todoist-plugin",
4 | "type": "collection",
5 | "ignore": [
6 | "node_modules",
7 | ".git"
8 | ]
9 | }
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [hkgnp]
2 |
--------------------------------------------------------------------------------
/.github/workflows/publish.yml:
--------------------------------------------------------------------------------
1 |
2 | name: Build Logseq Plugin
3 |
4 | on:
5 | push:
6 | branches:
7 | - "main"
8 | paths-ignore:
9 | - 'README.md'
10 | workflow_dispatch:
11 |
12 | env:
13 | PLUGIN_NAME: ${{ github.event.repository.name }}
14 |
15 | jobs:
16 | build:
17 | runs-on: ubuntu-latest
18 |
19 | steps:
20 | - uses: actions/checkout@v3
21 |
22 | - name: Use Node.js
23 | uses: actions/setup-node@v3
24 | with:
25 | node-version: "20.x" # You might need to adjust this value to your own version
26 |
27 | - uses: pnpm/action-setup@v4
28 | with:
29 | version: 9.4.0
30 |
31 | - name: Build
32 | id: build
33 | run: |
34 | pnpm i && pnpm run build
35 | mkdir ${{ env.PLUGIN_NAME }}
36 | cp README.md package.json icon.png ${{ env.PLUGIN_NAME }}
37 | mv dist ${{ env.PLUGIN_NAME }}
38 | zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }}
39 | ls
40 | echo "tag_name=git tag --sort version:refname | tail -n 1" >> $GITHUB_OUTPUT
41 |
42 | - name: Release
43 | run: npx semantic-release
44 | env:
45 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Microbundle cache
58 | .rpt2_cache/
59 | .rts2_cache_cjs/
60 | .rts2_cache_es/
61 | .rts2_cache_umd/
62 |
63 | # Optional REPL history
64 | .node_repl_history
65 |
66 | # Output of 'npm pack'
67 | *.tgz
68 |
69 | # Yarn Integrity file
70 | .yarn-integrity
71 |
72 | # dotenv environment variables file
73 | .env
74 | .env.test
75 | .env.production
76 |
77 | # parcel-bundler cache (https://parceljs.org/)
78 | .cache
79 | .parcel-cache
80 |
81 | # Next.js build output
82 | .next
83 | out
84 |
85 | # Nuxt.js build / generate output
86 | .nuxt
87 | dist
88 |
89 | # Gatsby files
90 | .cache/
91 | # Comment in the public line in if your project uses Gatsby and not Next.js
92 | # https://nextjs.org/blog/next-9-1#public-directory-support
93 | # public
94 |
95 | # vuepress build output
96 | .vuepress/dist
97 |
98 | # Serverless directories
99 | .serverless/
100 |
101 | # FuseBox cache
102 | .fusebox/
103 |
104 | # DynamoDB Local files
105 | .dynamodb/
106 |
107 | # TernJS port file
108 | .tern-port
109 |
110 | # Stores VSCode versions used for testing VSCode extensions
111 | .vscode-test
112 |
113 | # yarn v2
114 | .yarn/cache
115 | .yarn/unplugged
116 | .yarn/build-state.yml
117 | .yarn/install-state.gz
118 | .pnp.*
119 | .DS_Store
120 | .idea
121 | .vscode
122 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | echo 'Running eslint'
2 | npx eslint . --fix
3 | echo 'Running tsc'
4 | tsc
5 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "trailingComma": "all",
3 | "tabWidth": 2,
4 | "semi": false,
5 | "singleQuote": true
6 | }
7 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 https://github.com/benjypng
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [:gift_heart: Sponsor this project on Github](https://github.com/sponsors/hkgnp) or [:coffee: Get me a coffee](https://www.buymeacoffee.com/hkgnp.dev) if you like this plugin!
2 |
3 | # Overview
4 |
5 | This simple plugin has 2 primary features:
6 |
7 | ## Retrieving tasks from Todoist.
8 |
9 | You can retrieve tasks in 3 ways:
10 |
11 | - Retrieving tasks from a default project (indicated in plugin settings);
12 | - Retrieving today's tasks, regardless of the project; and
13 | - Retrieving tasks based on a custom filter. Key in the desired filter in any block, and type `/Todoist: Retrieve Custom Filter`
14 |
15 | ## Sending tasks to Todoist
16 |
17 | You can send tasks in 2 ways:
18 |
19 | - If you set a default project to send tasks to, just trigger `/Todoist: Send Task` on the block containing the task.
20 | - If no default project is indicated, there will be a popup to specify the necessary parameters.
21 | - You can also choose `/Todoist: Send Task (manual)` to trigger the popup.
22 |
23 | ## Preferences
24 |
25 | The plugin settings page contains other preferences to customise how you want tasks to be retrieved or sent to Todoist.
26 |
27 | # Hiding block properties
28 |
29 | The plugin automatically creates the following block properties: `todoistid`, `comments`, `atttachments`. If you wish to hide them, you can find the below flag in `config.edn` and make the changes:
30 |
31 | ```
32 | ;; hide specific properties for blocks
33 | ;; E.g. :block-hidden-properties #{:created-at :updated-at}
34 | :block-hidden-properties #{:todoistid :comments :attachments}
35 | ```
36 |
37 | # Installation
38 |
39 | 1. Go to https://developer.todoist.com/appconsole.html and create an App. You will need to create an App (give it any name you like), and you will be able to obtain a **test token**. Note down the test token as this is the API Token that you will need in Step 3.
40 |
41 | 2. Head on to the Marketplace and install the logseq-todoist-plugin.
42 |
43 | 3. After it is installed, click on the plugin icon and indicate your preferences in the settings. Key in your API token that you obtained in Step 1 as well.
44 |
45 | 
46 |
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import eslint from '@eslint/js'
2 | import prettierConfig from 'eslint-config-prettier'
3 | import simpleImportSort from 'eslint-plugin-simple-import-sort'
4 | import tseslint from 'typescript-eslint'
5 |
6 | export default tseslint.config(
7 | eslint.configs.recommended,
8 | ...tseslint.configs.stylistic,
9 | ...tseslint.configs.recommended,
10 | prettierConfig,
11 | {
12 | ignores: ['**/dist/'],
13 | },
14 | {
15 | plugins: {
16 | 'simple-import-sort': simpleImportSort,
17 | },
18 | rules: {
19 | 'simple-import-sort/imports': 'error',
20 | 'simple-import-sort/exports': 'error',
21 | '@typescript-eslint/no-explicit-any': 'off',
22 | '@typescript-eslint/no-unused-vars': [
23 | 'error',
24 | { varsIgnorePattern: '^_' },
25 | ],
26 | },
27 | },
28 | )
29 |
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/icon.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | logseq-plugin
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "logseq-todoist-plugin",
3 | "author": "benjypng",
4 | "description": "Send and retrieve tasks from Todoist.",
5 | "license": "MIT",
6 | "logseq": {
7 | "id": "logseq-todoist-plugin",
8 | "title": "logseq-todoist-plugin",
9 | "icon": "./icon.png",
10 | "main": "dist/index.html"
11 | },
12 | "scripts": {
13 | "dev": "npx vite",
14 | "build": "npx eslint . --fix && npx tsc && npx vite build",
15 | "preview": "npx vite preview",
16 | "prepare": "husky"
17 | },
18 | "release": {
19 | "branches": [
20 | "main"
21 | ],
22 | "plugins": [
23 | [
24 | "@semantic-release/github",
25 | {
26 | "assets": [
27 | "logseq-todoist-plugin.zip"
28 | ]
29 | }
30 | ]
31 | ]
32 | },
33 | "dependencies": {
34 | "@doist/todoist-api-typescript": "^3.0.3",
35 | "@logseq/libs": "^0.0.17",
36 | "@mantine/core": "^7.12.2",
37 | "@mantine/hooks": "^7.12.2",
38 | "logseq-dateutils": "^2.1.2",
39 | "react": "^18.3.1",
40 | "react-dom": "^18.3.1",
41 | "react-hook-form": "^7.53.0"
42 | },
43 | "devDependencies": {
44 | "@eslint/js": "^9.9.1",
45 | "@types/eslint": "^9.6.1",
46 | "@types/eslint-config-prettier": "^6.11.3",
47 | "@types/eslint__js": "^8.42.3",
48 | "@types/node": "^22.5.4",
49 | "@types/react": "^18.3.5",
50 | "@types/react-dom": "^18.3.0",
51 | "@typescript-eslint/eslint-plugin": "^8.4.0",
52 | "@typescript-eslint/parser": "^8.4.0",
53 | "eslint": "^9.9.1",
54 | "eslint-config-prettier": "^9.1.0",
55 | "eslint-plugin-prettier": "^5.2.1",
56 | "eslint-plugin-simple-import-sort": "^12.1.1",
57 | "husky": "^9.1.5",
58 | "postcss": "^8.4.45",
59 | "postcss-preset-mantine": "^1.17.0",
60 | "postcss-simple-vars": "^7.0.1",
61 | "prettier": "^3.3.3",
62 | "typescript": "^5.5.4",
63 | "typescript-eslint": "^8.4.0",
64 | "vite": "^5.4.3",
65 | "vite-plugin-logseq": "^1.1.2",
66 | "vite-tsconfig-paths": "^5.0.1"
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@doist/todoist-api-typescript':
12 | specifier: ^3.0.3
13 | version: 3.0.3(type-fest@4.26.0)
14 | '@logseq/libs':
15 | specifier: ^0.0.17
16 | version: 0.0.17
17 | '@mantine/core':
18 | specifier: ^7.12.2
19 | version: 7.12.2(@mantine/hooks@7.12.2(react@18.3.1))(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
20 | '@mantine/hooks':
21 | specifier: ^7.12.2
22 | version: 7.12.2(react@18.3.1)
23 | logseq-dateutils:
24 | specifier: ^2.1.2
25 | version: 2.1.2
26 | react:
27 | specifier: ^18.3.1
28 | version: 18.3.1
29 | react-dom:
30 | specifier: ^18.3.1
31 | version: 18.3.1(react@18.3.1)
32 | react-hook-form:
33 | specifier: ^7.53.0
34 | version: 7.53.0(react@18.3.1)
35 | devDependencies:
36 | '@eslint/js':
37 | specifier: ^9.9.1
38 | version: 9.9.1
39 | '@types/eslint':
40 | specifier: ^9.6.1
41 | version: 9.6.1
42 | '@types/eslint-config-prettier':
43 | specifier: ^6.11.3
44 | version: 6.11.3
45 | '@types/eslint__js':
46 | specifier: ^8.42.3
47 | version: 8.42.3
48 | '@types/node':
49 | specifier: ^22.5.4
50 | version: 22.5.4
51 | '@types/react':
52 | specifier: ^18.3.5
53 | version: 18.3.5
54 | '@types/react-dom':
55 | specifier: ^18.3.0
56 | version: 18.3.0
57 | '@typescript-eslint/eslint-plugin':
58 | specifier: ^8.4.0
59 | version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
60 | '@typescript-eslint/parser':
61 | specifier: ^8.4.0
62 | version: 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
63 | eslint:
64 | specifier: ^9.9.1
65 | version: 9.9.1(jiti@1.21.6)
66 | eslint-config-prettier:
67 | specifier: ^9.1.0
68 | version: 9.1.0(eslint@9.9.1(jiti@1.21.6))
69 | eslint-plugin-prettier:
70 | specifier: ^5.2.1
71 | version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(prettier@3.3.3)
72 | eslint-plugin-simple-import-sort:
73 | specifier: ^12.1.1
74 | version: 12.1.1(eslint@9.9.1(jiti@1.21.6))
75 | husky:
76 | specifier: ^9.1.5
77 | version: 9.1.5
78 | postcss:
79 | specifier: ^8.4.45
80 | version: 8.4.45
81 | postcss-preset-mantine:
82 | specifier: ^1.17.0
83 | version: 1.17.0(postcss@8.4.45)
84 | postcss-simple-vars:
85 | specifier: ^7.0.1
86 | version: 7.0.1(postcss@8.4.45)
87 | prettier:
88 | specifier: ^3.3.3
89 | version: 3.3.3
90 | typescript:
91 | specifier: ^5.5.4
92 | version: 5.5.4
93 | typescript-eslint:
94 | specifier: ^8.4.0
95 | version: 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
96 | vite:
97 | specifier: ^5.4.3
98 | version: 5.4.3(@types/node@22.5.4)(sugarss@4.0.1(postcss@8.4.45))
99 | vite-plugin-logseq:
100 | specifier: ^1.1.2
101 | version: 1.1.2
102 | vite-tsconfig-paths:
103 | specifier: ^5.0.1
104 | version: 5.0.1(typescript@5.5.4)(vite@5.4.3(@types/node@22.5.4)(sugarss@4.0.1(postcss@8.4.45)))
105 |
106 | packages:
107 |
108 | '@babel/runtime@7.25.6':
109 | resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==}
110 | engines: {node: '>=6.9.0'}
111 |
112 | '@doist/todoist-api-typescript@3.0.3':
113 | resolution: {integrity: sha512-rDYE6X/xSF+b+fvRYoVyBa7EaUOSIKhTrn7/XxV3Fm2rQrK61SoImor5pyWZlMiABH44WMf+FBIh+IjGAGaX3Q==}
114 | peerDependencies:
115 | type-fest: ^4.12.0
116 |
117 | '@esbuild/aix-ppc64@0.21.5':
118 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
119 | engines: {node: '>=12'}
120 | cpu: [ppc64]
121 | os: [aix]
122 |
123 | '@esbuild/android-arm64@0.21.5':
124 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
125 | engines: {node: '>=12'}
126 | cpu: [arm64]
127 | os: [android]
128 |
129 | '@esbuild/android-arm@0.21.5':
130 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
131 | engines: {node: '>=12'}
132 | cpu: [arm]
133 | os: [android]
134 |
135 | '@esbuild/android-x64@0.21.5':
136 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
137 | engines: {node: '>=12'}
138 | cpu: [x64]
139 | os: [android]
140 |
141 | '@esbuild/darwin-arm64@0.21.5':
142 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
143 | engines: {node: '>=12'}
144 | cpu: [arm64]
145 | os: [darwin]
146 |
147 | '@esbuild/darwin-x64@0.21.5':
148 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
149 | engines: {node: '>=12'}
150 | cpu: [x64]
151 | os: [darwin]
152 |
153 | '@esbuild/freebsd-arm64@0.21.5':
154 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
155 | engines: {node: '>=12'}
156 | cpu: [arm64]
157 | os: [freebsd]
158 |
159 | '@esbuild/freebsd-x64@0.21.5':
160 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
161 | engines: {node: '>=12'}
162 | cpu: [x64]
163 | os: [freebsd]
164 |
165 | '@esbuild/linux-arm64@0.21.5':
166 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
167 | engines: {node: '>=12'}
168 | cpu: [arm64]
169 | os: [linux]
170 |
171 | '@esbuild/linux-arm@0.21.5':
172 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
173 | engines: {node: '>=12'}
174 | cpu: [arm]
175 | os: [linux]
176 |
177 | '@esbuild/linux-ia32@0.21.5':
178 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
179 | engines: {node: '>=12'}
180 | cpu: [ia32]
181 | os: [linux]
182 |
183 | '@esbuild/linux-loong64@0.21.5':
184 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
185 | engines: {node: '>=12'}
186 | cpu: [loong64]
187 | os: [linux]
188 |
189 | '@esbuild/linux-mips64el@0.21.5':
190 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
191 | engines: {node: '>=12'}
192 | cpu: [mips64el]
193 | os: [linux]
194 |
195 | '@esbuild/linux-ppc64@0.21.5':
196 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
197 | engines: {node: '>=12'}
198 | cpu: [ppc64]
199 | os: [linux]
200 |
201 | '@esbuild/linux-riscv64@0.21.5':
202 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
203 | engines: {node: '>=12'}
204 | cpu: [riscv64]
205 | os: [linux]
206 |
207 | '@esbuild/linux-s390x@0.21.5':
208 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
209 | engines: {node: '>=12'}
210 | cpu: [s390x]
211 | os: [linux]
212 |
213 | '@esbuild/linux-x64@0.21.5':
214 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
215 | engines: {node: '>=12'}
216 | cpu: [x64]
217 | os: [linux]
218 |
219 | '@esbuild/netbsd-x64@0.21.5':
220 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
221 | engines: {node: '>=12'}
222 | cpu: [x64]
223 | os: [netbsd]
224 |
225 | '@esbuild/openbsd-x64@0.21.5':
226 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
227 | engines: {node: '>=12'}
228 | cpu: [x64]
229 | os: [openbsd]
230 |
231 | '@esbuild/sunos-x64@0.21.5':
232 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
233 | engines: {node: '>=12'}
234 | cpu: [x64]
235 | os: [sunos]
236 |
237 | '@esbuild/win32-arm64@0.21.5':
238 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
239 | engines: {node: '>=12'}
240 | cpu: [arm64]
241 | os: [win32]
242 |
243 | '@esbuild/win32-ia32@0.21.5':
244 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
245 | engines: {node: '>=12'}
246 | cpu: [ia32]
247 | os: [win32]
248 |
249 | '@esbuild/win32-x64@0.21.5':
250 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
251 | engines: {node: '>=12'}
252 | cpu: [x64]
253 | os: [win32]
254 |
255 | '@eslint-community/eslint-utils@4.4.0':
256 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
257 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
258 | peerDependencies:
259 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
260 |
261 | '@eslint-community/regexpp@4.11.0':
262 | resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
263 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
264 |
265 | '@eslint/config-array@0.18.0':
266 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
267 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
268 |
269 | '@eslint/eslintrc@3.1.0':
270 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
271 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
272 |
273 | '@eslint/js@9.9.1':
274 | resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==}
275 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
276 |
277 | '@eslint/object-schema@2.1.4':
278 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
279 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
280 |
281 | '@floating-ui/core@1.6.7':
282 | resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
283 |
284 | '@floating-ui/dom@1.6.10':
285 | resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==}
286 |
287 | '@floating-ui/react-dom@2.1.1':
288 | resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
289 | peerDependencies:
290 | react: '>=16.8.0'
291 | react-dom: '>=16.8.0'
292 |
293 | '@floating-ui/react@0.26.23':
294 | resolution: {integrity: sha512-9u3i62fV0CFF3nIegiWiRDwOs7OW/KhSUJDNx2MkQM3LbE5zQOY01sL3nelcVBXvX7Ovvo3A49I8ql+20Wg/Hw==}
295 | peerDependencies:
296 | react: '>=16.8.0'
297 | react-dom: '>=16.8.0'
298 |
299 | '@floating-ui/utils@0.2.7':
300 | resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==}
301 |
302 | '@humanwhocodes/module-importer@1.0.1':
303 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
304 | engines: {node: '>=12.22'}
305 |
306 | '@humanwhocodes/retry@0.3.0':
307 | resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
308 | engines: {node: '>=18.18'}
309 |
310 | '@logseq/libs@0.0.17':
311 | resolution: {integrity: sha512-SkzzAaocmrgeHYrCOaRyEqzPOxw3d0qVEZSrt9qVvXE4tuEgbvEHR8tzI1N5RjgAv+PDWuGPiP7/mhcXHpINEw==}
312 |
313 | '@mantine/core@7.12.2':
314 | resolution: {integrity: sha512-FrMHOKq4s3CiPIxqZ9xnVX7H4PEGNmbtHMvWO/0YlfPgoV0Er/N/DNJOFW1ys4WSnidPTayYeB41riyxxGOpRQ==}
315 | peerDependencies:
316 | '@mantine/hooks': 7.12.2
317 | react: ^18.2.0
318 | react-dom: ^18.2.0
319 |
320 | '@mantine/hooks@7.12.2':
321 | resolution: {integrity: sha512-dVMw8jpM0hAzc8e7/GNvzkk9N0RN/m+PKycETB3H6lJGuXJJSRR4wzzgQKpEhHwPccktDpvb4rkukKDq2jA8Fg==}
322 | peerDependencies:
323 | react: ^18.2.0
324 |
325 | '@nodelib/fs.scandir@2.1.5':
326 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
327 | engines: {node: '>= 8'}
328 |
329 | '@nodelib/fs.stat@2.0.5':
330 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
331 | engines: {node: '>= 8'}
332 |
333 | '@nodelib/fs.walk@1.2.8':
334 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
335 | engines: {node: '>= 8'}
336 |
337 | '@pkgr/core@0.1.1':
338 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
339 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
340 |
341 | '@rollup/rollup-android-arm-eabi@4.21.2':
342 | resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==}
343 | cpu: [arm]
344 | os: [android]
345 |
346 | '@rollup/rollup-android-arm64@4.21.2':
347 | resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==}
348 | cpu: [arm64]
349 | os: [android]
350 |
351 | '@rollup/rollup-darwin-arm64@4.21.2':
352 | resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==}
353 | cpu: [arm64]
354 | os: [darwin]
355 |
356 | '@rollup/rollup-darwin-x64@4.21.2':
357 | resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==}
358 | cpu: [x64]
359 | os: [darwin]
360 |
361 | '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
362 | resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==}
363 | cpu: [arm]
364 | os: [linux]
365 |
366 | '@rollup/rollup-linux-arm-musleabihf@4.21.2':
367 | resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==}
368 | cpu: [arm]
369 | os: [linux]
370 |
371 | '@rollup/rollup-linux-arm64-gnu@4.21.2':
372 | resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==}
373 | cpu: [arm64]
374 | os: [linux]
375 |
376 | '@rollup/rollup-linux-arm64-musl@4.21.2':
377 | resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==}
378 | cpu: [arm64]
379 | os: [linux]
380 |
381 | '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
382 | resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==}
383 | cpu: [ppc64]
384 | os: [linux]
385 |
386 | '@rollup/rollup-linux-riscv64-gnu@4.21.2':
387 | resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==}
388 | cpu: [riscv64]
389 | os: [linux]
390 |
391 | '@rollup/rollup-linux-s390x-gnu@4.21.2':
392 | resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==}
393 | cpu: [s390x]
394 | os: [linux]
395 |
396 | '@rollup/rollup-linux-x64-gnu@4.21.2':
397 | resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==}
398 | cpu: [x64]
399 | os: [linux]
400 |
401 | '@rollup/rollup-linux-x64-musl@4.21.2':
402 | resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==}
403 | cpu: [x64]
404 | os: [linux]
405 |
406 | '@rollup/rollup-win32-arm64-msvc@4.21.2':
407 | resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==}
408 | cpu: [arm64]
409 | os: [win32]
410 |
411 | '@rollup/rollup-win32-ia32-msvc@4.21.2':
412 | resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==}
413 | cpu: [ia32]
414 | os: [win32]
415 |
416 | '@rollup/rollup-win32-x64-msvc@4.21.2':
417 | resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==}
418 | cpu: [x64]
419 | os: [win32]
420 |
421 | '@types/eslint-config-prettier@6.11.3':
422 | resolution: {integrity: sha512-3wXCiM8croUnhg9LdtZUJQwNcQYGWxxdOWDjPe1ykCqJFPVpzAKfs/2dgSoCtAvdPeaponcWPI7mPcGGp9dkKQ==}
423 |
424 | '@types/eslint@9.6.1':
425 | resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
426 |
427 | '@types/eslint__js@8.42.3':
428 | resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==}
429 |
430 | '@types/estree@1.0.5':
431 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
432 |
433 | '@types/json-schema@7.0.15':
434 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
435 |
436 | '@types/node@22.5.4':
437 | resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==}
438 |
439 | '@types/prop-types@15.7.12':
440 | resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
441 |
442 | '@types/react-dom@18.3.0':
443 | resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
444 |
445 | '@types/react@18.3.5':
446 | resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==}
447 |
448 | '@typescript-eslint/eslint-plugin@8.4.0':
449 | resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==}
450 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
451 | peerDependencies:
452 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
453 | eslint: ^8.57.0 || ^9.0.0
454 | typescript: '*'
455 | peerDependenciesMeta:
456 | typescript:
457 | optional: true
458 |
459 | '@typescript-eslint/parser@8.4.0':
460 | resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==}
461 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
462 | peerDependencies:
463 | eslint: ^8.57.0 || ^9.0.0
464 | typescript: '*'
465 | peerDependenciesMeta:
466 | typescript:
467 | optional: true
468 |
469 | '@typescript-eslint/scope-manager@8.4.0':
470 | resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==}
471 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
472 |
473 | '@typescript-eslint/type-utils@8.4.0':
474 | resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==}
475 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
476 | peerDependencies:
477 | typescript: '*'
478 | peerDependenciesMeta:
479 | typescript:
480 | optional: true
481 |
482 | '@typescript-eslint/types@8.4.0':
483 | resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==}
484 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
485 |
486 | '@typescript-eslint/typescript-estree@8.4.0':
487 | resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==}
488 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
489 | peerDependencies:
490 | typescript: '*'
491 | peerDependenciesMeta:
492 | typescript:
493 | optional: true
494 |
495 | '@typescript-eslint/utils@8.4.0':
496 | resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==}
497 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
498 | peerDependencies:
499 | eslint: ^8.57.0 || ^9.0.0
500 |
501 | '@typescript-eslint/visitor-keys@8.4.0':
502 | resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==}
503 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
504 |
505 | acorn-jsx@5.3.2:
506 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
507 | peerDependencies:
508 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
509 |
510 | acorn@8.12.1:
511 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
512 | engines: {node: '>=0.4.0'}
513 | hasBin: true
514 |
515 | ajv@6.12.6:
516 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
517 |
518 | ansi-regex@5.0.1:
519 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
520 | engines: {node: '>=8'}
521 |
522 | ansi-styles@4.3.0:
523 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
524 | engines: {node: '>=8'}
525 |
526 | argparse@2.0.1:
527 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
528 |
529 | asynckit@0.4.0:
530 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
531 |
532 | axios-case-converter@1.1.1:
533 | resolution: {integrity: sha512-v13pB7cYryh/7f4TKxN/gniD2hwqPQcjip29Hk3J9iwsnA37Rht2Hkn5VyrxynxlKdMNSIfGk6I9D6G28oTRyQ==}
534 | peerDependencies:
535 | axios: '>=1.0.0 <2.0.0'
536 |
537 | axios-retry@3.9.1:
538 | resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==}
539 |
540 | axios@1.7.7:
541 | resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==}
542 |
543 | balanced-match@1.0.2:
544 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
545 |
546 | brace-expansion@1.1.11:
547 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
548 |
549 | brace-expansion@2.0.1:
550 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
551 |
552 | braces@3.0.3:
553 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
554 | engines: {node: '>=8'}
555 |
556 | callsites@3.1.0:
557 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
558 | engines: {node: '>=6'}
559 |
560 | camel-case@4.1.2:
561 | resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
562 |
563 | camelcase-css@2.0.1:
564 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
565 | engines: {node: '>= 6'}
566 |
567 | capital-case@1.0.4:
568 | resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
569 |
570 | chalk@4.1.2:
571 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
572 | engines: {node: '>=10'}
573 |
574 | clsx@2.1.1:
575 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
576 | engines: {node: '>=6'}
577 |
578 | color-convert@2.0.1:
579 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
580 | engines: {node: '>=7.0.0'}
581 |
582 | color-name@1.1.4:
583 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
584 |
585 | combined-stream@1.0.8:
586 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
587 | engines: {node: '>= 0.8'}
588 |
589 | concat-map@0.0.1:
590 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
591 |
592 | cross-spawn@7.0.3:
593 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
594 | engines: {node: '>= 8'}
595 |
596 | cssesc@3.0.0:
597 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
598 | engines: {node: '>=4'}
599 | hasBin: true
600 |
601 | csstype@3.1.0:
602 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==}
603 |
604 | csstype@3.1.3:
605 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
606 |
607 | date-fns@2.30.0:
608 | resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
609 | engines: {node: '>=0.11'}
610 |
611 | debug@4.3.4:
612 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
613 | engines: {node: '>=6.0'}
614 | peerDependencies:
615 | supports-color: '*'
616 | peerDependenciesMeta:
617 | supports-color:
618 | optional: true
619 |
620 | debug@4.3.7:
621 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
622 | engines: {node: '>=6.0'}
623 | peerDependencies:
624 | supports-color: '*'
625 | peerDependenciesMeta:
626 | supports-color:
627 | optional: true
628 |
629 | deep-is@0.1.4:
630 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
631 |
632 | deepmerge@4.3.1:
633 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
634 | engines: {node: '>=0.10.0'}
635 |
636 | delayed-stream@1.0.0:
637 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
638 | engines: {node: '>=0.4.0'}
639 |
640 | detect-node-es@1.1.0:
641 | resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
642 |
643 | dompurify@2.3.8:
644 | resolution: {integrity: sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw==}
645 |
646 | dot-case@3.0.4:
647 | resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
648 |
649 | esbuild@0.21.5:
650 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
651 | engines: {node: '>=12'}
652 | hasBin: true
653 |
654 | escape-string-regexp@4.0.0:
655 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
656 | engines: {node: '>=10'}
657 |
658 | eslint-config-prettier@9.1.0:
659 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
660 | hasBin: true
661 | peerDependencies:
662 | eslint: '>=7.0.0'
663 |
664 | eslint-plugin-prettier@5.2.1:
665 | resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==}
666 | engines: {node: ^14.18.0 || >=16.0.0}
667 | peerDependencies:
668 | '@types/eslint': '>=8.0.0'
669 | eslint: '>=8.0.0'
670 | eslint-config-prettier: '*'
671 | prettier: '>=3.0.0'
672 | peerDependenciesMeta:
673 | '@types/eslint':
674 | optional: true
675 | eslint-config-prettier:
676 | optional: true
677 |
678 | eslint-plugin-simple-import-sort@12.1.1:
679 | resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==}
680 | peerDependencies:
681 | eslint: '>=5.0.0'
682 |
683 | eslint-scope@8.0.2:
684 | resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==}
685 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
686 |
687 | eslint-visitor-keys@3.4.3:
688 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
689 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
690 |
691 | eslint-visitor-keys@4.0.0:
692 | resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
693 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
694 |
695 | eslint@9.9.1:
696 | resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==}
697 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
698 | hasBin: true
699 | peerDependencies:
700 | jiti: '*'
701 | peerDependenciesMeta:
702 | jiti:
703 | optional: true
704 |
705 | espree@10.1.0:
706 | resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
707 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
708 |
709 | esquery@1.6.0:
710 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
711 | engines: {node: '>=0.10'}
712 |
713 | esrecurse@4.3.0:
714 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
715 | engines: {node: '>=4.0'}
716 |
717 | estraverse@5.3.0:
718 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
719 | engines: {node: '>=4.0'}
720 |
721 | esutils@2.0.3:
722 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
723 | engines: {node: '>=0.10.0'}
724 |
725 | eventemitter3@4.0.7:
726 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
727 |
728 | fast-deep-equal@3.1.3:
729 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
730 |
731 | fast-diff@1.3.0:
732 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
733 |
734 | fast-glob@3.3.2:
735 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
736 | engines: {node: '>=8.6.0'}
737 |
738 | fast-json-stable-stringify@2.1.0:
739 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
740 |
741 | fast-levenshtein@2.0.6:
742 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
743 |
744 | fastq@1.17.1:
745 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
746 |
747 | file-entry-cache@8.0.0:
748 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
749 | engines: {node: '>=16.0.0'}
750 |
751 | fill-range@7.1.1:
752 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
753 | engines: {node: '>=8'}
754 |
755 | find-up@5.0.0:
756 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
757 | engines: {node: '>=10'}
758 |
759 | flat-cache@4.0.1:
760 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
761 | engines: {node: '>=16'}
762 |
763 | flatted@3.3.1:
764 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
765 |
766 | follow-redirects@1.15.8:
767 | resolution: {integrity: sha512-xgrmBhBToVKay1q2Tao5LI26B83UhrB/vM1avwVSDzt8rx3rO6AizBAaF46EgksTVr+rFTQaqZZ9MVBfUe4nig==}
768 | engines: {node: '>=4.0'}
769 | peerDependencies:
770 | debug: '*'
771 | peerDependenciesMeta:
772 | debug:
773 | optional: true
774 |
775 | form-data@4.0.0:
776 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
777 | engines: {node: '>= 6'}
778 |
779 | fsevents@2.3.3:
780 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
781 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
782 | os: [darwin]
783 |
784 | get-nonce@1.0.1:
785 | resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
786 | engines: {node: '>=6'}
787 |
788 | glob-parent@5.1.2:
789 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
790 | engines: {node: '>= 6'}
791 |
792 | glob-parent@6.0.2:
793 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
794 | engines: {node: '>=10.13.0'}
795 |
796 | globals@14.0.0:
797 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
798 | engines: {node: '>=18'}
799 |
800 | globrex@0.1.2:
801 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
802 |
803 | graphemer@1.4.0:
804 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
805 |
806 | has-flag@4.0.0:
807 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
808 | engines: {node: '>=8'}
809 |
810 | header-case@2.0.4:
811 | resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
812 |
813 | husky@9.1.5:
814 | resolution: {integrity: sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==}
815 | engines: {node: '>=18'}
816 | hasBin: true
817 |
818 | ignore@5.3.2:
819 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
820 | engines: {node: '>= 4'}
821 |
822 | import-fresh@3.3.0:
823 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
824 | engines: {node: '>=6'}
825 |
826 | imurmurhash@0.1.4:
827 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
828 | engines: {node: '>=0.8.19'}
829 |
830 | inherits@2.0.3:
831 | resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
832 |
833 | invariant@2.2.4:
834 | resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
835 |
836 | is-extglob@2.1.1:
837 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
838 | engines: {node: '>=0.10.0'}
839 |
840 | is-glob@4.0.3:
841 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
842 | engines: {node: '>=0.10.0'}
843 |
844 | is-number@7.0.0:
845 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
846 | engines: {node: '>=0.12.0'}
847 |
848 | is-path-inside@3.0.3:
849 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
850 | engines: {node: '>=8'}
851 |
852 | is-retry-allowed@2.2.0:
853 | resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==}
854 | engines: {node: '>=10'}
855 |
856 | isexe@2.0.0:
857 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
858 |
859 | jiti@1.21.6:
860 | resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
861 | hasBin: true
862 |
863 | js-tokens@4.0.0:
864 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
865 |
866 | js-yaml@4.1.0:
867 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
868 | hasBin: true
869 |
870 | json-buffer@3.0.1:
871 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
872 |
873 | json-schema-traverse@0.4.1:
874 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
875 |
876 | json-stable-stringify-without-jsonify@1.0.1:
877 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
878 |
879 | keyv@4.5.4:
880 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
881 |
882 | levn@0.4.1:
883 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
884 | engines: {node: '>= 0.8.0'}
885 |
886 | locate-path@6.0.0:
887 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
888 | engines: {node: '>=10'}
889 |
890 | lodash-es@4.17.21:
891 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
892 |
893 | lodash.merge@4.6.2:
894 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
895 |
896 | logseq-dateutils@2.1.2:
897 | resolution: {integrity: sha512-N4WD6VynVC+rMQr4+BSLu/bvLhYnLc9/DBjNASIZroC0Rf7Ymwxm/G84unVxVi6iR7Y21T/4UhJEEtzfIIOQaw==}
898 | engines: {node: '>=12'}
899 |
900 | loose-envify@1.4.0:
901 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
902 | hasBin: true
903 |
904 | lower-case@2.0.2:
905 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
906 |
907 | magic-string@0.26.7:
908 | resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
909 | engines: {node: '>=12'}
910 |
911 | merge2@1.4.1:
912 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
913 | engines: {node: '>= 8'}
914 |
915 | micromatch@4.0.8:
916 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
917 | engines: {node: '>=8.6'}
918 |
919 | mime-db@1.52.0:
920 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
921 | engines: {node: '>= 0.6'}
922 |
923 | mime-types@2.1.35:
924 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
925 | engines: {node: '>= 0.6'}
926 |
927 | minimatch@3.1.2:
928 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
929 |
930 | minimatch@9.0.5:
931 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
932 | engines: {node: '>=16 || 14 >=14.17'}
933 |
934 | ms@2.1.2:
935 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
936 |
937 | ms@2.1.3:
938 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
939 |
940 | nanoid@3.3.7:
941 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
942 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
943 | hasBin: true
944 |
945 | natural-compare@1.4.0:
946 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
947 |
948 | no-case@3.0.4:
949 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
950 |
951 | optionator@0.9.4:
952 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
953 | engines: {node: '>= 0.8.0'}
954 |
955 | p-limit@3.1.0:
956 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
957 | engines: {node: '>=10'}
958 |
959 | p-locate@5.0.0:
960 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
961 | engines: {node: '>=10'}
962 |
963 | parent-module@1.0.1:
964 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
965 | engines: {node: '>=6'}
966 |
967 | pascal-case@3.1.2:
968 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
969 |
970 | path-exists@4.0.0:
971 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
972 | engines: {node: '>=8'}
973 |
974 | path-key@3.1.1:
975 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
976 | engines: {node: '>=8'}
977 |
978 | path@0.12.7:
979 | resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==}
980 |
981 | picocolors@1.1.0:
982 | resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
983 |
984 | picomatch@2.3.1:
985 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
986 | engines: {node: '>=8.6'}
987 |
988 | postcss-js@4.0.1:
989 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
990 | engines: {node: ^12 || ^14 || >= 16}
991 | peerDependencies:
992 | postcss: ^8.4.21
993 |
994 | postcss-mixins@9.0.4:
995 | resolution: {integrity: sha512-XVq5jwQJDRu5M1XGkdpgASqLk37OqkH4JCFDXl/Dn7janOJjCTEKL+36cnRVy7bMtoBzALfO7bV7nTIsFnUWLA==}
996 | engines: {node: '>=14.0'}
997 | peerDependencies:
998 | postcss: ^8.2.14
999 |
1000 | postcss-nested@6.2.0:
1001 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
1002 | engines: {node: '>=12.0'}
1003 | peerDependencies:
1004 | postcss: ^8.2.14
1005 |
1006 | postcss-preset-mantine@1.17.0:
1007 | resolution: {integrity: sha512-ji1PMDBUf2Vsx/HE5faMSs1+ff6qE6YRulTr4Ja+6HD3gop8rSMTCYdpN7KrdsEg079kfBKkO/PaKhG9uR0zwQ==}
1008 | peerDependencies:
1009 | postcss: '>=8.0.0'
1010 |
1011 | postcss-selector-parser@6.1.2:
1012 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
1013 | engines: {node: '>=4'}
1014 |
1015 | postcss-simple-vars@7.0.1:
1016 | resolution: {integrity: sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==}
1017 | engines: {node: '>=14.0'}
1018 | peerDependencies:
1019 | postcss: ^8.2.1
1020 |
1021 | postcss@8.4.45:
1022 | resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==}
1023 | engines: {node: ^10 || ^12 || >=14}
1024 |
1025 | prelude-ls@1.2.1:
1026 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1027 | engines: {node: '>= 0.8.0'}
1028 |
1029 | prettier-linter-helpers@1.0.0:
1030 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
1031 | engines: {node: '>=6.0.0'}
1032 |
1033 | prettier@3.3.3:
1034 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
1035 | engines: {node: '>=14'}
1036 | hasBin: true
1037 |
1038 | process@0.11.10:
1039 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
1040 | engines: {node: '>= 0.6.0'}
1041 |
1042 | proxy-from-env@1.1.0:
1043 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
1044 |
1045 | punycode@2.3.1:
1046 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1047 | engines: {node: '>=6'}
1048 |
1049 | queue-microtask@1.2.3:
1050 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1051 |
1052 | react-dom@18.3.1:
1053 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
1054 | peerDependencies:
1055 | react: ^18.3.1
1056 |
1057 | react-hook-form@7.53.0:
1058 | resolution: {integrity: sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==}
1059 | engines: {node: '>=18.0.0'}
1060 | peerDependencies:
1061 | react: ^16.8.0 || ^17 || ^18 || ^19
1062 |
1063 | react-number-format@5.4.2:
1064 | resolution: {integrity: sha512-cg//jVdS49PYDgmcYoBnMMHl4XNTMuV723ZnHD2aXYtWWWqbVF3hjQ8iB+UZEuXapLbeA8P8H+1o6ZB1lcw3vg==}
1065 | peerDependencies:
1066 | react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
1067 | react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0
1068 |
1069 | react-remove-scroll-bar@2.3.6:
1070 | resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
1071 | engines: {node: '>=10'}
1072 | peerDependencies:
1073 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
1074 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1075 | peerDependenciesMeta:
1076 | '@types/react':
1077 | optional: true
1078 |
1079 | react-remove-scroll@2.6.0:
1080 | resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==}
1081 | engines: {node: '>=10'}
1082 | peerDependencies:
1083 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
1084 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1085 | peerDependenciesMeta:
1086 | '@types/react':
1087 | optional: true
1088 |
1089 | react-style-singleton@2.2.1:
1090 | resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
1091 | engines: {node: '>=10'}
1092 | peerDependencies:
1093 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
1094 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1095 | peerDependenciesMeta:
1096 | '@types/react':
1097 | optional: true
1098 |
1099 | react-textarea-autosize@8.5.3:
1100 | resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==}
1101 | engines: {node: '>=10'}
1102 | peerDependencies:
1103 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1104 |
1105 | react@18.3.1:
1106 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
1107 | engines: {node: '>=0.10.0'}
1108 |
1109 | regenerator-runtime@0.14.1:
1110 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1111 |
1112 | resolve-from@4.0.0:
1113 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1114 | engines: {node: '>=4'}
1115 |
1116 | reusify@1.0.4:
1117 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1118 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1119 |
1120 | rollup@4.21.2:
1121 | resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==}
1122 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1123 | hasBin: true
1124 |
1125 | run-parallel@1.2.0:
1126 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1127 |
1128 | runtypes@6.7.0:
1129 | resolution: {integrity: sha512-3TLdfFX8YHNFOhwHrSJza6uxVBmBrEjnNQlNXvXCdItS0Pdskfg5vVXUTWIN+Y23QR09jWpSl99UHkA83m4uWA==}
1130 |
1131 | scheduler@0.23.2:
1132 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
1133 |
1134 | semver@7.6.3:
1135 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
1136 | engines: {node: '>=10'}
1137 | hasBin: true
1138 |
1139 | shebang-command@2.0.0:
1140 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1141 | engines: {node: '>=8'}
1142 |
1143 | shebang-regex@3.0.0:
1144 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1145 | engines: {node: '>=8'}
1146 |
1147 | snake-case@3.0.4:
1148 | resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
1149 |
1150 | source-map-js@1.2.0:
1151 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
1152 | engines: {node: '>=0.10.0'}
1153 |
1154 | sourcemap-codec@1.4.8:
1155 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
1156 | deprecated: Please use @jridgewell/sourcemap-codec instead
1157 |
1158 | strip-ansi@6.0.1:
1159 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1160 | engines: {node: '>=8'}
1161 |
1162 | strip-json-comments@3.1.1:
1163 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1164 | engines: {node: '>=8'}
1165 |
1166 | sugarss@4.0.1:
1167 | resolution: {integrity: sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==}
1168 | engines: {node: '>=12.0'}
1169 | peerDependencies:
1170 | postcss: ^8.3.3
1171 |
1172 | supports-color@7.2.0:
1173 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1174 | engines: {node: '>=8'}
1175 |
1176 | synckit@0.9.1:
1177 | resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==}
1178 | engines: {node: ^14.18.0 || >=16.0.0}
1179 |
1180 | tabbable@6.2.0:
1181 | resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
1182 |
1183 | text-table@0.2.0:
1184 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
1185 |
1186 | to-regex-range@5.0.1:
1187 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1188 | engines: {node: '>=8.0'}
1189 |
1190 | ts-api-utils@1.3.0:
1191 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
1192 | engines: {node: '>=16'}
1193 | peerDependencies:
1194 | typescript: '>=4.2.0'
1195 |
1196 | ts-custom-error@3.3.1:
1197 | resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==}
1198 | engines: {node: '>=14.0.0'}
1199 |
1200 | tsconfck@3.1.3:
1201 | resolution: {integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==}
1202 | engines: {node: ^18 || >=20}
1203 | hasBin: true
1204 | peerDependencies:
1205 | typescript: ^5.0.0
1206 | peerDependenciesMeta:
1207 | typescript:
1208 | optional: true
1209 |
1210 | tslib@2.7.0:
1211 | resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
1212 |
1213 | type-check@0.4.0:
1214 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1215 | engines: {node: '>= 0.8.0'}
1216 |
1217 | type-fest@4.26.0:
1218 | resolution: {integrity: sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==}
1219 | engines: {node: '>=16'}
1220 |
1221 | typescript-eslint@8.4.0:
1222 | resolution: {integrity: sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==}
1223 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1224 | peerDependencies:
1225 | typescript: '*'
1226 | peerDependenciesMeta:
1227 | typescript:
1228 | optional: true
1229 |
1230 | typescript@5.5.4:
1231 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
1232 | engines: {node: '>=14.17'}
1233 | hasBin: true
1234 |
1235 | undici-types@6.19.8:
1236 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
1237 |
1238 | upper-case-first@2.0.2:
1239 | resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
1240 |
1241 | uri-js@4.4.1:
1242 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1243 |
1244 | use-callback-ref@1.3.2:
1245 | resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
1246 | engines: {node: '>=10'}
1247 | peerDependencies:
1248 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
1249 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1250 | peerDependenciesMeta:
1251 | '@types/react':
1252 | optional: true
1253 |
1254 | use-composed-ref@1.3.0:
1255 | resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==}
1256 | peerDependencies:
1257 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1258 |
1259 | use-isomorphic-layout-effect@1.1.2:
1260 | resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
1261 | peerDependencies:
1262 | '@types/react': '*'
1263 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1264 | peerDependenciesMeta:
1265 | '@types/react':
1266 | optional: true
1267 |
1268 | use-latest@1.2.1:
1269 | resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
1270 | peerDependencies:
1271 | '@types/react': '*'
1272 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1273 | peerDependenciesMeta:
1274 | '@types/react':
1275 | optional: true
1276 |
1277 | use-sidecar@1.1.2:
1278 | resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
1279 | engines: {node: '>=10'}
1280 | peerDependencies:
1281 | '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
1282 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1283 | peerDependenciesMeta:
1284 | '@types/react':
1285 | optional: true
1286 |
1287 | util-deprecate@1.0.2:
1288 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1289 |
1290 | util@0.10.4:
1291 | resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==}
1292 |
1293 | uuid@9.0.1:
1294 | resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
1295 | hasBin: true
1296 |
1297 | vite-plugin-logseq@1.1.2:
1298 | resolution: {integrity: sha512-l5YvoH3K25Zx9eqgoJFug7NfVqSPwq7/FcYYhN1TkdG8ZOiD+c+TAwdCS2dJbGgvx8GmSpbgwSZWgslB+wH53g==}
1299 |
1300 | vite-tsconfig-paths@5.0.1:
1301 | resolution: {integrity: sha512-yqwv+LstU7NwPeNqajZzLEBVpUFU6Dugtb2P84FXuvaoYA+/70l9MHE+GYfYAycVyPSDYZ7mjOFuYBRqlEpTig==}
1302 | peerDependencies:
1303 | vite: '*'
1304 | peerDependenciesMeta:
1305 | vite:
1306 | optional: true
1307 |
1308 | vite@5.4.3:
1309 | resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==}
1310 | engines: {node: ^18.0.0 || >=20.0.0}
1311 | hasBin: true
1312 | peerDependencies:
1313 | '@types/node': ^18.0.0 || >=20.0.0
1314 | less: '*'
1315 | lightningcss: ^1.21.0
1316 | sass: '*'
1317 | sass-embedded: '*'
1318 | stylus: '*'
1319 | sugarss: '*'
1320 | terser: ^5.4.0
1321 | peerDependenciesMeta:
1322 | '@types/node':
1323 | optional: true
1324 | less:
1325 | optional: true
1326 | lightningcss:
1327 | optional: true
1328 | sass:
1329 | optional: true
1330 | sass-embedded:
1331 | optional: true
1332 | stylus:
1333 | optional: true
1334 | sugarss:
1335 | optional: true
1336 | terser:
1337 | optional: true
1338 |
1339 | which@2.0.2:
1340 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1341 | engines: {node: '>= 8'}
1342 | hasBin: true
1343 |
1344 | word-wrap@1.2.5:
1345 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1346 | engines: {node: '>=0.10.0'}
1347 |
1348 | yocto-queue@0.1.0:
1349 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1350 | engines: {node: '>=10'}
1351 |
1352 | snapshots:
1353 |
1354 | '@babel/runtime@7.25.6':
1355 | dependencies:
1356 | regenerator-runtime: 0.14.1
1357 |
1358 | '@doist/todoist-api-typescript@3.0.3(type-fest@4.26.0)':
1359 | dependencies:
1360 | axios: 1.7.7
1361 | axios-case-converter: 1.1.1(axios@1.7.7)
1362 | axios-retry: 3.9.1
1363 | runtypes: 6.7.0
1364 | ts-custom-error: 3.3.1
1365 | type-fest: 4.26.0
1366 | uuid: 9.0.1
1367 | transitivePeerDependencies:
1368 | - debug
1369 |
1370 | '@esbuild/aix-ppc64@0.21.5':
1371 | optional: true
1372 |
1373 | '@esbuild/android-arm64@0.21.5':
1374 | optional: true
1375 |
1376 | '@esbuild/android-arm@0.21.5':
1377 | optional: true
1378 |
1379 | '@esbuild/android-x64@0.21.5':
1380 | optional: true
1381 |
1382 | '@esbuild/darwin-arm64@0.21.5':
1383 | optional: true
1384 |
1385 | '@esbuild/darwin-x64@0.21.5':
1386 | optional: true
1387 |
1388 | '@esbuild/freebsd-arm64@0.21.5':
1389 | optional: true
1390 |
1391 | '@esbuild/freebsd-x64@0.21.5':
1392 | optional: true
1393 |
1394 | '@esbuild/linux-arm64@0.21.5':
1395 | optional: true
1396 |
1397 | '@esbuild/linux-arm@0.21.5':
1398 | optional: true
1399 |
1400 | '@esbuild/linux-ia32@0.21.5':
1401 | optional: true
1402 |
1403 | '@esbuild/linux-loong64@0.21.5':
1404 | optional: true
1405 |
1406 | '@esbuild/linux-mips64el@0.21.5':
1407 | optional: true
1408 |
1409 | '@esbuild/linux-ppc64@0.21.5':
1410 | optional: true
1411 |
1412 | '@esbuild/linux-riscv64@0.21.5':
1413 | optional: true
1414 |
1415 | '@esbuild/linux-s390x@0.21.5':
1416 | optional: true
1417 |
1418 | '@esbuild/linux-x64@0.21.5':
1419 | optional: true
1420 |
1421 | '@esbuild/netbsd-x64@0.21.5':
1422 | optional: true
1423 |
1424 | '@esbuild/openbsd-x64@0.21.5':
1425 | optional: true
1426 |
1427 | '@esbuild/sunos-x64@0.21.5':
1428 | optional: true
1429 |
1430 | '@esbuild/win32-arm64@0.21.5':
1431 | optional: true
1432 |
1433 | '@esbuild/win32-ia32@0.21.5':
1434 | optional: true
1435 |
1436 | '@esbuild/win32-x64@0.21.5':
1437 | optional: true
1438 |
1439 | '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.6))':
1440 | dependencies:
1441 | eslint: 9.9.1(jiti@1.21.6)
1442 | eslint-visitor-keys: 3.4.3
1443 |
1444 | '@eslint-community/regexpp@4.11.0': {}
1445 |
1446 | '@eslint/config-array@0.18.0':
1447 | dependencies:
1448 | '@eslint/object-schema': 2.1.4
1449 | debug: 4.3.7
1450 | minimatch: 3.1.2
1451 | transitivePeerDependencies:
1452 | - supports-color
1453 |
1454 | '@eslint/eslintrc@3.1.0':
1455 | dependencies:
1456 | ajv: 6.12.6
1457 | debug: 4.3.7
1458 | espree: 10.1.0
1459 | globals: 14.0.0
1460 | ignore: 5.3.2
1461 | import-fresh: 3.3.0
1462 | js-yaml: 4.1.0
1463 | minimatch: 3.1.2
1464 | strip-json-comments: 3.1.1
1465 | transitivePeerDependencies:
1466 | - supports-color
1467 |
1468 | '@eslint/js@9.9.1': {}
1469 |
1470 | '@eslint/object-schema@2.1.4': {}
1471 |
1472 | '@floating-ui/core@1.6.7':
1473 | dependencies:
1474 | '@floating-ui/utils': 0.2.7
1475 |
1476 | '@floating-ui/dom@1.6.10':
1477 | dependencies:
1478 | '@floating-ui/core': 1.6.7
1479 | '@floating-ui/utils': 0.2.7
1480 |
1481 | '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
1482 | dependencies:
1483 | '@floating-ui/dom': 1.6.10
1484 | react: 18.3.1
1485 | react-dom: 18.3.1(react@18.3.1)
1486 |
1487 | '@floating-ui/react@0.26.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
1488 | dependencies:
1489 | '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
1490 | '@floating-ui/utils': 0.2.7
1491 | react: 18.3.1
1492 | react-dom: 18.3.1(react@18.3.1)
1493 | tabbable: 6.2.0
1494 |
1495 | '@floating-ui/utils@0.2.7': {}
1496 |
1497 | '@humanwhocodes/module-importer@1.0.1': {}
1498 |
1499 | '@humanwhocodes/retry@0.3.0': {}
1500 |
1501 | '@logseq/libs@0.0.17':
1502 | dependencies:
1503 | csstype: 3.1.0
1504 | debug: 4.3.4
1505 | deepmerge: 4.3.1
1506 | dompurify: 2.3.8
1507 | eventemitter3: 4.0.7
1508 | fast-deep-equal: 3.1.3
1509 | lodash-es: 4.17.21
1510 | path: 0.12.7
1511 | snake-case: 3.0.4
1512 | transitivePeerDependencies:
1513 | - supports-color
1514 |
1515 | '@mantine/core@7.12.2(@mantine/hooks@7.12.2(react@18.3.1))(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
1516 | dependencies:
1517 | '@floating-ui/react': 0.26.23(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
1518 | '@mantine/hooks': 7.12.2(react@18.3.1)
1519 | clsx: 2.1.1
1520 | react: 18.3.1
1521 | react-dom: 18.3.1(react@18.3.1)
1522 | react-number-format: 5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
1523 | react-remove-scroll: 2.6.0(@types/react@18.3.5)(react@18.3.1)
1524 | react-textarea-autosize: 8.5.3(@types/react@18.3.5)(react@18.3.1)
1525 | type-fest: 4.26.0
1526 | transitivePeerDependencies:
1527 | - '@types/react'
1528 |
1529 | '@mantine/hooks@7.12.2(react@18.3.1)':
1530 | dependencies:
1531 | react: 18.3.1
1532 |
1533 | '@nodelib/fs.scandir@2.1.5':
1534 | dependencies:
1535 | '@nodelib/fs.stat': 2.0.5
1536 | run-parallel: 1.2.0
1537 |
1538 | '@nodelib/fs.stat@2.0.5': {}
1539 |
1540 | '@nodelib/fs.walk@1.2.8':
1541 | dependencies:
1542 | '@nodelib/fs.scandir': 2.1.5
1543 | fastq: 1.17.1
1544 |
1545 | '@pkgr/core@0.1.1': {}
1546 |
1547 | '@rollup/rollup-android-arm-eabi@4.21.2':
1548 | optional: true
1549 |
1550 | '@rollup/rollup-android-arm64@4.21.2':
1551 | optional: true
1552 |
1553 | '@rollup/rollup-darwin-arm64@4.21.2':
1554 | optional: true
1555 |
1556 | '@rollup/rollup-darwin-x64@4.21.2':
1557 | optional: true
1558 |
1559 | '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
1560 | optional: true
1561 |
1562 | '@rollup/rollup-linux-arm-musleabihf@4.21.2':
1563 | optional: true
1564 |
1565 | '@rollup/rollup-linux-arm64-gnu@4.21.2':
1566 | optional: true
1567 |
1568 | '@rollup/rollup-linux-arm64-musl@4.21.2':
1569 | optional: true
1570 |
1571 | '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
1572 | optional: true
1573 |
1574 | '@rollup/rollup-linux-riscv64-gnu@4.21.2':
1575 | optional: true
1576 |
1577 | '@rollup/rollup-linux-s390x-gnu@4.21.2':
1578 | optional: true
1579 |
1580 | '@rollup/rollup-linux-x64-gnu@4.21.2':
1581 | optional: true
1582 |
1583 | '@rollup/rollup-linux-x64-musl@4.21.2':
1584 | optional: true
1585 |
1586 | '@rollup/rollup-win32-arm64-msvc@4.21.2':
1587 | optional: true
1588 |
1589 | '@rollup/rollup-win32-ia32-msvc@4.21.2':
1590 | optional: true
1591 |
1592 | '@rollup/rollup-win32-x64-msvc@4.21.2':
1593 | optional: true
1594 |
1595 | '@types/eslint-config-prettier@6.11.3': {}
1596 |
1597 | '@types/eslint@9.6.1':
1598 | dependencies:
1599 | '@types/estree': 1.0.5
1600 | '@types/json-schema': 7.0.15
1601 |
1602 | '@types/eslint__js@8.42.3':
1603 | dependencies:
1604 | '@types/eslint': 9.6.1
1605 |
1606 | '@types/estree@1.0.5': {}
1607 |
1608 | '@types/json-schema@7.0.15': {}
1609 |
1610 | '@types/node@22.5.4':
1611 | dependencies:
1612 | undici-types: 6.19.8
1613 |
1614 | '@types/prop-types@15.7.12': {}
1615 |
1616 | '@types/react-dom@18.3.0':
1617 | dependencies:
1618 | '@types/react': 18.3.5
1619 |
1620 | '@types/react@18.3.5':
1621 | dependencies:
1622 | '@types/prop-types': 15.7.12
1623 | csstype: 3.1.3
1624 |
1625 | '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
1626 | dependencies:
1627 | '@eslint-community/regexpp': 4.11.0
1628 | '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
1629 | '@typescript-eslint/scope-manager': 8.4.0
1630 | '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
1631 | '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
1632 | '@typescript-eslint/visitor-keys': 8.4.0
1633 | eslint: 9.9.1(jiti@1.21.6)
1634 | graphemer: 1.4.0
1635 | ignore: 5.3.2
1636 | natural-compare: 1.4.0
1637 | ts-api-utils: 1.3.0(typescript@5.5.4)
1638 | optionalDependencies:
1639 | typescript: 5.5.4
1640 | transitivePeerDependencies:
1641 | - supports-color
1642 |
1643 | '@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
1644 | dependencies:
1645 | '@typescript-eslint/scope-manager': 8.4.0
1646 | '@typescript-eslint/types': 8.4.0
1647 | '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
1648 | '@typescript-eslint/visitor-keys': 8.4.0
1649 | debug: 4.3.7
1650 | eslint: 9.9.1(jiti@1.21.6)
1651 | optionalDependencies:
1652 | typescript: 5.5.4
1653 | transitivePeerDependencies:
1654 | - supports-color
1655 |
1656 | '@typescript-eslint/scope-manager@8.4.0':
1657 | dependencies:
1658 | '@typescript-eslint/types': 8.4.0
1659 | '@typescript-eslint/visitor-keys': 8.4.0
1660 |
1661 | '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
1662 | dependencies:
1663 | '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
1664 | '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
1665 | debug: 4.3.7
1666 | ts-api-utils: 1.3.0(typescript@5.5.4)
1667 | optionalDependencies:
1668 | typescript: 5.5.4
1669 | transitivePeerDependencies:
1670 | - eslint
1671 | - supports-color
1672 |
1673 | '@typescript-eslint/types@8.4.0': {}
1674 |
1675 | '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)':
1676 | dependencies:
1677 | '@typescript-eslint/types': 8.4.0
1678 | '@typescript-eslint/visitor-keys': 8.4.0
1679 | debug: 4.3.7
1680 | fast-glob: 3.3.2
1681 | is-glob: 4.0.3
1682 | minimatch: 9.0.5
1683 | semver: 7.6.3
1684 | ts-api-utils: 1.3.0(typescript@5.5.4)
1685 | optionalDependencies:
1686 | typescript: 5.5.4
1687 | transitivePeerDependencies:
1688 | - supports-color
1689 |
1690 | '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
1691 | dependencies:
1692 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6))
1693 | '@typescript-eslint/scope-manager': 8.4.0
1694 | '@typescript-eslint/types': 8.4.0
1695 | '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
1696 | eslint: 9.9.1(jiti@1.21.6)
1697 | transitivePeerDependencies:
1698 | - supports-color
1699 | - typescript
1700 |
1701 | '@typescript-eslint/visitor-keys@8.4.0':
1702 | dependencies:
1703 | '@typescript-eslint/types': 8.4.0
1704 | eslint-visitor-keys: 3.4.3
1705 |
1706 | acorn-jsx@5.3.2(acorn@8.12.1):
1707 | dependencies:
1708 | acorn: 8.12.1
1709 |
1710 | acorn@8.12.1: {}
1711 |
1712 | ajv@6.12.6:
1713 | dependencies:
1714 | fast-deep-equal: 3.1.3
1715 | fast-json-stable-stringify: 2.1.0
1716 | json-schema-traverse: 0.4.1
1717 | uri-js: 4.4.1
1718 |
1719 | ansi-regex@5.0.1: {}
1720 |
1721 | ansi-styles@4.3.0:
1722 | dependencies:
1723 | color-convert: 2.0.1
1724 |
1725 | argparse@2.0.1: {}
1726 |
1727 | asynckit@0.4.0: {}
1728 |
1729 | axios-case-converter@1.1.1(axios@1.7.7):
1730 | dependencies:
1731 | axios: 1.7.7
1732 | camel-case: 4.1.2
1733 | header-case: 2.0.4
1734 | snake-case: 3.0.4
1735 | tslib: 2.7.0
1736 |
1737 | axios-retry@3.9.1:
1738 | dependencies:
1739 | '@babel/runtime': 7.25.6
1740 | is-retry-allowed: 2.2.0
1741 |
1742 | axios@1.7.7:
1743 | dependencies:
1744 | follow-redirects: 1.15.8
1745 | form-data: 4.0.0
1746 | proxy-from-env: 1.1.0
1747 | transitivePeerDependencies:
1748 | - debug
1749 |
1750 | balanced-match@1.0.2: {}
1751 |
1752 | brace-expansion@1.1.11:
1753 | dependencies:
1754 | balanced-match: 1.0.2
1755 | concat-map: 0.0.1
1756 |
1757 | brace-expansion@2.0.1:
1758 | dependencies:
1759 | balanced-match: 1.0.2
1760 |
1761 | braces@3.0.3:
1762 | dependencies:
1763 | fill-range: 7.1.1
1764 |
1765 | callsites@3.1.0: {}
1766 |
1767 | camel-case@4.1.2:
1768 | dependencies:
1769 | pascal-case: 3.1.2
1770 | tslib: 2.7.0
1771 |
1772 | camelcase-css@2.0.1: {}
1773 |
1774 | capital-case@1.0.4:
1775 | dependencies:
1776 | no-case: 3.0.4
1777 | tslib: 2.7.0
1778 | upper-case-first: 2.0.2
1779 |
1780 | chalk@4.1.2:
1781 | dependencies:
1782 | ansi-styles: 4.3.0
1783 | supports-color: 7.2.0
1784 |
1785 | clsx@2.1.1: {}
1786 |
1787 | color-convert@2.0.1:
1788 | dependencies:
1789 | color-name: 1.1.4
1790 |
1791 | color-name@1.1.4: {}
1792 |
1793 | combined-stream@1.0.8:
1794 | dependencies:
1795 | delayed-stream: 1.0.0
1796 |
1797 | concat-map@0.0.1: {}
1798 |
1799 | cross-spawn@7.0.3:
1800 | dependencies:
1801 | path-key: 3.1.1
1802 | shebang-command: 2.0.0
1803 | which: 2.0.2
1804 |
1805 | cssesc@3.0.0: {}
1806 |
1807 | csstype@3.1.0: {}
1808 |
1809 | csstype@3.1.3: {}
1810 |
1811 | date-fns@2.30.0:
1812 | dependencies:
1813 | '@babel/runtime': 7.25.6
1814 |
1815 | debug@4.3.4:
1816 | dependencies:
1817 | ms: 2.1.2
1818 |
1819 | debug@4.3.7:
1820 | dependencies:
1821 | ms: 2.1.3
1822 |
1823 | deep-is@0.1.4: {}
1824 |
1825 | deepmerge@4.3.1: {}
1826 |
1827 | delayed-stream@1.0.0: {}
1828 |
1829 | detect-node-es@1.1.0: {}
1830 |
1831 | dompurify@2.3.8: {}
1832 |
1833 | dot-case@3.0.4:
1834 | dependencies:
1835 | no-case: 3.0.4
1836 | tslib: 2.7.0
1837 |
1838 | esbuild@0.21.5:
1839 | optionalDependencies:
1840 | '@esbuild/aix-ppc64': 0.21.5
1841 | '@esbuild/android-arm': 0.21.5
1842 | '@esbuild/android-arm64': 0.21.5
1843 | '@esbuild/android-x64': 0.21.5
1844 | '@esbuild/darwin-arm64': 0.21.5
1845 | '@esbuild/darwin-x64': 0.21.5
1846 | '@esbuild/freebsd-arm64': 0.21.5
1847 | '@esbuild/freebsd-x64': 0.21.5
1848 | '@esbuild/linux-arm': 0.21.5
1849 | '@esbuild/linux-arm64': 0.21.5
1850 | '@esbuild/linux-ia32': 0.21.5
1851 | '@esbuild/linux-loong64': 0.21.5
1852 | '@esbuild/linux-mips64el': 0.21.5
1853 | '@esbuild/linux-ppc64': 0.21.5
1854 | '@esbuild/linux-riscv64': 0.21.5
1855 | '@esbuild/linux-s390x': 0.21.5
1856 | '@esbuild/linux-x64': 0.21.5
1857 | '@esbuild/netbsd-x64': 0.21.5
1858 | '@esbuild/openbsd-x64': 0.21.5
1859 | '@esbuild/sunos-x64': 0.21.5
1860 | '@esbuild/win32-arm64': 0.21.5
1861 | '@esbuild/win32-ia32': 0.21.5
1862 | '@esbuild/win32-x64': 0.21.5
1863 |
1864 | escape-string-regexp@4.0.0: {}
1865 |
1866 | eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)):
1867 | dependencies:
1868 | eslint: 9.9.1(jiti@1.21.6)
1869 |
1870 | eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(prettier@3.3.3):
1871 | dependencies:
1872 | eslint: 9.9.1(jiti@1.21.6)
1873 | prettier: 3.3.3
1874 | prettier-linter-helpers: 1.0.0
1875 | synckit: 0.9.1
1876 | optionalDependencies:
1877 | '@types/eslint': 9.6.1
1878 | eslint-config-prettier: 9.1.0(eslint@9.9.1(jiti@1.21.6))
1879 |
1880 | eslint-plugin-simple-import-sort@12.1.1(eslint@9.9.1(jiti@1.21.6)):
1881 | dependencies:
1882 | eslint: 9.9.1(jiti@1.21.6)
1883 |
1884 | eslint-scope@8.0.2:
1885 | dependencies:
1886 | esrecurse: 4.3.0
1887 | estraverse: 5.3.0
1888 |
1889 | eslint-visitor-keys@3.4.3: {}
1890 |
1891 | eslint-visitor-keys@4.0.0: {}
1892 |
1893 | eslint@9.9.1(jiti@1.21.6):
1894 | dependencies:
1895 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6))
1896 | '@eslint-community/regexpp': 4.11.0
1897 | '@eslint/config-array': 0.18.0
1898 | '@eslint/eslintrc': 3.1.0
1899 | '@eslint/js': 9.9.1
1900 | '@humanwhocodes/module-importer': 1.0.1
1901 | '@humanwhocodes/retry': 0.3.0
1902 | '@nodelib/fs.walk': 1.2.8
1903 | ajv: 6.12.6
1904 | chalk: 4.1.2
1905 | cross-spawn: 7.0.3
1906 | debug: 4.3.7
1907 | escape-string-regexp: 4.0.0
1908 | eslint-scope: 8.0.2
1909 | eslint-visitor-keys: 4.0.0
1910 | espree: 10.1.0
1911 | esquery: 1.6.0
1912 | esutils: 2.0.3
1913 | fast-deep-equal: 3.1.3
1914 | file-entry-cache: 8.0.0
1915 | find-up: 5.0.0
1916 | glob-parent: 6.0.2
1917 | ignore: 5.3.2
1918 | imurmurhash: 0.1.4
1919 | is-glob: 4.0.3
1920 | is-path-inside: 3.0.3
1921 | json-stable-stringify-without-jsonify: 1.0.1
1922 | levn: 0.4.1
1923 | lodash.merge: 4.6.2
1924 | minimatch: 3.1.2
1925 | natural-compare: 1.4.0
1926 | optionator: 0.9.4
1927 | strip-ansi: 6.0.1
1928 | text-table: 0.2.0
1929 | optionalDependencies:
1930 | jiti: 1.21.6
1931 | transitivePeerDependencies:
1932 | - supports-color
1933 |
1934 | espree@10.1.0:
1935 | dependencies:
1936 | acorn: 8.12.1
1937 | acorn-jsx: 5.3.2(acorn@8.12.1)
1938 | eslint-visitor-keys: 4.0.0
1939 |
1940 | esquery@1.6.0:
1941 | dependencies:
1942 | estraverse: 5.3.0
1943 |
1944 | esrecurse@4.3.0:
1945 | dependencies:
1946 | estraverse: 5.3.0
1947 |
1948 | estraverse@5.3.0: {}
1949 |
1950 | esutils@2.0.3: {}
1951 |
1952 | eventemitter3@4.0.7: {}
1953 |
1954 | fast-deep-equal@3.1.3: {}
1955 |
1956 | fast-diff@1.3.0: {}
1957 |
1958 | fast-glob@3.3.2:
1959 | dependencies:
1960 | '@nodelib/fs.stat': 2.0.5
1961 | '@nodelib/fs.walk': 1.2.8
1962 | glob-parent: 5.1.2
1963 | merge2: 1.4.1
1964 | micromatch: 4.0.8
1965 |
1966 | fast-json-stable-stringify@2.1.0: {}
1967 |
1968 | fast-levenshtein@2.0.6: {}
1969 |
1970 | fastq@1.17.1:
1971 | dependencies:
1972 | reusify: 1.0.4
1973 |
1974 | file-entry-cache@8.0.0:
1975 | dependencies:
1976 | flat-cache: 4.0.1
1977 |
1978 | fill-range@7.1.1:
1979 | dependencies:
1980 | to-regex-range: 5.0.1
1981 |
1982 | find-up@5.0.0:
1983 | dependencies:
1984 | locate-path: 6.0.0
1985 | path-exists: 4.0.0
1986 |
1987 | flat-cache@4.0.1:
1988 | dependencies:
1989 | flatted: 3.3.1
1990 | keyv: 4.5.4
1991 |
1992 | flatted@3.3.1: {}
1993 |
1994 | follow-redirects@1.15.8: {}
1995 |
1996 | form-data@4.0.0:
1997 | dependencies:
1998 | asynckit: 0.4.0
1999 | combined-stream: 1.0.8
2000 | mime-types: 2.1.35
2001 |
2002 | fsevents@2.3.3:
2003 | optional: true
2004 |
2005 | get-nonce@1.0.1: {}
2006 |
2007 | glob-parent@5.1.2:
2008 | dependencies:
2009 | is-glob: 4.0.3
2010 |
2011 | glob-parent@6.0.2:
2012 | dependencies:
2013 | is-glob: 4.0.3
2014 |
2015 | globals@14.0.0: {}
2016 |
2017 | globrex@0.1.2: {}
2018 |
2019 | graphemer@1.4.0: {}
2020 |
2021 | has-flag@4.0.0: {}
2022 |
2023 | header-case@2.0.4:
2024 | dependencies:
2025 | capital-case: 1.0.4
2026 | tslib: 2.7.0
2027 |
2028 | husky@9.1.5: {}
2029 |
2030 | ignore@5.3.2: {}
2031 |
2032 | import-fresh@3.3.0:
2033 | dependencies:
2034 | parent-module: 1.0.1
2035 | resolve-from: 4.0.0
2036 |
2037 | imurmurhash@0.1.4: {}
2038 |
2039 | inherits@2.0.3: {}
2040 |
2041 | invariant@2.2.4:
2042 | dependencies:
2043 | loose-envify: 1.4.0
2044 |
2045 | is-extglob@2.1.1: {}
2046 |
2047 | is-glob@4.0.3:
2048 | dependencies:
2049 | is-extglob: 2.1.1
2050 |
2051 | is-number@7.0.0: {}
2052 |
2053 | is-path-inside@3.0.3: {}
2054 |
2055 | is-retry-allowed@2.2.0: {}
2056 |
2057 | isexe@2.0.0: {}
2058 |
2059 | jiti@1.21.6:
2060 | optional: true
2061 |
2062 | js-tokens@4.0.0: {}
2063 |
2064 | js-yaml@4.1.0:
2065 | dependencies:
2066 | argparse: 2.0.1
2067 |
2068 | json-buffer@3.0.1: {}
2069 |
2070 | json-schema-traverse@0.4.1: {}
2071 |
2072 | json-stable-stringify-without-jsonify@1.0.1: {}
2073 |
2074 | keyv@4.5.4:
2075 | dependencies:
2076 | json-buffer: 3.0.1
2077 |
2078 | levn@0.4.1:
2079 | dependencies:
2080 | prelude-ls: 1.2.1
2081 | type-check: 0.4.0
2082 |
2083 | locate-path@6.0.0:
2084 | dependencies:
2085 | p-locate: 5.0.0
2086 |
2087 | lodash-es@4.17.21: {}
2088 |
2089 | lodash.merge@4.6.2: {}
2090 |
2091 | logseq-dateutils@2.1.2:
2092 | dependencies:
2093 | date-fns: 2.30.0
2094 |
2095 | loose-envify@1.4.0:
2096 | dependencies:
2097 | js-tokens: 4.0.0
2098 |
2099 | lower-case@2.0.2:
2100 | dependencies:
2101 | tslib: 2.7.0
2102 |
2103 | magic-string@0.26.7:
2104 | dependencies:
2105 | sourcemap-codec: 1.4.8
2106 |
2107 | merge2@1.4.1: {}
2108 |
2109 | micromatch@4.0.8:
2110 | dependencies:
2111 | braces: 3.0.3
2112 | picomatch: 2.3.1
2113 |
2114 | mime-db@1.52.0: {}
2115 |
2116 | mime-types@2.1.35:
2117 | dependencies:
2118 | mime-db: 1.52.0
2119 |
2120 | minimatch@3.1.2:
2121 | dependencies:
2122 | brace-expansion: 1.1.11
2123 |
2124 | minimatch@9.0.5:
2125 | dependencies:
2126 | brace-expansion: 2.0.1
2127 |
2128 | ms@2.1.2: {}
2129 |
2130 | ms@2.1.3: {}
2131 |
2132 | nanoid@3.3.7: {}
2133 |
2134 | natural-compare@1.4.0: {}
2135 |
2136 | no-case@3.0.4:
2137 | dependencies:
2138 | lower-case: 2.0.2
2139 | tslib: 2.7.0
2140 |
2141 | optionator@0.9.4:
2142 | dependencies:
2143 | deep-is: 0.1.4
2144 | fast-levenshtein: 2.0.6
2145 | levn: 0.4.1
2146 | prelude-ls: 1.2.1
2147 | type-check: 0.4.0
2148 | word-wrap: 1.2.5
2149 |
2150 | p-limit@3.1.0:
2151 | dependencies:
2152 | yocto-queue: 0.1.0
2153 |
2154 | p-locate@5.0.0:
2155 | dependencies:
2156 | p-limit: 3.1.0
2157 |
2158 | parent-module@1.0.1:
2159 | dependencies:
2160 | callsites: 3.1.0
2161 |
2162 | pascal-case@3.1.2:
2163 | dependencies:
2164 | no-case: 3.0.4
2165 | tslib: 2.7.0
2166 |
2167 | path-exists@4.0.0: {}
2168 |
2169 | path-key@3.1.1: {}
2170 |
2171 | path@0.12.7:
2172 | dependencies:
2173 | process: 0.11.10
2174 | util: 0.10.4
2175 |
2176 | picocolors@1.1.0: {}
2177 |
2178 | picomatch@2.3.1: {}
2179 |
2180 | postcss-js@4.0.1(postcss@8.4.45):
2181 | dependencies:
2182 | camelcase-css: 2.0.1
2183 | postcss: 8.4.45
2184 |
2185 | postcss-mixins@9.0.4(postcss@8.4.45):
2186 | dependencies:
2187 | fast-glob: 3.3.2
2188 | postcss: 8.4.45
2189 | postcss-js: 4.0.1(postcss@8.4.45)
2190 | postcss-simple-vars: 7.0.1(postcss@8.4.45)
2191 | sugarss: 4.0.1(postcss@8.4.45)
2192 |
2193 | postcss-nested@6.2.0(postcss@8.4.45):
2194 | dependencies:
2195 | postcss: 8.4.45
2196 | postcss-selector-parser: 6.1.2
2197 |
2198 | postcss-preset-mantine@1.17.0(postcss@8.4.45):
2199 | dependencies:
2200 | postcss: 8.4.45
2201 | postcss-mixins: 9.0.4(postcss@8.4.45)
2202 | postcss-nested: 6.2.0(postcss@8.4.45)
2203 |
2204 | postcss-selector-parser@6.1.2:
2205 | dependencies:
2206 | cssesc: 3.0.0
2207 | util-deprecate: 1.0.2
2208 |
2209 | postcss-simple-vars@7.0.1(postcss@8.4.45):
2210 | dependencies:
2211 | postcss: 8.4.45
2212 |
2213 | postcss@8.4.45:
2214 | dependencies:
2215 | nanoid: 3.3.7
2216 | picocolors: 1.1.0
2217 | source-map-js: 1.2.0
2218 |
2219 | prelude-ls@1.2.1: {}
2220 |
2221 | prettier-linter-helpers@1.0.0:
2222 | dependencies:
2223 | fast-diff: 1.3.0
2224 |
2225 | prettier@3.3.3: {}
2226 |
2227 | process@0.11.10: {}
2228 |
2229 | proxy-from-env@1.1.0: {}
2230 |
2231 | punycode@2.3.1: {}
2232 |
2233 | queue-microtask@1.2.3: {}
2234 |
2235 | react-dom@18.3.1(react@18.3.1):
2236 | dependencies:
2237 | loose-envify: 1.4.0
2238 | react: 18.3.1
2239 | scheduler: 0.23.2
2240 |
2241 | react-hook-form@7.53.0(react@18.3.1):
2242 | dependencies:
2243 | react: 18.3.1
2244 |
2245 | react-number-format@5.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
2246 | dependencies:
2247 | react: 18.3.1
2248 | react-dom: 18.3.1(react@18.3.1)
2249 |
2250 | react-remove-scroll-bar@2.3.6(@types/react@18.3.5)(react@18.3.1):
2251 | dependencies:
2252 | react: 18.3.1
2253 | react-style-singleton: 2.2.1(@types/react@18.3.5)(react@18.3.1)
2254 | tslib: 2.7.0
2255 | optionalDependencies:
2256 | '@types/react': 18.3.5
2257 |
2258 | react-remove-scroll@2.6.0(@types/react@18.3.5)(react@18.3.1):
2259 | dependencies:
2260 | react: 18.3.1
2261 | react-remove-scroll-bar: 2.3.6(@types/react@18.3.5)(react@18.3.1)
2262 | react-style-singleton: 2.2.1(@types/react@18.3.5)(react@18.3.1)
2263 | tslib: 2.7.0
2264 | use-callback-ref: 1.3.2(@types/react@18.3.5)(react@18.3.1)
2265 | use-sidecar: 1.1.2(@types/react@18.3.5)(react@18.3.1)
2266 | optionalDependencies:
2267 | '@types/react': 18.3.5
2268 |
2269 | react-style-singleton@2.2.1(@types/react@18.3.5)(react@18.3.1):
2270 | dependencies:
2271 | get-nonce: 1.0.1
2272 | invariant: 2.2.4
2273 | react: 18.3.1
2274 | tslib: 2.7.0
2275 | optionalDependencies:
2276 | '@types/react': 18.3.5
2277 |
2278 | react-textarea-autosize@8.5.3(@types/react@18.3.5)(react@18.3.1):
2279 | dependencies:
2280 | '@babel/runtime': 7.25.6
2281 | react: 18.3.1
2282 | use-composed-ref: 1.3.0(react@18.3.1)
2283 | use-latest: 1.2.1(@types/react@18.3.5)(react@18.3.1)
2284 | transitivePeerDependencies:
2285 | - '@types/react'
2286 |
2287 | react@18.3.1:
2288 | dependencies:
2289 | loose-envify: 1.4.0
2290 |
2291 | regenerator-runtime@0.14.1: {}
2292 |
2293 | resolve-from@4.0.0: {}
2294 |
2295 | reusify@1.0.4: {}
2296 |
2297 | rollup@4.21.2:
2298 | dependencies:
2299 | '@types/estree': 1.0.5
2300 | optionalDependencies:
2301 | '@rollup/rollup-android-arm-eabi': 4.21.2
2302 | '@rollup/rollup-android-arm64': 4.21.2
2303 | '@rollup/rollup-darwin-arm64': 4.21.2
2304 | '@rollup/rollup-darwin-x64': 4.21.2
2305 | '@rollup/rollup-linux-arm-gnueabihf': 4.21.2
2306 | '@rollup/rollup-linux-arm-musleabihf': 4.21.2
2307 | '@rollup/rollup-linux-arm64-gnu': 4.21.2
2308 | '@rollup/rollup-linux-arm64-musl': 4.21.2
2309 | '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2
2310 | '@rollup/rollup-linux-riscv64-gnu': 4.21.2
2311 | '@rollup/rollup-linux-s390x-gnu': 4.21.2
2312 | '@rollup/rollup-linux-x64-gnu': 4.21.2
2313 | '@rollup/rollup-linux-x64-musl': 4.21.2
2314 | '@rollup/rollup-win32-arm64-msvc': 4.21.2
2315 | '@rollup/rollup-win32-ia32-msvc': 4.21.2
2316 | '@rollup/rollup-win32-x64-msvc': 4.21.2
2317 | fsevents: 2.3.3
2318 |
2319 | run-parallel@1.2.0:
2320 | dependencies:
2321 | queue-microtask: 1.2.3
2322 |
2323 | runtypes@6.7.0: {}
2324 |
2325 | scheduler@0.23.2:
2326 | dependencies:
2327 | loose-envify: 1.4.0
2328 |
2329 | semver@7.6.3: {}
2330 |
2331 | shebang-command@2.0.0:
2332 | dependencies:
2333 | shebang-regex: 3.0.0
2334 |
2335 | shebang-regex@3.0.0: {}
2336 |
2337 | snake-case@3.0.4:
2338 | dependencies:
2339 | dot-case: 3.0.4
2340 | tslib: 2.7.0
2341 |
2342 | source-map-js@1.2.0: {}
2343 |
2344 | sourcemap-codec@1.4.8: {}
2345 |
2346 | strip-ansi@6.0.1:
2347 | dependencies:
2348 | ansi-regex: 5.0.1
2349 |
2350 | strip-json-comments@3.1.1: {}
2351 |
2352 | sugarss@4.0.1(postcss@8.4.45):
2353 | dependencies:
2354 | postcss: 8.4.45
2355 |
2356 | supports-color@7.2.0:
2357 | dependencies:
2358 | has-flag: 4.0.0
2359 |
2360 | synckit@0.9.1:
2361 | dependencies:
2362 | '@pkgr/core': 0.1.1
2363 | tslib: 2.7.0
2364 |
2365 | tabbable@6.2.0: {}
2366 |
2367 | text-table@0.2.0: {}
2368 |
2369 | to-regex-range@5.0.1:
2370 | dependencies:
2371 | is-number: 7.0.0
2372 |
2373 | ts-api-utils@1.3.0(typescript@5.5.4):
2374 | dependencies:
2375 | typescript: 5.5.4
2376 |
2377 | ts-custom-error@3.3.1: {}
2378 |
2379 | tsconfck@3.1.3(typescript@5.5.4):
2380 | optionalDependencies:
2381 | typescript: 5.5.4
2382 |
2383 | tslib@2.7.0: {}
2384 |
2385 | type-check@0.4.0:
2386 | dependencies:
2387 | prelude-ls: 1.2.1
2388 |
2389 | type-fest@4.26.0: {}
2390 |
2391 | typescript-eslint@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4):
2392 | dependencies:
2393 | '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
2394 | '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
2395 | '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)
2396 | optionalDependencies:
2397 | typescript: 5.5.4
2398 | transitivePeerDependencies:
2399 | - eslint
2400 | - supports-color
2401 |
2402 | typescript@5.5.4: {}
2403 |
2404 | undici-types@6.19.8: {}
2405 |
2406 | upper-case-first@2.0.2:
2407 | dependencies:
2408 | tslib: 2.7.0
2409 |
2410 | uri-js@4.4.1:
2411 | dependencies:
2412 | punycode: 2.3.1
2413 |
2414 | use-callback-ref@1.3.2(@types/react@18.3.5)(react@18.3.1):
2415 | dependencies:
2416 | react: 18.3.1
2417 | tslib: 2.7.0
2418 | optionalDependencies:
2419 | '@types/react': 18.3.5
2420 |
2421 | use-composed-ref@1.3.0(react@18.3.1):
2422 | dependencies:
2423 | react: 18.3.1
2424 |
2425 | use-isomorphic-layout-effect@1.1.2(@types/react@18.3.5)(react@18.3.1):
2426 | dependencies:
2427 | react: 18.3.1
2428 | optionalDependencies:
2429 | '@types/react': 18.3.5
2430 |
2431 | use-latest@1.2.1(@types/react@18.3.5)(react@18.3.1):
2432 | dependencies:
2433 | react: 18.3.1
2434 | use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.5)(react@18.3.1)
2435 | optionalDependencies:
2436 | '@types/react': 18.3.5
2437 |
2438 | use-sidecar@1.1.2(@types/react@18.3.5)(react@18.3.1):
2439 | dependencies:
2440 | detect-node-es: 1.1.0
2441 | react: 18.3.1
2442 | tslib: 2.7.0
2443 | optionalDependencies:
2444 | '@types/react': 18.3.5
2445 |
2446 | util-deprecate@1.0.2: {}
2447 |
2448 | util@0.10.4:
2449 | dependencies:
2450 | inherits: 2.0.3
2451 |
2452 | uuid@9.0.1: {}
2453 |
2454 | vite-plugin-logseq@1.1.2:
2455 | dependencies:
2456 | magic-string: 0.26.7
2457 |
2458 | vite-tsconfig-paths@5.0.1(typescript@5.5.4)(vite@5.4.3(@types/node@22.5.4)(sugarss@4.0.1(postcss@8.4.45))):
2459 | dependencies:
2460 | debug: 4.3.7
2461 | globrex: 0.1.2
2462 | tsconfck: 3.1.3(typescript@5.5.4)
2463 | optionalDependencies:
2464 | vite: 5.4.3(@types/node@22.5.4)(sugarss@4.0.1(postcss@8.4.45))
2465 | transitivePeerDependencies:
2466 | - supports-color
2467 | - typescript
2468 |
2469 | vite@5.4.3(@types/node@22.5.4)(sugarss@4.0.1(postcss@8.4.45)):
2470 | dependencies:
2471 | esbuild: 0.21.5
2472 | postcss: 8.4.45
2473 | rollup: 4.21.2
2474 | optionalDependencies:
2475 | '@types/node': 22.5.4
2476 | fsevents: 2.3.3
2477 | sugarss: 4.0.1(postcss@8.4.45)
2478 |
2479 | which@2.0.2:
2480 | dependencies:
2481 | isexe: 2.0.0
2482 |
2483 | word-wrap@1.2.5: {}
2484 |
2485 | yocto-queue@0.1.0: {}
2486 |
--------------------------------------------------------------------------------
/screenshots/enter-variables2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/enter-variables2.png
--------------------------------------------------------------------------------
/screenshots/inline-filter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/inline-filter.gif
--------------------------------------------------------------------------------
/screenshots/plugin-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/plugin-settings.png
--------------------------------------------------------------------------------
/screenshots/pull-tasks-todoist.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/pull-tasks-todoist.gif
--------------------------------------------------------------------------------
/screenshots/pull-tasks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/pull-tasks.png
--------------------------------------------------------------------------------
/screenshots/sample-env.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/sample-env.png
--------------------------------------------------------------------------------
/screenshots/scheduled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/scheduled.png
--------------------------------------------------------------------------------
/screenshots/send-task-todoist.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/send-task-todoist.gif
--------------------------------------------------------------------------------
/screenshots/todoist-url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/benjypng/logseq-todoist-plugin/25919128c6ad6a9f426baed0b40726a8a5986d0a/screenshots/todoist-url.png
--------------------------------------------------------------------------------
/src/constants.ts:
--------------------------------------------------------------------------------
1 | import { createTheme } from '@mantine/core'
2 |
3 | export const THEME = createTheme({
4 | primaryColor: 'darkTeal',
5 | primaryShade: 9,
6 | colors: {
7 | darkTeal: [
8 | '#ecfbfd',
9 | '#daf4f8',
10 | '#b0e8f2',
11 | '#85dded',
12 | '#66d3e9',
13 | '#56cde6',
14 | '#4ccae6',
15 | '#3eb2cd',
16 | '#2f9eb7',
17 | '#0d89a0',
18 | ],
19 | },
20 | })
21 |
--------------------------------------------------------------------------------
/src/features/helpers.ts:
--------------------------------------------------------------------------------
1 | import { Label, Project, TodoistApi } from '@doist/todoist-api-typescript'
2 |
3 | export const getAllProjects = async (): Promise => {
4 | const { apiToken } = logseq.settings!
5 | if (!apiToken || apiToken === '') return ['--- ---']
6 | const api: TodoistApi = new TodoistApi(apiToken as string)
7 | try {
8 | const allProjects: Project[] = await api.getProjects()
9 | const projArr = allProjects.map(
10 | (project) => `${project.name} (${project.id})`,
11 | )
12 | projArr.unshift('--- ---')
13 | return projArr
14 | } catch (e) {
15 | console.log(e)
16 | await logseq.UI.showMsg(
17 | `Error retrieving projects ${(e as Error).message}`,
18 | 'error',
19 | )
20 | return ['--- ---']
21 | }
22 | }
23 |
24 | export const getAllLabels = async (): Promise => {
25 | const { apiToken } = logseq.settings!
26 | if (!apiToken || apiToken === '') return ['--- ---']
27 | const api: TodoistApi = new TodoistApi(apiToken as string)
28 | try {
29 | const allLabels: Label[] = await api.getLabels()
30 | const labelArr = allLabels.map((label) => `${label.name} (${label.id})`)
31 | labelArr.unshift('--- ---')
32 | return labelArr
33 | } catch (e) {
34 | console.log(e)
35 | await logseq.UI.showMsg(
36 | `Error retrieving labels ${(e as Error).message}`,
37 | 'error',
38 | )
39 | return ['--- ---']
40 | }
41 | }
42 |
43 | export const getIdFromString = (content: string): string => {
44 | const regExp = /\((.*?)\)/
45 | const matched = regExp.exec(content.trim())
46 | if (matched && matched[1]) {
47 | return matched[1]
48 | } else {
49 | return ''
50 | }
51 | }
52 |
53 | export const getNameFromString = (content: string): string => {
54 | return content.substring(0, content.indexOf('(')).trim()
55 | }
56 |
--------------------------------------------------------------------------------
/src/features/retrieve/index.ts:
--------------------------------------------------------------------------------
1 | import { Task, TodoistApi } from '@doist/todoist-api-typescript'
2 | import { getDateForPage, getDeadlineDateDay } from 'logseq-dateutils'
3 |
4 | import { getIdFromString } from '../helpers'
5 |
6 | interface TaskBlock {
7 | content: string
8 | children: TaskBlock[]
9 | properties: {
10 | todoistid?: string
11 | comments?: string
12 | attachments?: string
13 | due?: string
14 | }
15 | }
16 |
17 | export const handleComments = async (id: string) => {
18 | const api = new TodoistApi(logseq.settings!.apiToken as string)
19 | const comments = await api.getComments({ taskId: id })
20 |
21 | if (comments.length === 0) return {}
22 |
23 | const textComments = comments
24 | .filter((comment) => !comment.attachment)
25 | .map((comment) => comment.content)
26 | .join(', ')
27 | const attachments = comments
28 | .filter((comment) => comment.attachment)
29 | .map((comment) => {
30 | const { fileUrl, fileName } = comment.attachment!
31 | // Todoist implements a redirect behind cloudflare, hence no point supporting image markdown
32 | return `[${fileName}](${fileUrl})`
33 | })
34 | .join(', ')
35 |
36 | return {
37 | comments: textComments,
38 | attachments,
39 | }
40 | }
41 |
42 | export const buildRootTasks = async (tasks: Task[]) => {
43 | const taskMap: Record = {}
44 |
45 | try {
46 | await Promise.all(
47 | tasks.map(async (task) => {
48 | const comments = await handleComments(task.id)
49 |
50 | // Handle due date
51 | let content = task.due
52 | ? `${task.content}
53 | ${getDeadlineDateDay(new Date(task.due.date))}`
54 | : task.content
55 |
56 | // Handle append todo
57 | content = logseq.settings!.retrieveAppendTodo
58 | ? `TODO ${content}`
59 | : content
60 |
61 | // Handle created at
62 | const preferredDateFormat = (await logseq.App.getUserConfigs())
63 | .preferredDateFormat
64 | const createdDate = getDateForPage(
65 | new Date(task.createdAt),
66 | preferredDateFormat,
67 | )
68 |
69 | taskMap[task.id] = {
70 | content: content,
71 | children: [],
72 | properties: {
73 | ...(logseq.settings!.retrieveAppendCreationDateTime! && {
74 | created: createdDate,
75 | }),
76 | ...(logseq.settings!.appendTodoistId! && { todoistid: task.id }),
77 | ...(comments.comments && { comments: comments.comments }),
78 | ...(comments.attachments && { attachments: comments.attachments }),
79 | },
80 | }
81 | }),
82 | )
83 |
84 | const rootTasks: TaskBlock[] = []
85 | tasks.forEach((task) => {
86 | const taskBlock = taskMap[task.id]
87 | if (task.parentId === null) {
88 | if (!taskBlock) return
89 | rootTasks.push(taskBlock)
90 | } else {
91 | const parentTask = taskMap[task.parentId!]
92 | if (parentTask) {
93 | if (!taskBlock) return
94 | parentTask.children.push(taskBlock)
95 | }
96 | }
97 | })
98 |
99 | return rootTasks
100 | } catch (error) {
101 | console.error(error)
102 | logseq.UI.showMsg('Unable to build root tasks', 'error')
103 | return []
104 | }
105 | }
106 |
107 | export const deleteAllTasks = async (tasksArr: Task[]) => {
108 | const api = new TodoistApi(logseq.settings!.apiToken as string)
109 | try {
110 | for (const task of tasksArr) {
111 | await api.deleteTask(task.id)
112 | }
113 | } catch (e) {
114 | logseq.UI.showMsg(`Error deleting tasks: ${(e as Error).message}`, 'error')
115 | return
116 | }
117 | }
118 |
119 | export const retrieveTasks = async (
120 | taskParams: 'default' | 'today' | 'custom',
121 | customFilter?: string,
122 | ) => {
123 | const msgKey = await logseq.UI.showMsg('Getting tasks...')
124 |
125 | const api = new TodoistApi(logseq.settings!.apiToken as string)
126 |
127 | // Insert blocks
128 | let allTasks: Task[] = []
129 |
130 | try {
131 | switch (taskParams) {
132 | case 'default': {
133 | if (logseq.settings!.retrieveDefaultProject === '--- ---') {
134 | await logseq.UI.showMsg('Please select a default project', 'error')
135 | return []
136 | }
137 | const tasks = await api.getTasks({
138 | projectId: getIdFromString(
139 | logseq.settings!.retrieveDefaultProject as string,
140 | ),
141 | })
142 | allTasks = [...allTasks, ...tasks]
143 | break
144 | }
145 |
146 | case 'today': {
147 | const tasks = await api.getTasks({ filter: 'today' })
148 | allTasks = [...allTasks, ...tasks]
149 | break
150 | }
151 |
152 | case 'custom': {
153 | const tasks = await api.getTasks({ filter: customFilter })
154 | allTasks = [...allTasks, ...tasks]
155 | break
156 | }
157 |
158 | default:
159 | break
160 | }
161 | logseq.UI.closeMsg(msgKey)
162 |
163 | return allTasks
164 | } catch (error) {
165 | console.log(error)
166 | logseq.UI.showMsg(`Error: ${(error as Error).message}`, 'error')
167 | return []
168 | }
169 | }
170 |
--------------------------------------------------------------------------------
/src/features/retrieve/insert-tasks-into-graph.ts:
--------------------------------------------------------------------------------
1 | import { Task } from '@doist/todoist-api-typescript'
2 |
3 | import { getNameFromString } from '../helpers'
4 | import { buildRootTasks } from '.'
5 |
6 | export const insertTasksIntoGraph = async (tasks: Task[], uuid: string) => {
7 | const rootTasks = await buildRootTasks(tasks)
8 | if (rootTasks.length === 0) {
9 | return
10 | }
11 |
12 | await logseq.Editor.insertBatchBlock(uuid, rootTasks, { before: true })
13 |
14 | if (logseq.settings!.projectNameAsParentBlk) {
15 | await logseq.Editor.updateBlock(
16 | uuid,
17 | getNameFromString(logseq.settings!.retrieveDefaultProject as string),
18 | )
19 | } else {
20 | await logseq.Editor.removeBlock(uuid)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/features/send/components/SendTask.tsx:
--------------------------------------------------------------------------------
1 | import './style.css'
2 | import '@mantine/core/styles.css'
3 |
4 | import {
5 | Button,
6 | Flex,
7 | MantineProvider,
8 | MultiSelect,
9 | Pill,
10 | Select,
11 | Space,
12 | Stack,
13 | TextInput,
14 | Title,
15 | } from '@mantine/core'
16 | import { useCallback } from 'react'
17 | import { Controller, useForm } from 'react-hook-form'
18 |
19 | import { THEME } from '../../../constants'
20 | import { sendTask } from '..'
21 |
22 | interface SendTaskProps {
23 | content: string
24 | projects: string[]
25 | labels: string[]
26 | uuid: string
27 | }
28 |
29 | export interface FormInput {
30 | task: string
31 | project: string
32 | label: string[]
33 | priority: string
34 | due: string
35 | uuid: string
36 | }
37 |
38 | export const SendTask = ({
39 | content,
40 | projects,
41 | labels,
42 | uuid,
43 | }: SendTaskProps) => {
44 | const {
45 | control,
46 | handleSubmit,
47 | reset,
48 | formState: { errors },
49 | } = useForm({
50 | defaultValues: {
51 | task: content.trim(),
52 | project: '--- ---',
53 | priority: '',
54 | uuid: uuid,
55 | due: '',
56 | },
57 | })
58 |
59 | const submitTask = useCallback(
60 | (data: FormInput) => {
61 | sendTask(data)
62 | logseq.UI.showMsg('Task sent to Todoist', 'success', { timeout: 3000 })
63 | reset()
64 | logseq.hideMainUI()
65 | },
66 | [uuid],
67 | )
68 |
69 | return (
70 |
71 |
72 |
80 | Todoist: Send Task
81 |
82 | {content}
83 |
84 |
85 |
142 |
143 |
144 |
145 | )
146 | }
147 |
--------------------------------------------------------------------------------
/src/features/send/components/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: none !important;
3 | }
4 |
--------------------------------------------------------------------------------
/src/features/send/index.ts:
--------------------------------------------------------------------------------
1 | import { TodoistApi } from '@doist/todoist-api-typescript'
2 |
3 | import { getIdFromString, getNameFromString } from '../helpers'
4 | import { FormInput } from './components/SendTask'
5 |
6 | export const removeTaskFlags = (content: string): string => {
7 | const taskFlags = ['TODO', 'DOING', 'NOW', 'LATER', 'DONE']
8 | for (const f of taskFlags) {
9 | if (content.includes(f)) {
10 | content = content.replace(f, '')
11 | }
12 | }
13 | return content
14 | }
15 |
16 | export const sendTask = async ({
17 | task,
18 | project,
19 | label,
20 | priority,
21 | due,
22 | uuid,
23 | }: FormInput) => {
24 | if (logseq.settings!.apiToken === '') {
25 | logseq.UI.showMsg('Invalid API token', 'error')
26 | return
27 | }
28 |
29 | const api = new TodoistApi(logseq.settings!.apiToken as string)
30 |
31 | const currGraph = await logseq.App.getCurrentGraph()
32 | const currGraphName = currGraph?.name
33 |
34 | const sendObj = {
35 | content: removeTaskFlags(task),
36 | description: logseq.settings!.sendAppendUri
37 | ? `[Link to Logseq](logseq://graph/${currGraphName}?block-id=${uuid})`
38 | : '',
39 | ...(project !== '--- ---' && { projectId: getIdFromString(project) }),
40 | ...(label[0] !== '--- ---' && {
41 | labels: label.map((l) => getNameFromString(l)),
42 | }),
43 | ...(priority && { priority: parseInt(priority) }),
44 | ...(due !== '' && { dueString: due }),
45 | }
46 |
47 | try {
48 | const res = await api.addTask(sendObj)
49 | logseq.UI.showMsg('Task sent successfully', 'success', { timeout: 3000 })
50 | return res
51 | } catch (error) {
52 | console.error(error)
53 | await logseq.UI.showMsg(`Task was not sent: ${(error as Error).message}`)
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/handleListeners.ts:
--------------------------------------------------------------------------------
1 | export default function handleListeners() {
2 | //ESC
3 | document.addEventListener(
4 | 'keydown',
5 | function (e) {
6 | if (e.key === 'Escape') {
7 | logseq.hideMainUI({ restoreEditingCursor: true })
8 | }
9 | e.stopPropagation()
10 | },
11 | false,
12 | )
13 |
14 | // Click
15 | // document.addEventListener("click", (e) => {
16 | // if (!(e.target as HTMLElement).closest(".sendPopup")) {
17 | // logseq.hideMainUI({ restoreEditingCursor: true });
18 | // }
19 | // e.stopPropagation();
20 | // });
21 | }
22 |
--------------------------------------------------------------------------------
/src/index.tsx:
--------------------------------------------------------------------------------
1 | import '@logseq/libs'
2 |
3 | import { createRoot } from 'react-dom/client'
4 |
5 | import { getAllLabels, getAllProjects } from './features/helpers'
6 | import { retrieveTasks } from './features/retrieve'
7 | import { insertTasksIntoGraph } from './features/retrieve/insert-tasks-into-graph'
8 | import { sendTask } from './features/send'
9 | import { SendTask } from './features/send/components/SendTask'
10 | import handleListeners from './handleListeners'
11 | import { callSettings } from './settings'
12 |
13 | const main = async () => {
14 | console.log('logseq-todoist-plugin loaded')
15 | handleListeners()
16 |
17 | if (logseq.settings!.apiToken === '') {
18 | // Check if it's a new install
19 | await logseq.UI.showMsg(
20 | 'Please key in your API key before using the plugin',
21 | 'error',
22 | )
23 | }
24 | const projects = await getAllProjects()
25 | const labels = await getAllLabels()
26 | callSettings(projects, labels)
27 |
28 | // const templates = await logseq.App.getCurrentGraphTemplates()
29 | // console.log('Templates', templates)
30 |
31 | // RETRIEVE TASKS
32 | logseq.Editor.registerSlashCommand('Todoist: Retrieve Tasks', async (e) => {
33 | const tasks = await retrieveTasks('default')
34 | if (tasks.length > 0) await insertTasksIntoGraph(tasks, e.uuid)
35 | })
36 |
37 | logseq.Editor.registerSlashCommand(
38 | "Todoist: Retrieve Today's Tasks",
39 | async (e) => {
40 | const tasks = await retrieveTasks('today')
41 | if (tasks.length > 0) await insertTasksIntoGraph(tasks, e.uuid)
42 | },
43 | )
44 |
45 | logseq.Editor.registerSlashCommand(
46 | 'Todoist: Retrieve Custom Filter',
47 | async (e) => {
48 | const content = await logseq.Editor.getEditingBlockContent()
49 | if (content.length === 0) {
50 | logseq.UI.showMsg('Cannot retrieve with empty filter', 'error')
51 | return
52 | }
53 | const tasks = await retrieveTasks('custom', content)
54 | if (tasks.length > 0) {
55 | await logseq.Editor.updateBlock(e.uuid, '') // Clear block first since it contains the filter
56 | await insertTasksIntoGraph(tasks, e.uuid)
57 | }
58 | },
59 | )
60 |
61 | // SEND TASKS
62 | const el = document.getElementById('app')
63 | if (!el) return
64 | const root = createRoot(el)
65 |
66 | logseq.Editor.registerSlashCommand(
67 | 'Todoist: Send Task (manual)',
68 | async (e) => {
69 | const content = await logseq.Editor.getEditingBlockContent()
70 | if (content.length === 0) {
71 | logseq.UI.showMsg('Unable to send empty task', 'error')
72 | return
73 | }
74 | const msgKey = await logseq.UI.showMsg(
75 | 'Getting projects and labels',
76 | 'success',
77 | )
78 | const allProjects = await getAllProjects()
79 | const allLabels = await getAllLabels()
80 | logseq.UI.closeMsg(msgKey)
81 |
82 | root.render(
83 | ,
89 | )
90 | logseq.showMainUI()
91 | },
92 | )
93 |
94 | logseq.Editor.registerSlashCommand('Todoist: Send Task', async (e) => {
95 | const content = await logseq.Editor.getEditingBlockContent()
96 | if (content.length === 0) {
97 | logseq.UI.showMsg('Unable to send empty task', 'error')
98 | return
99 | }
100 |
101 | // If default project set, don't show popup
102 | if (logseq.settings!.sendDefaultProject !== '--- ---') {
103 | await sendTask({
104 | task: content,
105 | project: logseq.settings!.sendDefaultProject as string,
106 | label: [logseq.settings!.sendDefaultLabel as string],
107 | due: logseq.settings!.sendDefaultDeadline ? 'today' : '',
108 | priority: '1',
109 | uuid: e.uuid,
110 | })
111 | } else {
112 | // If no default project set, show popup
113 | const msgKey = await logseq.UI.showMsg(
114 | 'Getting projects and labels',
115 | 'success',
116 | )
117 | const allProjects = await getAllProjects()
118 | const allLabels = await getAllLabels()
119 | logseq.UI.closeMsg(msgKey)
120 |
121 | root.render(
122 | ,
128 | )
129 | logseq.showMainUI()
130 | }
131 | })
132 | }
133 |
134 | logseq.ready(main).catch(console.error)
135 |
--------------------------------------------------------------------------------
/src/settings/index.ts:
--------------------------------------------------------------------------------
1 | import { SettingSchemaDesc } from '@logseq/libs/dist/LSPlugin.user'
2 |
3 | export const callSettings = async (projects: string[], labels: string[]) => {
4 | const settings: SettingSchemaDesc[] = [
5 | {
6 | key: 'apiToken',
7 | type: 'string',
8 | default: '',
9 | title: 'API Token',
10 | description:
11 | 'Please enter your API token and restart Logseq. You can retrieve your API token from your Todoist developer dashboard.',
12 | },
13 | {
14 | key: '',
15 | type: 'heading',
16 | default: '',
17 | title: 'Sending Tasks',
18 | description: '',
19 | },
20 | {
21 | key: 'sendDefaultProject',
22 | type: 'enum',
23 | default: '--- ---',
24 | enumChoices: projects,
25 | enumPicker: 'select',
26 | title: 'Default Project',
27 | description:
28 | 'Default project to send tasks to. If this is set, tasks will be sent automatically without the popup.',
29 | },
30 | {
31 | key: 'sendDefaultLabel',
32 | type: 'enum',
33 | default: '--- ---',
34 | enumChoices: labels,
35 | enumPicker: 'select',
36 | title: 'Default Label',
37 | description: 'Default label to label tasks.',
38 | },
39 | {
40 | key: 'sendDefaultDeadline',
41 | type: 'boolean',
42 | default: true,
43 | title: 'Default Deadline',
44 | description: 'If set to true, default deadline will be set to today.',
45 | },
46 | {
47 | key: 'sendAppendUri',
48 | type: 'boolean',
49 | default: true,
50 | title: 'Append Logseq URI',
51 | description:
52 | 'If set to true, all tasks sent to Todoist will have the Logseq URI appended.',
53 | },
54 | {
55 | key: '',
56 | type: 'heading',
57 | default: '',
58 | title: 'Retrieving Tasks',
59 | description: '',
60 | },
61 | {
62 | key: 'retrieveDefaultProject',
63 | type: 'enum',
64 | default: '--- ---',
65 | enumChoices: projects,
66 | enumPicker: 'select',
67 | title: 'Default Project',
68 | description: 'Default project to retrieve tasks from',
69 | },
70 | {
71 | key: 'projectNameAsParentBlk',
72 | type: 'boolean',
73 | default: false,
74 | title: 'Set Project Name as Parent Block',
75 | description:
76 | 'If true, tasks will be added under a parent block with their project name.',
77 | },
78 | {
79 | key: 'retrieveAppendTodo',
80 | type: 'boolean',
81 | default: true,
82 | title: 'Append TODO',
83 | description:
84 | 'If set to true, all retrieved tasks will have a TODO appended.',
85 | },
86 | {
87 | key: 'retrieveAppendTodoistId',
88 | type: 'boolean',
89 | default: true,
90 | title: 'Append Todoist ID',
91 | description:
92 | 'If set to true, all retrieved tasks will have their todoistId appended.',
93 | },
94 | {
95 | key: 'retrieveAppendUrl',
96 | type: 'boolean',
97 | default: false,
98 | title: 'Append URL',
99 | description:
100 | 'If set to true, all retrieved tasks will have a Todoist URL appended.',
101 | },
102 | {
103 | key: 'retrieveClearTasks',
104 | type: 'boolean',
105 | default: false,
106 | title: 'Clear Tasks from Todoist',
107 | description:
108 | 'If set to true, retrieved tasks will be deleted in Todoist.',
109 | },
110 | {
111 | key: 'retrieveAppendCreationDateTime',
112 | type: 'boolean',
113 | default: false,
114 | title: 'Append Creation Date and Time',
115 | description:
116 | 'If set to true, all retrieved tasks will have their creation date and time appended.',
117 | },
118 | ]
119 | logseq.useSettingsSchema(settings)
120 | }
121 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "jsx": "react-jsx",
4 | "target": "es2017",
5 | "lib": [
6 | "dom",
7 | "dom.iterable",
8 | "esnext"
9 | ],
10 | "allowJs": true,
11 | "checkJs": true,
12 | "skipLibCheck": true,
13 | "strict": true,
14 | "forceConsistentCasingInFileNames": true,
15 | "noEmit": true,
16 | "esModuleInterop": true,
17 | "module": "esnext",
18 | "moduleResolution": "node",
19 | "resolveJsonModule": true,
20 | "isolatedModules": true,
21 | "incremental": true,
22 | "noUncheckedIndexedAccess": true,
23 | "baseUrl": "./",
24 | "paths": {
25 | "../*": [
26 | "src/*"
27 | ]
28 | }
29 | },
30 | "include": [
31 | "**/*.ts",
32 | "**/*.tsx",
33 | "**/*.cjs",
34 | "**/*.mjs"
35 | ],
36 | "exclude": [
37 | "node_modules",
38 | "./dist/**/*",
39 | "./screenshots",
40 | "tailwind.config.js"
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import logseqDevPlugin from 'vite-plugin-logseq'
3 |
4 | export default defineConfig({
5 | plugins: [logseqDevPlugin()],
6 | })
7 |
--------------------------------------------------------------------------------