├── .gitignore
├── README.md
├── backend
├── .gitignore
├── .vscode
│ └── extensions.json
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── src-tauri
│ ├── .gitignore
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── build.rs
│ ├── icons
│ │ ├── 128x128.png
│ │ ├── 128x128@2x.png
│ │ ├── 32x32.png
│ │ ├── Square107x107Logo.png
│ │ ├── Square142x142Logo.png
│ │ ├── Square150x150Logo.png
│ │ ├── Square284x284Logo.png
│ │ ├── Square30x30Logo.png
│ │ ├── Square310x310Logo.png
│ │ ├── Square44x44Logo.png
│ │ ├── Square71x71Logo.png
│ │ ├── Square89x89Logo.png
│ │ ├── StoreLogo.png
│ │ ├── icon.icns
│ │ ├── icon.ico
│ │ └── icon.png
│ ├── src
│ │ └── main.rs
│ └── tauri.conf.json
├── src
│ ├── assets
│ │ ├── tauri.svg
│ │ ├── typescript.svg
│ │ └── vite.svg
│ ├── main.ts
│ └── styles.css
├── tsconfig.json
└── vite.config.ts
└── frontend
├── .env.example
├── .gitignore
├── README.md
├── app
├── api
│ └── generate
│ │ └── route.ts
├── bookmarks
│ └── page.tsx
├── components
│ ├── bookmark-button.tsx
│ ├── create-bookmark-dialog.tsx
│ ├── create-goal-dialog.tsx
│ ├── dialog.tsx
│ ├── editor.tsx
│ ├── footer.tsx
│ ├── goals-button.tsx
│ ├── maximize-button.tsx
│ ├── navbar.tsx
│ ├── quit-button.tsx
│ └── tooltip.tsx
├── favicon.ico
├── globals.css
├── goals
│ └── page.tsx
├── home
│ └── page.tsx
├── layout.tsx
├── note
│ └── [date]
│ │ └── page.tsx
└── page.tsx
├── lib
├── hooks
│ └── use-global-shorcut.ts
├── types
│ ├── database.types.ts
│ └── index.ts
└── utils.ts
├── middleware.ts
├── next-env.d.ts
├── next.config.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── tailwind.config.ts
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Endo
4 |
5 |
6 | Dead-simple menubar app for taking notes on your mac.
7 |
8 |
9 | ## Introduction
10 |
11 | This is a [Next.js](https://nextjs.org/) and [Tauri](https://tauri.app/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) and [`tauri init`](https://tauri.app/v1/guides/getting-started/setup/next-js/#create-the-rust-project). The text editor is an instance of [Tiptap](https://tiptap.dev/) bootstrapped using [Novel](https://novel.sh). The CSS is primarily [Tailwind](https://tailwindcss.com/docs).
12 |
13 | _Note: This repo is tested for macOS primarily, running on Windows may require additional debugging._
14 |
15 | ## Getting Started
16 |
17 | First, make sure you are set up to run a Rust project. [Check documentation here](https://tauri.app/v1/guides/getting-started/prerequisites#setting-up-macos).
18 |
19 | Clone the repo, install depedancies, and run the development server:
20 |
21 | ```bash
22 | cd backend
23 | npm install
24 | npm run tauri dev
25 | ```
26 |
27 | The local instance of the app should show in your menubar at this point.
28 |
29 | If you want to run the frontend only:
30 |
31 | ```bash
32 | cd frontend
33 | npm run dev
34 | ```
35 |
36 | The local dev server will run on `http://localhost:3000`.
37 |
38 | ## Build an app
39 |
40 | To build an app ready to be installed and used locally, run the following code
41 |
42 | ```bash
43 | cd backend
44 | npm run tauri build
45 | ```
46 |
47 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
48 |
49 | ## Features
50 |
51 | - [x] Add global keyboard shortcut to toggle app
52 | - [x] `esc` hides app
53 | - [x] Add support for images
54 | - [ ] Add global reminders (reminders for tasks that are on a longer timescale) e.g: "Follow up with Adam on Monday"
55 | - [ ] Add timer in footer
56 | - [x] Add Supabase backend
57 |
--------------------------------------------------------------------------------
/backend/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/backend/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"]
3 | }
4 |
--------------------------------------------------------------------------------
/backend/README.md:
--------------------------------------------------------------------------------
1 | # Backend
2 |
3 | This project is bootstrapped with `create tauri-app` (Tauri + Vanilla TS). This directory is reponsible for creating the Tauri menubar window and for remotely calling the frontend using a URL.
4 |
--------------------------------------------------------------------------------
/backend/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Endo
8 |
9 |
10 |
40 |
41 |
42 |
43 |
46 |
Endo
47 |
48 |
No Internet Connection.
49 |
53 | Reload
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/backend/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "backend",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "backend",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "@tauri-apps/api": "^1.4.0"
12 | },
13 | "devDependencies": {
14 | "@tauri-apps/cli": "^1.4.0",
15 | "typescript": "^5.0.2",
16 | "vite": "^4.4.4"
17 | }
18 | },
19 | "node_modules/@esbuild/android-arm": {
20 | "version": "0.18.20",
21 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
22 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
23 | "cpu": [
24 | "arm"
25 | ],
26 | "dev": true,
27 | "optional": true,
28 | "os": [
29 | "android"
30 | ],
31 | "engines": {
32 | "node": ">=12"
33 | }
34 | },
35 | "node_modules/@esbuild/android-arm64": {
36 | "version": "0.18.20",
37 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
38 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
39 | "cpu": [
40 | "arm64"
41 | ],
42 | "dev": true,
43 | "optional": true,
44 | "os": [
45 | "android"
46 | ],
47 | "engines": {
48 | "node": ">=12"
49 | }
50 | },
51 | "node_modules/@esbuild/android-x64": {
52 | "version": "0.18.20",
53 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
54 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
55 | "cpu": [
56 | "x64"
57 | ],
58 | "dev": true,
59 | "optional": true,
60 | "os": [
61 | "android"
62 | ],
63 | "engines": {
64 | "node": ">=12"
65 | }
66 | },
67 | "node_modules/@esbuild/darwin-arm64": {
68 | "version": "0.18.20",
69 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
70 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
71 | "cpu": [
72 | "arm64"
73 | ],
74 | "dev": true,
75 | "optional": true,
76 | "os": [
77 | "darwin"
78 | ],
79 | "engines": {
80 | "node": ">=12"
81 | }
82 | },
83 | "node_modules/@esbuild/darwin-x64": {
84 | "version": "0.18.20",
85 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
86 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
87 | "cpu": [
88 | "x64"
89 | ],
90 | "dev": true,
91 | "optional": true,
92 | "os": [
93 | "darwin"
94 | ],
95 | "engines": {
96 | "node": ">=12"
97 | }
98 | },
99 | "node_modules/@esbuild/freebsd-arm64": {
100 | "version": "0.18.20",
101 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
102 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
103 | "cpu": [
104 | "arm64"
105 | ],
106 | "dev": true,
107 | "optional": true,
108 | "os": [
109 | "freebsd"
110 | ],
111 | "engines": {
112 | "node": ">=12"
113 | }
114 | },
115 | "node_modules/@esbuild/freebsd-x64": {
116 | "version": "0.18.20",
117 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
118 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
119 | "cpu": [
120 | "x64"
121 | ],
122 | "dev": true,
123 | "optional": true,
124 | "os": [
125 | "freebsd"
126 | ],
127 | "engines": {
128 | "node": ">=12"
129 | }
130 | },
131 | "node_modules/@esbuild/linux-arm": {
132 | "version": "0.18.20",
133 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
134 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
135 | "cpu": [
136 | "arm"
137 | ],
138 | "dev": true,
139 | "optional": true,
140 | "os": [
141 | "linux"
142 | ],
143 | "engines": {
144 | "node": ">=12"
145 | }
146 | },
147 | "node_modules/@esbuild/linux-arm64": {
148 | "version": "0.18.20",
149 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
150 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
151 | "cpu": [
152 | "arm64"
153 | ],
154 | "dev": true,
155 | "optional": true,
156 | "os": [
157 | "linux"
158 | ],
159 | "engines": {
160 | "node": ">=12"
161 | }
162 | },
163 | "node_modules/@esbuild/linux-ia32": {
164 | "version": "0.18.20",
165 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
166 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
167 | "cpu": [
168 | "ia32"
169 | ],
170 | "dev": true,
171 | "optional": true,
172 | "os": [
173 | "linux"
174 | ],
175 | "engines": {
176 | "node": ">=12"
177 | }
178 | },
179 | "node_modules/@esbuild/linux-loong64": {
180 | "version": "0.18.20",
181 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
182 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
183 | "cpu": [
184 | "loong64"
185 | ],
186 | "dev": true,
187 | "optional": true,
188 | "os": [
189 | "linux"
190 | ],
191 | "engines": {
192 | "node": ">=12"
193 | }
194 | },
195 | "node_modules/@esbuild/linux-mips64el": {
196 | "version": "0.18.20",
197 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
198 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
199 | "cpu": [
200 | "mips64el"
201 | ],
202 | "dev": true,
203 | "optional": true,
204 | "os": [
205 | "linux"
206 | ],
207 | "engines": {
208 | "node": ">=12"
209 | }
210 | },
211 | "node_modules/@esbuild/linux-ppc64": {
212 | "version": "0.18.20",
213 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
214 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
215 | "cpu": [
216 | "ppc64"
217 | ],
218 | "dev": true,
219 | "optional": true,
220 | "os": [
221 | "linux"
222 | ],
223 | "engines": {
224 | "node": ">=12"
225 | }
226 | },
227 | "node_modules/@esbuild/linux-riscv64": {
228 | "version": "0.18.20",
229 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
230 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
231 | "cpu": [
232 | "riscv64"
233 | ],
234 | "dev": true,
235 | "optional": true,
236 | "os": [
237 | "linux"
238 | ],
239 | "engines": {
240 | "node": ">=12"
241 | }
242 | },
243 | "node_modules/@esbuild/linux-s390x": {
244 | "version": "0.18.20",
245 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
246 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
247 | "cpu": [
248 | "s390x"
249 | ],
250 | "dev": true,
251 | "optional": true,
252 | "os": [
253 | "linux"
254 | ],
255 | "engines": {
256 | "node": ">=12"
257 | }
258 | },
259 | "node_modules/@esbuild/linux-x64": {
260 | "version": "0.18.20",
261 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
262 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
263 | "cpu": [
264 | "x64"
265 | ],
266 | "dev": true,
267 | "optional": true,
268 | "os": [
269 | "linux"
270 | ],
271 | "engines": {
272 | "node": ">=12"
273 | }
274 | },
275 | "node_modules/@esbuild/netbsd-x64": {
276 | "version": "0.18.20",
277 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
278 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
279 | "cpu": [
280 | "x64"
281 | ],
282 | "dev": true,
283 | "optional": true,
284 | "os": [
285 | "netbsd"
286 | ],
287 | "engines": {
288 | "node": ">=12"
289 | }
290 | },
291 | "node_modules/@esbuild/openbsd-x64": {
292 | "version": "0.18.20",
293 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
294 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
295 | "cpu": [
296 | "x64"
297 | ],
298 | "dev": true,
299 | "optional": true,
300 | "os": [
301 | "openbsd"
302 | ],
303 | "engines": {
304 | "node": ">=12"
305 | }
306 | },
307 | "node_modules/@esbuild/sunos-x64": {
308 | "version": "0.18.20",
309 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
310 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
311 | "cpu": [
312 | "x64"
313 | ],
314 | "dev": true,
315 | "optional": true,
316 | "os": [
317 | "sunos"
318 | ],
319 | "engines": {
320 | "node": ">=12"
321 | }
322 | },
323 | "node_modules/@esbuild/win32-arm64": {
324 | "version": "0.18.20",
325 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
326 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
327 | "cpu": [
328 | "arm64"
329 | ],
330 | "dev": true,
331 | "optional": true,
332 | "os": [
333 | "win32"
334 | ],
335 | "engines": {
336 | "node": ">=12"
337 | }
338 | },
339 | "node_modules/@esbuild/win32-ia32": {
340 | "version": "0.18.20",
341 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
342 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
343 | "cpu": [
344 | "ia32"
345 | ],
346 | "dev": true,
347 | "optional": true,
348 | "os": [
349 | "win32"
350 | ],
351 | "engines": {
352 | "node": ">=12"
353 | }
354 | },
355 | "node_modules/@esbuild/win32-x64": {
356 | "version": "0.18.20",
357 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
358 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
359 | "cpu": [
360 | "x64"
361 | ],
362 | "dev": true,
363 | "optional": true,
364 | "os": [
365 | "win32"
366 | ],
367 | "engines": {
368 | "node": ">=12"
369 | }
370 | },
371 | "node_modules/@tauri-apps/api": {
372 | "version": "1.4.0",
373 | "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.4.0.tgz",
374 | "integrity": "sha512-Jd6HPoTM1PZSFIzq7FB8VmMu3qSSyo/3lSwLpoapW+lQ41CL5Dow2KryLg+gyazA/58DRWI9vu/XpEeHK4uMdw==",
375 | "engines": {
376 | "node": ">= 14.6.0",
377 | "npm": ">= 6.6.0",
378 | "yarn": ">= 1.19.1"
379 | },
380 | "funding": {
381 | "type": "opencollective",
382 | "url": "https://opencollective.com/tauri"
383 | }
384 | },
385 | "node_modules/@tauri-apps/cli": {
386 | "version": "1.4.0",
387 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.4.0.tgz",
388 | "integrity": "sha512-VXYr2i2iVFl98etQSQsqLzXgX96bnWiNZd1YADgatqwy/qecbd6Kl5ZAPB5R4ynsgE8A1gU7Fbzh7dCEQYFfmA==",
389 | "dev": true,
390 | "bin": {
391 | "tauri": "tauri.js"
392 | },
393 | "engines": {
394 | "node": ">= 10"
395 | },
396 | "funding": {
397 | "type": "opencollective",
398 | "url": "https://opencollective.com/tauri"
399 | },
400 | "optionalDependencies": {
401 | "@tauri-apps/cli-darwin-arm64": "1.4.0",
402 | "@tauri-apps/cli-darwin-x64": "1.4.0",
403 | "@tauri-apps/cli-linux-arm-gnueabihf": "1.4.0",
404 | "@tauri-apps/cli-linux-arm64-gnu": "1.4.0",
405 | "@tauri-apps/cli-linux-arm64-musl": "1.4.0",
406 | "@tauri-apps/cli-linux-x64-gnu": "1.4.0",
407 | "@tauri-apps/cli-linux-x64-musl": "1.4.0",
408 | "@tauri-apps/cli-win32-arm64-msvc": "1.4.0",
409 | "@tauri-apps/cli-win32-ia32-msvc": "1.4.0",
410 | "@tauri-apps/cli-win32-x64-msvc": "1.4.0"
411 | }
412 | },
413 | "node_modules/@tauri-apps/cli-darwin-arm64": {
414 | "version": "1.4.0",
415 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.4.0.tgz",
416 | "integrity": "sha512-nA/ml0SfUt6/CYLVbHmT500Y+ijqsuv5+s9EBnVXYSLVg9kbPUZJJHluEYK+xKuOj6xzyuT/+rZFMRapmJD3jQ==",
417 | "cpu": [
418 | "arm64"
419 | ],
420 | "dev": true,
421 | "optional": true,
422 | "os": [
423 | "darwin"
424 | ],
425 | "engines": {
426 | "node": ">= 10"
427 | }
428 | },
429 | "node_modules/@tauri-apps/cli-darwin-x64": {
430 | "version": "1.4.0",
431 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.4.0.tgz",
432 | "integrity": "sha512-ov/F6Zr+dg9B0PtRu65stFo2G0ow2TUlneqYYrkj+vA3n+moWDHfVty0raDjMLQbQt3rv3uayFMXGPMgble9OA==",
433 | "cpu": [
434 | "x64"
435 | ],
436 | "dev": true,
437 | "optional": true,
438 | "os": [
439 | "darwin"
440 | ],
441 | "engines": {
442 | "node": ">= 10"
443 | }
444 | },
445 | "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": {
446 | "version": "1.4.0",
447 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.4.0.tgz",
448 | "integrity": "sha512-zwjbiMncycXDV7doovymyKD7sCg53ouAmfgpUqEBOTY3vgBi9TwijyPhJOqoG5vUVWhouNBC08akGmE4dja15g==",
449 | "cpu": [
450 | "arm"
451 | ],
452 | "dev": true,
453 | "optional": true,
454 | "os": [
455 | "linux"
456 | ],
457 | "engines": {
458 | "node": ">= 10"
459 | }
460 | },
461 | "node_modules/@tauri-apps/cli-linux-arm64-gnu": {
462 | "version": "1.4.0",
463 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.4.0.tgz",
464 | "integrity": "sha512-5MCBcziqXC72mMXnkZU68mutXIR6zavDxopArE2gQtK841IlE06bIgtLi0kUUhlFJk2nhPRgiDgdLbrPlyt7fw==",
465 | "cpu": [
466 | "arm64"
467 | ],
468 | "dev": true,
469 | "optional": true,
470 | "os": [
471 | "linux"
472 | ],
473 | "engines": {
474 | "node": ">= 10"
475 | }
476 | },
477 | "node_modules/@tauri-apps/cli-linux-arm64-musl": {
478 | "version": "1.4.0",
479 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.4.0.tgz",
480 | "integrity": "sha512-7J3pRB6n6uNYgIfCeKt2Oz8J7oSaz2s8GGFRRH2HPxuTHrBNCinzVYm68UhVpJrL3bnGkU0ziVZLsW/iaOGfUg==",
481 | "cpu": [
482 | "arm64"
483 | ],
484 | "dev": true,
485 | "optional": true,
486 | "os": [
487 | "linux"
488 | ],
489 | "engines": {
490 | "node": ">= 10"
491 | }
492 | },
493 | "node_modules/@tauri-apps/cli-linux-x64-gnu": {
494 | "version": "1.4.0",
495 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.4.0.tgz",
496 | "integrity": "sha512-Zh5gfAJxOv5AVWxcwuueaQ2vIAhlg0d6nZui6nMyfIJ8dbf3aZQ5ZzP38sYow5h/fbvgL+3GSQxZRBIa3c2E1w==",
497 | "cpu": [
498 | "x64"
499 | ],
500 | "dev": true,
501 | "optional": true,
502 | "os": [
503 | "linux"
504 | ],
505 | "engines": {
506 | "node": ">= 10"
507 | }
508 | },
509 | "node_modules/@tauri-apps/cli-linux-x64-musl": {
510 | "version": "1.4.0",
511 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.4.0.tgz",
512 | "integrity": "sha512-OLAYoICU3FaYiTdBsI+lQTKnDHeMmFMXIApN0M+xGiOkoIOQcV9CConMPjgmJQ867+NHRNgUGlvBEAh9CiJodQ==",
513 | "cpu": [
514 | "x64"
515 | ],
516 | "dev": true,
517 | "optional": true,
518 | "os": [
519 | "linux"
520 | ],
521 | "engines": {
522 | "node": ">= 10"
523 | }
524 | },
525 | "node_modules/@tauri-apps/cli-win32-arm64-msvc": {
526 | "version": "1.4.0",
527 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.4.0.tgz",
528 | "integrity": "sha512-gZ05GENFbI6CB5MlOUsLlU0kZ9UtHn9riYtSXKT6MYs8HSPRffPHaHSL0WxsJweWh9nR5Hgh/TUU8uW3sYCzCg==",
529 | "cpu": [
530 | "arm64"
531 | ],
532 | "dev": true,
533 | "optional": true,
534 | "os": [
535 | "win32"
536 | ],
537 | "engines": {
538 | "node": ">= 10"
539 | }
540 | },
541 | "node_modules/@tauri-apps/cli-win32-ia32-msvc": {
542 | "version": "1.4.0",
543 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.4.0.tgz",
544 | "integrity": "sha512-JsetT/lTx/Zq98eo8T5CiRyF1nKeX04RO8JlJrI3ZOYsZpp/A5RJvMd/szQ17iOzwiHdge+tx7k2jHysR6oBlQ==",
545 | "cpu": [
546 | "ia32"
547 | ],
548 | "dev": true,
549 | "optional": true,
550 | "os": [
551 | "win32"
552 | ],
553 | "engines": {
554 | "node": ">= 10"
555 | }
556 | },
557 | "node_modules/@tauri-apps/cli-win32-x64-msvc": {
558 | "version": "1.4.0",
559 | "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.4.0.tgz",
560 | "integrity": "sha512-z8Olcnwp5aYhzqUAarFjqF+oELCjuYWnB2HAJHlfsYNfDCAORY5kct3Fklz8PSsubC3U2EugWn8n42DwnThurg==",
561 | "cpu": [
562 | "x64"
563 | ],
564 | "dev": true,
565 | "optional": true,
566 | "os": [
567 | "win32"
568 | ],
569 | "engines": {
570 | "node": ">= 10"
571 | }
572 | },
573 | "node_modules/esbuild": {
574 | "version": "0.18.20",
575 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
576 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
577 | "dev": true,
578 | "hasInstallScript": true,
579 | "bin": {
580 | "esbuild": "bin/esbuild"
581 | },
582 | "engines": {
583 | "node": ">=12"
584 | },
585 | "optionalDependencies": {
586 | "@esbuild/android-arm": "0.18.20",
587 | "@esbuild/android-arm64": "0.18.20",
588 | "@esbuild/android-x64": "0.18.20",
589 | "@esbuild/darwin-arm64": "0.18.20",
590 | "@esbuild/darwin-x64": "0.18.20",
591 | "@esbuild/freebsd-arm64": "0.18.20",
592 | "@esbuild/freebsd-x64": "0.18.20",
593 | "@esbuild/linux-arm": "0.18.20",
594 | "@esbuild/linux-arm64": "0.18.20",
595 | "@esbuild/linux-ia32": "0.18.20",
596 | "@esbuild/linux-loong64": "0.18.20",
597 | "@esbuild/linux-mips64el": "0.18.20",
598 | "@esbuild/linux-ppc64": "0.18.20",
599 | "@esbuild/linux-riscv64": "0.18.20",
600 | "@esbuild/linux-s390x": "0.18.20",
601 | "@esbuild/linux-x64": "0.18.20",
602 | "@esbuild/netbsd-x64": "0.18.20",
603 | "@esbuild/openbsd-x64": "0.18.20",
604 | "@esbuild/sunos-x64": "0.18.20",
605 | "@esbuild/win32-arm64": "0.18.20",
606 | "@esbuild/win32-ia32": "0.18.20",
607 | "@esbuild/win32-x64": "0.18.20"
608 | }
609 | },
610 | "node_modules/fsevents": {
611 | "version": "2.3.3",
612 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
613 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
614 | "dev": true,
615 | "hasInstallScript": true,
616 | "optional": true,
617 | "os": [
618 | "darwin"
619 | ],
620 | "engines": {
621 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
622 | }
623 | },
624 | "node_modules/nanoid": {
625 | "version": "3.3.6",
626 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
627 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
628 | "dev": true,
629 | "funding": [
630 | {
631 | "type": "github",
632 | "url": "https://github.com/sponsors/ai"
633 | }
634 | ],
635 | "bin": {
636 | "nanoid": "bin/nanoid.cjs"
637 | },
638 | "engines": {
639 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
640 | }
641 | },
642 | "node_modules/picocolors": {
643 | "version": "1.0.0",
644 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
645 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
646 | "dev": true
647 | },
648 | "node_modules/postcss": {
649 | "version": "8.4.29",
650 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
651 | "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
652 | "dev": true,
653 | "funding": [
654 | {
655 | "type": "opencollective",
656 | "url": "https://opencollective.com/postcss/"
657 | },
658 | {
659 | "type": "tidelift",
660 | "url": "https://tidelift.com/funding/github/npm/postcss"
661 | },
662 | {
663 | "type": "github",
664 | "url": "https://github.com/sponsors/ai"
665 | }
666 | ],
667 | "dependencies": {
668 | "nanoid": "^3.3.6",
669 | "picocolors": "^1.0.0",
670 | "source-map-js": "^1.0.2"
671 | },
672 | "engines": {
673 | "node": "^10 || ^12 || >=14"
674 | }
675 | },
676 | "node_modules/rollup": {
677 | "version": "3.28.1",
678 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz",
679 | "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==",
680 | "dev": true,
681 | "bin": {
682 | "rollup": "dist/bin/rollup"
683 | },
684 | "engines": {
685 | "node": ">=14.18.0",
686 | "npm": ">=8.0.0"
687 | },
688 | "optionalDependencies": {
689 | "fsevents": "~2.3.2"
690 | }
691 | },
692 | "node_modules/source-map-js": {
693 | "version": "1.0.2",
694 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
695 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
696 | "dev": true,
697 | "engines": {
698 | "node": ">=0.10.0"
699 | }
700 | },
701 | "node_modules/typescript": {
702 | "version": "5.2.2",
703 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
704 | "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
705 | "dev": true,
706 | "bin": {
707 | "tsc": "bin/tsc",
708 | "tsserver": "bin/tsserver"
709 | },
710 | "engines": {
711 | "node": ">=14.17"
712 | }
713 | },
714 | "node_modules/vite": {
715 | "version": "4.4.9",
716 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
717 | "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
718 | "dev": true,
719 | "dependencies": {
720 | "esbuild": "^0.18.10",
721 | "postcss": "^8.4.27",
722 | "rollup": "^3.27.1"
723 | },
724 | "bin": {
725 | "vite": "bin/vite.js"
726 | },
727 | "engines": {
728 | "node": "^14.18.0 || >=16.0.0"
729 | },
730 | "funding": {
731 | "url": "https://github.com/vitejs/vite?sponsor=1"
732 | },
733 | "optionalDependencies": {
734 | "fsevents": "~2.3.2"
735 | },
736 | "peerDependencies": {
737 | "@types/node": ">= 14",
738 | "less": "*",
739 | "lightningcss": "^1.21.0",
740 | "sass": "*",
741 | "stylus": "*",
742 | "sugarss": "*",
743 | "terser": "^5.4.0"
744 | },
745 | "peerDependenciesMeta": {
746 | "@types/node": {
747 | "optional": true
748 | },
749 | "less": {
750 | "optional": true
751 | },
752 | "lightningcss": {
753 | "optional": true
754 | },
755 | "sass": {
756 | "optional": true
757 | },
758 | "stylus": {
759 | "optional": true
760 | },
761 | "sugarss": {
762 | "optional": true
763 | },
764 | "terser": {
765 | "optional": true
766 | }
767 | }
768 | }
769 | }
770 | }
771 |
--------------------------------------------------------------------------------
/backend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "backend",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc && vite build",
9 | "preview": "vite preview",
10 | "tauri": "tauri"
11 | },
12 | "dependencies": {
13 | "@tauri-apps/api": "^1.4.0"
14 | },
15 | "devDependencies": {
16 | "@tauri-apps/cli": "^1.4.0",
17 | "vite": "^4.4.4",
18 | "typescript": "^5.0.2"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/backend/src-tauri/.gitignore:
--------------------------------------------------------------------------------
1 | # Generated by Cargo
2 | # will have compiled files and executables
3 | /target/
4 |
5 |
--------------------------------------------------------------------------------
/backend/src-tauri/Cargo.lock:
--------------------------------------------------------------------------------
1 | # This file is automatically @generated by Cargo.
2 | # It is not intended for manual editing.
3 | version = 3
4 |
5 | [[package]]
6 | name = "addr2line"
7 | version = "0.21.0"
8 | source = "registry+https://github.com/rust-lang/crates.io-index"
9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
10 | dependencies = [
11 | "gimli",
12 | ]
13 |
14 | [[package]]
15 | name = "adler"
16 | version = "1.0.2"
17 | source = "registry+https://github.com/rust-lang/crates.io-index"
18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
19 |
20 | [[package]]
21 | name = "aho-corasick"
22 | version = "1.0.5"
23 | source = "registry+https://github.com/rust-lang/crates.io-index"
24 | checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783"
25 | dependencies = [
26 | "memchr",
27 | ]
28 |
29 | [[package]]
30 | name = "alloc-no-stdlib"
31 | version = "2.0.4"
32 | source = "registry+https://github.com/rust-lang/crates.io-index"
33 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
34 |
35 | [[package]]
36 | name = "alloc-stdlib"
37 | version = "0.2.2"
38 | source = "registry+https://github.com/rust-lang/crates.io-index"
39 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
40 | dependencies = [
41 | "alloc-no-stdlib",
42 | ]
43 |
44 | [[package]]
45 | name = "android-tzdata"
46 | version = "0.1.1"
47 | source = "registry+https://github.com/rust-lang/crates.io-index"
48 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
49 |
50 | [[package]]
51 | name = "android_system_properties"
52 | version = "0.1.5"
53 | source = "registry+https://github.com/rust-lang/crates.io-index"
54 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
55 | dependencies = [
56 | "libc",
57 | ]
58 |
59 | [[package]]
60 | name = "anyhow"
61 | version = "1.0.75"
62 | source = "registry+https://github.com/rust-lang/crates.io-index"
63 | checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
64 |
65 | [[package]]
66 | name = "atk"
67 | version = "0.15.1"
68 | source = "registry+https://github.com/rust-lang/crates.io-index"
69 | checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd"
70 | dependencies = [
71 | "atk-sys",
72 | "bitflags 1.3.2",
73 | "glib",
74 | "libc",
75 | ]
76 |
77 | [[package]]
78 | name = "atk-sys"
79 | version = "0.15.1"
80 | source = "registry+https://github.com/rust-lang/crates.io-index"
81 | checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6"
82 | dependencies = [
83 | "glib-sys",
84 | "gobject-sys",
85 | "libc",
86 | "system-deps 6.1.1",
87 | ]
88 |
89 | [[package]]
90 | name = "autocfg"
91 | version = "1.1.0"
92 | source = "registry+https://github.com/rust-lang/crates.io-index"
93 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
94 |
95 | [[package]]
96 | name = "backend"
97 | version = "0.0.0"
98 | dependencies = [
99 | "serde",
100 | "serde_json",
101 | "tauri",
102 | "tauri-build",
103 | ]
104 |
105 | [[package]]
106 | name = "backtrace"
107 | version = "0.3.69"
108 | source = "registry+https://github.com/rust-lang/crates.io-index"
109 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
110 | dependencies = [
111 | "addr2line",
112 | "cc",
113 | "cfg-if",
114 | "libc",
115 | "miniz_oxide",
116 | "object",
117 | "rustc-demangle",
118 | ]
119 |
120 | [[package]]
121 | name = "base64"
122 | version = "0.13.1"
123 | source = "registry+https://github.com/rust-lang/crates.io-index"
124 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
125 |
126 | [[package]]
127 | name = "base64"
128 | version = "0.21.3"
129 | source = "registry+https://github.com/rust-lang/crates.io-index"
130 | checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53"
131 |
132 | [[package]]
133 | name = "bitflags"
134 | version = "1.3.2"
135 | source = "registry+https://github.com/rust-lang/crates.io-index"
136 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
137 |
138 | [[package]]
139 | name = "bitflags"
140 | version = "2.4.0"
141 | source = "registry+https://github.com/rust-lang/crates.io-index"
142 | checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
143 |
144 | [[package]]
145 | name = "block"
146 | version = "0.1.6"
147 | source = "registry+https://github.com/rust-lang/crates.io-index"
148 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
149 |
150 | [[package]]
151 | name = "block-buffer"
152 | version = "0.10.4"
153 | source = "registry+https://github.com/rust-lang/crates.io-index"
154 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
155 | dependencies = [
156 | "generic-array",
157 | ]
158 |
159 | [[package]]
160 | name = "brotli"
161 | version = "3.3.4"
162 | source = "registry+https://github.com/rust-lang/crates.io-index"
163 | checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68"
164 | dependencies = [
165 | "alloc-no-stdlib",
166 | "alloc-stdlib",
167 | "brotli-decompressor",
168 | ]
169 |
170 | [[package]]
171 | name = "brotli-decompressor"
172 | version = "2.3.4"
173 | source = "registry+https://github.com/rust-lang/crates.io-index"
174 | checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744"
175 | dependencies = [
176 | "alloc-no-stdlib",
177 | "alloc-stdlib",
178 | ]
179 |
180 | [[package]]
181 | name = "bstr"
182 | version = "1.6.2"
183 | source = "registry+https://github.com/rust-lang/crates.io-index"
184 | checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a"
185 | dependencies = [
186 | "memchr",
187 | "serde",
188 | ]
189 |
190 | [[package]]
191 | name = "bumpalo"
192 | version = "3.13.0"
193 | source = "registry+https://github.com/rust-lang/crates.io-index"
194 | checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
195 |
196 | [[package]]
197 | name = "bytemuck"
198 | version = "1.13.1"
199 | source = "registry+https://github.com/rust-lang/crates.io-index"
200 | checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
201 |
202 | [[package]]
203 | name = "byteorder"
204 | version = "1.4.3"
205 | source = "registry+https://github.com/rust-lang/crates.io-index"
206 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
207 |
208 | [[package]]
209 | name = "bytes"
210 | version = "1.4.0"
211 | source = "registry+https://github.com/rust-lang/crates.io-index"
212 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
213 |
214 | [[package]]
215 | name = "cairo-rs"
216 | version = "0.15.12"
217 | source = "registry+https://github.com/rust-lang/crates.io-index"
218 | checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc"
219 | dependencies = [
220 | "bitflags 1.3.2",
221 | "cairo-sys-rs",
222 | "glib",
223 | "libc",
224 | "thiserror",
225 | ]
226 |
227 | [[package]]
228 | name = "cairo-sys-rs"
229 | version = "0.15.1"
230 | source = "registry+https://github.com/rust-lang/crates.io-index"
231 | checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8"
232 | dependencies = [
233 | "glib-sys",
234 | "libc",
235 | "system-deps 6.1.1",
236 | ]
237 |
238 | [[package]]
239 | name = "cargo_toml"
240 | version = "0.15.3"
241 | source = "registry+https://github.com/rust-lang/crates.io-index"
242 | checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838"
243 | dependencies = [
244 | "serde",
245 | "toml 0.7.6",
246 | ]
247 |
248 | [[package]]
249 | name = "cc"
250 | version = "1.0.83"
251 | source = "registry+https://github.com/rust-lang/crates.io-index"
252 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
253 | dependencies = [
254 | "libc",
255 | ]
256 |
257 | [[package]]
258 | name = "cesu8"
259 | version = "1.1.0"
260 | source = "registry+https://github.com/rust-lang/crates.io-index"
261 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
262 |
263 | [[package]]
264 | name = "cfb"
265 | version = "0.7.3"
266 | source = "registry+https://github.com/rust-lang/crates.io-index"
267 | checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f"
268 | dependencies = [
269 | "byteorder",
270 | "fnv",
271 | "uuid",
272 | ]
273 |
274 | [[package]]
275 | name = "cfg-expr"
276 | version = "0.9.1"
277 | source = "registry+https://github.com/rust-lang/crates.io-index"
278 | checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7"
279 | dependencies = [
280 | "smallvec",
281 | ]
282 |
283 | [[package]]
284 | name = "cfg-expr"
285 | version = "0.15.4"
286 | source = "registry+https://github.com/rust-lang/crates.io-index"
287 | checksum = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9"
288 | dependencies = [
289 | "smallvec",
290 | "target-lexicon",
291 | ]
292 |
293 | [[package]]
294 | name = "cfg-if"
295 | version = "1.0.0"
296 | source = "registry+https://github.com/rust-lang/crates.io-index"
297 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
298 |
299 | [[package]]
300 | name = "chrono"
301 | version = "0.4.28"
302 | source = "registry+https://github.com/rust-lang/crates.io-index"
303 | checksum = "95ed24df0632f708f5f6d8082675bef2596f7084dee3dd55f632290bf35bfe0f"
304 | dependencies = [
305 | "android-tzdata",
306 | "iana-time-zone",
307 | "num-traits",
308 | "serde",
309 | "windows-targets",
310 | ]
311 |
312 | [[package]]
313 | name = "cocoa"
314 | version = "0.24.1"
315 | source = "registry+https://github.com/rust-lang/crates.io-index"
316 | checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a"
317 | dependencies = [
318 | "bitflags 1.3.2",
319 | "block",
320 | "cocoa-foundation",
321 | "core-foundation",
322 | "core-graphics",
323 | "foreign-types",
324 | "libc",
325 | "objc",
326 | ]
327 |
328 | [[package]]
329 | name = "cocoa-foundation"
330 | version = "0.1.1"
331 | source = "registry+https://github.com/rust-lang/crates.io-index"
332 | checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6"
333 | dependencies = [
334 | "bitflags 1.3.2",
335 | "block",
336 | "core-foundation",
337 | "core-graphics-types",
338 | "foreign-types",
339 | "libc",
340 | "objc",
341 | ]
342 |
343 | [[package]]
344 | name = "color_quant"
345 | version = "1.1.0"
346 | source = "registry+https://github.com/rust-lang/crates.io-index"
347 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
348 |
349 | [[package]]
350 | name = "combine"
351 | version = "4.6.6"
352 | source = "registry+https://github.com/rust-lang/crates.io-index"
353 | checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
354 | dependencies = [
355 | "bytes",
356 | "memchr",
357 | ]
358 |
359 | [[package]]
360 | name = "convert_case"
361 | version = "0.4.0"
362 | source = "registry+https://github.com/rust-lang/crates.io-index"
363 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
364 |
365 | [[package]]
366 | name = "core-foundation"
367 | version = "0.9.3"
368 | source = "registry+https://github.com/rust-lang/crates.io-index"
369 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
370 | dependencies = [
371 | "core-foundation-sys",
372 | "libc",
373 | ]
374 |
375 | [[package]]
376 | name = "core-foundation-sys"
377 | version = "0.8.4"
378 | source = "registry+https://github.com/rust-lang/crates.io-index"
379 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
380 |
381 | [[package]]
382 | name = "core-graphics"
383 | version = "0.22.3"
384 | source = "registry+https://github.com/rust-lang/crates.io-index"
385 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
386 | dependencies = [
387 | "bitflags 1.3.2",
388 | "core-foundation",
389 | "core-graphics-types",
390 | "foreign-types",
391 | "libc",
392 | ]
393 |
394 | [[package]]
395 | name = "core-graphics-types"
396 | version = "0.1.2"
397 | source = "registry+https://github.com/rust-lang/crates.io-index"
398 | checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33"
399 | dependencies = [
400 | "bitflags 1.3.2",
401 | "core-foundation",
402 | "libc",
403 | ]
404 |
405 | [[package]]
406 | name = "cpufeatures"
407 | version = "0.2.9"
408 | source = "registry+https://github.com/rust-lang/crates.io-index"
409 | checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
410 | dependencies = [
411 | "libc",
412 | ]
413 |
414 | [[package]]
415 | name = "crc32fast"
416 | version = "1.3.2"
417 | source = "registry+https://github.com/rust-lang/crates.io-index"
418 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
419 | dependencies = [
420 | "cfg-if",
421 | ]
422 |
423 | [[package]]
424 | name = "crossbeam-channel"
425 | version = "0.5.8"
426 | source = "registry+https://github.com/rust-lang/crates.io-index"
427 | checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
428 | dependencies = [
429 | "cfg-if",
430 | "crossbeam-utils",
431 | ]
432 |
433 | [[package]]
434 | name = "crossbeam-utils"
435 | version = "0.8.16"
436 | source = "registry+https://github.com/rust-lang/crates.io-index"
437 | checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
438 | dependencies = [
439 | "cfg-if",
440 | ]
441 |
442 | [[package]]
443 | name = "crypto-common"
444 | version = "0.1.6"
445 | source = "registry+https://github.com/rust-lang/crates.io-index"
446 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
447 | dependencies = [
448 | "generic-array",
449 | "typenum",
450 | ]
451 |
452 | [[package]]
453 | name = "cssparser"
454 | version = "0.27.2"
455 | source = "registry+https://github.com/rust-lang/crates.io-index"
456 | checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a"
457 | dependencies = [
458 | "cssparser-macros",
459 | "dtoa-short",
460 | "itoa 0.4.8",
461 | "matches",
462 | "phf 0.8.0",
463 | "proc-macro2",
464 | "quote",
465 | "smallvec",
466 | "syn 1.0.109",
467 | ]
468 |
469 | [[package]]
470 | name = "cssparser-macros"
471 | version = "0.6.1"
472 | source = "registry+https://github.com/rust-lang/crates.io-index"
473 | checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
474 | dependencies = [
475 | "quote",
476 | "syn 2.0.31",
477 | ]
478 |
479 | [[package]]
480 | name = "ctor"
481 | version = "0.1.26"
482 | source = "registry+https://github.com/rust-lang/crates.io-index"
483 | checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
484 | dependencies = [
485 | "quote",
486 | "syn 1.0.109",
487 | ]
488 |
489 | [[package]]
490 | name = "darling"
491 | version = "0.20.3"
492 | source = "registry+https://github.com/rust-lang/crates.io-index"
493 | checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
494 | dependencies = [
495 | "darling_core",
496 | "darling_macro",
497 | ]
498 |
499 | [[package]]
500 | name = "darling_core"
501 | version = "0.20.3"
502 | source = "registry+https://github.com/rust-lang/crates.io-index"
503 | checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
504 | dependencies = [
505 | "fnv",
506 | "ident_case",
507 | "proc-macro2",
508 | "quote",
509 | "strsim",
510 | "syn 2.0.31",
511 | ]
512 |
513 | [[package]]
514 | name = "darling_macro"
515 | version = "0.20.3"
516 | source = "registry+https://github.com/rust-lang/crates.io-index"
517 | checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
518 | dependencies = [
519 | "darling_core",
520 | "quote",
521 | "syn 2.0.31",
522 | ]
523 |
524 | [[package]]
525 | name = "deranged"
526 | version = "0.3.8"
527 | source = "registry+https://github.com/rust-lang/crates.io-index"
528 | checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946"
529 | dependencies = [
530 | "serde",
531 | ]
532 |
533 | [[package]]
534 | name = "derive_more"
535 | version = "0.99.17"
536 | source = "registry+https://github.com/rust-lang/crates.io-index"
537 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
538 | dependencies = [
539 | "convert_case",
540 | "proc-macro2",
541 | "quote",
542 | "rustc_version",
543 | "syn 1.0.109",
544 | ]
545 |
546 | [[package]]
547 | name = "digest"
548 | version = "0.10.7"
549 | source = "registry+https://github.com/rust-lang/crates.io-index"
550 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
551 | dependencies = [
552 | "block-buffer",
553 | "crypto-common",
554 | ]
555 |
556 | [[package]]
557 | name = "dirs-next"
558 | version = "2.0.0"
559 | source = "registry+https://github.com/rust-lang/crates.io-index"
560 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
561 | dependencies = [
562 | "cfg-if",
563 | "dirs-sys-next",
564 | ]
565 |
566 | [[package]]
567 | name = "dirs-sys-next"
568 | version = "0.1.2"
569 | source = "registry+https://github.com/rust-lang/crates.io-index"
570 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
571 | dependencies = [
572 | "libc",
573 | "redox_users",
574 | "winapi",
575 | ]
576 |
577 | [[package]]
578 | name = "dispatch"
579 | version = "0.2.0"
580 | source = "registry+https://github.com/rust-lang/crates.io-index"
581 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
582 |
583 | [[package]]
584 | name = "dtoa"
585 | version = "1.0.9"
586 | source = "registry+https://github.com/rust-lang/crates.io-index"
587 | checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653"
588 |
589 | [[package]]
590 | name = "dtoa-short"
591 | version = "0.3.4"
592 | source = "registry+https://github.com/rust-lang/crates.io-index"
593 | checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74"
594 | dependencies = [
595 | "dtoa",
596 | ]
597 |
598 | [[package]]
599 | name = "dunce"
600 | version = "1.0.4"
601 | source = "registry+https://github.com/rust-lang/crates.io-index"
602 | checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
603 |
604 | [[package]]
605 | name = "embed-resource"
606 | version = "2.3.0"
607 | source = "registry+https://github.com/rust-lang/crates.io-index"
608 | checksum = "fd0a2c9b742a980060d22545a7a83b573acd6b73045b9de6370c9530ce652f27"
609 | dependencies = [
610 | "cc",
611 | "rustc_version",
612 | "toml 0.7.6",
613 | "vswhom",
614 | "winreg",
615 | ]
616 |
617 | [[package]]
618 | name = "embed_plist"
619 | version = "1.2.2"
620 | source = "registry+https://github.com/rust-lang/crates.io-index"
621 | checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
622 |
623 | [[package]]
624 | name = "encoding_rs"
625 | version = "0.8.33"
626 | source = "registry+https://github.com/rust-lang/crates.io-index"
627 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
628 | dependencies = [
629 | "cfg-if",
630 | ]
631 |
632 | [[package]]
633 | name = "equivalent"
634 | version = "1.0.1"
635 | source = "registry+https://github.com/rust-lang/crates.io-index"
636 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
637 |
638 | [[package]]
639 | name = "errno"
640 | version = "0.3.3"
641 | source = "registry+https://github.com/rust-lang/crates.io-index"
642 | checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd"
643 | dependencies = [
644 | "errno-dragonfly",
645 | "libc",
646 | "windows-sys 0.48.0",
647 | ]
648 |
649 | [[package]]
650 | name = "errno-dragonfly"
651 | version = "0.1.2"
652 | source = "registry+https://github.com/rust-lang/crates.io-index"
653 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
654 | dependencies = [
655 | "cc",
656 | "libc",
657 | ]
658 |
659 | [[package]]
660 | name = "fastrand"
661 | version = "2.0.0"
662 | source = "registry+https://github.com/rust-lang/crates.io-index"
663 | checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
664 |
665 | [[package]]
666 | name = "fdeflate"
667 | version = "0.3.0"
668 | source = "registry+https://github.com/rust-lang/crates.io-index"
669 | checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10"
670 | dependencies = [
671 | "simd-adler32",
672 | ]
673 |
674 | [[package]]
675 | name = "field-offset"
676 | version = "0.3.6"
677 | source = "registry+https://github.com/rust-lang/crates.io-index"
678 | checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
679 | dependencies = [
680 | "memoffset",
681 | "rustc_version",
682 | ]
683 |
684 | [[package]]
685 | name = "filetime"
686 | version = "0.2.22"
687 | source = "registry+https://github.com/rust-lang/crates.io-index"
688 | checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
689 | dependencies = [
690 | "cfg-if",
691 | "libc",
692 | "redox_syscall 0.3.5",
693 | "windows-sys 0.48.0",
694 | ]
695 |
696 | [[package]]
697 | name = "flate2"
698 | version = "1.0.27"
699 | source = "registry+https://github.com/rust-lang/crates.io-index"
700 | checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
701 | dependencies = [
702 | "crc32fast",
703 | "miniz_oxide",
704 | ]
705 |
706 | [[package]]
707 | name = "fnv"
708 | version = "1.0.7"
709 | source = "registry+https://github.com/rust-lang/crates.io-index"
710 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
711 |
712 | [[package]]
713 | name = "foreign-types"
714 | version = "0.3.2"
715 | source = "registry+https://github.com/rust-lang/crates.io-index"
716 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
717 | dependencies = [
718 | "foreign-types-shared",
719 | ]
720 |
721 | [[package]]
722 | name = "foreign-types-shared"
723 | version = "0.1.1"
724 | source = "registry+https://github.com/rust-lang/crates.io-index"
725 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
726 |
727 | [[package]]
728 | name = "form_urlencoded"
729 | version = "1.2.0"
730 | source = "registry+https://github.com/rust-lang/crates.io-index"
731 | checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
732 | dependencies = [
733 | "percent-encoding",
734 | ]
735 |
736 | [[package]]
737 | name = "futf"
738 | version = "0.1.5"
739 | source = "registry+https://github.com/rust-lang/crates.io-index"
740 | checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
741 | dependencies = [
742 | "mac",
743 | "new_debug_unreachable",
744 | ]
745 |
746 | [[package]]
747 | name = "futures-channel"
748 | version = "0.3.28"
749 | source = "registry+https://github.com/rust-lang/crates.io-index"
750 | checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
751 | dependencies = [
752 | "futures-core",
753 | ]
754 |
755 | [[package]]
756 | name = "futures-core"
757 | version = "0.3.28"
758 | source = "registry+https://github.com/rust-lang/crates.io-index"
759 | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
760 |
761 | [[package]]
762 | name = "futures-executor"
763 | version = "0.3.28"
764 | source = "registry+https://github.com/rust-lang/crates.io-index"
765 | checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
766 | dependencies = [
767 | "futures-core",
768 | "futures-task",
769 | "futures-util",
770 | ]
771 |
772 | [[package]]
773 | name = "futures-io"
774 | version = "0.3.28"
775 | source = "registry+https://github.com/rust-lang/crates.io-index"
776 | checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
777 |
778 | [[package]]
779 | name = "futures-macro"
780 | version = "0.3.28"
781 | source = "registry+https://github.com/rust-lang/crates.io-index"
782 | checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
783 | dependencies = [
784 | "proc-macro2",
785 | "quote",
786 | "syn 2.0.31",
787 | ]
788 |
789 | [[package]]
790 | name = "futures-task"
791 | version = "0.3.28"
792 | source = "registry+https://github.com/rust-lang/crates.io-index"
793 | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
794 |
795 | [[package]]
796 | name = "futures-util"
797 | version = "0.3.28"
798 | source = "registry+https://github.com/rust-lang/crates.io-index"
799 | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
800 | dependencies = [
801 | "futures-core",
802 | "futures-macro",
803 | "futures-task",
804 | "pin-project-lite",
805 | "pin-utils",
806 | "slab",
807 | ]
808 |
809 | [[package]]
810 | name = "fxhash"
811 | version = "0.2.1"
812 | source = "registry+https://github.com/rust-lang/crates.io-index"
813 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
814 | dependencies = [
815 | "byteorder",
816 | ]
817 |
818 | [[package]]
819 | name = "gdk"
820 | version = "0.15.4"
821 | source = "registry+https://github.com/rust-lang/crates.io-index"
822 | checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8"
823 | dependencies = [
824 | "bitflags 1.3.2",
825 | "cairo-rs",
826 | "gdk-pixbuf",
827 | "gdk-sys",
828 | "gio",
829 | "glib",
830 | "libc",
831 | "pango",
832 | ]
833 |
834 | [[package]]
835 | name = "gdk-pixbuf"
836 | version = "0.15.11"
837 | source = "registry+https://github.com/rust-lang/crates.io-index"
838 | checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a"
839 | dependencies = [
840 | "bitflags 1.3.2",
841 | "gdk-pixbuf-sys",
842 | "gio",
843 | "glib",
844 | "libc",
845 | ]
846 |
847 | [[package]]
848 | name = "gdk-pixbuf-sys"
849 | version = "0.15.10"
850 | source = "registry+https://github.com/rust-lang/crates.io-index"
851 | checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7"
852 | dependencies = [
853 | "gio-sys",
854 | "glib-sys",
855 | "gobject-sys",
856 | "libc",
857 | "system-deps 6.1.1",
858 | ]
859 |
860 | [[package]]
861 | name = "gdk-sys"
862 | version = "0.15.1"
863 | source = "registry+https://github.com/rust-lang/crates.io-index"
864 | checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88"
865 | dependencies = [
866 | "cairo-sys-rs",
867 | "gdk-pixbuf-sys",
868 | "gio-sys",
869 | "glib-sys",
870 | "gobject-sys",
871 | "libc",
872 | "pango-sys",
873 | "pkg-config",
874 | "system-deps 6.1.1",
875 | ]
876 |
877 | [[package]]
878 | name = "gdkwayland-sys"
879 | version = "0.15.3"
880 | source = "registry+https://github.com/rust-lang/crates.io-index"
881 | checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2"
882 | dependencies = [
883 | "gdk-sys",
884 | "glib-sys",
885 | "gobject-sys",
886 | "libc",
887 | "pkg-config",
888 | "system-deps 6.1.1",
889 | ]
890 |
891 | [[package]]
892 | name = "gdkx11-sys"
893 | version = "0.15.1"
894 | source = "registry+https://github.com/rust-lang/crates.io-index"
895 | checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178"
896 | dependencies = [
897 | "gdk-sys",
898 | "glib-sys",
899 | "libc",
900 | "system-deps 6.1.1",
901 | "x11",
902 | ]
903 |
904 | [[package]]
905 | name = "generator"
906 | version = "0.7.5"
907 | source = "registry+https://github.com/rust-lang/crates.io-index"
908 | checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e"
909 | dependencies = [
910 | "cc",
911 | "libc",
912 | "log",
913 | "rustversion",
914 | "windows 0.48.0",
915 | ]
916 |
917 | [[package]]
918 | name = "generic-array"
919 | version = "0.14.7"
920 | source = "registry+https://github.com/rust-lang/crates.io-index"
921 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
922 | dependencies = [
923 | "typenum",
924 | "version_check",
925 | ]
926 |
927 | [[package]]
928 | name = "getrandom"
929 | version = "0.1.16"
930 | source = "registry+https://github.com/rust-lang/crates.io-index"
931 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
932 | dependencies = [
933 | "cfg-if",
934 | "libc",
935 | "wasi 0.9.0+wasi-snapshot-preview1",
936 | ]
937 |
938 | [[package]]
939 | name = "getrandom"
940 | version = "0.2.10"
941 | source = "registry+https://github.com/rust-lang/crates.io-index"
942 | checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
943 | dependencies = [
944 | "cfg-if",
945 | "libc",
946 | "wasi 0.11.0+wasi-snapshot-preview1",
947 | ]
948 |
949 | [[package]]
950 | name = "gimli"
951 | version = "0.28.0"
952 | source = "registry+https://github.com/rust-lang/crates.io-index"
953 | checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
954 |
955 | [[package]]
956 | name = "gio"
957 | version = "0.15.12"
958 | source = "registry+https://github.com/rust-lang/crates.io-index"
959 | checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b"
960 | dependencies = [
961 | "bitflags 1.3.2",
962 | "futures-channel",
963 | "futures-core",
964 | "futures-io",
965 | "gio-sys",
966 | "glib",
967 | "libc",
968 | "once_cell",
969 | "thiserror",
970 | ]
971 |
972 | [[package]]
973 | name = "gio-sys"
974 | version = "0.15.10"
975 | source = "registry+https://github.com/rust-lang/crates.io-index"
976 | checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d"
977 | dependencies = [
978 | "glib-sys",
979 | "gobject-sys",
980 | "libc",
981 | "system-deps 6.1.1",
982 | "winapi",
983 | ]
984 |
985 | [[package]]
986 | name = "glib"
987 | version = "0.15.12"
988 | source = "registry+https://github.com/rust-lang/crates.io-index"
989 | checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d"
990 | dependencies = [
991 | "bitflags 1.3.2",
992 | "futures-channel",
993 | "futures-core",
994 | "futures-executor",
995 | "futures-task",
996 | "glib-macros",
997 | "glib-sys",
998 | "gobject-sys",
999 | "libc",
1000 | "once_cell",
1001 | "smallvec",
1002 | "thiserror",
1003 | ]
1004 |
1005 | [[package]]
1006 | name = "glib-macros"
1007 | version = "0.15.13"
1008 | source = "registry+https://github.com/rust-lang/crates.io-index"
1009 | checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a"
1010 | dependencies = [
1011 | "anyhow",
1012 | "heck 0.4.1",
1013 | "proc-macro-crate",
1014 | "proc-macro-error",
1015 | "proc-macro2",
1016 | "quote",
1017 | "syn 1.0.109",
1018 | ]
1019 |
1020 | [[package]]
1021 | name = "glib-sys"
1022 | version = "0.15.10"
1023 | source = "registry+https://github.com/rust-lang/crates.io-index"
1024 | checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4"
1025 | dependencies = [
1026 | "libc",
1027 | "system-deps 6.1.1",
1028 | ]
1029 |
1030 | [[package]]
1031 | name = "glob"
1032 | version = "0.3.1"
1033 | source = "registry+https://github.com/rust-lang/crates.io-index"
1034 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
1035 |
1036 | [[package]]
1037 | name = "globset"
1038 | version = "0.4.13"
1039 | source = "registry+https://github.com/rust-lang/crates.io-index"
1040 | checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
1041 | dependencies = [
1042 | "aho-corasick",
1043 | "bstr",
1044 | "fnv",
1045 | "log",
1046 | "regex",
1047 | ]
1048 |
1049 | [[package]]
1050 | name = "gobject-sys"
1051 | version = "0.15.10"
1052 | source = "registry+https://github.com/rust-lang/crates.io-index"
1053 | checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a"
1054 | dependencies = [
1055 | "glib-sys",
1056 | "libc",
1057 | "system-deps 6.1.1",
1058 | ]
1059 |
1060 | [[package]]
1061 | name = "gtk"
1062 | version = "0.15.5"
1063 | source = "registry+https://github.com/rust-lang/crates.io-index"
1064 | checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0"
1065 | dependencies = [
1066 | "atk",
1067 | "bitflags 1.3.2",
1068 | "cairo-rs",
1069 | "field-offset",
1070 | "futures-channel",
1071 | "gdk",
1072 | "gdk-pixbuf",
1073 | "gio",
1074 | "glib",
1075 | "gtk-sys",
1076 | "gtk3-macros",
1077 | "libc",
1078 | "once_cell",
1079 | "pango",
1080 | "pkg-config",
1081 | ]
1082 |
1083 | [[package]]
1084 | name = "gtk-sys"
1085 | version = "0.15.3"
1086 | source = "registry+https://github.com/rust-lang/crates.io-index"
1087 | checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84"
1088 | dependencies = [
1089 | "atk-sys",
1090 | "cairo-sys-rs",
1091 | "gdk-pixbuf-sys",
1092 | "gdk-sys",
1093 | "gio-sys",
1094 | "glib-sys",
1095 | "gobject-sys",
1096 | "libc",
1097 | "pango-sys",
1098 | "system-deps 6.1.1",
1099 | ]
1100 |
1101 | [[package]]
1102 | name = "gtk3-macros"
1103 | version = "0.15.6"
1104 | source = "registry+https://github.com/rust-lang/crates.io-index"
1105 | checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d"
1106 | dependencies = [
1107 | "anyhow",
1108 | "proc-macro-crate",
1109 | "proc-macro-error",
1110 | "proc-macro2",
1111 | "quote",
1112 | "syn 1.0.109",
1113 | ]
1114 |
1115 | [[package]]
1116 | name = "hashbrown"
1117 | version = "0.12.3"
1118 | source = "registry+https://github.com/rust-lang/crates.io-index"
1119 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
1120 |
1121 | [[package]]
1122 | name = "hashbrown"
1123 | version = "0.14.0"
1124 | source = "registry+https://github.com/rust-lang/crates.io-index"
1125 | checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
1126 |
1127 | [[package]]
1128 | name = "heck"
1129 | version = "0.3.3"
1130 | source = "registry+https://github.com/rust-lang/crates.io-index"
1131 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
1132 | dependencies = [
1133 | "unicode-segmentation",
1134 | ]
1135 |
1136 | [[package]]
1137 | name = "heck"
1138 | version = "0.4.1"
1139 | source = "registry+https://github.com/rust-lang/crates.io-index"
1140 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
1141 |
1142 | [[package]]
1143 | name = "hermit-abi"
1144 | version = "0.3.2"
1145 | source = "registry+https://github.com/rust-lang/crates.io-index"
1146 | checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
1147 |
1148 | [[package]]
1149 | name = "hex"
1150 | version = "0.4.3"
1151 | source = "registry+https://github.com/rust-lang/crates.io-index"
1152 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
1153 |
1154 | [[package]]
1155 | name = "html5ever"
1156 | version = "0.25.2"
1157 | source = "registry+https://github.com/rust-lang/crates.io-index"
1158 | checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148"
1159 | dependencies = [
1160 | "log",
1161 | "mac",
1162 | "markup5ever",
1163 | "proc-macro2",
1164 | "quote",
1165 | "syn 1.0.109",
1166 | ]
1167 |
1168 | [[package]]
1169 | name = "http"
1170 | version = "0.2.9"
1171 | source = "registry+https://github.com/rust-lang/crates.io-index"
1172 | checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
1173 | dependencies = [
1174 | "bytes",
1175 | "fnv",
1176 | "itoa 1.0.9",
1177 | ]
1178 |
1179 | [[package]]
1180 | name = "http-range"
1181 | version = "0.1.5"
1182 | source = "registry+https://github.com/rust-lang/crates.io-index"
1183 | checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
1184 |
1185 | [[package]]
1186 | name = "iana-time-zone"
1187 | version = "0.1.57"
1188 | source = "registry+https://github.com/rust-lang/crates.io-index"
1189 | checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613"
1190 | dependencies = [
1191 | "android_system_properties",
1192 | "core-foundation-sys",
1193 | "iana-time-zone-haiku",
1194 | "js-sys",
1195 | "wasm-bindgen",
1196 | "windows 0.48.0",
1197 | ]
1198 |
1199 | [[package]]
1200 | name = "iana-time-zone-haiku"
1201 | version = "0.1.2"
1202 | source = "registry+https://github.com/rust-lang/crates.io-index"
1203 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
1204 | dependencies = [
1205 | "cc",
1206 | ]
1207 |
1208 | [[package]]
1209 | name = "ico"
1210 | version = "0.3.0"
1211 | source = "registry+https://github.com/rust-lang/crates.io-index"
1212 | checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae"
1213 | dependencies = [
1214 | "byteorder",
1215 | "png",
1216 | ]
1217 |
1218 | [[package]]
1219 | name = "ident_case"
1220 | version = "1.0.1"
1221 | source = "registry+https://github.com/rust-lang/crates.io-index"
1222 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
1223 |
1224 | [[package]]
1225 | name = "idna"
1226 | version = "0.4.0"
1227 | source = "registry+https://github.com/rust-lang/crates.io-index"
1228 | checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
1229 | dependencies = [
1230 | "unicode-bidi",
1231 | "unicode-normalization",
1232 | ]
1233 |
1234 | [[package]]
1235 | name = "ignore"
1236 | version = "0.4.20"
1237 | source = "registry+https://github.com/rust-lang/crates.io-index"
1238 | checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
1239 | dependencies = [
1240 | "globset",
1241 | "lazy_static",
1242 | "log",
1243 | "memchr",
1244 | "regex",
1245 | "same-file",
1246 | "thread_local",
1247 | "walkdir",
1248 | "winapi-util",
1249 | ]
1250 |
1251 | [[package]]
1252 | name = "image"
1253 | version = "0.24.7"
1254 | source = "registry+https://github.com/rust-lang/crates.io-index"
1255 | checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711"
1256 | dependencies = [
1257 | "bytemuck",
1258 | "byteorder",
1259 | "color_quant",
1260 | "num-rational",
1261 | "num-traits",
1262 | ]
1263 |
1264 | [[package]]
1265 | name = "indexmap"
1266 | version = "1.9.3"
1267 | source = "registry+https://github.com/rust-lang/crates.io-index"
1268 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
1269 | dependencies = [
1270 | "autocfg",
1271 | "hashbrown 0.12.3",
1272 | "serde",
1273 | ]
1274 |
1275 | [[package]]
1276 | name = "indexmap"
1277 | version = "2.0.0"
1278 | source = "registry+https://github.com/rust-lang/crates.io-index"
1279 | checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
1280 | dependencies = [
1281 | "equivalent",
1282 | "hashbrown 0.14.0",
1283 | "serde",
1284 | ]
1285 |
1286 | [[package]]
1287 | name = "infer"
1288 | version = "0.12.0"
1289 | source = "registry+https://github.com/rust-lang/crates.io-index"
1290 | checksum = "a898e4b7951673fce96614ce5751d13c40fc5674bc2d759288e46c3ab62598b3"
1291 | dependencies = [
1292 | "cfb",
1293 | ]
1294 |
1295 | [[package]]
1296 | name = "instant"
1297 | version = "0.1.12"
1298 | source = "registry+https://github.com/rust-lang/crates.io-index"
1299 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
1300 | dependencies = [
1301 | "cfg-if",
1302 | ]
1303 |
1304 | [[package]]
1305 | name = "itoa"
1306 | version = "0.4.8"
1307 | source = "registry+https://github.com/rust-lang/crates.io-index"
1308 | checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
1309 |
1310 | [[package]]
1311 | name = "itoa"
1312 | version = "1.0.9"
1313 | source = "registry+https://github.com/rust-lang/crates.io-index"
1314 | checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
1315 |
1316 | [[package]]
1317 | name = "javascriptcore-rs"
1318 | version = "0.16.0"
1319 | source = "registry+https://github.com/rust-lang/crates.io-index"
1320 | checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c"
1321 | dependencies = [
1322 | "bitflags 1.3.2",
1323 | "glib",
1324 | "javascriptcore-rs-sys",
1325 | ]
1326 |
1327 | [[package]]
1328 | name = "javascriptcore-rs-sys"
1329 | version = "0.4.0"
1330 | source = "registry+https://github.com/rust-lang/crates.io-index"
1331 | checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c"
1332 | dependencies = [
1333 | "glib-sys",
1334 | "gobject-sys",
1335 | "libc",
1336 | "system-deps 5.0.0",
1337 | ]
1338 |
1339 | [[package]]
1340 | name = "jni"
1341 | version = "0.20.0"
1342 | source = "registry+https://github.com/rust-lang/crates.io-index"
1343 | checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c"
1344 | dependencies = [
1345 | "cesu8",
1346 | "combine",
1347 | "jni-sys",
1348 | "log",
1349 | "thiserror",
1350 | "walkdir",
1351 | ]
1352 |
1353 | [[package]]
1354 | name = "jni-sys"
1355 | version = "0.3.0"
1356 | source = "registry+https://github.com/rust-lang/crates.io-index"
1357 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
1358 |
1359 | [[package]]
1360 | name = "js-sys"
1361 | version = "0.3.64"
1362 | source = "registry+https://github.com/rust-lang/crates.io-index"
1363 | checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
1364 | dependencies = [
1365 | "wasm-bindgen",
1366 | ]
1367 |
1368 | [[package]]
1369 | name = "json-patch"
1370 | version = "1.0.0"
1371 | source = "registry+https://github.com/rust-lang/crates.io-index"
1372 | checksum = "1f54898088ccb91df1b492cc80029a6fdf1c48ca0db7c6822a8babad69c94658"
1373 | dependencies = [
1374 | "serde",
1375 | "serde_json",
1376 | "thiserror",
1377 | "treediff",
1378 | ]
1379 |
1380 | [[package]]
1381 | name = "kuchiki"
1382 | version = "0.8.1"
1383 | source = "registry+https://github.com/rust-lang/crates.io-index"
1384 | checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358"
1385 | dependencies = [
1386 | "cssparser",
1387 | "html5ever",
1388 | "matches",
1389 | "selectors",
1390 | ]
1391 |
1392 | [[package]]
1393 | name = "lazy_static"
1394 | version = "1.4.0"
1395 | source = "registry+https://github.com/rust-lang/crates.io-index"
1396 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
1397 |
1398 | [[package]]
1399 | name = "libappindicator"
1400 | version = "0.7.1"
1401 | source = "registry+https://github.com/rust-lang/crates.io-index"
1402 | checksum = "db2d3cb96d092b4824cb306c9e544c856a4cb6210c1081945187f7f1924b47e8"
1403 | dependencies = [
1404 | "glib",
1405 | "gtk",
1406 | "gtk-sys",
1407 | "libappindicator-sys",
1408 | "log",
1409 | ]
1410 |
1411 | [[package]]
1412 | name = "libappindicator-sys"
1413 | version = "0.7.3"
1414 | source = "registry+https://github.com/rust-lang/crates.io-index"
1415 | checksum = "f1b3b6681973cea8cc3bce7391e6d7d5502720b80a581c9a95c9cbaf592826aa"
1416 | dependencies = [
1417 | "gtk-sys",
1418 | "libloading",
1419 | "once_cell",
1420 | ]
1421 |
1422 | [[package]]
1423 | name = "libc"
1424 | version = "0.2.147"
1425 | source = "registry+https://github.com/rust-lang/crates.io-index"
1426 | checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
1427 |
1428 | [[package]]
1429 | name = "libloading"
1430 | version = "0.7.4"
1431 | source = "registry+https://github.com/rust-lang/crates.io-index"
1432 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
1433 | dependencies = [
1434 | "cfg-if",
1435 | "winapi",
1436 | ]
1437 |
1438 | [[package]]
1439 | name = "line-wrap"
1440 | version = "0.1.1"
1441 | source = "registry+https://github.com/rust-lang/crates.io-index"
1442 | checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
1443 | dependencies = [
1444 | "safemem",
1445 | ]
1446 |
1447 | [[package]]
1448 | name = "linux-raw-sys"
1449 | version = "0.4.5"
1450 | source = "registry+https://github.com/rust-lang/crates.io-index"
1451 | checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
1452 |
1453 | [[package]]
1454 | name = "lock_api"
1455 | version = "0.4.10"
1456 | source = "registry+https://github.com/rust-lang/crates.io-index"
1457 | checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
1458 | dependencies = [
1459 | "autocfg",
1460 | "scopeguard",
1461 | ]
1462 |
1463 | [[package]]
1464 | name = "log"
1465 | version = "0.4.20"
1466 | source = "registry+https://github.com/rust-lang/crates.io-index"
1467 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
1468 |
1469 | [[package]]
1470 | name = "loom"
1471 | version = "0.5.6"
1472 | source = "registry+https://github.com/rust-lang/crates.io-index"
1473 | checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5"
1474 | dependencies = [
1475 | "cfg-if",
1476 | "generator",
1477 | "scoped-tls",
1478 | "serde",
1479 | "serde_json",
1480 | "tracing",
1481 | "tracing-subscriber",
1482 | ]
1483 |
1484 | [[package]]
1485 | name = "mac"
1486 | version = "0.1.1"
1487 | source = "registry+https://github.com/rust-lang/crates.io-index"
1488 | checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
1489 |
1490 | [[package]]
1491 | name = "malloc_buf"
1492 | version = "0.0.6"
1493 | source = "registry+https://github.com/rust-lang/crates.io-index"
1494 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
1495 | dependencies = [
1496 | "libc",
1497 | ]
1498 |
1499 | [[package]]
1500 | name = "markup5ever"
1501 | version = "0.10.1"
1502 | source = "registry+https://github.com/rust-lang/crates.io-index"
1503 | checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd"
1504 | dependencies = [
1505 | "log",
1506 | "phf 0.8.0",
1507 | "phf_codegen",
1508 | "string_cache",
1509 | "string_cache_codegen",
1510 | "tendril",
1511 | ]
1512 |
1513 | [[package]]
1514 | name = "matchers"
1515 | version = "0.1.0"
1516 | source = "registry+https://github.com/rust-lang/crates.io-index"
1517 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
1518 | dependencies = [
1519 | "regex-automata 0.1.10",
1520 | ]
1521 |
1522 | [[package]]
1523 | name = "matches"
1524 | version = "0.1.10"
1525 | source = "registry+https://github.com/rust-lang/crates.io-index"
1526 | checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
1527 |
1528 | [[package]]
1529 | name = "memchr"
1530 | version = "2.6.3"
1531 | source = "registry+https://github.com/rust-lang/crates.io-index"
1532 | checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
1533 |
1534 | [[package]]
1535 | name = "memoffset"
1536 | version = "0.9.0"
1537 | source = "registry+https://github.com/rust-lang/crates.io-index"
1538 | checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
1539 | dependencies = [
1540 | "autocfg",
1541 | ]
1542 |
1543 | [[package]]
1544 | name = "miniz_oxide"
1545 | version = "0.7.1"
1546 | source = "registry+https://github.com/rust-lang/crates.io-index"
1547 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
1548 | dependencies = [
1549 | "adler",
1550 | "simd-adler32",
1551 | ]
1552 |
1553 | [[package]]
1554 | name = "ndk"
1555 | version = "0.6.0"
1556 | source = "registry+https://github.com/rust-lang/crates.io-index"
1557 | checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4"
1558 | dependencies = [
1559 | "bitflags 1.3.2",
1560 | "jni-sys",
1561 | "ndk-sys",
1562 | "num_enum",
1563 | "thiserror",
1564 | ]
1565 |
1566 | [[package]]
1567 | name = "ndk-context"
1568 | version = "0.1.1"
1569 | source = "registry+https://github.com/rust-lang/crates.io-index"
1570 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
1571 |
1572 | [[package]]
1573 | name = "ndk-sys"
1574 | version = "0.3.0"
1575 | source = "registry+https://github.com/rust-lang/crates.io-index"
1576 | checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97"
1577 | dependencies = [
1578 | "jni-sys",
1579 | ]
1580 |
1581 | [[package]]
1582 | name = "new_debug_unreachable"
1583 | version = "1.0.4"
1584 | source = "registry+https://github.com/rust-lang/crates.io-index"
1585 | checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
1586 |
1587 | [[package]]
1588 | name = "nodrop"
1589 | version = "0.1.14"
1590 | source = "registry+https://github.com/rust-lang/crates.io-index"
1591 | checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
1592 |
1593 | [[package]]
1594 | name = "nu-ansi-term"
1595 | version = "0.46.0"
1596 | source = "registry+https://github.com/rust-lang/crates.io-index"
1597 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
1598 | dependencies = [
1599 | "overload",
1600 | "winapi",
1601 | ]
1602 |
1603 | [[package]]
1604 | name = "num-integer"
1605 | version = "0.1.45"
1606 | source = "registry+https://github.com/rust-lang/crates.io-index"
1607 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
1608 | dependencies = [
1609 | "autocfg",
1610 | "num-traits",
1611 | ]
1612 |
1613 | [[package]]
1614 | name = "num-rational"
1615 | version = "0.4.1"
1616 | source = "registry+https://github.com/rust-lang/crates.io-index"
1617 | checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
1618 | dependencies = [
1619 | "autocfg",
1620 | "num-integer",
1621 | "num-traits",
1622 | ]
1623 |
1624 | [[package]]
1625 | name = "num-traits"
1626 | version = "0.2.16"
1627 | source = "registry+https://github.com/rust-lang/crates.io-index"
1628 | checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
1629 | dependencies = [
1630 | "autocfg",
1631 | ]
1632 |
1633 | [[package]]
1634 | name = "num_cpus"
1635 | version = "1.16.0"
1636 | source = "registry+https://github.com/rust-lang/crates.io-index"
1637 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
1638 | dependencies = [
1639 | "hermit-abi",
1640 | "libc",
1641 | ]
1642 |
1643 | [[package]]
1644 | name = "num_enum"
1645 | version = "0.5.11"
1646 | source = "registry+https://github.com/rust-lang/crates.io-index"
1647 | checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9"
1648 | dependencies = [
1649 | "num_enum_derive",
1650 | ]
1651 |
1652 | [[package]]
1653 | name = "num_enum_derive"
1654 | version = "0.5.11"
1655 | source = "registry+https://github.com/rust-lang/crates.io-index"
1656 | checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
1657 | dependencies = [
1658 | "proc-macro-crate",
1659 | "proc-macro2",
1660 | "quote",
1661 | "syn 1.0.109",
1662 | ]
1663 |
1664 | [[package]]
1665 | name = "objc"
1666 | version = "0.2.7"
1667 | source = "registry+https://github.com/rust-lang/crates.io-index"
1668 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
1669 | dependencies = [
1670 | "malloc_buf",
1671 | "objc_exception",
1672 | ]
1673 |
1674 | [[package]]
1675 | name = "objc_exception"
1676 | version = "0.1.2"
1677 | source = "registry+https://github.com/rust-lang/crates.io-index"
1678 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
1679 | dependencies = [
1680 | "cc",
1681 | ]
1682 |
1683 | [[package]]
1684 | name = "objc_id"
1685 | version = "0.1.1"
1686 | source = "registry+https://github.com/rust-lang/crates.io-index"
1687 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
1688 | dependencies = [
1689 | "objc",
1690 | ]
1691 |
1692 | [[package]]
1693 | name = "object"
1694 | version = "0.32.1"
1695 | source = "registry+https://github.com/rust-lang/crates.io-index"
1696 | checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
1697 | dependencies = [
1698 | "memchr",
1699 | ]
1700 |
1701 | [[package]]
1702 | name = "once_cell"
1703 | version = "1.18.0"
1704 | source = "registry+https://github.com/rust-lang/crates.io-index"
1705 | checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
1706 |
1707 | [[package]]
1708 | name = "open"
1709 | version = "3.2.0"
1710 | source = "registry+https://github.com/rust-lang/crates.io-index"
1711 | checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8"
1712 | dependencies = [
1713 | "pathdiff",
1714 | "windows-sys 0.42.0",
1715 | ]
1716 |
1717 | [[package]]
1718 | name = "overload"
1719 | version = "0.1.1"
1720 | source = "registry+https://github.com/rust-lang/crates.io-index"
1721 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
1722 |
1723 | [[package]]
1724 | name = "pango"
1725 | version = "0.15.10"
1726 | source = "registry+https://github.com/rust-lang/crates.io-index"
1727 | checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f"
1728 | dependencies = [
1729 | "bitflags 1.3.2",
1730 | "glib",
1731 | "libc",
1732 | "once_cell",
1733 | "pango-sys",
1734 | ]
1735 |
1736 | [[package]]
1737 | name = "pango-sys"
1738 | version = "0.15.10"
1739 | source = "registry+https://github.com/rust-lang/crates.io-index"
1740 | checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa"
1741 | dependencies = [
1742 | "glib-sys",
1743 | "gobject-sys",
1744 | "libc",
1745 | "system-deps 6.1.1",
1746 | ]
1747 |
1748 | [[package]]
1749 | name = "parking_lot"
1750 | version = "0.12.1"
1751 | source = "registry+https://github.com/rust-lang/crates.io-index"
1752 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
1753 | dependencies = [
1754 | "lock_api",
1755 | "parking_lot_core",
1756 | ]
1757 |
1758 | [[package]]
1759 | name = "parking_lot_core"
1760 | version = "0.9.8"
1761 | source = "registry+https://github.com/rust-lang/crates.io-index"
1762 | checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
1763 | dependencies = [
1764 | "cfg-if",
1765 | "libc",
1766 | "redox_syscall 0.3.5",
1767 | "smallvec",
1768 | "windows-targets",
1769 | ]
1770 |
1771 | [[package]]
1772 | name = "pathdiff"
1773 | version = "0.2.1"
1774 | source = "registry+https://github.com/rust-lang/crates.io-index"
1775 | checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
1776 |
1777 | [[package]]
1778 | name = "percent-encoding"
1779 | version = "2.3.0"
1780 | source = "registry+https://github.com/rust-lang/crates.io-index"
1781 | checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
1782 |
1783 | [[package]]
1784 | name = "phf"
1785 | version = "0.8.0"
1786 | source = "registry+https://github.com/rust-lang/crates.io-index"
1787 | checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
1788 | dependencies = [
1789 | "phf_macros 0.8.0",
1790 | "phf_shared 0.8.0",
1791 | "proc-macro-hack",
1792 | ]
1793 |
1794 | [[package]]
1795 | name = "phf"
1796 | version = "0.10.1"
1797 | source = "registry+https://github.com/rust-lang/crates.io-index"
1798 | checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
1799 | dependencies = [
1800 | "phf_macros 0.10.0",
1801 | "phf_shared 0.10.0",
1802 | "proc-macro-hack",
1803 | ]
1804 |
1805 | [[package]]
1806 | name = "phf_codegen"
1807 | version = "0.8.0"
1808 | source = "registry+https://github.com/rust-lang/crates.io-index"
1809 | checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815"
1810 | dependencies = [
1811 | "phf_generator 0.8.0",
1812 | "phf_shared 0.8.0",
1813 | ]
1814 |
1815 | [[package]]
1816 | name = "phf_generator"
1817 | version = "0.8.0"
1818 | source = "registry+https://github.com/rust-lang/crates.io-index"
1819 | checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
1820 | dependencies = [
1821 | "phf_shared 0.8.0",
1822 | "rand 0.7.3",
1823 | ]
1824 |
1825 | [[package]]
1826 | name = "phf_generator"
1827 | version = "0.10.0"
1828 | source = "registry+https://github.com/rust-lang/crates.io-index"
1829 | checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
1830 | dependencies = [
1831 | "phf_shared 0.10.0",
1832 | "rand 0.8.5",
1833 | ]
1834 |
1835 | [[package]]
1836 | name = "phf_macros"
1837 | version = "0.8.0"
1838 | source = "registry+https://github.com/rust-lang/crates.io-index"
1839 | checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c"
1840 | dependencies = [
1841 | "phf_generator 0.8.0",
1842 | "phf_shared 0.8.0",
1843 | "proc-macro-hack",
1844 | "proc-macro2",
1845 | "quote",
1846 | "syn 1.0.109",
1847 | ]
1848 |
1849 | [[package]]
1850 | name = "phf_macros"
1851 | version = "0.10.0"
1852 | source = "registry+https://github.com/rust-lang/crates.io-index"
1853 | checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
1854 | dependencies = [
1855 | "phf_generator 0.10.0",
1856 | "phf_shared 0.10.0",
1857 | "proc-macro-hack",
1858 | "proc-macro2",
1859 | "quote",
1860 | "syn 1.0.109",
1861 | ]
1862 |
1863 | [[package]]
1864 | name = "phf_shared"
1865 | version = "0.8.0"
1866 | source = "registry+https://github.com/rust-lang/crates.io-index"
1867 | checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
1868 | dependencies = [
1869 | "siphasher",
1870 | ]
1871 |
1872 | [[package]]
1873 | name = "phf_shared"
1874 | version = "0.10.0"
1875 | source = "registry+https://github.com/rust-lang/crates.io-index"
1876 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
1877 | dependencies = [
1878 | "siphasher",
1879 | ]
1880 |
1881 | [[package]]
1882 | name = "pin-project-lite"
1883 | version = "0.2.13"
1884 | source = "registry+https://github.com/rust-lang/crates.io-index"
1885 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
1886 |
1887 | [[package]]
1888 | name = "pin-utils"
1889 | version = "0.1.0"
1890 | source = "registry+https://github.com/rust-lang/crates.io-index"
1891 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
1892 |
1893 | [[package]]
1894 | name = "pkg-config"
1895 | version = "0.3.27"
1896 | source = "registry+https://github.com/rust-lang/crates.io-index"
1897 | checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
1898 |
1899 | [[package]]
1900 | name = "plist"
1901 | version = "1.5.0"
1902 | source = "registry+https://github.com/rust-lang/crates.io-index"
1903 | checksum = "bdc0001cfea3db57a2e24bc0d818e9e20e554b5f97fabb9bc231dc240269ae06"
1904 | dependencies = [
1905 | "base64 0.21.3",
1906 | "indexmap 1.9.3",
1907 | "line-wrap",
1908 | "quick-xml",
1909 | "serde",
1910 | "time",
1911 | ]
1912 |
1913 | [[package]]
1914 | name = "png"
1915 | version = "0.17.10"
1916 | source = "registry+https://github.com/rust-lang/crates.io-index"
1917 | checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64"
1918 | dependencies = [
1919 | "bitflags 1.3.2",
1920 | "crc32fast",
1921 | "fdeflate",
1922 | "flate2",
1923 | "miniz_oxide",
1924 | ]
1925 |
1926 | [[package]]
1927 | name = "ppv-lite86"
1928 | version = "0.2.17"
1929 | source = "registry+https://github.com/rust-lang/crates.io-index"
1930 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
1931 |
1932 | [[package]]
1933 | name = "precomputed-hash"
1934 | version = "0.1.1"
1935 | source = "registry+https://github.com/rust-lang/crates.io-index"
1936 | checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
1937 |
1938 | [[package]]
1939 | name = "proc-macro-crate"
1940 | version = "1.3.1"
1941 | source = "registry+https://github.com/rust-lang/crates.io-index"
1942 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
1943 | dependencies = [
1944 | "once_cell",
1945 | "toml_edit",
1946 | ]
1947 |
1948 | [[package]]
1949 | name = "proc-macro-error"
1950 | version = "1.0.4"
1951 | source = "registry+https://github.com/rust-lang/crates.io-index"
1952 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
1953 | dependencies = [
1954 | "proc-macro-error-attr",
1955 | "proc-macro2",
1956 | "quote",
1957 | "syn 1.0.109",
1958 | "version_check",
1959 | ]
1960 |
1961 | [[package]]
1962 | name = "proc-macro-error-attr"
1963 | version = "1.0.4"
1964 | source = "registry+https://github.com/rust-lang/crates.io-index"
1965 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
1966 | dependencies = [
1967 | "proc-macro2",
1968 | "quote",
1969 | "version_check",
1970 | ]
1971 |
1972 | [[package]]
1973 | name = "proc-macro-hack"
1974 | version = "0.5.20+deprecated"
1975 | source = "registry+https://github.com/rust-lang/crates.io-index"
1976 | checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
1977 |
1978 | [[package]]
1979 | name = "proc-macro2"
1980 | version = "1.0.66"
1981 | source = "registry+https://github.com/rust-lang/crates.io-index"
1982 | checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
1983 | dependencies = [
1984 | "unicode-ident",
1985 | ]
1986 |
1987 | [[package]]
1988 | name = "quick-xml"
1989 | version = "0.29.0"
1990 | source = "registry+https://github.com/rust-lang/crates.io-index"
1991 | checksum = "81b9228215d82c7b61490fec1de287136b5de6f5700f6e58ea9ad61a7964ca51"
1992 | dependencies = [
1993 | "memchr",
1994 | ]
1995 |
1996 | [[package]]
1997 | name = "quote"
1998 | version = "1.0.33"
1999 | source = "registry+https://github.com/rust-lang/crates.io-index"
2000 | checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
2001 | dependencies = [
2002 | "proc-macro2",
2003 | ]
2004 |
2005 | [[package]]
2006 | name = "rand"
2007 | version = "0.7.3"
2008 | source = "registry+https://github.com/rust-lang/crates.io-index"
2009 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
2010 | dependencies = [
2011 | "getrandom 0.1.16",
2012 | "libc",
2013 | "rand_chacha 0.2.2",
2014 | "rand_core 0.5.1",
2015 | "rand_hc",
2016 | "rand_pcg",
2017 | ]
2018 |
2019 | [[package]]
2020 | name = "rand"
2021 | version = "0.8.5"
2022 | source = "registry+https://github.com/rust-lang/crates.io-index"
2023 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
2024 | dependencies = [
2025 | "libc",
2026 | "rand_chacha 0.3.1",
2027 | "rand_core 0.6.4",
2028 | ]
2029 |
2030 | [[package]]
2031 | name = "rand_chacha"
2032 | version = "0.2.2"
2033 | source = "registry+https://github.com/rust-lang/crates.io-index"
2034 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
2035 | dependencies = [
2036 | "ppv-lite86",
2037 | "rand_core 0.5.1",
2038 | ]
2039 |
2040 | [[package]]
2041 | name = "rand_chacha"
2042 | version = "0.3.1"
2043 | source = "registry+https://github.com/rust-lang/crates.io-index"
2044 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
2045 | dependencies = [
2046 | "ppv-lite86",
2047 | "rand_core 0.6.4",
2048 | ]
2049 |
2050 | [[package]]
2051 | name = "rand_core"
2052 | version = "0.5.1"
2053 | source = "registry+https://github.com/rust-lang/crates.io-index"
2054 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
2055 | dependencies = [
2056 | "getrandom 0.1.16",
2057 | ]
2058 |
2059 | [[package]]
2060 | name = "rand_core"
2061 | version = "0.6.4"
2062 | source = "registry+https://github.com/rust-lang/crates.io-index"
2063 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
2064 | dependencies = [
2065 | "getrandom 0.2.10",
2066 | ]
2067 |
2068 | [[package]]
2069 | name = "rand_hc"
2070 | version = "0.2.0"
2071 | source = "registry+https://github.com/rust-lang/crates.io-index"
2072 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
2073 | dependencies = [
2074 | "rand_core 0.5.1",
2075 | ]
2076 |
2077 | [[package]]
2078 | name = "rand_pcg"
2079 | version = "0.2.1"
2080 | source = "registry+https://github.com/rust-lang/crates.io-index"
2081 | checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
2082 | dependencies = [
2083 | "rand_core 0.5.1",
2084 | ]
2085 |
2086 | [[package]]
2087 | name = "raw-window-handle"
2088 | version = "0.5.2"
2089 | source = "registry+https://github.com/rust-lang/crates.io-index"
2090 | checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
2091 |
2092 | [[package]]
2093 | name = "redox_syscall"
2094 | version = "0.2.16"
2095 | source = "registry+https://github.com/rust-lang/crates.io-index"
2096 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
2097 | dependencies = [
2098 | "bitflags 1.3.2",
2099 | ]
2100 |
2101 | [[package]]
2102 | name = "redox_syscall"
2103 | version = "0.3.5"
2104 | source = "registry+https://github.com/rust-lang/crates.io-index"
2105 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
2106 | dependencies = [
2107 | "bitflags 1.3.2",
2108 | ]
2109 |
2110 | [[package]]
2111 | name = "redox_users"
2112 | version = "0.4.3"
2113 | source = "registry+https://github.com/rust-lang/crates.io-index"
2114 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
2115 | dependencies = [
2116 | "getrandom 0.2.10",
2117 | "redox_syscall 0.2.16",
2118 | "thiserror",
2119 | ]
2120 |
2121 | [[package]]
2122 | name = "regex"
2123 | version = "1.9.5"
2124 | source = "registry+https://github.com/rust-lang/crates.io-index"
2125 | checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
2126 | dependencies = [
2127 | "aho-corasick",
2128 | "memchr",
2129 | "regex-automata 0.3.8",
2130 | "regex-syntax 0.7.5",
2131 | ]
2132 |
2133 | [[package]]
2134 | name = "regex-automata"
2135 | version = "0.1.10"
2136 | source = "registry+https://github.com/rust-lang/crates.io-index"
2137 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
2138 | dependencies = [
2139 | "regex-syntax 0.6.29",
2140 | ]
2141 |
2142 | [[package]]
2143 | name = "regex-automata"
2144 | version = "0.3.8"
2145 | source = "registry+https://github.com/rust-lang/crates.io-index"
2146 | checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
2147 | dependencies = [
2148 | "aho-corasick",
2149 | "memchr",
2150 | "regex-syntax 0.7.5",
2151 | ]
2152 |
2153 | [[package]]
2154 | name = "regex-syntax"
2155 | version = "0.6.29"
2156 | source = "registry+https://github.com/rust-lang/crates.io-index"
2157 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
2158 |
2159 | [[package]]
2160 | name = "regex-syntax"
2161 | version = "0.7.5"
2162 | source = "registry+https://github.com/rust-lang/crates.io-index"
2163 | checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
2164 |
2165 | [[package]]
2166 | name = "rustc-demangle"
2167 | version = "0.1.23"
2168 | source = "registry+https://github.com/rust-lang/crates.io-index"
2169 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
2170 |
2171 | [[package]]
2172 | name = "rustc_version"
2173 | version = "0.4.0"
2174 | source = "registry+https://github.com/rust-lang/crates.io-index"
2175 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
2176 | dependencies = [
2177 | "semver",
2178 | ]
2179 |
2180 | [[package]]
2181 | name = "rustix"
2182 | version = "0.38.11"
2183 | source = "registry+https://github.com/rust-lang/crates.io-index"
2184 | checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453"
2185 | dependencies = [
2186 | "bitflags 2.4.0",
2187 | "errno",
2188 | "libc",
2189 | "linux-raw-sys",
2190 | "windows-sys 0.48.0",
2191 | ]
2192 |
2193 | [[package]]
2194 | name = "rustversion"
2195 | version = "1.0.14"
2196 | source = "registry+https://github.com/rust-lang/crates.io-index"
2197 | checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
2198 |
2199 | [[package]]
2200 | name = "ryu"
2201 | version = "1.0.15"
2202 | source = "registry+https://github.com/rust-lang/crates.io-index"
2203 | checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
2204 |
2205 | [[package]]
2206 | name = "safemem"
2207 | version = "0.3.3"
2208 | source = "registry+https://github.com/rust-lang/crates.io-index"
2209 | checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
2210 |
2211 | [[package]]
2212 | name = "same-file"
2213 | version = "1.0.6"
2214 | source = "registry+https://github.com/rust-lang/crates.io-index"
2215 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
2216 | dependencies = [
2217 | "winapi-util",
2218 | ]
2219 |
2220 | [[package]]
2221 | name = "scoped-tls"
2222 | version = "1.0.1"
2223 | source = "registry+https://github.com/rust-lang/crates.io-index"
2224 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
2225 |
2226 | [[package]]
2227 | name = "scopeguard"
2228 | version = "1.2.0"
2229 | source = "registry+https://github.com/rust-lang/crates.io-index"
2230 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
2231 |
2232 | [[package]]
2233 | name = "selectors"
2234 | version = "0.22.0"
2235 | source = "registry+https://github.com/rust-lang/crates.io-index"
2236 | checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe"
2237 | dependencies = [
2238 | "bitflags 1.3.2",
2239 | "cssparser",
2240 | "derive_more",
2241 | "fxhash",
2242 | "log",
2243 | "matches",
2244 | "phf 0.8.0",
2245 | "phf_codegen",
2246 | "precomputed-hash",
2247 | "servo_arc",
2248 | "smallvec",
2249 | "thin-slice",
2250 | ]
2251 |
2252 | [[package]]
2253 | name = "semver"
2254 | version = "1.0.18"
2255 | source = "registry+https://github.com/rust-lang/crates.io-index"
2256 | checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
2257 | dependencies = [
2258 | "serde",
2259 | ]
2260 |
2261 | [[package]]
2262 | name = "serde"
2263 | version = "1.0.188"
2264 | source = "registry+https://github.com/rust-lang/crates.io-index"
2265 | checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
2266 | dependencies = [
2267 | "serde_derive",
2268 | ]
2269 |
2270 | [[package]]
2271 | name = "serde_derive"
2272 | version = "1.0.188"
2273 | source = "registry+https://github.com/rust-lang/crates.io-index"
2274 | checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
2275 | dependencies = [
2276 | "proc-macro2",
2277 | "quote",
2278 | "syn 2.0.31",
2279 | ]
2280 |
2281 | [[package]]
2282 | name = "serde_json"
2283 | version = "1.0.105"
2284 | source = "registry+https://github.com/rust-lang/crates.io-index"
2285 | checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360"
2286 | dependencies = [
2287 | "itoa 1.0.9",
2288 | "ryu",
2289 | "serde",
2290 | ]
2291 |
2292 | [[package]]
2293 | name = "serde_repr"
2294 | version = "0.1.16"
2295 | source = "registry+https://github.com/rust-lang/crates.io-index"
2296 | checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
2297 | dependencies = [
2298 | "proc-macro2",
2299 | "quote",
2300 | "syn 2.0.31",
2301 | ]
2302 |
2303 | [[package]]
2304 | name = "serde_spanned"
2305 | version = "0.6.3"
2306 | source = "registry+https://github.com/rust-lang/crates.io-index"
2307 | checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
2308 | dependencies = [
2309 | "serde",
2310 | ]
2311 |
2312 | [[package]]
2313 | name = "serde_with"
2314 | version = "3.3.0"
2315 | source = "registry+https://github.com/rust-lang/crates.io-index"
2316 | checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237"
2317 | dependencies = [
2318 | "base64 0.21.3",
2319 | "chrono",
2320 | "hex",
2321 | "indexmap 1.9.3",
2322 | "indexmap 2.0.0",
2323 | "serde",
2324 | "serde_json",
2325 | "serde_with_macros",
2326 | "time",
2327 | ]
2328 |
2329 | [[package]]
2330 | name = "serde_with_macros"
2331 | version = "3.3.0"
2332 | source = "registry+https://github.com/rust-lang/crates.io-index"
2333 | checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c"
2334 | dependencies = [
2335 | "darling",
2336 | "proc-macro2",
2337 | "quote",
2338 | "syn 2.0.31",
2339 | ]
2340 |
2341 | [[package]]
2342 | name = "serialize-to-javascript"
2343 | version = "0.1.1"
2344 | source = "registry+https://github.com/rust-lang/crates.io-index"
2345 | checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb"
2346 | dependencies = [
2347 | "serde",
2348 | "serde_json",
2349 | "serialize-to-javascript-impl",
2350 | ]
2351 |
2352 | [[package]]
2353 | name = "serialize-to-javascript-impl"
2354 | version = "0.1.1"
2355 | source = "registry+https://github.com/rust-lang/crates.io-index"
2356 | checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763"
2357 | dependencies = [
2358 | "proc-macro2",
2359 | "quote",
2360 | "syn 1.0.109",
2361 | ]
2362 |
2363 | [[package]]
2364 | name = "servo_arc"
2365 | version = "0.1.1"
2366 | source = "registry+https://github.com/rust-lang/crates.io-index"
2367 | checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432"
2368 | dependencies = [
2369 | "nodrop",
2370 | "stable_deref_trait",
2371 | ]
2372 |
2373 | [[package]]
2374 | name = "sha2"
2375 | version = "0.10.7"
2376 | source = "registry+https://github.com/rust-lang/crates.io-index"
2377 | checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
2378 | dependencies = [
2379 | "cfg-if",
2380 | "cpufeatures",
2381 | "digest",
2382 | ]
2383 |
2384 | [[package]]
2385 | name = "sharded-slab"
2386 | version = "0.1.4"
2387 | source = "registry+https://github.com/rust-lang/crates.io-index"
2388 | checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
2389 | dependencies = [
2390 | "lazy_static",
2391 | ]
2392 |
2393 | [[package]]
2394 | name = "simd-adler32"
2395 | version = "0.3.7"
2396 | source = "registry+https://github.com/rust-lang/crates.io-index"
2397 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
2398 |
2399 | [[package]]
2400 | name = "siphasher"
2401 | version = "0.3.11"
2402 | source = "registry+https://github.com/rust-lang/crates.io-index"
2403 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
2404 |
2405 | [[package]]
2406 | name = "slab"
2407 | version = "0.4.9"
2408 | source = "registry+https://github.com/rust-lang/crates.io-index"
2409 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
2410 | dependencies = [
2411 | "autocfg",
2412 | ]
2413 |
2414 | [[package]]
2415 | name = "smallvec"
2416 | version = "1.11.0"
2417 | source = "registry+https://github.com/rust-lang/crates.io-index"
2418 | checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
2419 |
2420 | [[package]]
2421 | name = "soup2"
2422 | version = "0.2.1"
2423 | source = "registry+https://github.com/rust-lang/crates.io-index"
2424 | checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0"
2425 | dependencies = [
2426 | "bitflags 1.3.2",
2427 | "gio",
2428 | "glib",
2429 | "libc",
2430 | "once_cell",
2431 | "soup2-sys",
2432 | ]
2433 |
2434 | [[package]]
2435 | name = "soup2-sys"
2436 | version = "0.2.0"
2437 | source = "registry+https://github.com/rust-lang/crates.io-index"
2438 | checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf"
2439 | dependencies = [
2440 | "bitflags 1.3.2",
2441 | "gio-sys",
2442 | "glib-sys",
2443 | "gobject-sys",
2444 | "libc",
2445 | "system-deps 5.0.0",
2446 | ]
2447 |
2448 | [[package]]
2449 | name = "stable_deref_trait"
2450 | version = "1.2.0"
2451 | source = "registry+https://github.com/rust-lang/crates.io-index"
2452 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
2453 |
2454 | [[package]]
2455 | name = "state"
2456 | version = "0.5.3"
2457 | source = "registry+https://github.com/rust-lang/crates.io-index"
2458 | checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b"
2459 | dependencies = [
2460 | "loom",
2461 | ]
2462 |
2463 | [[package]]
2464 | name = "string_cache"
2465 | version = "0.8.7"
2466 | source = "registry+https://github.com/rust-lang/crates.io-index"
2467 | checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
2468 | dependencies = [
2469 | "new_debug_unreachable",
2470 | "once_cell",
2471 | "parking_lot",
2472 | "phf_shared 0.10.0",
2473 | "precomputed-hash",
2474 | "serde",
2475 | ]
2476 |
2477 | [[package]]
2478 | name = "string_cache_codegen"
2479 | version = "0.5.2"
2480 | source = "registry+https://github.com/rust-lang/crates.io-index"
2481 | checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
2482 | dependencies = [
2483 | "phf_generator 0.10.0",
2484 | "phf_shared 0.10.0",
2485 | "proc-macro2",
2486 | "quote",
2487 | ]
2488 |
2489 | [[package]]
2490 | name = "strsim"
2491 | version = "0.10.0"
2492 | source = "registry+https://github.com/rust-lang/crates.io-index"
2493 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
2494 |
2495 | [[package]]
2496 | name = "syn"
2497 | version = "1.0.109"
2498 | source = "registry+https://github.com/rust-lang/crates.io-index"
2499 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
2500 | dependencies = [
2501 | "proc-macro2",
2502 | "quote",
2503 | "unicode-ident",
2504 | ]
2505 |
2506 | [[package]]
2507 | name = "syn"
2508 | version = "2.0.31"
2509 | source = "registry+https://github.com/rust-lang/crates.io-index"
2510 | checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398"
2511 | dependencies = [
2512 | "proc-macro2",
2513 | "quote",
2514 | "unicode-ident",
2515 | ]
2516 |
2517 | [[package]]
2518 | name = "system-deps"
2519 | version = "5.0.0"
2520 | source = "registry+https://github.com/rust-lang/crates.io-index"
2521 | checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e"
2522 | dependencies = [
2523 | "cfg-expr 0.9.1",
2524 | "heck 0.3.3",
2525 | "pkg-config",
2526 | "toml 0.5.11",
2527 | "version-compare 0.0.11",
2528 | ]
2529 |
2530 | [[package]]
2531 | name = "system-deps"
2532 | version = "6.1.1"
2533 | source = "registry+https://github.com/rust-lang/crates.io-index"
2534 | checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3"
2535 | dependencies = [
2536 | "cfg-expr 0.15.4",
2537 | "heck 0.4.1",
2538 | "pkg-config",
2539 | "toml 0.7.6",
2540 | "version-compare 0.1.1",
2541 | ]
2542 |
2543 | [[package]]
2544 | name = "tao"
2545 | version = "0.16.2"
2546 | source = "registry+https://github.com/rust-lang/crates.io-index"
2547 | checksum = "6a6d198e01085564cea63e976ad1566c1ba2c2e4cc79578e35d9f05521505e31"
2548 | dependencies = [
2549 | "bitflags 1.3.2",
2550 | "cairo-rs",
2551 | "cc",
2552 | "cocoa",
2553 | "core-foundation",
2554 | "core-graphics",
2555 | "crossbeam-channel",
2556 | "dirs-next",
2557 | "dispatch",
2558 | "gdk",
2559 | "gdk-pixbuf",
2560 | "gdk-sys",
2561 | "gdkwayland-sys",
2562 | "gdkx11-sys",
2563 | "gio",
2564 | "glib",
2565 | "glib-sys",
2566 | "gtk",
2567 | "image",
2568 | "instant",
2569 | "jni",
2570 | "lazy_static",
2571 | "libappindicator",
2572 | "libc",
2573 | "log",
2574 | "ndk",
2575 | "ndk-context",
2576 | "ndk-sys",
2577 | "objc",
2578 | "once_cell",
2579 | "parking_lot",
2580 | "png",
2581 | "raw-window-handle",
2582 | "scopeguard",
2583 | "serde",
2584 | "tao-macros",
2585 | "unicode-segmentation",
2586 | "uuid",
2587 | "windows 0.39.0",
2588 | "windows-implement",
2589 | "x11-dl",
2590 | ]
2591 |
2592 | [[package]]
2593 | name = "tao-macros"
2594 | version = "0.1.2"
2595 | source = "registry+https://github.com/rust-lang/crates.io-index"
2596 | checksum = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2"
2597 | dependencies = [
2598 | "proc-macro2",
2599 | "quote",
2600 | "syn 1.0.109",
2601 | ]
2602 |
2603 | [[package]]
2604 | name = "tar"
2605 | version = "0.4.40"
2606 | source = "registry+https://github.com/rust-lang/crates.io-index"
2607 | checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
2608 | dependencies = [
2609 | "filetime",
2610 | "libc",
2611 | "xattr",
2612 | ]
2613 |
2614 | [[package]]
2615 | name = "target-lexicon"
2616 | version = "0.12.11"
2617 | source = "registry+https://github.com/rust-lang/crates.io-index"
2618 | checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a"
2619 |
2620 | [[package]]
2621 | name = "tauri"
2622 | version = "1.4.1"
2623 | source = "registry+https://github.com/rust-lang/crates.io-index"
2624 | checksum = "7fbe522898e35407a8e60dc3870f7579fea2fc262a6a6072eccdd37ae1e1d91e"
2625 | dependencies = [
2626 | "anyhow",
2627 | "cocoa",
2628 | "dirs-next",
2629 | "embed_plist",
2630 | "encoding_rs",
2631 | "flate2",
2632 | "futures-util",
2633 | "glib",
2634 | "glob",
2635 | "gtk",
2636 | "heck 0.4.1",
2637 | "http",
2638 | "ignore",
2639 | "objc",
2640 | "once_cell",
2641 | "open",
2642 | "percent-encoding",
2643 | "rand 0.8.5",
2644 | "raw-window-handle",
2645 | "regex",
2646 | "semver",
2647 | "serde",
2648 | "serde_json",
2649 | "serde_repr",
2650 | "serialize-to-javascript",
2651 | "state",
2652 | "tar",
2653 | "tauri-macros",
2654 | "tauri-runtime",
2655 | "tauri-runtime-wry",
2656 | "tauri-utils",
2657 | "tempfile",
2658 | "thiserror",
2659 | "tokio",
2660 | "url",
2661 | "uuid",
2662 | "webkit2gtk",
2663 | "webview2-com",
2664 | "windows 0.39.0",
2665 | ]
2666 |
2667 | [[package]]
2668 | name = "tauri-build"
2669 | version = "1.4.0"
2670 | source = "registry+https://github.com/rust-lang/crates.io-index"
2671 | checksum = "7d2edd6a259b5591c8efdeb9d5702cb53515b82a6affebd55c7fd6d3a27b7d1b"
2672 | dependencies = [
2673 | "anyhow",
2674 | "cargo_toml",
2675 | "heck 0.4.1",
2676 | "json-patch",
2677 | "semver",
2678 | "serde",
2679 | "serde_json",
2680 | "tauri-utils",
2681 | "tauri-winres",
2682 | ]
2683 |
2684 | [[package]]
2685 | name = "tauri-codegen"
2686 | version = "1.4.0"
2687 | source = "registry+https://github.com/rust-lang/crates.io-index"
2688 | checksum = "54ad2d49fdeab4a08717f5b49a163bdc72efc3b1950b6758245fcde79b645e1a"
2689 | dependencies = [
2690 | "base64 0.21.3",
2691 | "brotli",
2692 | "ico",
2693 | "json-patch",
2694 | "plist",
2695 | "png",
2696 | "proc-macro2",
2697 | "quote",
2698 | "regex",
2699 | "semver",
2700 | "serde",
2701 | "serde_json",
2702 | "sha2",
2703 | "tauri-utils",
2704 | "thiserror",
2705 | "time",
2706 | "uuid",
2707 | "walkdir",
2708 | ]
2709 |
2710 | [[package]]
2711 | name = "tauri-macros"
2712 | version = "1.4.0"
2713 | source = "registry+https://github.com/rust-lang/crates.io-index"
2714 | checksum = "8eb12a2454e747896929338d93b0642144bb51e0dddbb36e579035731f0d76b7"
2715 | dependencies = [
2716 | "heck 0.4.1",
2717 | "proc-macro2",
2718 | "quote",
2719 | "syn 1.0.109",
2720 | "tauri-codegen",
2721 | "tauri-utils",
2722 | ]
2723 |
2724 | [[package]]
2725 | name = "tauri-runtime"
2726 | version = "0.14.0"
2727 | source = "registry+https://github.com/rust-lang/crates.io-index"
2728 | checksum = "108683199cb18f96d2d4134187bb789964143c845d2d154848dda209191fd769"
2729 | dependencies = [
2730 | "gtk",
2731 | "http",
2732 | "http-range",
2733 | "rand 0.8.5",
2734 | "raw-window-handle",
2735 | "serde",
2736 | "serde_json",
2737 | "tauri-utils",
2738 | "thiserror",
2739 | "url",
2740 | "uuid",
2741 | "webview2-com",
2742 | "windows 0.39.0",
2743 | ]
2744 |
2745 | [[package]]
2746 | name = "tauri-runtime-wry"
2747 | version = "0.14.0"
2748 | source = "registry+https://github.com/rust-lang/crates.io-index"
2749 | checksum = "0b7aa256a1407a3a091b5d843eccc1a5042289baf0a43d1179d9f0fcfea37c1b"
2750 | dependencies = [
2751 | "cocoa",
2752 | "gtk",
2753 | "percent-encoding",
2754 | "rand 0.8.5",
2755 | "raw-window-handle",
2756 | "tauri-runtime",
2757 | "tauri-utils",
2758 | "uuid",
2759 | "webkit2gtk",
2760 | "webview2-com",
2761 | "windows 0.39.0",
2762 | "wry",
2763 | ]
2764 |
2765 | [[package]]
2766 | name = "tauri-utils"
2767 | version = "1.4.0"
2768 | source = "registry+https://github.com/rust-lang/crates.io-index"
2769 | checksum = "03fc02bb6072bb397e1d473c6f76c953cda48b4a2d0cce605df284aa74a12e84"
2770 | dependencies = [
2771 | "brotli",
2772 | "ctor",
2773 | "dunce",
2774 | "glob",
2775 | "heck 0.4.1",
2776 | "html5ever",
2777 | "infer",
2778 | "json-patch",
2779 | "kuchiki",
2780 | "memchr",
2781 | "phf 0.10.1",
2782 | "proc-macro2",
2783 | "quote",
2784 | "semver",
2785 | "serde",
2786 | "serde_json",
2787 | "serde_with",
2788 | "thiserror",
2789 | "url",
2790 | "walkdir",
2791 | "windows 0.39.0",
2792 | ]
2793 |
2794 | [[package]]
2795 | name = "tauri-winres"
2796 | version = "0.1.1"
2797 | source = "registry+https://github.com/rust-lang/crates.io-index"
2798 | checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb"
2799 | dependencies = [
2800 | "embed-resource",
2801 | "toml 0.7.6",
2802 | ]
2803 |
2804 | [[package]]
2805 | name = "tempfile"
2806 | version = "3.8.0"
2807 | source = "registry+https://github.com/rust-lang/crates.io-index"
2808 | checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"
2809 | dependencies = [
2810 | "cfg-if",
2811 | "fastrand",
2812 | "redox_syscall 0.3.5",
2813 | "rustix",
2814 | "windows-sys 0.48.0",
2815 | ]
2816 |
2817 | [[package]]
2818 | name = "tendril"
2819 | version = "0.4.3"
2820 | source = "registry+https://github.com/rust-lang/crates.io-index"
2821 | checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
2822 | dependencies = [
2823 | "futf",
2824 | "mac",
2825 | "utf-8",
2826 | ]
2827 |
2828 | [[package]]
2829 | name = "thin-slice"
2830 | version = "0.1.1"
2831 | source = "registry+https://github.com/rust-lang/crates.io-index"
2832 | checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
2833 |
2834 | [[package]]
2835 | name = "thiserror"
2836 | version = "1.0.48"
2837 | source = "registry+https://github.com/rust-lang/crates.io-index"
2838 | checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7"
2839 | dependencies = [
2840 | "thiserror-impl",
2841 | ]
2842 |
2843 | [[package]]
2844 | name = "thiserror-impl"
2845 | version = "1.0.48"
2846 | source = "registry+https://github.com/rust-lang/crates.io-index"
2847 | checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35"
2848 | dependencies = [
2849 | "proc-macro2",
2850 | "quote",
2851 | "syn 2.0.31",
2852 | ]
2853 |
2854 | [[package]]
2855 | name = "thread_local"
2856 | version = "1.1.7"
2857 | source = "registry+https://github.com/rust-lang/crates.io-index"
2858 | checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
2859 | dependencies = [
2860 | "cfg-if",
2861 | "once_cell",
2862 | ]
2863 |
2864 | [[package]]
2865 | name = "time"
2866 | version = "0.3.28"
2867 | source = "registry+https://github.com/rust-lang/crates.io-index"
2868 | checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48"
2869 | dependencies = [
2870 | "deranged",
2871 | "itoa 1.0.9",
2872 | "serde",
2873 | "time-core",
2874 | "time-macros",
2875 | ]
2876 |
2877 | [[package]]
2878 | name = "time-core"
2879 | version = "0.1.1"
2880 | source = "registry+https://github.com/rust-lang/crates.io-index"
2881 | checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
2882 |
2883 | [[package]]
2884 | name = "time-macros"
2885 | version = "0.2.14"
2886 | source = "registry+https://github.com/rust-lang/crates.io-index"
2887 | checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572"
2888 | dependencies = [
2889 | "time-core",
2890 | ]
2891 |
2892 | [[package]]
2893 | name = "tinyvec"
2894 | version = "1.6.0"
2895 | source = "registry+https://github.com/rust-lang/crates.io-index"
2896 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
2897 | dependencies = [
2898 | "tinyvec_macros",
2899 | ]
2900 |
2901 | [[package]]
2902 | name = "tinyvec_macros"
2903 | version = "0.1.1"
2904 | source = "registry+https://github.com/rust-lang/crates.io-index"
2905 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
2906 |
2907 | [[package]]
2908 | name = "tokio"
2909 | version = "1.32.0"
2910 | source = "registry+https://github.com/rust-lang/crates.io-index"
2911 | checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
2912 | dependencies = [
2913 | "backtrace",
2914 | "bytes",
2915 | "num_cpus",
2916 | "pin-project-lite",
2917 | ]
2918 |
2919 | [[package]]
2920 | name = "toml"
2921 | version = "0.5.11"
2922 | source = "registry+https://github.com/rust-lang/crates.io-index"
2923 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
2924 | dependencies = [
2925 | "serde",
2926 | ]
2927 |
2928 | [[package]]
2929 | name = "toml"
2930 | version = "0.7.6"
2931 | source = "registry+https://github.com/rust-lang/crates.io-index"
2932 | checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542"
2933 | dependencies = [
2934 | "serde",
2935 | "serde_spanned",
2936 | "toml_datetime",
2937 | "toml_edit",
2938 | ]
2939 |
2940 | [[package]]
2941 | name = "toml_datetime"
2942 | version = "0.6.3"
2943 | source = "registry+https://github.com/rust-lang/crates.io-index"
2944 | checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
2945 | dependencies = [
2946 | "serde",
2947 | ]
2948 |
2949 | [[package]]
2950 | name = "toml_edit"
2951 | version = "0.19.14"
2952 | source = "registry+https://github.com/rust-lang/crates.io-index"
2953 | checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a"
2954 | dependencies = [
2955 | "indexmap 2.0.0",
2956 | "serde",
2957 | "serde_spanned",
2958 | "toml_datetime",
2959 | "winnow",
2960 | ]
2961 |
2962 | [[package]]
2963 | name = "tracing"
2964 | version = "0.1.37"
2965 | source = "registry+https://github.com/rust-lang/crates.io-index"
2966 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
2967 | dependencies = [
2968 | "cfg-if",
2969 | "pin-project-lite",
2970 | "tracing-attributes",
2971 | "tracing-core",
2972 | ]
2973 |
2974 | [[package]]
2975 | name = "tracing-attributes"
2976 | version = "0.1.26"
2977 | source = "registry+https://github.com/rust-lang/crates.io-index"
2978 | checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
2979 | dependencies = [
2980 | "proc-macro2",
2981 | "quote",
2982 | "syn 2.0.31",
2983 | ]
2984 |
2985 | [[package]]
2986 | name = "tracing-core"
2987 | version = "0.1.31"
2988 | source = "registry+https://github.com/rust-lang/crates.io-index"
2989 | checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
2990 | dependencies = [
2991 | "once_cell",
2992 | "valuable",
2993 | ]
2994 |
2995 | [[package]]
2996 | name = "tracing-log"
2997 | version = "0.1.3"
2998 | source = "registry+https://github.com/rust-lang/crates.io-index"
2999 | checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
3000 | dependencies = [
3001 | "lazy_static",
3002 | "log",
3003 | "tracing-core",
3004 | ]
3005 |
3006 | [[package]]
3007 | name = "tracing-subscriber"
3008 | version = "0.3.17"
3009 | source = "registry+https://github.com/rust-lang/crates.io-index"
3010 | checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
3011 | dependencies = [
3012 | "matchers",
3013 | "nu-ansi-term",
3014 | "once_cell",
3015 | "regex",
3016 | "sharded-slab",
3017 | "smallvec",
3018 | "thread_local",
3019 | "tracing",
3020 | "tracing-core",
3021 | "tracing-log",
3022 | ]
3023 |
3024 | [[package]]
3025 | name = "treediff"
3026 | version = "4.0.2"
3027 | source = "registry+https://github.com/rust-lang/crates.io-index"
3028 | checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303"
3029 | dependencies = [
3030 | "serde_json",
3031 | ]
3032 |
3033 | [[package]]
3034 | name = "typenum"
3035 | version = "1.16.0"
3036 | source = "registry+https://github.com/rust-lang/crates.io-index"
3037 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
3038 |
3039 | [[package]]
3040 | name = "unicode-bidi"
3041 | version = "0.3.13"
3042 | source = "registry+https://github.com/rust-lang/crates.io-index"
3043 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
3044 |
3045 | [[package]]
3046 | name = "unicode-ident"
3047 | version = "1.0.11"
3048 | source = "registry+https://github.com/rust-lang/crates.io-index"
3049 | checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
3050 |
3051 | [[package]]
3052 | name = "unicode-normalization"
3053 | version = "0.1.22"
3054 | source = "registry+https://github.com/rust-lang/crates.io-index"
3055 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
3056 | dependencies = [
3057 | "tinyvec",
3058 | ]
3059 |
3060 | [[package]]
3061 | name = "unicode-segmentation"
3062 | version = "1.10.1"
3063 | source = "registry+https://github.com/rust-lang/crates.io-index"
3064 | checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
3065 |
3066 | [[package]]
3067 | name = "url"
3068 | version = "2.4.1"
3069 | source = "registry+https://github.com/rust-lang/crates.io-index"
3070 | checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
3071 | dependencies = [
3072 | "form_urlencoded",
3073 | "idna",
3074 | "percent-encoding",
3075 | "serde",
3076 | ]
3077 |
3078 | [[package]]
3079 | name = "utf-8"
3080 | version = "0.7.6"
3081 | source = "registry+https://github.com/rust-lang/crates.io-index"
3082 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
3083 |
3084 | [[package]]
3085 | name = "uuid"
3086 | version = "1.4.1"
3087 | source = "registry+https://github.com/rust-lang/crates.io-index"
3088 | checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
3089 | dependencies = [
3090 | "getrandom 0.2.10",
3091 | ]
3092 |
3093 | [[package]]
3094 | name = "valuable"
3095 | version = "0.1.0"
3096 | source = "registry+https://github.com/rust-lang/crates.io-index"
3097 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
3098 |
3099 | [[package]]
3100 | name = "version-compare"
3101 | version = "0.0.11"
3102 | source = "registry+https://github.com/rust-lang/crates.io-index"
3103 | checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b"
3104 |
3105 | [[package]]
3106 | name = "version-compare"
3107 | version = "0.1.1"
3108 | source = "registry+https://github.com/rust-lang/crates.io-index"
3109 | checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
3110 |
3111 | [[package]]
3112 | name = "version_check"
3113 | version = "0.9.4"
3114 | source = "registry+https://github.com/rust-lang/crates.io-index"
3115 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
3116 |
3117 | [[package]]
3118 | name = "vswhom"
3119 | version = "0.1.0"
3120 | source = "registry+https://github.com/rust-lang/crates.io-index"
3121 | checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b"
3122 | dependencies = [
3123 | "libc",
3124 | "vswhom-sys",
3125 | ]
3126 |
3127 | [[package]]
3128 | name = "vswhom-sys"
3129 | version = "0.1.2"
3130 | source = "registry+https://github.com/rust-lang/crates.io-index"
3131 | checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18"
3132 | dependencies = [
3133 | "cc",
3134 | "libc",
3135 | ]
3136 |
3137 | [[package]]
3138 | name = "walkdir"
3139 | version = "2.3.3"
3140 | source = "registry+https://github.com/rust-lang/crates.io-index"
3141 | checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
3142 | dependencies = [
3143 | "same-file",
3144 | "winapi-util",
3145 | ]
3146 |
3147 | [[package]]
3148 | name = "wasi"
3149 | version = "0.9.0+wasi-snapshot-preview1"
3150 | source = "registry+https://github.com/rust-lang/crates.io-index"
3151 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
3152 |
3153 | [[package]]
3154 | name = "wasi"
3155 | version = "0.11.0+wasi-snapshot-preview1"
3156 | source = "registry+https://github.com/rust-lang/crates.io-index"
3157 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
3158 |
3159 | [[package]]
3160 | name = "wasm-bindgen"
3161 | version = "0.2.87"
3162 | source = "registry+https://github.com/rust-lang/crates.io-index"
3163 | checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
3164 | dependencies = [
3165 | "cfg-if",
3166 | "wasm-bindgen-macro",
3167 | ]
3168 |
3169 | [[package]]
3170 | name = "wasm-bindgen-backend"
3171 | version = "0.2.87"
3172 | source = "registry+https://github.com/rust-lang/crates.io-index"
3173 | checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
3174 | dependencies = [
3175 | "bumpalo",
3176 | "log",
3177 | "once_cell",
3178 | "proc-macro2",
3179 | "quote",
3180 | "syn 2.0.31",
3181 | "wasm-bindgen-shared",
3182 | ]
3183 |
3184 | [[package]]
3185 | name = "wasm-bindgen-macro"
3186 | version = "0.2.87"
3187 | source = "registry+https://github.com/rust-lang/crates.io-index"
3188 | checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
3189 | dependencies = [
3190 | "quote",
3191 | "wasm-bindgen-macro-support",
3192 | ]
3193 |
3194 | [[package]]
3195 | name = "wasm-bindgen-macro-support"
3196 | version = "0.2.87"
3197 | source = "registry+https://github.com/rust-lang/crates.io-index"
3198 | checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
3199 | dependencies = [
3200 | "proc-macro2",
3201 | "quote",
3202 | "syn 2.0.31",
3203 | "wasm-bindgen-backend",
3204 | "wasm-bindgen-shared",
3205 | ]
3206 |
3207 | [[package]]
3208 | name = "wasm-bindgen-shared"
3209 | version = "0.2.87"
3210 | source = "registry+https://github.com/rust-lang/crates.io-index"
3211 | checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
3212 |
3213 | [[package]]
3214 | name = "webkit2gtk"
3215 | version = "0.18.2"
3216 | source = "registry+https://github.com/rust-lang/crates.io-index"
3217 | checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370"
3218 | dependencies = [
3219 | "bitflags 1.3.2",
3220 | "cairo-rs",
3221 | "gdk",
3222 | "gdk-sys",
3223 | "gio",
3224 | "gio-sys",
3225 | "glib",
3226 | "glib-sys",
3227 | "gobject-sys",
3228 | "gtk",
3229 | "gtk-sys",
3230 | "javascriptcore-rs",
3231 | "libc",
3232 | "once_cell",
3233 | "soup2",
3234 | "webkit2gtk-sys",
3235 | ]
3236 |
3237 | [[package]]
3238 | name = "webkit2gtk-sys"
3239 | version = "0.18.0"
3240 | source = "registry+https://github.com/rust-lang/crates.io-index"
3241 | checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3"
3242 | dependencies = [
3243 | "atk-sys",
3244 | "bitflags 1.3.2",
3245 | "cairo-sys-rs",
3246 | "gdk-pixbuf-sys",
3247 | "gdk-sys",
3248 | "gio-sys",
3249 | "glib-sys",
3250 | "gobject-sys",
3251 | "gtk-sys",
3252 | "javascriptcore-rs-sys",
3253 | "libc",
3254 | "pango-sys",
3255 | "pkg-config",
3256 | "soup2-sys",
3257 | "system-deps 6.1.1",
3258 | ]
3259 |
3260 | [[package]]
3261 | name = "webview2-com"
3262 | version = "0.19.1"
3263 | source = "registry+https://github.com/rust-lang/crates.io-index"
3264 | checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178"
3265 | dependencies = [
3266 | "webview2-com-macros",
3267 | "webview2-com-sys",
3268 | "windows 0.39.0",
3269 | "windows-implement",
3270 | ]
3271 |
3272 | [[package]]
3273 | name = "webview2-com-macros"
3274 | version = "0.6.0"
3275 | source = "registry+https://github.com/rust-lang/crates.io-index"
3276 | checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac"
3277 | dependencies = [
3278 | "proc-macro2",
3279 | "quote",
3280 | "syn 1.0.109",
3281 | ]
3282 |
3283 | [[package]]
3284 | name = "webview2-com-sys"
3285 | version = "0.19.0"
3286 | source = "registry+https://github.com/rust-lang/crates.io-index"
3287 | checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7"
3288 | dependencies = [
3289 | "regex",
3290 | "serde",
3291 | "serde_json",
3292 | "thiserror",
3293 | "windows 0.39.0",
3294 | "windows-bindgen",
3295 | "windows-metadata",
3296 | ]
3297 |
3298 | [[package]]
3299 | name = "winapi"
3300 | version = "0.3.9"
3301 | source = "registry+https://github.com/rust-lang/crates.io-index"
3302 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
3303 | dependencies = [
3304 | "winapi-i686-pc-windows-gnu",
3305 | "winapi-x86_64-pc-windows-gnu",
3306 | ]
3307 |
3308 | [[package]]
3309 | name = "winapi-i686-pc-windows-gnu"
3310 | version = "0.4.0"
3311 | source = "registry+https://github.com/rust-lang/crates.io-index"
3312 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
3313 |
3314 | [[package]]
3315 | name = "winapi-util"
3316 | version = "0.1.5"
3317 | source = "registry+https://github.com/rust-lang/crates.io-index"
3318 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
3319 | dependencies = [
3320 | "winapi",
3321 | ]
3322 |
3323 | [[package]]
3324 | name = "winapi-x86_64-pc-windows-gnu"
3325 | version = "0.4.0"
3326 | source = "registry+https://github.com/rust-lang/crates.io-index"
3327 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
3328 |
3329 | [[package]]
3330 | name = "windows"
3331 | version = "0.39.0"
3332 | source = "registry+https://github.com/rust-lang/crates.io-index"
3333 | checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a"
3334 | dependencies = [
3335 | "windows-implement",
3336 | "windows_aarch64_msvc 0.39.0",
3337 | "windows_i686_gnu 0.39.0",
3338 | "windows_i686_msvc 0.39.0",
3339 | "windows_x86_64_gnu 0.39.0",
3340 | "windows_x86_64_msvc 0.39.0",
3341 | ]
3342 |
3343 | [[package]]
3344 | name = "windows"
3345 | version = "0.48.0"
3346 | source = "registry+https://github.com/rust-lang/crates.io-index"
3347 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
3348 | dependencies = [
3349 | "windows-targets",
3350 | ]
3351 |
3352 | [[package]]
3353 | name = "windows-bindgen"
3354 | version = "0.39.0"
3355 | source = "registry+https://github.com/rust-lang/crates.io-index"
3356 | checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41"
3357 | dependencies = [
3358 | "windows-metadata",
3359 | "windows-tokens",
3360 | ]
3361 |
3362 | [[package]]
3363 | name = "windows-implement"
3364 | version = "0.39.0"
3365 | source = "registry+https://github.com/rust-lang/crates.io-index"
3366 | checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7"
3367 | dependencies = [
3368 | "syn 1.0.109",
3369 | "windows-tokens",
3370 | ]
3371 |
3372 | [[package]]
3373 | name = "windows-metadata"
3374 | version = "0.39.0"
3375 | source = "registry+https://github.com/rust-lang/crates.io-index"
3376 | checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278"
3377 |
3378 | [[package]]
3379 | name = "windows-sys"
3380 | version = "0.42.0"
3381 | source = "registry+https://github.com/rust-lang/crates.io-index"
3382 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
3383 | dependencies = [
3384 | "windows_aarch64_gnullvm 0.42.2",
3385 | "windows_aarch64_msvc 0.42.2",
3386 | "windows_i686_gnu 0.42.2",
3387 | "windows_i686_msvc 0.42.2",
3388 | "windows_x86_64_gnu 0.42.2",
3389 | "windows_x86_64_gnullvm 0.42.2",
3390 | "windows_x86_64_msvc 0.42.2",
3391 | ]
3392 |
3393 | [[package]]
3394 | name = "windows-sys"
3395 | version = "0.48.0"
3396 | source = "registry+https://github.com/rust-lang/crates.io-index"
3397 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
3398 | dependencies = [
3399 | "windows-targets",
3400 | ]
3401 |
3402 | [[package]]
3403 | name = "windows-targets"
3404 | version = "0.48.5"
3405 | source = "registry+https://github.com/rust-lang/crates.io-index"
3406 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
3407 | dependencies = [
3408 | "windows_aarch64_gnullvm 0.48.5",
3409 | "windows_aarch64_msvc 0.48.5",
3410 | "windows_i686_gnu 0.48.5",
3411 | "windows_i686_msvc 0.48.5",
3412 | "windows_x86_64_gnu 0.48.5",
3413 | "windows_x86_64_gnullvm 0.48.5",
3414 | "windows_x86_64_msvc 0.48.5",
3415 | ]
3416 |
3417 | [[package]]
3418 | name = "windows-tokens"
3419 | version = "0.39.0"
3420 | source = "registry+https://github.com/rust-lang/crates.io-index"
3421 | checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597"
3422 |
3423 | [[package]]
3424 | name = "windows_aarch64_gnullvm"
3425 | version = "0.42.2"
3426 | source = "registry+https://github.com/rust-lang/crates.io-index"
3427 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
3428 |
3429 | [[package]]
3430 | name = "windows_aarch64_gnullvm"
3431 | version = "0.48.5"
3432 | source = "registry+https://github.com/rust-lang/crates.io-index"
3433 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
3434 |
3435 | [[package]]
3436 | name = "windows_aarch64_msvc"
3437 | version = "0.39.0"
3438 | source = "registry+https://github.com/rust-lang/crates.io-index"
3439 | checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2"
3440 |
3441 | [[package]]
3442 | name = "windows_aarch64_msvc"
3443 | version = "0.42.2"
3444 | source = "registry+https://github.com/rust-lang/crates.io-index"
3445 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
3446 |
3447 | [[package]]
3448 | name = "windows_aarch64_msvc"
3449 | version = "0.48.5"
3450 | source = "registry+https://github.com/rust-lang/crates.io-index"
3451 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
3452 |
3453 | [[package]]
3454 | name = "windows_i686_gnu"
3455 | version = "0.39.0"
3456 | source = "registry+https://github.com/rust-lang/crates.io-index"
3457 | checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b"
3458 |
3459 | [[package]]
3460 | name = "windows_i686_gnu"
3461 | version = "0.42.2"
3462 | source = "registry+https://github.com/rust-lang/crates.io-index"
3463 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
3464 |
3465 | [[package]]
3466 | name = "windows_i686_gnu"
3467 | version = "0.48.5"
3468 | source = "registry+https://github.com/rust-lang/crates.io-index"
3469 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
3470 |
3471 | [[package]]
3472 | name = "windows_i686_msvc"
3473 | version = "0.39.0"
3474 | source = "registry+https://github.com/rust-lang/crates.io-index"
3475 | checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106"
3476 |
3477 | [[package]]
3478 | name = "windows_i686_msvc"
3479 | version = "0.42.2"
3480 | source = "registry+https://github.com/rust-lang/crates.io-index"
3481 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
3482 |
3483 | [[package]]
3484 | name = "windows_i686_msvc"
3485 | version = "0.48.5"
3486 | source = "registry+https://github.com/rust-lang/crates.io-index"
3487 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
3488 |
3489 | [[package]]
3490 | name = "windows_x86_64_gnu"
3491 | version = "0.39.0"
3492 | source = "registry+https://github.com/rust-lang/crates.io-index"
3493 | checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65"
3494 |
3495 | [[package]]
3496 | name = "windows_x86_64_gnu"
3497 | version = "0.42.2"
3498 | source = "registry+https://github.com/rust-lang/crates.io-index"
3499 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
3500 |
3501 | [[package]]
3502 | name = "windows_x86_64_gnu"
3503 | version = "0.48.5"
3504 | source = "registry+https://github.com/rust-lang/crates.io-index"
3505 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
3506 |
3507 | [[package]]
3508 | name = "windows_x86_64_gnullvm"
3509 | version = "0.42.2"
3510 | source = "registry+https://github.com/rust-lang/crates.io-index"
3511 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
3512 |
3513 | [[package]]
3514 | name = "windows_x86_64_gnullvm"
3515 | version = "0.48.5"
3516 | source = "registry+https://github.com/rust-lang/crates.io-index"
3517 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
3518 |
3519 | [[package]]
3520 | name = "windows_x86_64_msvc"
3521 | version = "0.39.0"
3522 | source = "registry+https://github.com/rust-lang/crates.io-index"
3523 | checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809"
3524 |
3525 | [[package]]
3526 | name = "windows_x86_64_msvc"
3527 | version = "0.42.2"
3528 | source = "registry+https://github.com/rust-lang/crates.io-index"
3529 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
3530 |
3531 | [[package]]
3532 | name = "windows_x86_64_msvc"
3533 | version = "0.48.5"
3534 | source = "registry+https://github.com/rust-lang/crates.io-index"
3535 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
3536 |
3537 | [[package]]
3538 | name = "winnow"
3539 | version = "0.5.15"
3540 | source = "registry+https://github.com/rust-lang/crates.io-index"
3541 | checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc"
3542 | dependencies = [
3543 | "memchr",
3544 | ]
3545 |
3546 | [[package]]
3547 | name = "winreg"
3548 | version = "0.51.0"
3549 | source = "registry+https://github.com/rust-lang/crates.io-index"
3550 | checksum = "937f3df7948156640f46aacef17a70db0de5917bda9c92b0f751f3a955b588fc"
3551 | dependencies = [
3552 | "cfg-if",
3553 | "windows-sys 0.48.0",
3554 | ]
3555 |
3556 | [[package]]
3557 | name = "wry"
3558 | version = "0.24.3"
3559 | source = "registry+https://github.com/rust-lang/crates.io-index"
3560 | checksum = "33748f35413c8a98d45f7a08832d848c0c5915501803d1faade5a4ebcd258cea"
3561 | dependencies = [
3562 | "base64 0.13.1",
3563 | "block",
3564 | "cocoa",
3565 | "core-graphics",
3566 | "crossbeam-channel",
3567 | "dunce",
3568 | "gdk",
3569 | "gio",
3570 | "glib",
3571 | "gtk",
3572 | "html5ever",
3573 | "http",
3574 | "kuchiki",
3575 | "libc",
3576 | "log",
3577 | "objc",
3578 | "objc_id",
3579 | "once_cell",
3580 | "serde",
3581 | "serde_json",
3582 | "sha2",
3583 | "soup2",
3584 | "tao",
3585 | "thiserror",
3586 | "url",
3587 | "webkit2gtk",
3588 | "webkit2gtk-sys",
3589 | "webview2-com",
3590 | "windows 0.39.0",
3591 | "windows-implement",
3592 | ]
3593 |
3594 | [[package]]
3595 | name = "x11"
3596 | version = "2.21.0"
3597 | source = "registry+https://github.com/rust-lang/crates.io-index"
3598 | checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e"
3599 | dependencies = [
3600 | "libc",
3601 | "pkg-config",
3602 | ]
3603 |
3604 | [[package]]
3605 | name = "x11-dl"
3606 | version = "2.21.0"
3607 | source = "registry+https://github.com/rust-lang/crates.io-index"
3608 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f"
3609 | dependencies = [
3610 | "libc",
3611 | "once_cell",
3612 | "pkg-config",
3613 | ]
3614 |
3615 | [[package]]
3616 | name = "xattr"
3617 | version = "1.0.1"
3618 | source = "registry+https://github.com/rust-lang/crates.io-index"
3619 | checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985"
3620 | dependencies = [
3621 | "libc",
3622 | ]
3623 |
--------------------------------------------------------------------------------
/backend/src-tauri/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "backend"
3 | version = "0.0.0"
4 | description = "A Tauri App"
5 | authors = ["you"]
6 | license = ""
7 | repository = ""
8 | edition = "2021"
9 |
10 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
11 |
12 | [build-dependencies]
13 | tauri-build = { version = "1.4", features = [] }
14 |
15 | [dependencies]
16 | tauri = { version = "1.4", features = [ "window-center", "window-set-size", "window-maximize", "process-exit", "macos-private-api", "system-tray", "shell-open"] }
17 | serde = { version = "1.0", features = ["derive"] }
18 | serde_json = "1.0"
19 |
20 | [features]
21 | # this feature is used for production builds or when `devPath` points to the filesystem
22 | # DO NOT REMOVE!!
23 | custom-protocol = ["tauri/custom-protocol"]
24 |
--------------------------------------------------------------------------------
/backend/src-tauri/build.rs:
--------------------------------------------------------------------------------
1 | fn main() {
2 | tauri_build::build()
3 | }
4 |
--------------------------------------------------------------------------------
/backend/src-tauri/icons/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/128x128.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/128x128@2x.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/32x32.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square107x107Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square107x107Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square142x142Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square142x142Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square150x150Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square150x150Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square284x284Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square284x284Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square30x30Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square30x30Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square310x310Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square310x310Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square44x44Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square44x44Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square71x71Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square71x71Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/Square89x89Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/Square89x89Logo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/StoreLogo.png
--------------------------------------------------------------------------------
/backend/src-tauri/icons/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/icon.icns
--------------------------------------------------------------------------------
/backend/src-tauri/icons/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/icon.ico
--------------------------------------------------------------------------------
/backend/src-tauri/icons/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src-tauri/icons/icon.png
--------------------------------------------------------------------------------
/backend/src-tauri/src/main.rs:
--------------------------------------------------------------------------------
1 | // Prevents additional console window on Windows in release, DO NOT REMOVE!!
2 | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
3 |
4 | use tauri::{Manager, SystemTray, SystemTrayEvent, SystemTrayMenu};
5 |
6 | fn main() {
7 | let system_tray_menu = SystemTrayMenu::new();
8 | tauri::Builder::default()
9 | .system_tray(SystemTray::new().with_menu(system_tray_menu))
10 | // Remove the icon in the macos dock
11 | .setup(|app| {
12 | app.set_activation_policy(tauri::ActivationPolicy::Accessory);
13 | Ok(())
14 | })
15 | .on_system_tray_event(|app, event| match event {
16 | SystemTrayEvent::LeftClick {
17 | position: _,
18 | size: _,
19 | ..
20 | } => {
21 | let window = app.get_window("main").unwrap();
22 | // toggle application window
23 | if window.is_visible().unwrap() {
24 | window.hide().unwrap();
25 | } else {
26 | window.show().unwrap();
27 | window.set_focus().unwrap();
28 | }
29 | },
30 | SystemTrayEvent::MenuItemClick { id, .. } => match id.as_str() {
31 | "quit" => {
32 | std::process::exit(0);
33 | }
34 | _ => {}
35 | },
36 | _ => {}
37 | })
38 | .on_window_event(|event| match event.event() {
39 | tauri::WindowEvent::Focused(is_focused) => {
40 | // detect click outside of the focused window and hide the app
41 | if !is_focused {
42 | event.window().hide().unwrap();
43 | }
44 | }
45 | _ => {}
46 | })
47 | .run(tauri::generate_context!())
48 | .expect("error while running tauri application");
49 | }
50 |
--------------------------------------------------------------------------------
/backend/src-tauri/tauri.conf.json:
--------------------------------------------------------------------------------
1 | {
2 | "build": {
3 | "beforeDevCommand": "npm run dev",
4 | "beforeBuildCommand": "npm run build",
5 | "devPath": "http://localhost:1420",
6 | "distDir": "../dist",
7 | "withGlobalTauri": true
8 | },
9 | "package": {
10 | "productName": "endo",
11 | "version": "0.0.1"
12 | },
13 | "tauri": {
14 | "allowlist": {
15 | "all": false,
16 | "shell": {
17 | "all": false,
18 | "open": true
19 | },
20 | "process": {
21 | "all": false,
22 | "exit": true,
23 | "relaunch": false,
24 | "relaunchDangerousAllowSymlinkMacos": false
25 | },
26 | "window": {
27 | "all": false,
28 | "center": true,
29 | "close": false,
30 | "create": false,
31 | "hide": false,
32 | "maximize": true,
33 | "minimize": false,
34 | "print": false,
35 | "requestUserAttention": false,
36 | "setAlwaysOnTop": false,
37 | "setClosable": false,
38 | "setContentProtected": false,
39 | "setCursorGrab": false,
40 | "setCursorIcon": false,
41 | "setCursorPosition": false,
42 | "setCursorVisible": false,
43 | "setDecorations": false,
44 | "setFocus": false,
45 | "setFullscreen": false,
46 | "setIcon": false,
47 | "setIgnoreCursorEvents": false,
48 | "setMaxSize": false,
49 | "setMaximizable": false,
50 | "setMinSize": false,
51 | "setMinimizable": false,
52 | "setPosition": false,
53 | "setResizable": false,
54 | "setSize": true,
55 | "setSkipTaskbar": false,
56 | "setTitle": false,
57 | "show": false,
58 | "startDragging": false,
59 | "unmaximize": false,
60 | "unminimize": false
61 | }
62 | },
63 | "bundle": {
64 | "active": true,
65 | "targets": "all",
66 | "identifier": "com.endo.dev",
67 | "icon": [
68 | "icons/32x32.png",
69 | "icons/128x128.png",
70 | "icons/128x128@2x.png",
71 | "icons/icon.icns",
72 | "icons/icon.ico"
73 | ]
74 | },
75 | "security": {
76 | "csp": null,
77 | "dangerousRemoteDomainIpcAccess": [
78 | {
79 | "windows": ["main"],
80 | "domain": "endo.vercel.app",
81 | "enableTauriAPI": true
82 | }
83 | ]
84 | },
85 | "macOSPrivateApi": true,
86 | "windows": [
87 | {
88 | "fullscreen": false,
89 | "height": 400,
90 | "resizable": false,
91 | "title": "Endo",
92 | "width": 600,
93 | "visible": false,
94 | "hiddenTitle": true,
95 | "decorations": false,
96 | "focus": false,
97 | "transparent": true,
98 | "center": true,
99 | "alwaysOnTop": true
100 | }
101 | ],
102 | "systemTray": {
103 | "iconPath": "icons/icon.png",
104 | "iconAsTemplate": true,
105 | "menuOnLeftClick": false
106 | }
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/backend/src/assets/tauri.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/backend/src/assets/typescript.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
10 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/backend/src/assets/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backend/src/main.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/backend/src/main.ts
--------------------------------------------------------------------------------
/backend/src/styles.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
3 | font-size: 16px;
4 | line-height: 24px;
5 | font-weight: 400;
6 |
7 | color: #0f0f0f;
8 | background-color: #f6f6f6;
9 |
10 | font-synthesis: none;
11 | text-rendering: optimizeLegibility;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | -webkit-text-size-adjust: 100%;
15 | }
16 |
17 | .container {
18 | margin: 0;
19 | padding-top: 10vh;
20 | display: flex;
21 | flex-direction: column;
22 | justify-content: center;
23 | text-align: center;
24 | }
25 |
26 | .logo {
27 | height: 6em;
28 | padding: 1.5em;
29 | will-change: filter;
30 | transition: 0.75s;
31 | }
32 |
33 | .logo.tauri:hover {
34 | filter: drop-shadow(0 0 2em #24c8db);
35 | }
36 |
37 | .row {
38 | display: flex;
39 | justify-content: center;
40 | }
41 |
42 | a {
43 | font-weight: 500;
44 | color: #646cff;
45 | text-decoration: inherit;
46 | }
47 |
48 | a:hover {
49 | color: #535bf2;
50 | }
51 |
52 | h1 {
53 | text-align: center;
54 | }
55 |
56 | input,
57 | button {
58 | border-radius: 8px;
59 | border: 1px solid transparent;
60 | padding: 0.6em 1.2em;
61 | font-size: 1em;
62 | font-weight: 500;
63 | font-family: inherit;
64 | color: #0f0f0f;
65 | background-color: #ffffff;
66 | transition: border-color 0.25s;
67 | box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
68 | }
69 |
70 | button {
71 | cursor: pointer;
72 | }
73 |
74 | button:hover {
75 | border-color: #396cd8;
76 | }
77 | button:active {
78 | border-color: #396cd8;
79 | background-color: #e8e8e8;
80 | }
81 |
82 | input,
83 | button {
84 | outline: none;
85 | }
86 |
87 | #greet-input {
88 | margin-right: 5px;
89 | }
90 |
91 | @media (prefers-color-scheme: dark) {
92 | :root {
93 | color: #f6f6f6;
94 | background-color: #2f2f2f;
95 | }
96 |
97 | a:hover {
98 | color: #24c8db;
99 | }
100 |
101 | input,
102 | button {
103 | color: #ffffff;
104 | background-color: #0f0f0f98;
105 | }
106 | button:active {
107 | background-color: #0f0f0f69;
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/backend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "module": "ESNext",
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true
21 | },
22 | "include": ["src"]
23 | }
24 |
--------------------------------------------------------------------------------
/backend/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 |
3 | // https://vitejs.dev/config/
4 | export default defineConfig(async () => ({
5 | // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
6 | //
7 | // 1. prevent vite from obscuring rust errors
8 | clearScreen: false,
9 | // 2. tauri expects a fixed port, fail if that port is not available
10 | server: {
11 | port: 1420,
12 | strictPort: true,
13 | },
14 | // 3. to make use of `TAURI_DEBUG` and other env variables
15 | // https://tauri.studio/v1/api/config#buildconfig.beforedevcommand
16 | envPrefix: ["VITE_", "TAURI_"],
17 | }));
18 |
--------------------------------------------------------------------------------
/frontend/.env.example:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
2 | NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
3 | OPENAI_API_KEY=your_openai_api_key
--------------------------------------------------------------------------------
/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | node_modules
5 | .pnp
6 | .pnp.js
7 |
8 | # testing
9 | coverage
10 |
11 | # next.js
12 | .next/
13 | out/
14 | build
15 |
16 | # misc
17 | .DS_Store
18 | *.pem
19 |
20 | # debug
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
25 | # local env files
26 | .env
27 | .env.local
28 | .env.development.local
29 | .env.test.local
30 | .env.production.local
31 |
32 | # turbo
33 | .turbo
34 |
35 | # vercel
36 | .vercel
37 |
--------------------------------------------------------------------------------
/frontend/README.md:
--------------------------------------------------------------------------------
1 | # Frontend
2 |
3 | This is a Next.js project boostrapped with `create-next-app`. This directory is deployed to a web URL that is remotely called by the Tauri window (`./backend`).
4 |
--------------------------------------------------------------------------------
/frontend/app/api/generate/route.ts:
--------------------------------------------------------------------------------
1 | import OpenAI from "openai";
2 | import { OpenAIStream, StreamingTextResponse } from "ai";
3 | import { kv } from "@vercel/kv";
4 | import { Ratelimit } from "@upstash/ratelimit";
5 |
6 | // Create an OpenAI API client (that's edge friendly!)
7 | const openai = new OpenAI({
8 | apiKey: process.env.OPENAI_API_KEY || "",
9 | });
10 |
11 | // IMPORTANT! Set the runtime to edge: https://vercel.com/docs/functions/edge-functions/edge-runtime
12 | export const runtime = "edge";
13 |
14 | export async function POST(req: Request): Promise {
15 | // Check if the OPENAI_API_KEY is set, if not return 400
16 | if (!process.env.OPENAI_API_KEY || process.env.OPENAI_API_KEY === "") {
17 | return new Response(
18 | "Missing OPENAI_API_KEY – make sure to add it to your .env file.",
19 | {
20 | status: 400,
21 | }
22 | );
23 | }
24 | if (
25 | process.env.NODE_ENV != "development" &&
26 | process.env.KV_REST_API_URL &&
27 | process.env.KV_REST_API_TOKEN
28 | ) {
29 | const ip = req.headers.get("x-forwarded-for");
30 | const ratelimit = new Ratelimit({
31 | redis: kv,
32 | limiter: Ratelimit.slidingWindow(50, "1 d"),
33 | });
34 |
35 | const { success, limit, reset, remaining } = await ratelimit.limit(
36 | `novel_ratelimit_${ip}`
37 | );
38 |
39 | if (!success) {
40 | return new Response("You have reached your request limit for the day.", {
41 | status: 429,
42 | headers: {
43 | "X-RateLimit-Limit": limit.toString(),
44 | "X-RateLimit-Remaining": remaining.toString(),
45 | "X-RateLimit-Reset": reset.toString(),
46 | },
47 | });
48 | }
49 | }
50 |
51 | let { prompt } = await req.json();
52 |
53 | const response = await openai.chat.completions.create({
54 | model: "gpt-3.5-turbo",
55 | messages: [
56 | {
57 | role: "system",
58 | content:
59 | "You are an AI writing assistant that continues existing text based on context from prior text. " +
60 | "Give more weight/priority to the later characters than the beginning ones. " +
61 | "Limit your response to no more than 200 characters, but make sure to construct complete sentences.",
62 | // we're disabling markdown for now until we can figure out a way to stream markdown text with proper formatting: https://github.com/steven-tey/novel/discussions/7
63 | // "Use Markdown formatting when appropriate.",
64 | },
65 | {
66 | role: "user",
67 | content: prompt,
68 | },
69 | ],
70 | temperature: 0.7,
71 | top_p: 1,
72 | frequency_penalty: 0,
73 | presence_penalty: 0,
74 | stream: true,
75 | n: 1,
76 | });
77 |
78 | // Convert the response into a friendly text-stream
79 | const stream = OpenAIStream(response);
80 |
81 | // Respond with the stream
82 | return new StreamingTextResponse(stream);
83 | }
84 |
--------------------------------------------------------------------------------
/frontend/app/bookmarks/page.tsx:
--------------------------------------------------------------------------------
1 | function Bookmarks() {
2 | return (
3 |
4 | Bookmarks
5 |
6 | );
7 | }
8 |
9 | export default Bookmarks;
10 |
--------------------------------------------------------------------------------
/frontend/app/components/bookmark-button.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { BookmarkIcon } from "lucide-react";
3 | import { useRouter } from "next/navigation";
4 | import Tooltip from "./tooltip";
5 |
6 | function BookmarkButton() {
7 | const router = useRouter();
8 | return (
9 |
10 | router.push("/bookmarks")}
13 | >
14 |
15 |
16 |
17 | );
18 | }
19 |
20 | export default BookmarkButton;
21 |
--------------------------------------------------------------------------------
/frontend/app/components/create-bookmark-dialog.tsx:
--------------------------------------------------------------------------------
1 | import { PlusIcon } from "lucide-react";
2 | import {
3 | Dialog,
4 | DialogContent,
5 | DialogHeader,
6 | DialogTitle,
7 | DialogTrigger,
8 | } from "./dialog";
9 | import { useState } from "react";
10 |
11 | function CreateBookmarkDialog() {
12 | const [URL, setURl] = useState("");
13 | const [notes, setNotes] = useState("");
14 |
15 | return (
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | Add bookmark
25 |
26 | setURl(e.target.value)}
29 | value={URL}
30 | />
31 |
37 |
38 |
39 |
40 | );
41 | }
42 |
43 | export default CreateBookmarkDialog;
44 |
--------------------------------------------------------------------------------
/frontend/app/components/create-goal-dialog.tsx:
--------------------------------------------------------------------------------
1 | import { PlusIcon } from "lucide-react";
2 | import {
3 | Dialog,
4 | DialogContent,
5 | DialogHeader,
6 | DialogTitle,
7 | DialogTrigger,
8 | } from "./dialog";
9 | import { useState } from "react";
10 | import Tooltip from "./tooltip";
11 |
12 | function CreateGoalDialog() {
13 | const [goal, setGoal] = useState("");
14 |
15 | return (
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Add goal
27 |
28 | setGoal(e.target.value)}
31 | value={goal}
32 | />
33 |
34 |
35 |
36 |
37 | );
38 | }
39 |
40 | export default CreateGoalDialog;
41 |
--------------------------------------------------------------------------------
/frontend/app/components/dialog.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import * as React from "react";
4 | import * as DialogPrimitive from "@radix-ui/react-dialog";
5 | import { X } from "lucide-react";
6 |
7 | import { cn } from "@/lib/utils";
8 |
9 | const Dialog = DialogPrimitive.Root;
10 |
11 | const DialogTrigger = DialogPrimitive.Trigger;
12 |
13 | const DialogPortal = ({
14 | className,
15 | ...props
16 | }: DialogPrimitive.DialogPortalProps) => (
17 |
18 | );
19 | DialogPortal.displayName = DialogPrimitive.Portal.displayName;
20 |
21 | const DialogOverlay = React.forwardRef<
22 | React.ElementRef,
23 | React.ComponentPropsWithoutRef
24 | >(({ className, ...props }, ref) => (
25 |
33 | ));
34 | DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
35 |
36 | const DialogContent = React.forwardRef<
37 | React.ElementRef,
38 | React.ComponentPropsWithoutRef
39 | >(({ className, children, ...props }, ref) => (
40 |
41 |
42 |
50 | {children}
51 |
52 |
53 | Close
54 |
55 |
56 |
57 | ));
58 | DialogContent.displayName = DialogPrimitive.Content.displayName;
59 |
60 | const DialogHeader = ({
61 | className,
62 | ...props
63 | }: React.HTMLAttributes) => (
64 |
71 | );
72 | DialogHeader.displayName = "DialogHeader";
73 |
74 | const DialogFooter = ({
75 | className,
76 | ...props
77 | }: React.HTMLAttributes) => (
78 |
85 | );
86 | DialogFooter.displayName = "DialogFooter";
87 |
88 | const DialogTitle = React.forwardRef<
89 | React.ElementRef,
90 | React.ComponentPropsWithoutRef
91 | >(({ className, ...props }, ref) => (
92 |
100 | ));
101 | DialogTitle.displayName = DialogPrimitive.Title.displayName;
102 |
103 | const DialogDescription = React.forwardRef<
104 | React.ElementRef,
105 | React.ComponentPropsWithoutRef
106 | >(({ className, ...props }, ref) => (
107 |
112 | ));
113 | DialogDescription.displayName = DialogPrimitive.Description.displayName;
114 |
115 | export {
116 | Dialog,
117 | DialogTrigger,
118 | DialogContent,
119 | DialogHeader,
120 | DialogFooter,
121 | DialogTitle,
122 | DialogDescription,
123 | };
124 |
--------------------------------------------------------------------------------
/frontend/app/components/editor.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { BubbleMenu, useEditor, EditorContent } from "@tiptap/react";
3 | import Placeholder from "@tiptap/extension-placeholder";
4 | import TaskItem from "@tiptap/extension-task-item";
5 | import TaskList from "@tiptap/extension-task-list";
6 | import StarterKit from "@tiptap/starter-kit";
7 | import Image from "@tiptap/extension-image";
8 | import Dropcursor from "@tiptap/extension-dropcursor";
9 | import {
10 | BoldIcon,
11 | CheckIcon,
12 | CodeIcon,
13 | HeadingIcon,
14 | ItalicIcon,
15 | ListIcon,
16 | ListOrderedIcon,
17 | StrikethroughIcon,
18 | } from "lucide-react";
19 | import { useEffect, useState } from "react";
20 | import { parseDate } from "@/lib/utils";
21 | import Footer from "./footer";
22 |
23 | const Toolbar = ({ editor }: { editor: any }) => {
24 | return (
25 |
30 |
31 | {/* Heading */}
32 |
34 | editor.chain().focus().toggleHeading({ level: 1 }).run()
35 | }
36 | className={
37 | editor.isActive("heading", { level: 1 }) ? "is-active" : ""
38 | }
39 | >
40 |
41 |
42 |
43 | {/* Bold */}
44 | editor.chain().focus().toggleBold().run()}
46 | disabled={!editor.can().chain().focus().toggleBold().run()}
47 | className={editor.isActive("bold") ? "is-active" : ""}
48 | >
49 |
50 |
51 |
52 | {/* Strikethrough */}
53 | editor.chain().focus().toggleStrike().run()}
55 | disabled={!editor.can().chain().focus().toggleStrike().run()}
56 | className={editor.isActive("strike") ? "is-active" : ""}
57 | >
58 |
59 |
60 |
61 | {/* Italic */}
62 | editor.chain().focus().toggleItalic().run()}
64 | disabled={!editor.can().chain().focus().toggleItalic().run()}
65 | className={editor.isActive("italic") ? "is-active" : ""}
66 | >
67 |
68 |
69 |
70 | {/* Code */}
71 | editor.chain().focus().toggleCode().run()}
73 | disabled={!editor.can().chain().focus().toggleCode().run()}
74 | className={editor.isActive("code") ? "is-active" : ""}
75 | >
76 |
77 |
78 |
79 | {/* Bullets */}
80 | editor.chain().focus().toggleBulletList().run()}
82 | className={editor.isActive("bulletList") ? "is-active" : ""}
83 | >
84 |
85 |
86 |
87 | {/* Numbers */}
88 | editor.chain().focus().toggleOrderedList().run()}
90 | className={editor.isActive("orderedList") ? "is-active" : ""}
91 | >
92 |
93 |
94 |
95 | {/* Checklist */}
96 | editor.chain().focus().toggleTaskList().run()}
98 | className={editor.isActive("taskList") ? "is-active" : ""}
99 | >
100 |
101 |
102 |
103 |
104 | );
105 | };
106 |
107 | const Editor = ({ entryDate }: { entryDate?: string }) => {
108 | const [content, setContent] = useState("");
109 | const now = new Date();
110 | const today = entryDate ? entryDate : now.toISOString().split("T")[0];
111 |
112 | const editor = useEditor(
113 | {
114 | extensions: [
115 | StarterKit,
116 | Image.configure({
117 | inline: true,
118 | }),
119 | Dropcursor,
120 | Placeholder.configure({
121 | placeholder: "Start typing...",
122 | emptyNodeClass:
123 | "first:before:text-gray-400 first:before:float-left first:before:content-[attr(data-placeholder)] first:before:pointer-events-none",
124 | }),
125 | TaskList.configure({
126 | HTMLAttributes: {
127 | class: "pl-8 list-none flex",
128 | },
129 | }),
130 | TaskItem.configure({
131 | nested: true,
132 | }),
133 | ],
134 | content: content,
135 | onUpdate: ({ editor }) => {
136 | const json = editor.getJSON();
137 | let notes = JSON.parse(localStorage.getItem(today) || "{}");
138 | notes = json; // Update the entry
139 | localStorage.setItem("notes", JSON.stringify(notes));
140 | },
141 | editorProps: {
142 | attributes: {
143 | class: "focus:outline-none",
144 | },
145 | },
146 | },
147 |
148 | []
149 | );
150 |
151 | // Get content from local storage upon page load
152 | useEffect(() => {
153 | const savedContent = JSON.parse(localStorage.getItem(today) || "{}");
154 | if (savedContent) {
155 | setContent(savedContent);
156 | }
157 | }, []);
158 |
159 | // Update local storage when there is a change
160 | useEffect(() => {
161 | if (content && editor) {
162 | // set content only if it exists
163 | editor.commands.setContent(content);
164 | }
165 | }, [editor, content]);
166 |
167 | if (!editor) {
168 | return null;
169 | }
170 |
171 | return (
172 | <>
173 |
174 |
{parseDate(today)}
175 | {editor && }
176 |
177 |
178 |
179 | >
180 | );
181 | };
182 |
183 | export default Editor;
184 |
--------------------------------------------------------------------------------
/frontend/app/components/footer.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { ReactNode } from "react";
3 | import { usePathname } from "next/navigation";
4 | import QuitButton from "./quit-button";
5 | import BookmarkButton from "./bookmark-button";
6 | import Link from "next/link";
7 | import CreateBookmarkDialog from "./create-bookmark-dialog";
8 | import GoalsButton from "./goals-button";
9 | import CreateGoalDialog from "./create-goal-dialog";
10 | import { parseDate } from "@/lib/utils";
11 | import MaximizeButton from "./maximize-button";
12 |
13 | function Layout({ children }: { children: ReactNode }) {
14 | return (
15 |
18 | );
19 | }
20 |
21 | function Footer({ date }: { date?: string }) {
22 | const pathname = usePathname();
23 | if (pathname === "/home")
24 | return (
25 |
26 | endo
27 |
28 |
29 |
30 |
31 |
32 |
33 | );
34 | else if (["/bookmarks", "/goals"].includes(pathname))
35 | return (
36 |
37 |
41 | endo
42 |
43 | {pathname === "/bookmarks" && }
44 | {pathname === "/goals" && }
45 |
46 | );
47 | else if (date)
48 | return (
49 |
50 |
54 | {parseDate(date)}
55 |
56 |
57 |
58 | );
59 | }
60 |
61 | export default Footer;
62 |
--------------------------------------------------------------------------------
/frontend/app/components/goals-button.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { GoalIcon } from "lucide-react";
3 | import { useRouter } from "next/navigation";
4 | import Tooltip from "./tooltip";
5 |
6 | function GoalsButton() {
7 | const router = useRouter();
8 | return (
9 |
10 | router.push("/goals")}
13 | >
14 |
15 |
16 |
17 | );
18 | }
19 |
20 | export default GoalsButton;
21 |
--------------------------------------------------------------------------------
/frontend/app/components/maximize-button.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { LogicalSize, appWindow } from "@tauri-apps/api/window";
3 | import { Maximize2Icon, ShrinkIcon } from "lucide-react";
4 | import Tooltip from "./tooltip";
5 | import { useState } from "react";
6 |
7 | function MaximizeButton() {
8 | const [isMaximized, setIsMaximized] = useState(false);
9 |
10 | const handleMaximize = async () => {
11 | if (isMaximized) {
12 | await appWindow.setSize(new LogicalSize(600, 400));
13 | await appWindow.center();
14 | } else await appWindow.maximize();
15 | setIsMaximized((prev) => !prev);
16 | };
17 | return (
18 |
19 |
23 | {isMaximized ? (
24 |
25 | ) : (
26 |
27 | )}
28 |
29 |
30 | );
31 | }
32 |
33 | export default MaximizeButton;
34 |
--------------------------------------------------------------------------------
/frontend/app/components/navbar.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { useGlobalShortcut } from "@/lib/hooks/use-global-shorcut";
3 | import { appWindow } from "@tauri-apps/api/window";
4 | import { HomeIcon, ShellIcon } from "lucide-react";
5 | import Link from "next/link";
6 | import { usePathname } from "next/navigation";
7 | import { useCallback, useEffect, useState } from "react";
8 |
9 | function Navbar() {
10 | const pathname = usePathname();
11 | // const [visible, setVisible] = useState(false);
12 |
13 | // useEffect(() => {
14 | // setVisible(await appWindow.isVisible());
15 | // }, []);
16 |
17 | // Hide window if "escape" is toggled from the keyboard
18 | // useEffect(() => {
19 | // const handleEscape = async (e: KeyboardEvent) => {
20 | // if (e.key === "Escape") {
21 | // await appWindow.hide();
22 | // }
23 | // };
24 |
25 | // window.addEventListener("keydown", handleEscape);
26 |
27 | // return () => window.removeEventListener("keydown", handleEscape);
28 | // }, []);
29 |
30 | // Register global shortcut for toggling application with Command + `
31 | // const shortcutHandler = useCallback(async () => {
32 | // if (visible) await appWindow.hide();
33 | // else await appWindow.show();
34 | // }, [visible]);
35 | // useGlobalShortcut("Command+`", shortcutHandler);
36 |
37 | return (
38 |
39 |
40 | {/* {pathname !== "/home" && (
41 |
42 |
43 |
44 | )} */}
45 | {pathname === "/home" && (
46 |
47 |
48 |
49 | )}
50 |
51 |
52 | );
53 | }
54 |
55 | export default Navbar;
56 |
--------------------------------------------------------------------------------
/frontend/app/components/quit-button.tsx:
--------------------------------------------------------------------------------
1 | import { exit } from "@tauri-apps/api/process";
2 | import { XIcon } from "lucide-react";
3 | import Tooltip from "./tooltip";
4 |
5 | function QuitButton() {
6 | const handleQuit = async () => {
7 | await exit(1);
8 | };
9 | return (
10 |
11 |
15 |
16 |
17 |
18 | );
19 | }
20 |
21 | export default QuitButton;
22 |
--------------------------------------------------------------------------------
/frontend/app/components/tooltip.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import * as React from "react";
4 | import * as TooltipPrimitive from "@radix-ui/react-tooltip";
5 |
6 | import { cn } from "@/lib/utils";
7 |
8 | const TooltipProvider = TooltipPrimitive.Provider;
9 |
10 | const TooltipRoot = TooltipPrimitive.Root;
11 |
12 | const TooltipTrigger = TooltipPrimitive.Trigger;
13 |
14 | const TooltipContent = React.forwardRef<
15 | React.ElementRef,
16 | React.ComponentPropsWithoutRef
17 | >(({ className, sideOffset = 4, ...props }, ref) => (
18 |
27 | ));
28 | TooltipContent.displayName = TooltipPrimitive.Content.displayName;
29 |
30 | const Tooltip = ({
31 | children,
32 | desc,
33 | }: {
34 | children: React.ReactNode;
35 | desc: string;
36 | }) => {
37 | return (
38 |
39 |
40 | {children}
41 |
42 | {desc}
43 |
44 |
45 |
46 | );
47 | };
48 |
49 | export {
50 | Tooltip,
51 | TooltipRoot,
52 | TooltipTrigger,
53 | TooltipContent,
54 | TooltipProvider,
55 | };
56 |
57 | export default Tooltip;
58 |
--------------------------------------------------------------------------------
/frontend/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/frontend/app/favicon.ico
--------------------------------------------------------------------------------
/frontend/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | body {
6 | @apply text-slate-600;
7 | }
8 |
9 | @layer base {
10 | h1 {
11 | @apply text-xl text-slate-700 font-bold;
12 | }
13 | h2 {
14 | @apply text-lg text-slate-700 font-bold;
15 | }
16 | h3 {
17 | @apply text-lg font-semibold;
18 | }
19 | ul {
20 | @apply pl-6 list-disc;
21 | }
22 | ul[data-type="taskList"] {
23 | display: flex;
24 | flex-direction: column;
25 | list-style: none;
26 | padding: 0;
27 |
28 | p {
29 | margin: 0;
30 | }
31 |
32 | li {
33 | display: flex;
34 |
35 | > label {
36 | flex: 0 0 auto;
37 | margin-right: 0.5rem;
38 | user-select: none;
39 |
40 | > input[type="checkbox"] {
41 | width: 16px;
42 | height: 16px;
43 | }
44 | }
45 |
46 | > div {
47 | flex: 1 1 auto;
48 | }
49 |
50 | ul li,
51 | ol li {
52 | display: flex;
53 | }
54 |
55 | ul[data-type="taskList"] > li {
56 | display: flex;
57 | }
58 | }
59 |
60 | /* Checked */
61 | li[data-checked="true"] {
62 | p {
63 | text-decoration: line-through;
64 | }
65 | }
66 | }
67 | ol {
68 | @apply pl-6 list-decimal;
69 | }
70 | a {
71 | @apply underline;
72 | }
73 | code {
74 | @apply bg-slate-300 py-0.5 px-1 rounded text-[#616161];
75 | }
76 | img {
77 | @apply max-w-full h-auto rounded-md my-5;
78 | }
79 | blockquote {
80 | @apply pl-1 border-l-2 border-gray-200;
81 | }
82 | hr {
83 | @apply border-none border-t-2 mt-2;
84 | }
85 | button {
86 | @apply p-1 text-sm opacity-60 hover:opacity-100 transition-colors duration-300 rounded-md;
87 | }
88 | input {
89 | @apply outline-none focus:text-slate-500 text-slate-400 text-sm p-2 focus:bg-slate-50 rounded-md;
90 | }
91 | textarea {
92 | @apply outline-none focus:text-slate-500 text-slate-400 text-sm p-2 focus:bg-slate-50 rounded-md h-20 resize-none;
93 | }
94 | }
95 |
96 | @layer components {
97 | .is-active {
98 | @apply bg-slate-300;
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/frontend/app/goals/page.tsx:
--------------------------------------------------------------------------------
1 | function Goals() {
2 | return (
3 |
4 | Goals
5 |
6 | );
7 | }
8 |
9 | export default Goals;
10 |
--------------------------------------------------------------------------------
/frontend/app/home/page.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import { parseDate } from "@/lib/utils";
3 | import Link from "next/link";
4 | import { useEffect, useState } from "react";
5 |
6 | type NotesType = { [date: string]: string };
7 |
8 | function Home() {
9 | const [notes, setNotes] = useState({});
10 |
11 | useEffect(() => {
12 | if (typeof window !== "undefined") {
13 | // Load all entries from localStorage
14 | for (let i = 0; i < localStorage.length; i++) {
15 | const key = localStorage.key(i);
16 | if (key?.match(/^\d{4}-\d{2}-\d{2}$/)) {
17 | const value = localStorage.getItem(key);
18 | if (value) {
19 | setNotes((prevNotes) => ({
20 | ...prevNotes,
21 | [key]: value,
22 | }));
23 | }
24 | }
25 | }
26 | }
27 | }, []);
28 |
29 | return (
30 |
31 | Notes
32 |
33 | {Object.keys(notes)
34 | .sort((a, b) => new Date(b).getTime() - new Date(a).getTime())
35 | .map((entry) => (
36 |
41 | {parseDate(entry)}
42 |
43 | ))}
44 |
45 |
46 | );
47 | }
48 |
49 | export default Home;
50 |
--------------------------------------------------------------------------------
/frontend/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import "./globals.css";
2 | import type { Metadata } from "next";
3 | import { Inter } from "next/font/google";
4 | import Navbar from "./components/navbar";
5 | import Footer from "./components/footer";
6 |
7 | const inter = Inter({ subsets: ["latin"] });
8 |
9 | export const metadata: Metadata = {
10 | title: "Endo",
11 | description: "Dead simple notepad.",
12 | };
13 |
14 | export default function RootLayout({
15 | children,
16 | }: {
17 | children: React.ReactNode;
18 | }) {
19 | return (
20 |
21 |
22 |
23 |
24 | {children}
25 |
26 |
27 |
28 |
29 | );
30 | }
31 |
--------------------------------------------------------------------------------
/frontend/app/note/[date]/page.tsx:
--------------------------------------------------------------------------------
1 | import Editor from "@/app/components/editor";
2 |
3 | function Note({ params }: { params: { date: string } }) {
4 | return (
5 |
6 |
7 |
8 | );
9 | }
10 |
11 | export default Note;
12 |
--------------------------------------------------------------------------------
/frontend/app/page.tsx:
--------------------------------------------------------------------------------
1 | import Editor from "./components/editor";
2 |
3 | export default function Today() {
4 | return (
5 |
6 |
7 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/frontend/lib/hooks/use-global-shorcut.ts:
--------------------------------------------------------------------------------
1 | import {
2 | isRegistered,
3 | register,
4 | ShortcutHandler,
5 | unregister,
6 | } from "@tauri-apps/api/globalShortcut";
7 | import { useEffect } from "react";
8 |
9 | // A React hook to register global shortcuts using Tauri's globalShortcut API.
10 | export const useGlobalShortcut = (
11 | shortcut: string,
12 | shortcutHandler: ShortcutHandler
13 | ) => {
14 | useEffect(() => {
15 | let ignore = false;
16 |
17 | async function registerShortcut() {
18 | const isShortcutRegistered = await isRegistered(shortcut);
19 | if (!ignore && !isShortcutRegistered) {
20 | await register(shortcut, shortcutHandler);
21 | }
22 | }
23 |
24 | void registerShortcut().catch((err) => {
25 | console.error(`Failed to register global shortcut '${shortcut}'`, err);
26 | });
27 |
28 | return () => {
29 | ignore = true;
30 | void unregister(shortcut);
31 | };
32 | }, [shortcut, shortcutHandler]);
33 | };
34 |
--------------------------------------------------------------------------------
/frontend/lib/types/database.types.ts:
--------------------------------------------------------------------------------
1 | export type Json =
2 | | string
3 | | number
4 | | boolean
5 | | null
6 | | { [key: string]: Json | undefined }
7 | | Json[];
8 |
9 | export interface Database {
10 | public: {
11 | Tables: {
12 | notes: {
13 | Row: {
14 | body: string | null;
15 | created_at: string;
16 | created_by: string;
17 | id: string;
18 | updated_at: string;
19 | };
20 | Insert: {
21 | body?: string | null;
22 | created_at?: string;
23 | created_by: string;
24 | id?: string;
25 | updated_at?: string;
26 | };
27 | Update: {
28 | body?: string | null;
29 | created_at?: string;
30 | created_by?: string;
31 | id?: string;
32 | updated_at?: string;
33 | };
34 | Relationships: [
35 | {
36 | foreignKeyName: "notes_created_by_fkey";
37 | columns: ["created_by"];
38 | referencedRelation: "profiles";
39 | referencedColumns: ["id"];
40 | }
41 | ];
42 | };
43 | profiles: {
44 | Row: {
45 | avatar_url: string | null;
46 | created_at: string;
47 | email: string;
48 | id: string;
49 | name: string | null;
50 | updated_at: string;
51 | };
52 | Insert: {
53 | avatar_url?: string | null;
54 | created_at?: string;
55 | email: string;
56 | id: string;
57 | name?: string | null;
58 | updated_at?: string;
59 | };
60 | Update: {
61 | avatar_url?: string | null;
62 | created_at?: string;
63 | email?: string;
64 | id?: string;
65 | name?: string | null;
66 | updated_at?: string;
67 | };
68 | Relationships: [
69 | {
70 | foreignKeyName: "profiles_id_fkey";
71 | columns: ["id"];
72 | referencedRelation: "users";
73 | referencedColumns: ["id"];
74 | }
75 | ];
76 | };
77 | };
78 | Views: {
79 | [_ in never]: never;
80 | };
81 | Functions: {
82 | [_ in never]: never;
83 | };
84 | Enums: {
85 | [_ in never]: never;
86 | };
87 | CompositeTypes: {
88 | [_ in never]: never;
89 | };
90 | };
91 | }
92 |
--------------------------------------------------------------------------------
/frontend/lib/types/index.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sarimrmalik/endo/95240cffaccd0b97644169ec36af95d9c4a23f35/frontend/lib/types/index.ts
--------------------------------------------------------------------------------
/frontend/lib/utils.ts:
--------------------------------------------------------------------------------
1 | import clsx, { ClassValue } from "clsx";
2 | import { twMerge } from "tailwind-merge";
3 |
4 | export function parseDate(input: string): string {
5 | const [year, month, day] = input.split("-").map(Number);
6 | return new Date(year, month - 1, day).toLocaleDateString("en-US", {
7 | year: "numeric",
8 | month: "long",
9 | day: "numeric",
10 | });
11 | }
12 |
13 | // Utility function to efficiently merge Tailwind CSS classes in JS without style conflicts
14 | export function cn(...inputs: ClassValue[]) {
15 | return twMerge(clsx(inputs));
16 | }
17 |
--------------------------------------------------------------------------------
/frontend/middleware.ts:
--------------------------------------------------------------------------------
1 | import { createMiddlewareClient } from "@supabase/auth-helpers-nextjs";
2 | import { NextResponse } from "next/server";
3 |
4 | import type { NextRequest } from "next/server";
5 | import type { Database } from "@/lib/types/database.types";
6 |
7 | export async function middleware(req: NextRequest) {
8 | const res = NextResponse.next();
9 | const supabase = createMiddlewareClient({ req, res });
10 | await supabase.auth.getSession();
11 | return res;
12 | }
13 |
--------------------------------------------------------------------------------
/frontend/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/basic-features/typescript for more information.
6 |
--------------------------------------------------------------------------------
/frontend/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | module.exports = nextConfig;
5 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "endo",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint",
10 | "tauri": "tauri"
11 | },
12 | "dependencies": {
13 | "@radix-ui/react-dialog": "^1.0.4",
14 | "@radix-ui/react-tooltip": "^1.0.6",
15 | "@supabase/auth-helpers-nextjs": "^0.7.4",
16 | "@supabase/supabase-js": "^2.33.1",
17 | "@tauri-apps/api": "^1.4.0",
18 | "@tiptap/extension-color": "^2.1.6",
19 | "@tiptap/extension-dropcursor": "^2.1.7",
20 | "@tiptap/extension-image": "^2.1.7",
21 | "@tiptap/extension-list-item": "^2.1.6",
22 | "@tiptap/extension-placeholder": "^2.1.6",
23 | "@tiptap/extension-task-item": "^2.1.6",
24 | "@tiptap/extension-task-list": "^2.1.6",
25 | "@tiptap/extension-text-style": "^2.1.6",
26 | "@tiptap/pm": "^2.1.6",
27 | "@tiptap/react": "^2.1.6",
28 | "@tiptap/starter-kit": "^2.1.6",
29 | "@types/node": "20.5.1",
30 | "@types/react": "18.2.20",
31 | "@types/react-dom": "18.2.7",
32 | "@upstash/ratelimit": "^0.4.4",
33 | "@vercel/kv": "^0.2.2",
34 | "ai": "^2.2.11",
35 | "autoprefixer": "10.4.15",
36 | "clsx": "^2.0.0",
37 | "eslint": "8.47.0",
38 | "eslint-config-next": "13.4.19",
39 | "lucide-react": "^0.268.0",
40 | "next": "13.4.19",
41 | "openai": "^4.4.0",
42 | "postcss": "8.4.28",
43 | "react": "18.2.0",
44 | "react-dom": "18.2.0",
45 | "tailwind-merge": "^1.14.0",
46 | "tailwindcss": "3.3.3",
47 | "typescript": "5.1.6"
48 | },
49 | "devDependencies": {
50 | "@tauri-apps/cli": "^1.4.0"
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/frontend/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | "postcss-import": {},
4 | "tailwindcss/nesting": {},
5 | tailwindcss: {},
6 | autoprefixer: {},
7 | },
8 | };
9 |
--------------------------------------------------------------------------------
/frontend/tailwind.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from 'tailwindcss'
2 |
3 | const config: Config = {
4 | content: [
5 | './pages/**/*.{js,ts,jsx,tsx,mdx}',
6 | './components/**/*.{js,ts,jsx,tsx,mdx}',
7 | './app/**/*.{js,ts,jsx,tsx,mdx}',
8 | ],
9 | theme: {
10 | extend: {
11 | backgroundImage: {
12 | 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
13 | 'gradient-conic':
14 | 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
15 | },
16 | },
17 | },
18 | plugins: [],
19 | }
20 | export default config
21 |
--------------------------------------------------------------------------------
/frontend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "plugins": [
17 | {
18 | "name": "next"
19 | }
20 | ],
21 | "paths": {
22 | "@/*": ["./*"]
23 | }
24 | },
25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26 | "exclude": ["node_modules"]
27 | }
28 |
--------------------------------------------------------------------------------