From 35f28cbc94e8da86e7fe04625cf85ff80058383a Mon Sep 17 00:00:00 2001 From: Scott Chacon Date: Wed, 5 Apr 2023 10:10:07 +0200 Subject: [PATCH] Add a Terminal (#49) This implements a simple terminal frontend using Xterm and backend using portable_pty. It will not yet record, but it should keep a separate terminal per project, resize properly, change directories to the project, etc. https://docs.rs/portable-pty/latest/portable_pty/ --- .gitignore | 3 + package.json | 9 +- pnpm-lock.yaml | 715 +++++++---- src-tauri/Cargo.lock | 1124 +++++++++++------ src-tauri/Cargo.toml | 8 +- src-tauri/src/main.rs | 8 + src-tauri/src/pty/mod.rs | 1 + src-tauri/src/pty/ws_server.rs | 227 ++++ src/lib/components/Terminal.svelte | 39 + src/lib/terminals.ts | 165 +++ .../projects/[projectId]/+layout.svelte | 16 + .../[projectId]/terminal/+page.svelte | 57 + .../projects/[projectId]/terminal/+page.ts | 25 + 13 files changed, 1759 insertions(+), 638 deletions(-) create mode 100644 src-tauri/src/pty/mod.rs create mode 100644 src-tauri/src/pty/ws_server.rs create mode 100644 src/lib/components/Terminal.svelte create mode 100644 src/lib/terminals.ts create mode 100644 src/routes/projects/[projectId]/terminal/+page.svelte create mode 100644 src/routes/projects/[projectId]/terminal/+page.ts diff --git a/.gitignore b/.gitignore index 8ac550b3e..c1ca77c4e 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,9 @@ vite.config.js.timestamp-* # gitbutler .git/gb-* +src-tauri/data.txt # storybook storybook-static + + diff --git a/package.json b/package.json index 64694f9f7..99d282fd4 100644 --- a/package.json +++ b/package.json @@ -50,8 +50,15 @@ "nanoid": "^4.0.1", "posthog-js": "^1.46.1", "svelte-french-toast": "^1.0.3", + "svelte-resize-observer": "^2.0.0", "tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log", - "tinykeys": "^1.4.0" + "tinykeys": "^1.4.0", + "xterm": "^5.1.0", + "xterm-addon-canvas": "^0.3.0", + "xterm-addon-fit": "^0.7.0", + "xterm-addon-ligatures": "^0.6.0", + "xterm-addon-unicode11": "^0.5.0", + "xterm-addon-webgl": "^0.14.0" }, "devDependencies": { "@storybook/addon-essentials": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d8926a02..3011ad2d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,12 +67,19 @@ specifiers: svelte-check: ^3.0.1 svelte-floating-ui: ^1.5.2 svelte-french-toast: ^1.0.3 + svelte-resize-observer: ^2.0.0 tailwindcss: ^3.1.5 tauri-plugin-log-api: github:tauri-apps/tauri-plugin-log tinykeys: ^1.4.0 tslib: ^2.4.1 typescript: ^4.8.4 vite: ^4.0.0 + xterm: ^5.1.0 + xterm-addon-canvas: ^0.3.0 + xterm-addon-fit: ^0.7.0 + xterm-addon-ligatures: ^0.6.0 + xterm-addon-unicode11: ^0.5.0 + xterm-addon-webgl: ^0.14.0 dependencies: '@codemirror/autocomplete': 6.4.2_lc2v3dpzp2l5pdzwtgfaudkm3e @@ -110,19 +117,26 @@ dependencies: nanoid: 4.0.1 posthog-js: 1.46.1 svelte-french-toast: 1.0.3_svelte@3.55.1 + svelte-resize-observer: 2.0.0 tauri-plugin-log-api: github.com/tauri-apps/tauri-plugin-log/05a9bfd9edb9b5f4ab95412bb607691708b65a25 tinykeys: 1.4.0 + xterm: 5.1.0 + xterm-addon-canvas: 0.3.0_xterm@5.1.0 + xterm-addon-fit: 0.7.0_xterm@5.1.0 + xterm-addon-ligatures: 0.6.0_xterm@5.1.0 + xterm-addon-unicode11: 0.5.0_xterm@5.1.0 + xterm-addon-webgl: 0.14.0_xterm@5.1.0 devDependencies: - '@storybook/addon-essentials': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-interactions': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-links': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-svelte-csf': 3.0.0-next.4_cot56d5dlyi6qvrr4xmnvkzs7e - '@storybook/blocks': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/svelte': 7.0.0-rc.11_svelte@3.55.1 - '@storybook/sveltekit': 7.0.0-rc.11_hcl52ejjmh2zpx2q5wi2i43hma - '@storybook/testing-library': 0.0.14-next.1 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-essentials': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-interactions': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-links': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-svelte-csf': 3.0.0-next.5_i3ate7yxub6ccyz36lljuomlsa + '@storybook/blocks': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/svelte': 7.0.0_svelte@3.55.1 + '@storybook/sveltekit': 7.0.0_hcl52ejjmh2zpx2q5wi2i43hma + '@storybook/testing-library': 0.0.14-next.2 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y '@sveltejs/adapter-static': 2.0.1_@sveltejs+kit@1.15.0 '@sveltejs/kit': 1.15.0_svelte@3.55.1+vite@4.0.4 '@tauri-apps/cli': 1.2.3 @@ -141,7 +155,7 @@ devDependencies: prettier-plugin-tailwindcss: 0.2.4_yjdjpc7im5hvpskij45owfsns4 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - storybook: 7.0.0-rc.11 + storybook: 7.0.0 svelte: 3.55.1 svelte-check: 3.0.3_gqx7lw3sljhsd4bstor5m2aa2u svelte-floating-ui: 1.5.2 @@ -2363,8 +2377,8 @@ packages: svelte: 3.55.1 dev: false - /@storybook/addon-actions/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-YBVNMQFm4KPPvQ5SyNqwY00f45SncidP4CZaDJURtwI3ESuEBnMFCYCUfKFKv1Gt5kbq3yBh9+mdNdHAVjJdyQ==} + /@storybook/addon-actions/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-IRqLHAgc9I1a4OXkSOIIUc4NtEH5Uh3DzOMVJD+Gxt3vSJ4aINRGVN9MTOi+pfyv945BENKfXhpKo55oX19MLQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2374,14 +2388,14 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-events': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 dequal: 2.0.3 lodash: 4.17.21 polished: 4.2.2 @@ -2394,8 +2408,8 @@ packages: uuid-browser: 3.1.0 dev: true - /@storybook/addon-backgrounds/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-QdDDf3uT3Oi1n3KGKxSDac/QN5gHAsHPPum+/6A79kuke0HA3fIXUnDCv/76Aq1P6eWfQ0ecRp0r4aRKSh2Lug==} + /@storybook/addon-backgrounds/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-6/HY25DlYrNHlDBbQcEkK/8zXyE/qFPMc6UkWegxdWx67ZLsgVB/djYcNSBMpBKzTgsxWYNRsGealgUo3S110A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2405,22 +2419,22 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-events': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 ts-dedent: 2.2.0 dev: true - /@storybook/addon-controls/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-1Wb8atnUrD/iFsEJuHQtDTM031pjNJivOxsCibXqMGVCxDulGzyb7h/564dfhg/fivNcIBGag+PmqQPNgiA6VA==} + /@storybook/addon-controls/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-qowL2plF/EbCRpys2tP6HhJ2qZf3piOkvdMFHkO1xmMd2jZ5dZFnfJ0Qgzj7aBUyXknyzQF+rYh0AVdEDd0eHg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2430,15 +2444,15 @@ packages: react-dom: optional: true dependencies: - '@storybook/blocks': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-common': 7.0.0-rc.11 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/blocks': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-common': 7.0.0 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/node-logger': 7.0.0 + '@storybook/preview-api': 7.0.0 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -2447,8 +2461,8 @@ packages: - supports-color dev: true - /@storybook/addon-docs/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-Yxadrzo0uoT+wN9rXh9z3SXG5QsW4y4AXiFGZzwBcT/V+BTk9b534v4VqqdSUKCpOkkPyGMQIm5ZfZn+LhRiqg==} + /@storybook/addon-docs/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-tC7tTttU4oO4QYeVkLGDtUzJbNOSRoLv+C5xy7GIL9cEQN2P7kvviJuPErbBEBvY4Slsl89Amg0b1pHK/D3jFQ==} peerDependencies: '@storybook/mdx1-csf': '>=1.0.0-0' react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2461,19 +2475,19 @@ packages: '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.3 '@jest/transform': 29.5.0 '@mdx-js/react': 2.3.0_react@18.2.0 - '@storybook/blocks': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/csf-plugin': 7.0.0-rc.11 - '@storybook/csf-tools': 7.0.0-rc.11 + '@storybook/blocks': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/csf-plugin': 7.0.0 + '@storybook/csf-tools': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/mdx2-csf': 1.0.0-next.6 - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/postinstall': 7.0.0-rc.11 - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/react-dom-shim': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/mdx2-csf': 1.0.0-next.7 + '@storybook/node-logger': 7.0.0 + '@storybook/postinstall': 7.0.0 + '@storybook/preview-api': 7.0.0 + '@storybook/react-dom-shim': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -2484,25 +2498,25 @@ packages: - supports-color dev: true - /@storybook/addon-essentials/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-YcR2ovFlssNnAGPPdqyA4w648WpK8oWh8LNNFg0Dv1rcSzjCktrJlaKoTOoTYVKEjDonpbtoZCNuZBn7nZN/0Q==} + /@storybook/addon-essentials/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-eKX/9BPqAnzY2XhnjX7T6iu2SGKCSwCQrbxZt5j+8K9QwcskpiQB7XAwZKTnKr7DVALDaYEeGsTFQKfNzaQW0Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addon-actions': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-backgrounds': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-controls': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-docs': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-highlight': 7.0.0-rc.11 - '@storybook/addon-measure': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-outline': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-toolbars': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/addon-viewport': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-common': 7.0.0-rc.11 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/preview-api': 7.0.0-rc.11 + '@storybook/addon-actions': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-backgrounds': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-controls': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-docs': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-highlight': 7.0.0 + '@storybook/addon-measure': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-outline': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-toolbars': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-viewport': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-common': 7.0.0 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/node-logger': 7.0.0 + '@storybook/preview-api': 7.0.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 ts-dedent: 2.2.0 @@ -2511,16 +2525,16 @@ packages: - supports-color dev: true - /@storybook/addon-highlight/7.0.0-rc.11: - resolution: {integrity: sha512-6fBG8AhndmT7NbGBT17RRCyuNMjtbZsp+QuUbK84+EIuZleBhQ6lxeGRKMoba8+9Tnf184nPM0D05fQMjn2Q2Q==} + /@storybook/addon-highlight/7.0.0: + resolution: {integrity: sha512-lBrsf/NKGPwQU5oXpEevgYiCKPHw7dugjRAkFd62NWX3/bLGNRIBgqj3odx9f86nRBrzUHGvXs7r5NzoC5arNQ==} dependencies: - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/core-events': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.0.0-rc.11 + '@storybook/preview-api': 7.0.0 dev: true - /@storybook/addon-interactions/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-i1TquHPF3JPIjqB3+JXbJpPkPAOc3MgNPq7N11HpMIH9/VLbvfWsFvBV+FRECBF/FxqeqOwiU80p8ZD6nbsF1A==} + /@storybook/addon-interactions/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-sRCGNB+GaqujsBG3a+ljk0uVb8SRPFkLUUGJMUZb0R6OsF/uHf4W8SUHZrvN1OWJZjZ3TWLGA9k8Kt5AGeXj7A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2530,16 +2544,16 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-common': 7.0.0-rc.11 - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-common': 7.0.0 + '@storybook/core-events': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 7.0.0-rc.11 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/instrumenter': 7.0.0 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 jest-mock: 27.5.1 polished: 4.2.2 react: 18.2.0 @@ -2549,8 +2563,8 @@ packages: - supports-color dev: true - /@storybook/addon-links/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-VYWANHGqCu0NbZh44bNZJPPP1UjeNbPIXJsZqRKSXxRJkFyk5VI3/NTRq/RVPL2NgenyA5wxzmP2L0EtKjfWyQ==} + /@storybook/addon-links/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-2sIu/G6Apsufexq+ZTrKW85UCMYVnz7l+BDk0eNOyMQ7cGkrCk1Wq9ax07eCYnQpd6xScoIe0BEzxCHa7oFKDw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2560,22 +2574,22 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/core-events': 7.0.0 '@storybook/csf': 0.0.2-next.11 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/router': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/router': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 ts-dedent: 2.2.0 dev: true - /@storybook/addon-measure/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-GvXS/ytizzPy9QtonB81sCoE7AtfWFBFSXZ1unRsfvyEcH3y4N9MTtjfa+9+K6U7M6Ba7ehm4KDYJ6EiyHfIpw==} + /@storybook/addon-measure/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-h7crWGxiAxtzJsmbGi+C6jVVY+Lp64pHQl3rdeUwFbdnTXxG/rYlPpu4fW6lmCPyLhQauXcoxqbtkPd7T7HFMw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2585,19 +2599,19 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-events': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/types': 7.0.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true - /@storybook/addon-outline/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-4L/6nazaigCy1DNGrrdf8AnRhYs3WAU6ZXgItMH/hHwx9jefddlu1DQZTYwKYSN9iwXgcrDI4mPXLjY00AvfZg==} + /@storybook/addon-outline/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-OtbQHCxgbGU+QV5tshLYt/iqJUXfqExHC0WufEWVBeeEebtPZ6Z3oAGr9RKkN5KMtcngex4fVrEnsRGiZHnAvQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2607,23 +2621,23 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-events': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/types': 7.0.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 ts-dedent: 2.2.0 dev: true - /@storybook/addon-svelte-csf/3.0.0-next.4_cot56d5dlyi6qvrr4xmnvkzs7e: - resolution: {integrity: sha512-0yB252a3Jo+mQNLGixQEUl+95oBF7kdxl1h0FGbMEY4sW7lQYv9L1NZFLUu9LGIErKvpxY+iKo91VOi5Ez5WMQ==} + /@storybook/addon-svelte-csf/3.0.0-next.5_i3ate7yxub6ccyz36lljuomlsa: + resolution: {integrity: sha512-rGXjQqAxPbk9/NNBpLpWduNryuUbLSd0L/BD4TmtoeCG6YkwnPxSOzIkGg9DN94OhBSleSJZucz4e/LpeUqSmw==} peerDependencies: - '@storybook/svelte': ^7.0.0-beta - '@storybook/theming': ^7.0.0-beta + '@storybook/svelte': ^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0 + '@storybook/theming': ^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0 '@sveltejs/vite-plugin-svelte': ^1.0.0 || ^2.0.0 svelte: ^3.50.0 svelte-loader: ^3.1.2 @@ -2637,17 +2651,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@storybook/svelte': 7.0.0-rc.11_svelte@3.55.1 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y + '@storybook/svelte': 7.0.0_svelte@3.55.1 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y fs-extra: 11.1.1 - magic-string: 0.26.7 + magic-string: 0.30.0 svelte: 3.55.1 ts-dedent: 2.2.0 vite: 4.0.4 dev: true - /@storybook/addon-toolbars/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-IuXyMEvymWpR5a1+vQWrxsjgtwRaYEGJjRT/Wr1CEFIsYvZdMk80BuZEV6V/mrc3Ap+lDRiLruOrRscGpvVI2w==} + /@storybook/addon-toolbars/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-RfjZbXTRt5wC7BWdXfuhxh2SuQTjr6wHl+N3UlAmZkP0YL4BZufKS/ukFOY4Niu18/3lryLoUpRkDOEaYjWsRA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2657,17 +2671,17 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true - /@storybook/addon-viewport/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-7eXhi/IEgqWurNtchgbx0+ILZ9ETXJRWXLmBl6EMinmrwzSaBbWGabhuVceltRK2vhIV66haNAyNStDlBpW8eA==} + /@storybook/addon-viewport/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-NcFFJmhtGZEaS8VH3UgxZHyPb7wiBZ1VU4JIOihFjGvnIN4uY/2LQV/a+xOKBorgR4fpb5zZvbZa6t3LB+3WsA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2677,36 +2691,36 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-events': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y memoizerific: 1.11.3 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true - /@storybook/blocks/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-CKj04fiAGFoAizXQkAXzSM5u/xtcgJDoZCVOKKcSYGPuE0q30GrONNhN69wSSsXRO1ZaLE3Dv31u4sxA5jSInw==} + /@storybook/blocks/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-12jSgVNu//LQz0rpXRdoxhU/sS01fxcXuYBGdzk6ycuV0gWrAScjG/GPzh6zNSsfXg4vgtA3sk37tehX6Te6yA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.0.0-rc.11 - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/components': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/channels': 7.0.0 + '@storybook/client-logger': 7.0.0 + '@storybook/components': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/core-events': 7.0.0 '@storybook/csf': 0.0.2-next.11 - '@storybook/docs-tools': 7.0.0-rc.11 + '@storybook/docs-tools': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/manager-api': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/preview-api': 7.0.0 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 '@types/lodash': 4.14.191 color-convert: 2.0.1 dequal: 2.0.3 @@ -2724,13 +2738,13 @@ packages: - supports-color dev: true - /@storybook/builder-manager/7.0.0-rc.11: - resolution: {integrity: sha512-LZyjMczPndbqvcgiTjLOTKAOpzLE1WzTClaxtSl8C7/+YRyqAbysIYuV+gWehUcr+poS7MthT67XRSm8zhqp3A==} + /@storybook/builder-manager/7.0.0: + resolution: {integrity: sha512-JEEsLJXLoYf2XCFVuXcaMdXXmHBxD7oTmmF9f1zASuGRfWUmVVIoWG179kV3Pzkh1OYd7QjHSw313kI5kWo+Bw==} dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.0.0-rc.11 - '@storybook/manager': 7.0.0-rc.11 - '@storybook/node-logger': 7.0.0-rc.11 + '@storybook/core-common': 7.0.0 + '@storybook/manager': 7.0.0 + '@storybook/node-logger': 7.0.0 '@types/ejs': 3.1.2 '@types/find-cache-dir': 3.2.1 '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15_esbuild@0.17.14 @@ -2747,8 +2761,8 @@ packages: - supports-color dev: true - /@storybook/builder-vite/7.0.0-rc.11_egung5nfepmolqa7uavvqho3gq: - resolution: {integrity: sha512-SAx5ksylsG3a5uyKTgq34kpcIdweVh+5AhN2QF0kgMyRYga9167xK7Bnszg0+WInr8VQj6qpWZuk6ozOa3dkXg==} + /@storybook/builder-vite/7.0.0_egung5nfepmolqa7uavvqho3gq: + resolution: {integrity: sha512-MXbgmvskciJaS9Um9OVQ9uks11saWlw601gpuvr/jIORm+5+TzFe2uhuqWKLaHTXSxMO2vsG7/ssLTJIP4q/jA==} peerDependencies: '@preact/preset-vite': '*' '@storybook/mdx1-csf': '>=1.0.0-next.1' @@ -2765,16 +2779,16 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channel-postmessage': 7.0.0-rc.11 - '@storybook/channel-websocket': 7.0.0-rc.11 - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/core-common': 7.0.0-rc.11 - '@storybook/csf-plugin': 7.0.0-rc.11 - '@storybook/mdx2-csf': 1.0.0-next.6 - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/preview': 7.0.0-rc.11 - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/channel-postmessage': 7.0.0 + '@storybook/channel-websocket': 7.0.0 + '@storybook/client-logger': 7.0.0 + '@storybook/core-common': 7.0.0 + '@storybook/csf-plugin': 7.0.0 + '@storybook/mdx2-csf': 1.0.0-next.7 + '@storybook/node-logger': 7.0.0 + '@storybook/preview': 7.0.0 + '@storybook/preview-api': 7.0.0 + '@storybook/types': 7.0.0 browser-assert: 1.2.1 es-module-lexer: 0.9.3 express: 4.18.2 @@ -2791,6 +2805,17 @@ packages: - supports-color dev: true + /@storybook/channel-postmessage/7.0.0: + resolution: {integrity: sha512-Sy3oHL/xDRjUiHnM0ncnkbOE5pK3O72MjOoiLJX4FCI90w03KM4+F/N0eU2cXl6yXHuCyI5eJisEzQxTNsaJiw==} + dependencies: + '@storybook/channels': 7.0.0 + '@storybook/client-logger': 7.0.0 + '@storybook/core-events': 7.0.0 + '@storybook/global': 5.0.0 + qs: 6.11.1 + telejson: 7.0.4 + dev: true + /@storybook/channel-postmessage/7.0.0-rc.11: resolution: {integrity: sha512-u0vfGFECLSKRtCMaWEHR0ggzAAeE3Vq4kspIFEuiotrEOvt0zOaa4Oqzfri+6anxD061OCc50ZriDv+xttt1yA==} dependencies: @@ -2802,33 +2827,37 @@ packages: telejson: 7.0.4 dev: true - /@storybook/channel-websocket/7.0.0-rc.11: - resolution: {integrity: sha512-2ZcnNySSTsLOwCTHHXbODQZdiH4L3Z3Bt/z+qoAfWLRB4fLQXLrOiB18HGMKJFvp2+rY6IQ2kF6rx0JC0XKrxA==} + /@storybook/channel-websocket/7.0.0: + resolution: {integrity: sha512-KIXxMtJjqaeo5iKB5734+Wx1Dm3/yM08kJXdx0LEFGguHcE3L0WOi04HFMtd9wjldE+VVM8KWxoO9AoRUH60nQ==} dependencies: - '@storybook/channels': 7.0.0-rc.11 - '@storybook/client-logger': 7.0.0-rc.11 + '@storybook/channels': 7.0.0 + '@storybook/client-logger': 7.0.0 '@storybook/global': 5.0.0 telejson: 7.0.4 dev: true + /@storybook/channels/7.0.0: + resolution: {integrity: sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==} + dev: true + /@storybook/channels/7.0.0-rc.11: resolution: {integrity: sha512-MyY8tZPwCW9JjOvpFCDWZDqqnh0DnDt/iwOyFr9W4b5K/oGkTtZaVOMp0pq6nhjhDEOIp4p4MnSu/Sh1qZroKw==} dev: true - /@storybook/cli/7.0.0-rc.11: - resolution: {integrity: sha512-IppF/InlsDcunopNMtoM9tszK6YnZp0jfb/q5yE0Utl2YIvV3NUI79jn3y2/lw4PktYPEE+kvFNjs9qbvrvBsw==} + /@storybook/cli/7.0.0: + resolution: {integrity: sha512-PdGAyKASFgnUED3TmdyrGh5X5sEA5DT7+YIhTmbectRXN+LmgQ3d/RoVN/21VRV8LTNZesJwJSCvhhBCrFkcZw==} hasBin: true dependencies: '@babel/core': 7.21.3 '@babel/preset-env': 7.20.2_@babel+core@7.21.3 '@ndelangen/get-tarball': 3.0.7 - '@storybook/codemod': 7.0.0-rc.11 - '@storybook/core-common': 7.0.0-rc.11 - '@storybook/core-server': 7.0.0-rc.11 - '@storybook/csf-tools': 7.0.0-rc.11 - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/telemetry': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/codemod': 7.0.0 + '@storybook/core-common': 7.0.0 + '@storybook/core-server': 7.0.0 + '@storybook/csf-tools': 7.0.0 + '@storybook/node-logger': 7.0.0 + '@storybook/telemetry': 7.0.0 + '@storybook/types': 7.0.0 '@types/semver': 7.3.13 boxen: 5.1.2 chalk: 4.1.2 @@ -2864,22 +2893,28 @@ packages: - utf-8-validate dev: true + /@storybook/client-logger/7.0.0: + resolution: {integrity: sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==} + dependencies: + '@storybook/global': 5.0.0 + dev: true + /@storybook/client-logger/7.0.0-rc.11: resolution: {integrity: sha512-U0XZgFoirooCiTK/Il0tHVfTP6RCQh0lnhP6twhPazlEucT2/gw/m48Kqn2R5kDk/AV7q5cWhKcR81AgGm/WEA==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/codemod/7.0.0-rc.11: - resolution: {integrity: sha512-dKS6KvrFGOMsRBavZIYcJjSHF5ranQEieJp4uaK8Fk+XD0I9Wb8WPN5WIrSRe4o903gJ5Aoo6uHPH/u5rZHxfw==} + /@storybook/codemod/7.0.0: + resolution: {integrity: sha512-RskA0EDTN2ANxcRyucApr5+Qf4zE0VK3xUCbWv4TZjJ57IDfVE3iEpLJ/mNsSES00sAtOeZX4cpcktvb2ajRJw==} dependencies: '@babel/core': 7.21.3 '@babel/preset-env': 7.20.2_@babel+core@7.21.3 '@babel/types': 7.21.3 '@storybook/csf': 0.0.2-next.11 - '@storybook/csf-tools': 7.0.0-rc.11 - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/csf-tools': 7.0.0 + '@storybook/node-logger': 7.0.0 + '@storybook/types': 7.0.0 cross-spawn: 7.0.3 globby: 11.1.0 jscodeshift: 0.14.0_@babel+preset-env@7.20.2 @@ -2890,17 +2925,17 @@ packages: - supports-color dev: true - /@storybook/components/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-tg58HL4SY8grnO3Al2T5FvYaTxGyt1bRcIMKUhZYeAcMeNvoh9+7LEFPcOccfaX/PPEOCCriBFbJnPLt581Vnw==} + /@storybook/components/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-q2JIxTlXMcZceMWnHrpQwRO3E8fk02zKjsSZDYkd9vXxsr91Kg4NTgR7GMHSHN8ZLMQQwwi77Iw+wpWfTVHg6g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/client-logger': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 '@storybook/csf': 0.0.2-next.11 '@storybook/global': 5.0.0 - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -2908,18 +2943,18 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/core-client/7.0.0-rc.11: - resolution: {integrity: sha512-BSWiFNdeRoMvMRJAgwpzTGGoBfMdrxnGi5e7ZAQZDryLWGBIbD0pP6AhPjWLab87xW3IGB4HAAxC/6RV1YRmuQ==} + /@storybook/core-client/7.0.0: + resolution: {integrity: sha512-TK+VhLEryroXpp+A1BBfyW/0nFMwNtE64tQ6+R3zpd3QScZQsT19GolSIYudTHKhkFxaxEfgbG6R1S+7j75I2g==} dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/preview-api': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/preview-api': 7.0.0 dev: true - /@storybook/core-common/7.0.0-rc.11: - resolution: {integrity: sha512-DD2mciowh6ZDgpdDzS7Ths+fWfG3u62Tv0sSFkL4KOvc81EQmt9e5K8D1I5adtwnqkKVYFBxXvPeg/kf3ud3Mw==} + /@storybook/core-common/7.0.0: + resolution: {integrity: sha512-KEGzsmpRj7RPUoAQ+l9MypGHAFRvFq3RtnROuwMdwc5f4Lo0eCtfLRKRK2tTFNIFSMGaebjXBqGawUsoE7awiA==} dependencies: - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/node-logger': 7.0.0 + '@storybook/types': 7.0.0 '@types/node': 16.18.21 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 @@ -2941,27 +2976,31 @@ packages: - supports-color dev: true + /@storybook/core-events/7.0.0: + resolution: {integrity: sha512-pxzNmgEI1p90bHyAYABHDDtB2XM5pffq6CqIHboK6aSCux7Cdc16IjOYq6BJIhCKaaI+qQHaFLR4JfaFAsxwQQ==} + dev: true + /@storybook/core-events/7.0.0-rc.11: resolution: {integrity: sha512-BhaBVm9lGq7Z1OldS1YVHw6WNuHdPU8xTUcq6l+i2nBjoGkmefR/NM1rznrPfrrRO9vy5pb8OVSOgV69TDjksQ==} dev: true - /@storybook/core-server/7.0.0-rc.11: - resolution: {integrity: sha512-d7qfe1MViaDTCcKUk6t2KcwGLssfMpr1hKN2OghBPjAveAC6bZyUlHmyU6alDNFMVqaayb4WC556r+FbCylUKA==} + /@storybook/core-server/7.0.0: + resolution: {integrity: sha512-j4R0/vR8zP0jXda/PL0Gs9n6UoOKqb31Dx7QCMo07SJ4TRqnx10BKj8ZxiJuj31/Uxgq3Wk4cCzbeDwkj9Oo4A==} dependencies: '@aw-web-design/x-default-browser': 1.4.88 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.0.0-rc.11 - '@storybook/core-common': 7.0.0-rc.11 - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/builder-manager': 7.0.0 + '@storybook/core-common': 7.0.0 + '@storybook/core-events': 7.0.0 '@storybook/csf': 0.0.2-next.11 - '@storybook/csf-tools': 7.0.0-rc.11 + '@storybook/csf-tools': 7.0.0 '@storybook/docs-mdx': 0.0.1-next.6 '@storybook/global': 5.0.0 - '@storybook/manager': 7.0.0-rc.11 - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/telemetry': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/manager': 7.0.0 + '@storybook/node-logger': 7.0.0 + '@storybook/preview-api': 7.0.0 + '@storybook/telemetry': 7.0.0 + '@storybook/types': 7.0.0 '@types/detect-port': 1.3.2 '@types/node': 16.18.21 '@types/node-fetch': 2.6.2 @@ -2997,24 +3036,24 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin/7.0.0-rc.11: - resolution: {integrity: sha512-GuKOzkIYY4Cp1oBWwPUvk8AxwX7/c94G9D5OaEFWW1s0LnAvGJ/TKs3iT0UZt4+s3K28I6MiYdpeHcs9Ur1e8A==} + /@storybook/csf-plugin/7.0.0: + resolution: {integrity: sha512-8V0C91YDLGer9+1JfONbt56u2U2kazjtzZXrznF6C0pRuzj/28qaoFZ7jegPybX9JOQOnwNbR4eOBUIVxlkBlw==} dependencies: - '@storybook/csf-tools': 7.0.0-rc.11 + '@storybook/csf-tools': 7.0.0 unplugin: 0.10.2 transitivePeerDependencies: - supports-color dev: true - /@storybook/csf-tools/7.0.0-rc.11: - resolution: {integrity: sha512-kPpGAHstK3tNlaHDLHXbM+hnE9mFxZkCojtZe/cjTypGjmPF+cJHqaj0vMNdG1509Ahz+MKxMsPI1zPFN7tdMg==} + /@storybook/csf-tools/7.0.0: + resolution: {integrity: sha512-JIslbrcectcZFJJAhaOBRxNLPkBWIugNsdOTVHk3BHIu2tgF8U5No6Y+grYYooVLUhbRKYKCzXo0Hs89pbLtUw==} dependencies: '@babel/generator': 7.21.3 '@babel/parser': 7.21.3 '@babel/traverse': 7.21.3 '@babel/types': 7.21.3 '@storybook/csf': 0.0.2-next.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/types': 7.0.0 fs-extra: 11.1.1 recast: 0.23.1 ts-dedent: 2.2.0 @@ -3032,13 +3071,13 @@ packages: resolution: {integrity: sha512-DjoSIXADmLJtdroXAjUotFiZlcZ2usWhqrS7aeOtZs0DVR0Ws5WQjnwtpDUXt8gryTSd+OZJ0cNsDcqg4JDEvQ==} dev: true - /@storybook/docs-tools/7.0.0-rc.11: - resolution: {integrity: sha512-qTxANCrJlf+ZTwhmp1q9Kh63eWNoVd7bUatRWW9FLbdzwH595FiZxyEIE6x3VrPfqT5BX/ihxlq4o0jjzUCvmg==} + /@storybook/docs-tools/7.0.0: + resolution: {integrity: sha512-4a9xecYhjRAYAzbmheF2nnZst3sWe/tmlOcspky/wGU3BR1Wy3u9b45q+r3wW/Nm9C8XHt0CRmkFwQKGme14iQ==} dependencies: '@babel/core': 7.21.3 - '@storybook/core-common': 7.0.0-rc.11 - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/core-common': 7.0.0 + '@storybook/preview-api': 7.0.0 + '@storybook/types': 7.0.0 '@types/doctrine': 0.0.3 doctrine: 3.0.0 lodash: 4.17.21 @@ -3050,6 +3089,16 @@ packages: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} dev: true + /@storybook/instrumenter/7.0.0: + resolution: {integrity: sha512-A7jBrV7VM3OxRgall8rpjagy3VC78A/OV1g1aYVVLpAF/+Odj+MeHHF179+fR6JBLnBgukNfsG7/ZHHGs0gL5Q==} + dependencies: + '@storybook/channels': 7.0.0 + '@storybook/client-logger': 7.0.0 + '@storybook/core-events': 7.0.0 + '@storybook/global': 5.0.0 + '@storybook/preview-api': 7.0.0 + dev: true + /@storybook/instrumenter/7.0.0-rc.11: resolution: {integrity: sha512-a/zB5yyM1NoC7po6ifL8enhzP9L8fmKz0MrJV7vJqrmMwk2TjphWV3/KoZkZIpOB3TTrNZ9m/4F8v53hbZluMg==} dependencies: @@ -3060,20 +3109,20 @@ packages: '@storybook/preview-api': 7.0.0-rc.11 dev: true - /@storybook/manager-api/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-D6q7TTerGyoOy/3Wdn49JKUlwAZ4eabQOptD3DmQ9wR5G3LnkhQdogzhI8Y2sxzq5ljuYh9VnjCA938cgCmbzQ==} + /@storybook/manager-api/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-A4OQXPUvaOT9mp+sXxq5CveIrq1luYDiK9H3k0eUqIgI8nS6+FonaLqouJchUMeYZ3CbHtKLMtkzLJKGfUGjjQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.0.0-rc.11 - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/core-events': 7.0.0-rc.11 + '@storybook/channels': 7.0.0 + '@storybook/client-logger': 7.0.0 + '@storybook/core-events': 7.0.0 '@storybook/csf': 0.0.2-next.11 '@storybook/global': 5.0.0 - '@storybook/router': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/theming': 7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y - '@storybook/types': 7.0.0-rc.11 + '@storybook/router': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/theming': 7.0.0_biqbaboplfbrettd7655fr4n2y + '@storybook/types': 7.0.0 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -3085,16 +3134,16 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/manager/7.0.0-rc.11: - resolution: {integrity: sha512-p/23cjlpuEM/U5lp2effiVPJ/VzAzfdeNQ55v+M8mQGglzOINpI1feZp9KS3dVsTrt+CjzctMShKQy7h9/wP7w==} + /@storybook/manager/7.0.0: + resolution: {integrity: sha512-lMSM6PQvSLtq46JVaMq/xuxjOzZuD20DMcJzYnjFL3bkMjmkL2hHyzYjfs4BTI9i9nhPqXF/rZSwFGGG+ok9dw==} dev: true - /@storybook/mdx2-csf/1.0.0-next.6: - resolution: {integrity: sha512-m6plojocU/rmrqWd26yvm8D+oHZPZ6PtSSFmZIgpNDEPVmc8s4fBD6LXOAB5MiPI5f8KLUr2HVhOMZ97o5pDTw==} + /@storybook/mdx2-csf/1.0.0-next.7: + resolution: {integrity: sha512-xcQ8w4IecABAjsakaZTGiUEnEgFZzVKsMjqECjd+qdkwgD3R/kwrBdfyC15CLM5Ye1miPwYBIwJGeBXB9qxsZg==} dev: true - /@storybook/node-logger/7.0.0-rc.11: - resolution: {integrity: sha512-BpF9vjVHDQOii5AWcnEtQ426gi4iJYleNtbe5Si5Q4MFZHa37FoppvOf3x3n2jVQla3yKG2pSHYTKUVD7Xkhhg==} + /@storybook/node-logger/7.0.0: + resolution: {integrity: sha512-GjmHY9dSEFQ/BRsjhC63DsMr85Wfb/+R73ApJcGyc3sJDSfNil0JVgIsU7ZfCGV1ty0XhtvLd+jd+J1EAHi/dw==} dependencies: '@types/npmlog': 4.1.4 chalk: 4.1.2 @@ -3102,8 +3151,28 @@ packages: pretty-hrtime: 1.0.3 dev: true - /@storybook/postinstall/7.0.0-rc.11: - resolution: {integrity: sha512-jAJnqbwipOnQmglk8CmjQUtuQMlPHfWuY2a/tAqwzu6AyohhcNKgWikgvJhNeY/wI5Pr0gcdvXHz6zyDd7RjHQ==} + /@storybook/postinstall/7.0.0: + resolution: {integrity: sha512-ynG1uj5OFWw4MHo/XES1Ok7tIQf3eSmKn07QjiOe8AnS2sRAEAIxVM3JdX63qwD6oQaHesiNbc+S2UNYcbBA2g==} + dev: true + + /@storybook/preview-api/7.0.0: + resolution: {integrity: sha512-Q0IYYH1gOmx42ClYlQfQPjuERBWM3Ey+3DFsLQaraKXDdgZ9wN7jPNuS7wxuUNylT0oa/3WjxT7qNfiGw8JtBw==} + dependencies: + '@storybook/channel-postmessage': 7.0.0 + '@storybook/channels': 7.0.0 + '@storybook/client-logger': 7.0.0 + '@storybook/core-events': 7.0.0 + '@storybook/csf': 0.0.2-next.11 + '@storybook/global': 5.0.0 + '@storybook/types': 7.0.0 + '@types/qs': 6.9.7 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.11.1 + synchronous-promise: 2.0.17 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 dev: true /@storybook/preview-api/7.0.0-rc.11: @@ -3126,12 +3195,12 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview/7.0.0-rc.11: - resolution: {integrity: sha512-nMve4MAL2UrjYt+U9HXPl7rqwtc6URV8VuxftQy4KIJlLq1iO7OCqmmQRzxeyP+VoPccRvJsRRsoiG4TQlGylw==} + /@storybook/preview/7.0.0: + resolution: {integrity: sha512-6fSR9zt5fzEQE7iP538Txg2xVG5ndyzAYdSZfMB7LKPBWc8har6EgnpbX9OSPeoEf96/VFRGa/OSS7nV32xFHQ==} dev: true - /@storybook/react-dom-shim/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-1Rd9UeTQqsr6DbkbxscFvYYNjrXxmbgOxweTu2pb86ra9DtRNe2HGmvfX3cNwxHlzodX0LMCoX2TlM+vp2hUqw==} + /@storybook/react-dom-shim/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-oMCkYYVbDaNMolnzObYvHuWNLUGC87osJmjjT3l+zugVUETDM/oDrvbAyzDucCJDea2ZCfxQHxYkhY6R+MQxHA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3140,30 +3209,30 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: true - /@storybook/router/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-4dxfXNC77qoVeGi/+JphS3vYr9pcZCSAFlesR+ohsHJjPFSobgD+xlklF9UMt1Kb0EQYbp/orTq99c/YXTEjtg==} + /@storybook/router/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-TVJDDNd4s3No+6MCv5WxDZjb7eQH1CyLR7LifXMkj9pnGp9rUe0pfA4a+5Dze5ID/YPzdbsEiI1ijnuWSanY6Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/client-logger': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 memoizerific: 1.11.3 qs: 6.11.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true - /@storybook/svelte-vite/7.0.0-rc.11_3rgppvbkzeavxpnueqngpbpqhu: - resolution: {integrity: sha512-87XHzpIswTh5kUXfqmZo+GCvg6VUISwUhQR17KRm2qQi59mVfB+dlNKXJWhvwExWovAvOffJcS+xwN3mZqH6kQ==} + /@storybook/svelte-vite/7.0.0_3rgppvbkzeavxpnueqngpbpqhu: + resolution: {integrity: sha512-zXNDe8qyylKX4j9VRC0v0ueP03GcuYyCXMUlN7MA709vEbsqUImR2fY2bynNbuIva13gqMXjR6FqY6ycYVnlPw==} engines: {node: ^14.18 || >=16} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 dependencies: - '@storybook/builder-vite': 7.0.0-rc.11_egung5nfepmolqa7uavvqho3gq - '@storybook/node-logger': 7.0.0-rc.11 - '@storybook/svelte': 7.0.0-rc.11_svelte@3.55.1 + '@storybook/builder-vite': 7.0.0_egung5nfepmolqa7uavvqho3gq + '@storybook/node-logger': 7.0.0 + '@storybook/svelte': 7.0.0_svelte@3.55.1 '@sveltejs/vite-plugin-svelte': 2.0.2_svelte@3.55.1+vite@4.0.4 magic-string: 0.27.0 react: 18.2.0 @@ -3180,19 +3249,19 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/svelte/7.0.0-rc.11_svelte@3.55.1: - resolution: {integrity: sha512-a1/Jwyr9jyCS2o57TdTYHLIk+hfEkAHJaj3upY+DJK55EaQV0+H4wmdcBkX2sKJ0QDLguouPH89NXaAPtuOenA==} + /@storybook/svelte/7.0.0_svelte@3.55.1: + resolution: {integrity: sha512-bA0b8ybQjq0WUOUBVXi+oebhwuvdzLEnPrZfBlTcOalweL0DdLHFxZgNMN05M6n+SIi2oF1YwKajMHPmicMp4w==} engines: {node: '>=16.0.0'} peerDependencies: svelte: ^3.1.0 dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/core-client': 7.0.0-rc.11 - '@storybook/core-events': 7.0.0-rc.11 - '@storybook/docs-tools': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/core-client': 7.0.0 + '@storybook/core-events': 7.0.0 + '@storybook/docs-tools': 7.0.0 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.0.0-rc.11 - '@storybook/types': 7.0.0-rc.11 + '@storybook/preview-api': 7.0.0 + '@storybook/types': 7.0.0 svelte: 3.55.1 sveltedoc-parser: 4.2.1 type-fest: 2.19.0 @@ -3200,15 +3269,15 @@ packages: - supports-color dev: true - /@storybook/sveltekit/7.0.0-rc.11_hcl52ejjmh2zpx2q5wi2i43hma: - resolution: {integrity: sha512-pcYFxKZRRhQUjDt4Jn3SmbzfnGtAxVu5/l8XJR6Ku/agrqXcMUwRr2l/QL3f0rqy+t0AoGybW5MYyitP1mpIIg==} + /@storybook/sveltekit/7.0.0_hcl52ejjmh2zpx2q5wi2i43hma: + resolution: {integrity: sha512-DaeeScyWGDvUsjRMuBFIYJTtfqHtFNdDA0iG1esLvW6dOGA/GgW+qqJcJ/f07s9Ge0lfHEqHdo4ZXUMhxh3eUA==} engines: {node: ^14.18 || >=16} peerDependencies: vite: ^4.0.0 dependencies: - '@storybook/builder-vite': 7.0.0-rc.11_egung5nfepmolqa7uavvqho3gq - '@storybook/svelte': 7.0.0-rc.11_svelte@3.55.1 - '@storybook/svelte-vite': 7.0.0-rc.11_3rgppvbkzeavxpnueqngpbpqhu + '@storybook/builder-vite': 7.0.0_egung5nfepmolqa7uavvqho3gq + '@storybook/svelte': 7.0.0_svelte@3.55.1 + '@storybook/svelte-vite': 7.0.0_3rgppvbkzeavxpnueqngpbpqhu vite: 4.0.4 transitivePeerDependencies: - '@preact/preset-vite' @@ -3221,11 +3290,11 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/telemetry/7.0.0-rc.11: - resolution: {integrity: sha512-BNIOaQiAJ4dMXisxKY1j6p6aG+HcN7P9aH7GnAR80cS11R8T5XBamNwb4q/FyO51oAqjH373WnlFLSte+Yf2Hw==} + /@storybook/telemetry/7.0.0: + resolution: {integrity: sha512-eU3TTQT+lRl10h0+ncYruoCYx+uvqugRnkuZMD9HYh4eDrST+7/ktvFcVagsf02zERHja5KUFP7n8dadVt1uZg==} dependencies: - '@storybook/client-logger': 7.0.0-rc.11 - '@storybook/core-common': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 + '@storybook/core-common': 7.0.0 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.4 @@ -3238,30 +3307,39 @@ packages: - supports-color dev: true - /@storybook/testing-library/0.0.14-next.1: - resolution: {integrity: sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw==} + /@storybook/testing-library/0.0.14-next.2: + resolution: {integrity: sha512-i/SLSGm0o978ELok/SB4Qg1sZ3zr+KuuCkzyFqcCD0r/yf+bG35aQGkFqqxfSAdDxuQom0NO02FE+qys5Eapdg==} dependencies: - '@storybook/client-logger': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 '@storybook/instrumenter': 7.0.0-rc.11 '@testing-library/dom': 8.20.0 '@testing-library/user-event': 13.5.0_yxlyej73nftwmh2fiao7paxmlm ts-dedent: 2.2.0 dev: true - /@storybook/theming/7.0.0-rc.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-GnEELu+/OncFuReQG5bvs6r+lkKG/JJCUDB1HmouQKx+uve4HraBq6pRYAEnGKcyx7HrEdeAyekIlrNnYAo5AQ==} + /@storybook/theming/7.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 - '@storybook/client-logger': 7.0.0-rc.11 + '@storybook/client-logger': 7.0.0 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true + /@storybook/types/7.0.0: + resolution: {integrity: sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==} + dependencies: + '@storybook/channels': 7.0.0 + '@types/babel__core': 7.20.0 + '@types/express': 4.17.17 + file-system-cache: 2.0.2 + dev: true + /@storybook/types/7.0.0-rc.11: resolution: {integrity: sha512-y+9bqsE7Pzl74F1Q3EJVQzChyclWL/FPCYOeBmwpY2O++MJKSBJMauCLcGDztNc645wVGvfQXW016b3fbBELgA==} dependencies: @@ -5400,6 +5478,23 @@ packages: engines: {node: '>=0.4.0'} dev: true + /font-finder/1.1.0: + resolution: {integrity: sha512-wpCL2uIbi6GurJbU7ZlQ3nGd61Ho+dSU6U83/xJT5UPFfN35EeCW/rOtS+5k+IuEZu2SYmHzDIPL9eA5tSYRAw==} + engines: {node: '>8.0.0'} + dependencies: + get-system-fonts: 2.0.2 + promise-stream-reader: 1.0.1 + dev: false + + /font-ligatures/1.4.1: + resolution: {integrity: sha512-7W6zlfyhvCqShZ5ReUWqmSd9vBaUudW0Hxis+tqUjtHhsPU+L3Grf8mcZAtCiXHTzorhwdRTId2WeH/88gdFkw==} + engines: {node: '>8.0.0'} + dependencies: + font-finder: 1.1.0 + lru-cache: 6.0.0 + opentype.js: 0.8.0 + dev: false + /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -5521,6 +5616,11 @@ packages: engines: {node: '>=10'} dev: true + /get-system-fonts/2.0.2: + resolution: {integrity: sha512-zzlgaYnHMIEgHRrfC7x0Qp0Ylhw/sHpM6MHXeVBTYIsvGf5GpbnClB+Q6rAPdn+0gd2oZZIo6Tj3EaWrt4VhDQ==} + engines: {node: '>8.0.0'} + dev: false + /giget/1.1.2: resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==} hasBin: true @@ -6361,20 +6461,12 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /lz-string/1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: true - /magic-string/0.26.7: - resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} - engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - /magic-string/0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} @@ -6776,6 +6868,13 @@ packages: is-wsl: 2.2.0 dev: true + /opentype.js/0.8.0: + resolution: {integrity: sha512-FQHR4oGP+a0m/f6yHoRpBOIbn/5ZWxKd4D/djHVJu8+KpBTYrJda0b7mLcgDEMWXE9xBCJm+qb0yv6FcvPjukg==} + hasBin: true + dependencies: + tiny-inflate: 1.0.3 + dev: false + /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -7161,6 +7260,11 @@ packages: engines: {node: '>=0.4.0'} dev: true + /promise-stream-reader/1.0.1: + resolution: {integrity: sha512-Tnxit5trUjBAqqZCGWwjyxhmgMN4hGrtpW3Oc/tRI4bpm/O2+ej72BB08l6JBnGQgVDGCLvHFGjGgQS6vzhwXg==} + engines: {node: '>8.0.0'} + dev: false + /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -7474,6 +7578,10 @@ packages: unist-util-visit: 2.0.3 dev: true + /resize-observer-polyfill/1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false + /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -7747,11 +7855,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /sourcemap-codec/1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true - /space-separated-tokens/1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} dev: true @@ -7798,11 +7901,11 @@ packages: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} dev: true - /storybook/7.0.0-rc.11: - resolution: {integrity: sha512-j60gnt8AqjJS59ikgclhLb/JazgO1YYbWJMbg7w1rnm9Fdy7p8Vvb4ZLzDAOE5Dg24rEFiDe08d9bjNK7NLT5w==} + /storybook/7.0.0: + resolution: {integrity: sha512-sZamiYhd2lzQ2A+UIlkUlc6/i8TiNCcCUBmpTiN6qlbBPId5Gji1XdDTqgiuaKLTFnLU/1DBTS1a2ndGI1fIKw==} hasBin: true dependencies: - '@storybook/cli': 7.0.0-rc.11 + '@storybook/cli': 7.0.0 transitivePeerDependencies: - bufferutil - encoding @@ -7995,6 +8098,12 @@ packages: typescript: 4.9.5 dev: true + /svelte-resize-observer/2.0.0: + resolution: {integrity: sha512-hMG30MeUFiVhAeAGWoasBGNAFWa/K8mAIvbpjdaYRqNcU5nkxvjZYhzOhQ8rYbHSd2Hflk2s21yFR7CNKEHZpw==} + dependencies: + resize-observer-polyfill: 1.5.1 + dev: false + /svelte-writable-derived/2.1.6_svelte@3.55.1: resolution: {integrity: sha512-vqOXuiESMZyP/kt/RD+nOk2RVHNakDm1K1hmfeGAKc4jzcSp5hEkUi43MDbkVlMurkSBlcMVTQwRQy4LcBT2lw==} peerDependencies: @@ -8144,6 +8253,10 @@ packages: globrex: 0.1.2 dev: true + /tiny-inflate/1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + dev: false + /tinykeys/1.4.0: resolution: {integrity: sha512-ysnVd2E4nWbNXIbHaUidcKGLTmNimqP0hdpsD0Ph5hPJ84ntCF6PHj+Jg3im9nZt9/hNsBg/E6m1psHc2KaPnQ==} dev: false @@ -8614,13 +8727,59 @@ packages: engines: {node: '>=0.4'} dev: true + /xterm-addon-canvas/0.3.0_xterm@5.1.0: + resolution: {integrity: sha512-2deF4ev6T+NjgSM56H+jcAWz4k5viEoaBtuDEyfo5Qdh1r7HOvNzLC45HSeegdH38qmEcL9XIt0KXyOINpSFRA==} + peerDependencies: + xterm: ^5.0.0 + dependencies: + xterm: 5.1.0 + dev: false + + /xterm-addon-fit/0.7.0_xterm@5.1.0: + resolution: {integrity: sha512-tQgHGoHqRTgeROPnvmtEJywLKoC/V9eNs4bLLz7iyJr1aW/QFzRwfd3MGiJ6odJd9xEfxcW36/xRU47JkD5NKQ==} + peerDependencies: + xterm: ^5.0.0 + dependencies: + xterm: 5.1.0 + dev: false + + /xterm-addon-ligatures/0.6.0_xterm@5.1.0: + resolution: {integrity: sha512-DxiYCXXYEpnwr8li4/QhG64exjrLX1nHBfNNfrQgx5e8Z9tK2SjWKpxI6PZEy++8+YdL1F7VjWI4aKOaDt2VVw==} + engines: {node: '>8.0.0'} + peerDependencies: + xterm: ^5.0.0 + dependencies: + font-finder: 1.1.0 + font-ligatures: 1.4.1 + xterm: 5.1.0 + dev: false + + /xterm-addon-unicode11/0.5.0_xterm@5.1.0: + resolution: {integrity: sha512-Jm4/g4QiTxiKiTbYICQgC791ubhIZyoIwxAIgOW8z8HWFNY+lwk+dwaKEaEeGBfM48Vk8fklsUW9u/PlenYEBg==} + peerDependencies: + xterm: ^5.0.0 + dependencies: + xterm: 5.1.0 + dev: false + + /xterm-addon-webgl/0.14.0_xterm@5.1.0: + resolution: {integrity: sha512-zcxL4RVVjeS7NNFeKe5HHQI8OUEx3wZpE4EqLoTVipa2UrTR+qLsigo16UEp/yVcYBMhK7tsJ/AJokoEe/f0mw==} + peerDependencies: + xterm: ^5.0.0 + dependencies: + xterm: 5.1.0 + dev: false + + /xterm/5.1.0: + resolution: {integrity: sha512-LovENH4WDzpwynj+OTkLyZgJPeDom9Gra4DMlGAgz6pZhIDCQ+YuO7yfwanY+gVbn/mmZIStNOnVRU/ikQuAEQ==} + dev: false + /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 56fdd34a8..f255aa48d 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -53,10 +53,19 @@ dependencies = [ ] [[package]] -name = "anyhow" -version = "1.0.69" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" [[package]] name = "arc-swap" @@ -78,13 +87,13 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "async-trait" -version = "0.1.64" +version = "0.1.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" +checksum = "86ea188f25f0255d8f92797797c97ebf5631fa88178beb1a46fdf5622c9a00e4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.8", ] [[package]] @@ -94,7 +103,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" dependencies = [ "atk-sys", - "bitflags", + "bitflags 1.3.2", "glib", "libc", ] @@ -170,6 +179,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487f1e0fcbe47deb8b0574e646def1c903389d95241dd1bbcc6ce4a715dfc0c1" + [[package]] name = "bitpacking" version = "0.8.4" @@ -198,9 +213,9 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] @@ -228,9 +243,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b" +checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" dependencies = [ "memchr", "serde", @@ -244,9 +259,9 @@ checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "byte-unit" -version = "4.0.18" +version = "4.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3348673602e04848647fffaa8e9a861e7b5d5cae6570727b41bde0f722514484" +checksum = "da78b32057b8fdfc352504708feeba7216dcd65a2c9ab02978cbd288d1279b6c" dependencies = [ "serde", "utf8-width", @@ -254,9 +269,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" [[package]] name = "byteorder" @@ -266,9 +281,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cairo-rs" @@ -276,7 +291,7 @@ version = "0.15.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cairo-sys-rs", "glib", "libc", @@ -359,13 +374,28 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits 0.2.15", + "time 0.1.45", + "wasm-bindgen", + "winapi", +] + [[package]] name = "cocoa" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", "cocoa-foundation", "core-foundation", @@ -377,11 +407,11 @@ dependencies = [ [[package]] name = "cocoa-foundation" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", "core-foundation", "core-graphics-types", @@ -390,6 +420,16 @@ dependencies = [ "objc", ] +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + [[package]] name = "color_quant" version = "1.1.0" @@ -417,6 +457,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "concurrent-queue" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -451,7 +500,7 @@ version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-graphics-types", "foreign-types", @@ -464,7 +513,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "foreign-types", "libc", @@ -515,9 +564,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" dependencies = [ "cfg-if", "crossbeam-utils", @@ -549,9 +598,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ "cfg-if", ] @@ -586,7 +635,7 @@ dependencies = [ "proc-macro2", "quote", "smallvec", - "syn", + "syn 1.0.109", ] [[package]] @@ -596,7 +645,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" dependencies = [ "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -606,7 +655,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad" dependencies = [ "csv-core", - "itoa 1.0.5", + "itoa 1.0.6", "ryu", "serde", ] @@ -627,14 +676,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ "quote", - "syn", + "syn 1.0.109", ] [[package]] -name = "cty" -version = "0.2.2" +name = "cxx" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" +checksum = "a9c00419335c41018365ddf7e4d5f1c12ee3659ddcf3e01974650ba1de73d038" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb8307ad413a98fff033c8545ecf133e3257747b3bae935e7602aab8aa92d4ca" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.8", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc52e2eb08915cb12596d29d55f0b5384f00d697a646dbd269b6ecb0fbd9d31" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "631569015d0d8d54e6c241733f944042623ab6df7bc3be7466874b05fcdb1c5f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.8", +] [[package]] name = "darling" @@ -667,7 +754,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.9.3", - "syn", + "syn 1.0.109", ] [[package]] @@ -681,7 +768,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn", + "syn 1.0.109", ] [[package]] @@ -692,7 +779,7 @@ checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" dependencies = [ "darling_core 0.10.2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -703,7 +790,7 @@ checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core 0.13.4", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -725,8 +812,8 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version 0.4.0", - "syn", + "rustc_version", + "syn 1.0.109", ] [[package]] @@ -824,9 +911,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" dependencies = [ "cfg-if", ] @@ -839,7 +926,28 @@ checksum = "c375b9c5eadb68d0a6efee2999fef292f45854c3444c86f09d8ab086ba942b0e" dependencies = [ "num-traits 0.2.15", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", ] [[package]] @@ -875,18 +983,18 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] [[package]] name = "fern" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdd7b0849075e79ee9a1836df22c717d1eba30451796fdc631b04565dd11e2a" +checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" dependencies = [ "colored", "log", @@ -894,24 +1002,35 @@ dependencies = [ [[package]] name = "field-offset" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" dependencies = [ - "memoffset 0.6.5", - "rustc_version 0.3.3", + "memoffset 0.8.0", + "rustc_version", +] + +[[package]] +name = "filedescriptor" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e" +dependencies = [ + "libc", + "thiserror", + "winapi", ] [[package]] name = "filetime" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9" +checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" dependencies = [ "cfg-if", "libc", "redox_syscall 0.2.16", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -994,25 +1113,41 @@ dependencies = [ ] [[package]] -name = "futures-channel" -version = "0.3.26" +name = "futures" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" +checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" dependencies = [ "futures-core", + "futures-sink", ] [[package]] name = "futures-core" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" +checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" [[package]] name = "futures-executor" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" +checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" dependencies = [ "futures-core", "futures-task", @@ -1021,42 +1156,44 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" +checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" [[package]] name = "futures-macro" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" +checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "futures-sink" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" +checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" [[package]] name = "futures-task" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" +checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" [[package]] name = "futures-util" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" +checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" dependencies = [ + "futures-channel", "futures-core", "futures-io", "futures-macro", + "futures-sink", "futures-task", "memchr", "pin-project-lite", @@ -1079,7 +1216,7 @@ version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -1095,7 +1232,7 @@ version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" dependencies = [ - "bitflags", + "bitflags 1.3.2", "gdk-pixbuf-sys", "gio", "glib", @@ -1147,15 +1284,15 @@ dependencies = [ [[package]] name = "generator" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d266041a359dfa931b370ef684cceb84b166beb14f7f0421f4a6a3d0c446d12e" +checksum = "33a20a288a94683f5f4da0adecdbe095c94a77c295e514cc6484e9394dd8376e" dependencies = [ "cc", "libc", "log", "rustversion", - "windows 0.39.0", + "windows 0.44.0", ] [[package]] @@ -1192,9 +1329,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" [[package]] name = "gio" @@ -1202,7 +1339,7 @@ version = "0.15.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" dependencies = [ - "bitflags", + "bitflags 1.3.2", "futures-channel", "futures-core", "futures-io", @@ -1231,12 +1368,17 @@ name = "git-butler-tauri" version = "0.0.0" dependencies = [ "anyhow", + "bytes", "filetime", "fslock", + "futures", + "futures-util", "git2", "log", "md5", + "mt_logger", "notify", + "portable-pty", "reqwest", "sentry", "sentry-tauri", @@ -1253,6 +1395,7 @@ dependencies = [ "thiserror", "timed", "tokio", + "tokio-tungstenite", "urlencoding", "uuid 1.3.0", "walkdir", @@ -1264,7 +1407,7 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf7f68c2995f392c49fffb4f95ae2c873297830eb25c6bc4c114ce8f4562acc" dependencies = [ - "bitflags", + "bitflags 1.3.2", "libc", "libgit2-sys", "log", @@ -1279,7 +1422,7 @@ version = "0.15.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" dependencies = [ - "bitflags", + "bitflags 1.3.2", "futures-channel", "futures-core", "futures-executor", @@ -1300,12 +1443,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" dependencies = [ "anyhow", - "heck 0.4.0", + "heck 0.4.1", "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1366,7 +1509,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" dependencies = [ "atk", - "bitflags", + "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -1411,14 +1554,14 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "h2" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" dependencies = [ "bytes", "fnv", @@ -1453,9 +1596,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -1475,6 +1618,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + [[package]] name = "hex" version = "0.4.3" @@ -1503,7 +1652,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1514,13 +1663,13 @@ checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", - "itoa 1.0.5", + "itoa 1.0.6", ] [[package]] @@ -1554,9 +1703,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.24" +version = "0.14.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" +checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" dependencies = [ "bytes", "futures-channel", @@ -1567,7 +1716,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.5", + "itoa 1.0.6", "pin-project-lite", "socket2", "tokio", @@ -1589,6 +1738,30 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows 0.46.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + [[package]] name = "ico" version = "0.2.0" @@ -1671,7 +1844,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" dependencies = [ - "bitflags", + "bitflags 1.3.2", "inotify-sys", "libc", ] @@ -1697,6 +1870,26 @@ dependencies = [ "web-sys", ] +[[package]] +name = "io-lifetimes" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.45.0", +] + +[[package]] +name = "ioctl-rs" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7970510895cee30b3e9128319f2cefd4bde883a39f38baa279567ba3a7eb97d" +dependencies = [ + "libc", +] + [[package]] name = "ipnet" version = "2.7.1" @@ -1720,9 +1913,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "javascriptcore-rs" @@ -1730,7 +1923,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" dependencies = [ - "bitflags", + "bitflags 1.3.2", "glib", "javascriptcore-rs-sys", ] @@ -1769,18 +1962,18 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -1812,7 +2005,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587" dependencies = [ - "bitflags", + "bitflags 1.3.2", "libc", ] @@ -1866,9 +2059,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.139" +version = "0.2.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" [[package]] name = "libgit2-sys" @@ -1929,6 +2122,21 @@ dependencies = [ "safemem", ] +[[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + [[package]] name = "lock_api" version = "0.4.9" @@ -2063,9 +2271,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", ] @@ -2090,9 +2298,9 @@ dependencies = [ [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minidump-common" @@ -2100,7 +2308,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a134e10507b4352836be67e13cfa06e7881df5b4e091999e75c05eb449dc6985" dependencies = [ - "bitflags", + "bitflags 1.3.2", "debugid", "enum-primitive-derive", "num-traits 0.2.15", @@ -2125,7 +2333,7 @@ dependencies = [ "memmap2", "memoffset 0.6.5", "minidump-common", - "nix", + "nix 0.24.3", "scroll", "tempfile", "thiserror", @@ -2162,14 +2370,24 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", + "windows-sys 0.45.0", +] + +[[package]] +name = "mt_logger" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c268d3423e270b204b82cf8245ec3eeebb1208a49e250a04f175a874459bc91" +dependencies = [ + "chrono", + "once_cell", ] [[package]] @@ -2205,7 +2423,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" dependencies = [ - "bitflags", + "bitflags 1.3.2", "jni-sys", "ndk-sys", "num_enum", @@ -2239,33 +2457,38 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", ] +[[package]] +name = "nix" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.6.5", + "pin-utils", +] + [[package]] name = "nodrop" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -[[package]] -name = "nom8" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" -dependencies = [ - "memchr", -] - [[package]] name = "notify" version = "5.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58ea850aa68a06e48fdb069c0ec44d0d64c8dbffa49bf3b6f7f0a901fdea1ba9" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crossbeam-channel", "filetime", "fsevent-sys", @@ -2338,23 +2561,32 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d829733185c1ca374f17e52b762f24f535ec625d2cc1f070e34c8a9068f341b" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be1598bf1c313dcdd12092e3f1920f463462525a21b7b4e11b4168353d0123e" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", ] [[package]] @@ -2407,9 +2639,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "oneshot" @@ -2436,7 +2668,7 @@ version = "0.10.48" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "518915b97df115dd36109bfa429a48b8f737bd05508cf9588977b599648926d2" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "foreign-types", "libc", @@ -2453,7 +2685,7 @@ checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -2464,9 +2696,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.25.0+1.1.1t" +version = "111.25.2+1.1.1t" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3173cd3626c43e3854b1b727422a276e568d9ec5fe8cec197822cf52cfb743d6" +checksum = "320708a054ad9b3bf314688b5db87cf4d6683d64cfc835e2337924ae62bf4431" dependencies = [ "cc", ] @@ -2506,7 +2738,7 @@ version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" dependencies = [ - "bitflags", + "bitflags 1.3.2", "glib", "libc", "once_cell", @@ -2537,22 +2769,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if", "libc", "redox_syscall 0.2.16", "smallvec", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] name = "paste" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" [[package]] name = "pathdiff" @@ -2566,16 +2798,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" -[[package]] -name = "pest" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab62d2fa33726dbe6321cc97ef96d8cde531e3eeaf858a058de53a8a6d40d8f" -dependencies = [ - "thiserror", - "ucd-trie", -] - [[package]] name = "phf" version = "0.8.0" @@ -2639,7 +2861,7 @@ dependencies = [ "proc-macro-hack", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -2653,7 +2875,7 @@ dependencies = [ "proc-macro-hack", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -2700,16 +2922,16 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "plist" -version = "1.4.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5329b8f106a176ab0dce4aae5da86bfcb139bb74fb00882859e03745011f3635" +checksum = "9bd9647b268a3d3e14ff09c23201133a62589c658db02bb7388c7246aafe0590" dependencies = [ - "base64 0.13.1", + "base64 0.21.0", "indexmap", "line-wrap", "quick-xml", "serde", - "time", + "time 0.3.20", ] [[package]] @@ -2718,7 +2940,7 @@ version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crc32fast", "flate2", "miniz_oxide", @@ -2726,16 +2948,39 @@ dependencies = [ [[package]] name = "polling" -version = "2.5.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6" +checksum = "7e1f879b2998099c2d69ab9605d145d5b661195627eccc680002c4918a7fb6fa" dependencies = [ "autocfg", + "bitflags 1.3.2", "cfg-if", + "concurrent-queue", "libc", "log", - "wepoll-ffi", - "windows-sys 0.42.0", + "pin-project-lite", + "windows-sys 0.45.0", +] + +[[package]] +name = "portable-pty" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806ee80c2a03dbe1a9fb9534f8d19e4c0546b790cde8fd1fea9d6390644cb0be" +dependencies = [ + "anyhow", + "bitflags 1.3.2", + "downcast-rs", + "filedescriptor", + "lazy_static", + "libc", + "log", + "nix 0.25.1", + "serial", + "shared_library", + "shell-words", + "winapi", + "winreg", ] [[package]] @@ -2766,9 +3011,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", "toml_edit", @@ -2783,7 +3028,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "version_check", ] @@ -2806,27 +3051,27 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.50" +version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" +checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.26.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f50b1c63b38611e7d4d7f68b82d3ad0cc71a2ad2e7f61fc10f1328d917c93cd" +checksum = "e5c1a97b1bc42b1d550bfb48d4262153fe400a12bab1511821736f7eac76d7e2" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -2923,18 +3168,15 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" -dependencies = [ - "cty", -] +checksum = "4f851a03551ceefd30132e447f07f96cb7011d6b658374f3aed847333adb5559" [[package]] name = "rayon" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", @@ -2942,9 +3184,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -2964,7 +3206,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -2991,9 +3233,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c" dependencies = [ "aho-corasick", "memchr", @@ -3011,24 +3253,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "reqwest" -version = "0.11.14" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" +checksum = "0ba30cc2c0cd02af1222ed216ba659cdb2f879dfe3181852fe7c50b1d0005949" dependencies = [ "base64 0.21.0", "bytes", @@ -3109,9 +3342,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" [[package]] name = "rustc-hash" @@ -3119,35 +3352,40 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.16", + "semver", +] + +[[package]] +name = "rustix" +version = "0.36.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.45.0", ] [[package]] name = "rustversion" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "safemem" @@ -3185,6 +3423,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scratch" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" + [[package]] name = "scroll" version = "0.11.0" @@ -3202,7 +3446,7 @@ checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3211,7 +3455,7 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -3234,7 +3478,7 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cssparser", "derive_more", "fxhash", @@ -3250,31 +3494,13 @@ dependencies = [ [[package]] name = "semver" -version = "0.11.0" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" dependencies = [ "serde", ] -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - [[package]] name = "sentry" version = "0.27.0" @@ -3310,7 +3536,7 @@ checksum = "c63317c4051889e73f0b00ce4024cae3e6a225f2e18a27d2c1522eb9ce2743da" dependencies = [ "hostname", "libc", - "rustc_version 0.4.0", + "rustc_version", "sentry-core", "uname", ] @@ -3377,51 +3603,51 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time", + "time 0.3.20", "url", "uuid 1.3.0", ] [[package]] name = "serde" -version = "1.0.152" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.8", ] [[package]] name = "serde_json" -version = "1.0.92" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7434af0dc1cbd59268aa98b4c22c131c0584d2232f6fb166efb993e2832e896a" +checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" dependencies = [ - "itoa 1.0.5", + "itoa 1.0.6", "ryu", "serde", ] [[package]] name = "serde_repr" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e" +checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.8", ] [[package]] @@ -3431,7 +3657,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.5", + "itoa 1.0.6", "ryu", "serde", ] @@ -3455,7 +3681,49 @@ dependencies = [ "darling 0.13.4", "proc-macro2", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "serial" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1237a96570fc377c13baa1b88c7589ab66edced652e43ffb17088f003db3e86" +dependencies = [ + "serial-core", + "serial-unix", + "serial-windows", +] + +[[package]] +name = "serial-core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f46209b345401737ae2125fe5b19a77acce90cd53e1658cda928e4fe9a64581" +dependencies = [ + "libc", +] + +[[package]] +name = "serial-unix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f03fbca4c9d866e24a459cbca71283f545a37f8e3e002ad8c70593871453cab7" +dependencies = [ + "ioctl-rs", + "libc", + "serial-core", + "termios", +] + +[[package]] +name = "serial-windows" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c6d3b776267a75d31bbdfd5d36c0ca051251caafc285827052bc53bcdc8162" +dependencies = [ + "libc", + "serial-core", ] [[package]] @@ -3477,7 +3745,7 @@ checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3490,6 +3758,17 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sha2" version = "0.10.6" @@ -3510,6 +3789,31 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shared_library" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" +dependencies = [ + "lazy_static", + "libc", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + [[package]] name = "similar" version = "2.2.1" @@ -3524,9 +3828,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg", ] @@ -3545,14 +3849,14 @@ checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -3564,7 +3868,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "gio", "glib", "libc", @@ -3578,7 +3882,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" dependencies = [ - "bitflags", + "bitflags 1.3.2", "gio-sys", "glib-sys", "gobject-sys", @@ -3603,9 +3907,9 @@ dependencies = [ [[package]] name = "string_cache" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", @@ -3641,9 +3945,20 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9" dependencies = [ "proc-macro2", "quote", @@ -3670,7 +3985,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" dependencies = [ "cfg-expr 0.11.0", - "heck 0.4.0", + "heck 0.4.1", "pkg-config", "toml", "version-compare 0.1.1", @@ -3723,7 +4038,7 @@ dependencies = [ "tantivy-query-grammar", "tempfile", "thiserror", - "time", + "time 0.3.20", "uuid 1.3.0", "winapi", ] @@ -3772,7 +4087,7 @@ version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac8e6399427c8494f9849b58694754d7cc741293348a6836b6c8d2c5aa82d8e6" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cairo-rs", "cc", "cocoa", @@ -3841,7 +4156,7 @@ dependencies = [ "glib", "glob", "gtk", - "heck 0.4.0", + "heck 0.4.1", "http", "ignore", "objc", @@ -3852,7 +4167,7 @@ dependencies = [ "raw-window-handle", "regex", "rfd", - "semver 1.0.16", + "semver", "serde", "serde_json", "serde_repr", @@ -3881,9 +4196,9 @@ checksum = "8807c85d656b2b93927c19fe5a5f1f1f348f96c2de8b90763b3c2d561511f9b4" dependencies = [ "anyhow", "cargo_toml", - "heck 0.4.0", + "heck 0.4.1", "json-patch", - "semver 1.0.16", + "semver", "serde_json", "tauri-utils", "winres", @@ -3904,13 +4219,13 @@ dependencies = [ "proc-macro2", "quote", "regex", - "semver 1.0.16", + "semver", "serde", "serde_json", "sha2", "tauri-utils", "thiserror", - "time", + "time 0.3.20", "uuid 1.3.0", "walkdir", ] @@ -3921,10 +4236,10 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "069319e5ecbe653a799b94b0690d9f9bf5d00f7b1d3989aa331c524d4e354075" dependencies = [ - "heck 0.4.0", + "heck 0.4.1", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "tauri-codegen", "tauri-utils", ] @@ -3932,7 +4247,7 @@ dependencies = [ [[package]] name = "tauri-plugin-log" version = "0.1.0" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=dev#bf1106a0a5e178ce38ecde56751ba037307a7ae8" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=dev#5a6abd3203dc94c38f96d0c4bf7ecbef399f8c25" dependencies = [ "byte-unit", "fern", @@ -3941,16 +4256,16 @@ dependencies = [ "serde_json", "serde_repr", "tauri", - "time", + "time 0.3.20", ] [[package]] name = "tauri-plugin-window-state" version = "0.1.0" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=dev#bf1106a0a5e178ce38ecde56751ba037307a7ae8" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=dev#5a6abd3203dc94c38f96d0c4bf7ecbef399f8c25" dependencies = [ "bincode", - "bitflags", + "bitflags 2.0.2", "log", "serde", "serde_json", @@ -4007,7 +4322,7 @@ dependencies = [ "brotli", "ctor", "glob", - "heck 0.4.0", + "heck 0.4.1", "html5ever", "infer", "json-patch", @@ -4016,7 +4331,7 @@ dependencies = [ "phf 0.10.1", "proc-macro2", "quote", - "semver 1.0.16", + "semver", "serde", "serde_json", "serde_with", @@ -4028,16 +4343,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" dependencies = [ "cfg-if", "fastrand", - "libc", "redox_syscall 0.2.16", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys 0.42.0", ] [[package]] @@ -4062,6 +4376,24 @@ dependencies = [ "winapi", ] +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "termios" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5d9cf598a6d7ce700a4e6a9199da127e6819a61e64b68609683cc9a01b5683a" +dependencies = [ + "libc", +] + [[package]] name = "thin-slice" version = "0.1.1" @@ -4070,40 +4402,54 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.8", ] [[package]] name = "thread_local" -version = "1.1.4" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ + "cfg-if", "once_cell", ] [[package]] name = "time" -version = "0.3.17" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ - "itoa 1.0.5", + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +dependencies = [ + "itoa 1.0.6", + "libc", + "num_threads", "serde", "time-core", "time-macros", @@ -4117,9 +4463,9 @@ checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" dependencies = [ "time-core", ] @@ -4145,7 +4491,7 @@ dependencies = [ "darling 0.10.2", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -4159,9 +4505,9 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" @@ -4175,11 +4521,25 @@ dependencies = [ "memchr", "mio", "num_cpus", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "socket2", + "tokio-macros", "windows-sys 0.45.0", ] +[[package]] +name = "tokio-macros" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "tokio-native-tls" version = "0.3.1" @@ -4191,10 +4551,22 @@ dependencies = [ ] [[package]] -name = "tokio-util" -version = "0.7.4" +name = "tokio-tungstenite" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" dependencies = [ "bytes", "futures-core", @@ -4215,19 +4587,19 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" [[package]] name = "toml_edit" -version = "0.18.1" +version = "0.19.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" dependencies = [ "indexmap", - "nom8", "toml_datetime", + "winnow", ] [[package]] @@ -4257,7 +4629,7 @@ checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -4314,18 +4686,31 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +[[package]] +name = "tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" +dependencies = [ + "base64 0.13.1", + "byteorder", + "bytes", + "http", + "httparse", + "log", + "rand 0.8.5", + "sha1", + "thiserror", + "url", + "utf-8", +] + [[package]] name = "typenum" version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" -[[package]] -name = "ucd-trie" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" - [[package]] name = "uds" version = "0.2.6" @@ -4346,15 +4731,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.10" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] name = "unicode-normalization" @@ -4367,9 +4752,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" @@ -4471,12 +4856,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi", "winapi-util", ] @@ -4496,6 +4880,12 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -4504,9 +4894,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4514,24 +4904,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" dependencies = [ "cfg-if", "js-sys", @@ -4541,9 +4931,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4551,28 +4941,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" dependencies = [ "js-sys", "wasm-bindgen", @@ -4584,7 +4974,7 @@ version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cairo-rs", "gdk", "gdk-sys", @@ -4609,7 +4999,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" dependencies = [ "atk-sys", - "bitflags", + "bitflags 1.3.2", "cairo-sys-rs", "gdk-pixbuf-sys", "gdk-sys", @@ -4645,7 +5035,7 @@ checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -4663,15 +5053,6 @@ dependencies = [ "windows-metadata", ] -[[package]] -name = "wepoll-ffi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" -dependencies = [ - "cc", -] - [[package]] name = "winapi" version = "0.3.9" @@ -4730,6 +5111,24 @@ dependencies = [ "windows_x86_64_msvc 0.39.0", ] +[[package]] +name = "windows" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-bindgen" version = "0.39.0" @@ -4746,7 +5145,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" dependencies = [ - "syn", + "syn 1.0.109", "windows-tokens", ] @@ -4946,6 +5345,15 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +[[package]] +name = "winnow" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.10.1" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 11318be5a..da450ee7f 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -37,7 +37,13 @@ thiserror = "1.0.38" tantivy = "0.19.2" similar = "2.2.1" fslock = "0.2.1" -tokio = { version = "1.26.0", features = ["sync"] } +tokio = { version = "1.26.0", features = ["full", "sync"] } +tokio-tungstenite = "0.18.0" +portable-pty = "0.8.0" +mt_logger = "3.0.2" +bytes = "1.1.0" +futures = "0.3" +futures-util = "0.3.8" timed = "0.2.1" [features] diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index ce85d7652..9505c13e5 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -3,6 +3,7 @@ mod events; mod fs; mod git; mod projects; +mod pty; mod repositories; mod search; mod sessions; @@ -16,6 +17,7 @@ extern crate log; use anyhow::{Context, Result}; use deltas::Delta; use git::activity; +use pty::ws_server::pty_serve; use serde::{ser::SerializeMap, Serialize}; use std::{collections::HashMap, ops::Range, path::Path, sync::Mutex}; use storage::Storage; @@ -724,6 +726,12 @@ fn init(app_handle: tauri::AppHandle) -> Result<()> { log::error!("{}: failed to reindex project: {:#}", project.id, err); } } + + tauri::async_runtime::spawn(async move { + println!("starting pty server"); + pty_serve().await; + }); + watch_events(app_handle, rx); Ok(()) diff --git a/src-tauri/src/pty/mod.rs b/src-tauri/src/pty/mod.rs new file mode 100644 index 000000000..ac33f5743 --- /dev/null +++ b/src-tauri/src/pty/mod.rs @@ -0,0 +1 @@ +pub mod ws_server; diff --git a/src-tauri/src/pty/ws_server.rs b/src-tauri/src/pty/ws_server.rs new file mode 100644 index 000000000..5b6da57ab --- /dev/null +++ b/src-tauri/src/pty/ws_server.rs @@ -0,0 +1,227 @@ +use std::env; +use std::fs::OpenOptions; +use std::io::{Read, Write}; +use std::path::PathBuf; + +use bytes::BytesMut; +use futures::{SinkExt, StreamExt}; +use mt_logger::*; +use portable_pty::{native_pty_system, CommandBuilder, PtySize}; +use serde::Deserialize; +use serde_json::{json, Value}; +use tokio::net::{TcpListener, TcpStream}; +use tokio_tungstenite::accept_async; +use tokio_tungstenite::tungstenite::Message; + +const PTY_SERVER_ADDRESS: &str = "127.0.0.1:7703"; +const TERM: &str = "xterm-256color"; + +#[derive(Deserialize, Debug)] +struct WindowSize { + /// The number of lines of text + pub rows: u16, + /// The number of columns of text + pub cols: u16, + /// The width of a cell in pixels. Note that some systems never + /// fill this value and ignore it. + pub pixel_width: u16, + /// The height of a cell in pixels. Note that some systems never + /// fill this value and ignore it. + pub pixel_height: u16, +} + +async fn handle_client(stream: TcpStream) { + let ws_stream = accept_async(stream).await.expect("Failed to accept"); + let (mut ws_sender, mut ws_receiver) = ws_stream.split(); + + let pty_system = native_pty_system(); + let pty_pair = pty_system + .openpty(PtySize { + rows: 24, + cols: 80, + // Not all systems support pixel_width, pixel_height, + // but it is good practice to set it to something + // that matches the size of the selected font. That + // is more complex than can be shown here in this + // brief example though! + pixel_width: 0, + pixel_height: 0, + }) + .unwrap(); + + let cmd = if cfg!(target_os = "windows") { + // CommandBuilder::new(r"powershell") + // CommandBuilder::new(r"C:\Program Files\Git\bin\bash.exe") + // CommandBuilder::new(r"ubuntu.exe") // if WSL is active + // on UI the user should have the option to choose + + let mut cmd = CommandBuilder::new(r"cmd"); + + // this is needed only for cmd.exe + // because the prompt does not have an empty space at the end + // the prompt should be sepratared from the command being typed, for command parsing + cmd.env("PROMPT", "$P$G "); + + cmd + } else { + let user_default_shell = env::var("SHELL").unwrap(); + + mt_log!(Level::Info, "user_default_shell={}", user_default_shell); + + let user_scripts = &Value::Null; + + let scripts = json!({ + "cwd": "$(pwd)", + "user_scripts": user_scripts + }); + let scripts = scripts.to_string(); + let scripts_str = serde_json::to_string(&scripts).unwrap(); + + mt_log!(Level::Info, "scripts={}", scripts_str); + + let prompt_command_scripts = format!(r#"echo -en "\033]0; [manter] "{}" \a""#, scripts_str); + + let mut cmd = CommandBuilder::new(user_default_shell); + cmd.env("PROMPT_COMMAND", prompt_command_scripts); + cmd.env("TERM", TERM); + cmd.args(["-i"]); + cmd + }; + + let mut pty_child_process = pty_pair.slave.spawn_command(cmd).unwrap(); + + let mut pty_reader = pty_pair.master.try_clone_reader().unwrap(); + let mut pty_writer = pty_pair.master.take_writer().unwrap(); + + // set to cwd + std::thread::spawn(move || { + let rt = tokio::runtime::Runtime::new().unwrap(); + rt.block_on(async { + let mut buffer = BytesMut::with_capacity(1024); + buffer.resize(1024, 0u8); + loop { + buffer[0] = 0u8; + let mut tail = &mut buffer[1..]; + + match pty_reader.read(&mut tail) { + Ok(0) => { + // EOF + mt_log!(Level::Info, "0 bytes read from pty. EOF."); + break; + } + Ok(n) => { + if n == 0 { + // this may be redundant because of Ok(0), but not sure + break; + } + let mut data_to_send = Vec::with_capacity(n + 1); + data_to_send.extend_from_slice(&buffer[..n + 1]); + record_data(&data_to_send); + let message = Message::Binary(data_to_send); + ws_sender.send(message).await.unwrap(); + } + Err(e) => { + mt_log!(Level::Error, "Error reading from pty: {}", e); + mt_log!(Level::Error, "PTY child process may be closed."); + break; + } + } + } + + mt_log!(Level::Info, "PTY child process killed."); + }) + }); + + while let Some(message) = ws_receiver.next().await { + let message = message.unwrap(); + match message { + Message::Binary(msg) => { + let msg_bytes = msg.as_slice(); + match msg_bytes[0] { + 0 => { + if msg_bytes.len().gt(&0) { + record_data(&msg); + pty_writer.write_all(&msg_bytes[1..]).unwrap(); + } + } + 1 => { + let resize_msg: WindowSize = + serde_json::from_slice(&msg_bytes[1..]).unwrap(); + let pty_size = PtySize { + rows: resize_msg.rows, + cols: resize_msg.cols, + pixel_width: resize_msg.pixel_width, + pixel_height: resize_msg.pixel_height, + }; + pty_pair.master.resize(pty_size).unwrap(); + } + 2 => { + // takes the directory we should be recording data to + if msg_bytes.len().gt(&0) { + // convert bytes to string + let command = String::from_utf8_lossy(&msg_bytes[1..]); + let project_path = PathBuf::from(command.as_ref()); + println!("Recording to {:?}", project_path); + } + } + _ => mt_log!(Level::Error, "Unknown command {}", msg_bytes[0]), + } + } + Message::Close(_) => { + mt_log!(Level::Info, "Closing the websocket connection..."); + + mt_log!(Level::Info, "Killing PTY child process..."); + pty_child_process.kill().unwrap(); + + mt_log!(Level::Info, "Breakes the loop. This will terminate the ws socket thread and the ws will close"); + break; + } + _ => mt_log!(Level::Error, "Unknown received data type"), + } + } + + mt_log!( + Level::Info, + "The Websocket was closed and the thread for WS listening will end soon." + ); +} + +// this sort of works, but it's not how we want to do it +// it just appends the data from every pty to the same file +// what we want to do is set the directory to record to, but since +// the reader is in a spawe thread, it's difficult to pass the directory to it +// I also can't seem to send data to the pty on opening a new one, so I can't +// easily initialize the cwd, which is where we want to write this data (under .git) +// HELP +fn record_data(data: &Vec) { + /* + // A little too aggressive: + let mut file = OpenOptions::new() + .write(true) + .append(true) + .create(true) + .open("data.txt") + .unwrap(); + file.write_all(data).unwrap(); + */ +} + +pub async fn pty_serve() { + let listener = TcpListener::bind(PTY_SERVER_ADDRESS) + .await + .expect("Can't listen"); + + while let Ok((stream, _)) = listener.accept().await { + let peer = stream + .peer_addr() + .expect("connected streams should have a peer address"); + mt_log!(Level::Info, "Peer address: {}", peer); + + std::thread::spawn(|| { + let rt = tokio::runtime::Runtime::new().unwrap(); + rt.block_on(async { + handle_client(stream).await; + }); + }); + } +} diff --git a/src/lib/components/Terminal.svelte b/src/lib/components/Terminal.svelte new file mode 100644 index 000000000..4f2f84c73 --- /dev/null +++ b/src/lib/components/Terminal.svelte @@ -0,0 +1,39 @@ + + + +
+
+ +
diff --git a/src/lib/terminals.ts b/src/lib/terminals.ts new file mode 100644 index 000000000..15524d8b4 --- /dev/null +++ b/src/lib/terminals.ts @@ -0,0 +1,165 @@ +import { writable } from 'svelte/store'; +import type { Terminal } from 'xterm'; +import type { FitAddon } from 'xterm-addon-fit'; + +import * as xterm from 'xterm'; +import * as fit from 'xterm-addon-fit'; +import { CanvasAddon } from 'xterm-addon-canvas'; +import { Unicode11Addon } from 'xterm-addon-unicode11'; + +const PTY_WS_ADDRESS = 'ws://127.0.0.1:7703'; + +export type TerminalSession = { + projectId: string; + path: string; + element: HTMLElement | null; + controller: Terminal | null; + fit: FitAddon | null; + pty: WebSocket | null; +}; + +export const terminals = writable>({}); + +export const getTerminalSession = (projectId: string, projectPath: string) => { + let object: TerminalSession | undefined; + + terminals.subscribe((terms) => { + object = terms[projectId]; + }); + + if (!object) { + object = { + projectId: projectId, + path: projectPath, + element: null, + controller: null, + fit: null, + pty: null + } as TerminalSession; + newTerminalSession(object); + updateStore(object); + } + return object; +}; + +function updateStore(session: TerminalSession) { + terminals.update((terms) => { + terms[session.projectId] = session; + return terms; + }); +} + +export const newTerminalSession = async (session: TerminalSession) => { + session.pty = new WebSocket(PTY_WS_ADDRESS); + session.pty.binaryType = 'arraybuffer'; + session.pty.onmessage = (evt) => writePtyIncomingToTermInterface(evt, session); + session.pty.onclose = (evt) => handlePtyWsClose(evt, session); + session.pty.onerror = (evt) => handlePtyWsError(evt, session); + session.pty.onopen = async (_evt) => initalizeXterm(session); +}; + +export function focus(session: TerminalSession) { + console.log('focus'); + //session.controller.focus(); +} + +function initalizeXterm(session: TerminalSession) { + console.log('initalizeXterm'); + session.controller = new xterm.Terminal({ + cursorBlink: false, + cursorStyle: 'block', + fontSize: 13, + rows: 24, + cols: 80, + allowProposedApi: true + }); + + session.controller.loadAddon(new Unicode11Addon()); + session.controller.unicode.activeVersion = '11'; + + session.fit = new fit.FitAddon(); + session.controller.loadAddon(session.fit); + session.controller.loadAddon(new CanvasAddon()); + if (session.element) { + session.controller.open(session.element); + } + fitSession(session); + session.controller.onData((data) => termInterfaceHandleUserInputData(data, session)); + sendPathToPty(session); + updateStore(session); + focus(session); +} + +const writePtyIncomingToTermInterface = (evt: MessageEvent, session: TerminalSession) => { + if (!(evt.data instanceof ArrayBuffer)) { + alert('unknown data type ' + evt.data); + return; + } + //console.log('terminal input', evt.data); + const dataString: string = arrayBufferToString(evt.data.slice(1)); + //console.log('terminal input string', dataString); + if (session.controller) { + session.controller.write(dataString); + } + return dataString; +}; + +const termInterfaceHandleUserInputData = (data: string, session: TerminalSession) => { + console.log('user input', data); + const encodedData = new TextEncoder().encode('\x00' + data); + if (session.pty) { + session.pty.send(encodedData); + } +}; + +export const fitSession = (session: TerminalSession) => { + if (session.fit) { + session.fit.fit(); + } + sendProposedSizeToPty(session); +}; + +const sendProposedSizeToPty = (session: TerminalSession) => { + if (session.fit && session.pty) { + const proposedSize = session.fit.proposeDimensions(); + if (!proposedSize) return; + const resizeData = { + cols: proposedSize.cols, + rows: proposedSize.rows, + pixel_width: 0, + pixel_height: 0 + }; + session.pty.send(new TextEncoder().encode('\x01' + JSON.stringify(resizeData))); + } +}; + +// this is a pretty stupid cheat, but it works on unix systems +const sendPathToPty = (session: TerminalSession) => { + if (!session.pty) return; + + // send the path so th pty knows where to record data + const encodedPath = new TextEncoder().encode('\x02' + session.path); + session.pty.send(encodedPath); + + // send a command to change the directory and clear the screen + const encodedData = new TextEncoder().encode('\x00' + 'cd ' + session.path + ';clear\n'); + session.pty.send(encodedData); +}; + +const arrayBufferToString = (buf: ArrayBuffer) => { + return String.fromCharCode.apply(null, Array.from(new Uint8Array(buf))); +}; + +const handlePtyWsClose = (evt: Event, session: TerminalSession) => { + if (session.controller) { + session.controller.write('Terminal session terminated'); + session.controller.dispose(); + console.log('websocket closes from backend side'); + } +}; + +const handlePtyWsError = (evt: Event, session: TerminalSession) => { + if (typeof console.log == 'function') { + console.log('ws error', evt); + } +}; diff --git a/src/routes/projects/[projectId]/+layout.svelte b/src/routes/projects/[projectId]/+layout.svelte index f927ef7ce..524f3ac0a 100644 --- a/src/routes/projects/[projectId]/+layout.svelte +++ b/src/routes/projects/[projectId]/+layout.svelte @@ -69,6 +69,22 @@ > ⌘K
+ + + + +