├── src-tauri ├── build.rs ├── icons │ ├── icon.ico │ ├── icon.png │ ├── 32x32.png │ ├── icon.icns │ ├── 128x128.png │ ├── StoreLogo.png │ ├── 128x128@2x.png │ ├── Square30x30Logo.png │ ├── Square44x44Logo.png │ ├── Square71x71Logo.png │ ├── Square89x89Logo.png │ ├── Square107x107Logo.png │ ├── Square142x142Logo.png │ ├── Square150x150Logo.png │ ├── Square284x284Logo.png │ └── Square310x310Logo.png ├── .gitignore ├── Cargo.toml ├── tauri.conf.json ├── src │ └── main.rs └── Cargo.lock ├── src ├── hooks │ ├── index.ts │ └── useIntersectionObserver.ts ├── constants │ └── API.ts ├── svg │ ├── vercel-logo.svg │ ├── check.svg │ ├── arrow-left.svg │ ├── commit.svg │ ├── open-in-new-window.svg │ ├── check-circled.svg │ ├── clock.svg │ ├── archive.svg │ ├── cross-circled.svg │ ├── update.svg │ ├── branch.svg │ └── gear.svg ├── components │ ├── layout │ │ └── Main.tsx │ ├── common │ │ ├── Header.tsx │ │ ├── Slider.tsx │ │ ├── RadioGroup.tsx │ │ ├── Popover.tsx │ │ ├── AlertDialog.tsx │ │ └── Dropdown.tsx │ ├── ProjectsDropdown.tsx │ ├── TokenRegistration.tsx │ └── Deployments │ │ ├── index.tsx │ │ └── Card.tsx ├── pages │ ├── _document.tsx │ ├── _app.tsx │ ├── index.tsx │ ├── dashboard.tsx │ └── settings.tsx ├── helpers │ └── fetcher.ts ├── types │ └── index.d.ts └── styles │ └── globals.css ├── assets └── Display.png ├── .vscode └── extensions.json ├── postcss.config.js ├── public └── fonts │ └── karla │ ├── karla-v23-latin-500.woff │ ├── karla-v23-latin-500.woff2 │ ├── karla-v23-latin-600.woff │ ├── karla-v23-latin-600.woff2 │ ├── karla-v23-latin-700.woff │ ├── karla-v23-latin-700.woff2 │ ├── karla-v23-latin-italic.woff │ ├── karla-v23-latin-500italic.woff │ ├── karla-v23-latin-700italic.woff │ ├── karla-v23-latin-italic.woff2 │ ├── karla-v23-latin-regular.woff │ ├── karla-v23-latin-regular.woff2 │ ├── karla-v23-latin-500italic.woff2 │ └── karla-v23-latin-700italic.woff2 ├── vercel.json ├── next-env.d.ts ├── .gitignore ├── tailwind.config.js ├── next.config.js ├── tsconfig.json ├── package.json ├── README.md └── .github └── workflows └── release.yml /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /src/hooks/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./useIntersectionObserver"; 2 | -------------------------------------------------------------------------------- /assets/Display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/assets/Display.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/icon.png -------------------------------------------------------------------------------- /src-tauri/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | -------------------------------------------------------------------------------- /src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] 3 | } 4 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /src-tauri/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/StoreLogo.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /src-tauri/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/src-tauri/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-500.woff -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-500.woff2 -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-600.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-600.woff -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-600.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-600.woff2 -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-700.woff -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-700.woff2 -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-italic.woff -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-500italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-500italic.woff -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-700italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-700italic.woff -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-italic.woff2 -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-regular.woff -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-regular.woff2 -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-500italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-500italic.woff2 -------------------------------------------------------------------------------- /public/fonts/karla/karla-v23-latin-700italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rajatkulkarni95/buildlog/HEAD/public/fonts/karla/karla-v23-latin-700italic.woff2 -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "redirects": [ 3 | { 4 | "source": "/", 5 | "destination": "https://github.com/rajatkulkarni95/buildlog", 6 | "permanent": true 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/constants/API.ts: -------------------------------------------------------------------------------- 1 | export const API_ENDPOINTS = { 2 | user: "https://api.vercel.com/v2/user", 3 | deployments: "https://api.vercel.com/v6/deployments", 4 | projects: "https://api.vercel.com/v9/projects", 5 | }; 6 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | .next 15 | 16 | # Editor directories and files 17 | .vscode/* 18 | !.vscode/extensions.json 19 | .idea 20 | .DS_Store 21 | *.suo 22 | *.ntvs* 23 | *.njsproj 24 | *.sln 25 | *.sw? 26 | -------------------------------------------------------------------------------- /src/svg/vercel-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | const defaultTheme = require("tailwindcss/defaultTheme"); 2 | 3 | /** @type {import('tailwindcss').Config} */ 4 | module.exports = { 5 | darkMode: "class", 6 | content: ["./src/**/*.{js,ts,jsx,tsx}"], 7 | theme: { 8 | extend: { 9 | fontFamily: { 10 | sans: ["Karla", ...defaultTheme.fontFamily.sans], 11 | }, 12 | }, 13 | }, 14 | plugins: [], 15 | }; 16 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | 3 | const nextConfig = { 4 | reactStrictMode: true, 5 | swcMinify: true, 6 | images: { 7 | unoptimized: true, 8 | }, 9 | webpack(config) { 10 | config.module.rules.push({ 11 | test: /\.svg$/, 12 | use: ["@svgr/webpack"], 13 | }); 14 | 15 | return config; 16 | }, 17 | }; 18 | 19 | module.exports = nextConfig; 20 | -------------------------------------------------------------------------------- /src/components/layout/Main.tsx: -------------------------------------------------------------------------------- 1 | interface IMainFrameProps { 2 | children: React.ReactNode; 3 | } 4 | 5 | const MainFrame = ({ children }: IMainFrameProps) => { 6 | return ( 7 |
8 | {children} 9 |
10 | ); 11 | }; 12 | 13 | export default MainFrame; 14 | -------------------------------------------------------------------------------- /src/components/common/Header.tsx: -------------------------------------------------------------------------------- 1 | interface IHeaderProps { 2 | children: React.ReactNode; 3 | classes?: string; 4 | } 5 | 6 | const Header = ({ children, classes }: IHeaderProps) => { 7 | return ( 8 |
11 | {children} 12 |
13 | ); 14 | }; 15 | 16 | export default Header; 17 | -------------------------------------------------------------------------------- /src/pages/_document.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Document, { Html, Head, Main, NextScript } from "next/document"; 3 | 4 | class SpecialDocument extends Document { 5 | render() { 6 | return ( 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | ); 15 | } 16 | } 17 | 18 | export default SpecialDocument; 19 | -------------------------------------------------------------------------------- /src/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import type { AppProps } from "next/app"; 2 | import MainFrame from "~/components/layout/Main"; 3 | import "~/styles/globals.css"; 4 | import { ThemeProvider } from "next-themes"; 5 | 6 | export default function App({ Component, pageProps }: AppProps) { 7 | return ( 8 | 9 | 10 | 11 | 12 | 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /src/helpers/fetcher.ts: -------------------------------------------------------------------------------- 1 | export default async function fetcher( 2 | input: RequestInfo, 3 | init?: RequestInit 4 | ): Promise { 5 | const bearerToken = localStorage.getItem("token"); 6 | 7 | if (!bearerToken) { 8 | throw new Error("No token found"); 9 | } 10 | 11 | const res = await fetch(input, { 12 | headers: { Authorization: `Bearer ${bearerToken}` }, 13 | }); 14 | 15 | if (!res.ok) { 16 | throw new Error("Not authenticated"); 17 | } 18 | 19 | return res.json(); 20 | } 21 | -------------------------------------------------------------------------------- /src/svg/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /src/svg/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "baseUrl": ".", 6 | "allowJs": true, 7 | "skipLibCheck": true, 8 | "strict": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "noEmit": true, 11 | "esModuleInterop": true, 12 | "module": "esnext", 13 | "moduleResolution": "node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "jsx": "preserve", 17 | "incremental": true, 18 | "paths": { 19 | "~/*": ["src/*"] 20 | } 21 | }, 22 | "include": [ 23 | "next-env.d.ts", 24 | "**/*.ts", 25 | "**/*.tsx", 26 | "prettier.config.js", 27 | "src" 28 | ], 29 | "exclude": ["node_modules"] 30 | } 31 | -------------------------------------------------------------------------------- /src/svg/commit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/svg/open-in-new-window.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src-tauri/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "BuildLog" 3 | version = "0.0.0" 4 | description = "A Tauri App" 5 | authors = ["you"] 6 | license = "" 7 | repository = "" 8 | edition = "2021" 9 | rust-version = "1.57" 10 | 11 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 12 | 13 | [build-dependencies] 14 | tauri-build = { version = "1.2", features = [] } 15 | 16 | [dependencies] 17 | serde_json = "1.0" 18 | cocoa = "0.24.1" 19 | objc = "0.2.7" 20 | serde = { version = "1.0", features = ["derive"] } 21 | tauri = { version = "1.2", features = ["notification-all", "shell-open", "system-tray"] } 22 | 23 | [features] 24 | # by default Tauri runs in production mode 25 | # when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL 26 | default = ["custom-protocol"] 27 | # this feature is used used for production builds where `devPath` points to the filesystem 28 | # DO NOT remove this 29 | custom-protocol = ["tauri/custom-protocol"] 30 | -------------------------------------------------------------------------------- /src/svg/check-circled.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import { useRouter } from "next/router"; 2 | import { Fragment, useEffect } from "react"; 3 | import useSWR from "swr"; 4 | import Header from "~/components/common/Header"; 5 | import TokenRegistration from "~/components/TokenRegistration"; 6 | 7 | function Index() { 8 | const router = useRouter(); 9 | 10 | useEffect(() => { 11 | const token = localStorage.getItem("token"); 12 | 13 | if (token) { 14 | router.push("/dashboard"); 15 | } 16 | }, []); 17 | 18 | return ( 19 | 20 |
21 |

22 | BuildLog 23 |

24 |

25 | Quickly displays your Vercel Deployments right in the menu bar for all 26 | your projects 27 |

28 |
29 | 30 |
31 | ); 32 | } 33 | 34 | export default Index; 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "buildlog", 3 | "private": true, 4 | "version": "0.2.0", 5 | "scripts": { 6 | "dev": "next dev -p 1420", 7 | "build": "next build && next export -o dist", 8 | "tauri": "tauri" 9 | }, 10 | "dependencies": { 11 | "@radix-ui/react-alert-dialog": "^1.0.2", 12 | "@radix-ui/react-dropdown-menu": "^2.0.2", 13 | "@radix-ui/react-popover": "^1.0.3", 14 | "@radix-ui/react-radio-group": "^1.1.1", 15 | "@radix-ui/react-slider": "^1.1.0", 16 | "@tauri-apps/api": "^1.2.0", 17 | "dayjs": "^1.11.7", 18 | "next": "^13.0.0", 19 | "next-themes": "^0.2.1", 20 | "react": "^18.2.0", 21 | "react-dom": "^18.2.0", 22 | "swr": "^2.0.3" 23 | }, 24 | "devDependencies": { 25 | "@svgr/webpack": "^6.5.1", 26 | "@tauri-apps/cli": "^1.2.2", 27 | "@types/node": "^18.7.11", 28 | "@types/react": "^18.0.17", 29 | "@types/react-dom": "^18.0.6", 30 | "autoprefixer": "^10.4.13", 31 | "postcss": "^8.4.21", 32 | "tailwindcss": "^3.2.4", 33 | "typescript": "^4.7.4" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/svg/clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/svg/archive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/svg/cross-circled.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /src/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export interface IUser { 2 | user: { 3 | id: string; 4 | email: string; 5 | name: string; 6 | username: string; 7 | avatar: string; 8 | }; 9 | } 10 | 11 | export interface IProject { 12 | projects: { 13 | id: string; 14 | name: string; 15 | }[]; 16 | pagination: IPagination; 17 | } 18 | 19 | export interface IDeploymentResponse { 20 | deployments: IDeployment[]; 21 | pagination: IPagination; 22 | } 23 | 24 | export interface IDeployment { 25 | uid: string; 26 | name: string; 27 | url: string; 28 | state?: 29 | | "BUILDING" 30 | | "ERROR" 31 | | "INITIALIZING" 32 | | "QUEUED" 33 | | "READY" 34 | | "CANCELED"; 35 | creator: { 36 | uid: string; 37 | email: string; 38 | username: string; 39 | }; 40 | inspectorUrl: string; 41 | meta: { 42 | githubCommitOrg: string; 43 | githubCommitRepo: string; 44 | githubCommitRef: string; 45 | githubCommitSha: string; 46 | githubCommitMessage: string; 47 | }; 48 | createdAt: number; 49 | buildingAt: number; 50 | ready: number; 51 | } 52 | 53 | export interface IPagination { 54 | count: number; 55 | next: number; 56 | prev: number; 57 | } 58 | -------------------------------------------------------------------------------- /src/components/common/Slider.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import * as RadixSlider from "@radix-ui/react-slider"; 3 | 4 | interface ISliderProps { 5 | step: number; 6 | min: number; 7 | max: number; 8 | value: number[]; 9 | label: string; 10 | handleChange: (value: number[]) => void; 11 | } 12 | 13 | const Slider = ({ 14 | step, 15 | min, 16 | max, 17 | label, 18 | value, 19 | handleChange, 20 | }: ISliderProps) => ( 21 | 30 | 31 | 32 | 33 | 34 | 35 | {value} secs 36 | 37 | 38 | ); 39 | 40 | export default Slider; 41 | -------------------------------------------------------------------------------- /src/hooks/useIntersectionObserver.ts: -------------------------------------------------------------------------------- 1 | import { RefObject, useEffect, useState } from "react"; 2 | 3 | interface Args extends IntersectionObserverInit { 4 | freezeOnceVisible?: boolean; 5 | } 6 | 7 | export function useIntersectionObserver( 8 | elementRef: RefObject, 9 | { 10 | threshold = 0, 11 | root = null, 12 | rootMargin = "0%", 13 | freezeOnceVisible = false, 14 | }: Args 15 | ): IntersectionObserverEntry | undefined { 16 | const [entry, setEntry] = useState(); 17 | 18 | const frozen = entry?.isIntersecting && freezeOnceVisible; 19 | 20 | const updateEntry = ([entry]: IntersectionObserverEntry[]): void => { 21 | setEntry(entry); 22 | }; 23 | 24 | useEffect(() => { 25 | const node = elementRef?.current; // DOM Ref 26 | const hasIOSupport = !!window.IntersectionObserver; 27 | 28 | if (!hasIOSupport || frozen || !node) return; 29 | 30 | const observerParams = { threshold, root, rootMargin }; 31 | const observer = new IntersectionObserver(updateEntry, observerParams); 32 | 33 | observer.observe(node); 34 | 35 | return () => observer.disconnect(); 36 | 37 | // eslint-disable-next-line react-hooks/exhaustive-deps 38 | }, [ 39 | elementRef?.current, 40 | JSON.stringify(threshold), 41 | root, 42 | rootMargin, 43 | frozen, 44 | ]); 45 | 46 | return entry; 47 | } 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BuildLog 2 | 3 | Quickly look at your Vercel Deployments in you menu bar! 4 | 5 | ![Demo Image](./assets/Display.png) 6 | 7 | https://user-images.githubusercontent.com/57321156/216831177-3bf14c0c-fd03-469a-b1ce-fe3aecf89fc9.mov 8 | 9 | 10 | 11 | ## Building 12 | 13 | The app uses Tauri for bundling and creating the tray, while the frontend is written with Nextjs and Typescript. 14 | 15 | `yarn dev` 16 | 17 | Runs just the Frontend Nextjs site, so you should be able to see it in the browser 18 | 19 | `yarn tauri dev` 20 | 21 | Makes it into a system tray 22 | 23 | `yarn build` and `yarn tauri build` 24 | 25 | Build the app for browser and desktop respectively 26 | 27 | ## FAQs 28 | 29 | 1. Where do I get the Personal Access Token? 30 | 31 | Steps for creating a Personal Access Token are listed here https://vercel.com/docs/rest-api#introduction/api-basics/authentication/creating-an-access-token 32 | 33 | 2. What does BuildLog do with the Personal Access Token? 34 | 35 | Vercel requires the token to be part of the Authorization Header (to authenticate every request I make). As for what I do with it - **Nothing** (well apart from using it for making said requests). The token is **stored on your device** at all times, and **never leaves it** (I also don't have a server, so don't worry about it) 36 | 37 | ## Contributing 38 | 39 | I'll be more than happy to improve on the app, so feel free to write in issues/improvements that you might want 40 | -------------------------------------------------------------------------------- /src/components/common/RadioGroup.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import * as RadixRadioGroup from "@radix-ui/react-radio-group"; 3 | 4 | interface IRadioGroupProps { 5 | label: string; 6 | value?: string; 7 | items: { 8 | value: string; 9 | label: string; 10 | renderer: React.ReactNode | string; 11 | }[]; 12 | handleChange?: (value: string) => void; 13 | } 14 | 15 | const RadioGroup = ({ 16 | label, 17 | items, 18 | value, 19 | handleChange, 20 | }: IRadioGroupProps) => ( 21 | 27 | {items.map((item) => { 28 | return ( 29 | 35 | {item.renderer} 36 | 37 | ); 38 | })} 39 | 40 | ); 41 | 42 | export default RadioGroup; 43 | -------------------------------------------------------------------------------- /src/components/common/Popover.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import * as RadixPopover from "@radix-ui/react-popover"; 3 | 4 | type TProps = { 5 | triggerLabel: string; 6 | children: React.ReactNode; 7 | icon: React.ReactNode; 8 | panelWidth?: string; 9 | defaultPadding?: boolean; 10 | side?: "top" | "right" | "bottom" | "left"; 11 | title?: string; 12 | }; 13 | 14 | const Popover = ({ 15 | triggerLabel, 16 | icon, 17 | children, 18 | panelWidth, 19 | title, 20 | side = "bottom", 21 | }: TProps) => ( 22 | 23 | 24 | 30 | 31 | 32 | 38 | {title && ( 39 |

40 | {title} 41 |

42 | )} 43 | {children} 44 |
45 |
46 |
47 | ); 48 | 49 | export default Popover; 50 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: "Create Release" 2 | on: workflow_dispatch 3 | 4 | jobs: 5 | publish-tauri: 6 | strategy: 7 | fail-fast: false 8 | matrix: 9 | platform: [macos-latest] 10 | 11 | runs-on: ${{ matrix.platform }} 12 | steps: 13 | - uses: actions/checkout@v2 14 | - name: Node.js setup 15 | uses: actions/setup-node@v1 16 | with: 17 | node-version: 16 18 | 19 | - name: Rust setup 20 | uses: actions-rs/toolchain@v1 21 | with: 22 | toolchain: stable 23 | 24 | - name: Install app dependencies 25 | run: yarn 26 | 27 | - name: Rust cache 28 | uses: swatinem/rust-cache@v2 29 | with: 30 | workspaces: src-tauri 31 | 32 | - name: Build the app 33 | uses: tauri-apps/tauri-action@dev 34 | env: 35 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 36 | ENABLE_CODE_SIGNING: ${{ secrets.APPLE_CERTIFICATE }} 37 | APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} 38 | APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} 39 | APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} 40 | APPLE_ID: ${{ secrets.APPLE_ID }} 41 | APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} 42 | with: 43 | tagName: buildlog-v__VERSION__ 44 | releaseName: "BuildLog v__VERSION__" 45 | releaseBody: "Vercel Deployments in the Menu Bar" 46 | releaseDraft: false 47 | prerelease: false 48 | args: "--verbose" 49 | -------------------------------------------------------------------------------- /src/svg/update.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "beforeDevCommand": "yarn dev", 4 | "beforeBuildCommand": "yarn build", 5 | "devPath": "http://localhost:1420", 6 | "distDir": "../dist", 7 | "withGlobalTauri": false 8 | }, 9 | "package": { 10 | "productName": "buildlog", 11 | "version": "../package.json" 12 | }, 13 | "tauri": { 14 | "systemTray": { 15 | "iconPath": "icons/icon.png", 16 | "iconAsTemplate": true 17 | }, 18 | "allowlist": { 19 | "all": false, 20 | "shell": { 21 | "all": false, 22 | "open": true 23 | }, 24 | "notification": { 25 | "all": true 26 | } 27 | }, 28 | "bundle": { 29 | "active": true, 30 | "category": "DeveloperTool", 31 | "copyright": "", 32 | "deb": { 33 | "depends": [] 34 | }, 35 | "externalBin": [], 36 | "icon": [ 37 | "icons/32x32.png", 38 | "icons/128x128.png", 39 | "icons/128x128@2x.png", 40 | "icons/icon.icns", 41 | "icons/icon.ico" 42 | ], 43 | "identifier": "rajatkulkarni.dev", 44 | "longDescription": "", 45 | "macOS": { 46 | "entitlements": null, 47 | "exceptionDomain": "", 48 | "frameworks": [], 49 | "providerShortName": null, 50 | "signingIdentity": null 51 | }, 52 | "resources": [], 53 | "shortDescription": "", 54 | "targets": "all", 55 | "windows": { 56 | "certificateThumbprint": null, 57 | "digestAlgorithm": "sha256", 58 | "timestampUrl": "" 59 | } 60 | }, 61 | "security": { 62 | "csp": null 63 | }, 64 | "updater": { 65 | "active": false 66 | }, 67 | "windows": [ 68 | { 69 | "fullscreen": false, 70 | "height": 640, 71 | "resizable": true, 72 | "title": "BuildLog", 73 | "width": 480, 74 | "decorations": false 75 | } 76 | ] 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/components/ProjectsDropdown.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react"; 2 | import useSWRInfinite from "swr/infinite"; 3 | import { API_ENDPOINTS } from "~/constants/API"; 4 | import fetcher from "~/helpers/fetcher"; 5 | import { useIntersectionObserver } from "~/hooks"; 6 | import { IProject } from "~/types"; 7 | 8 | import Dropdown from "./common/Dropdown"; 9 | 10 | interface IProjectDropdownProps { 11 | handleProjectChange: (id: string) => void; 12 | selectedProject: string; 13 | } 14 | 15 | const getKey = (pageIndex: number, previousPageData: IProject) => { 16 | // reached the end 17 | if (previousPageData && !previousPageData.projects.length) return null; 18 | 19 | if (pageIndex === 0) return API_ENDPOINTS.projects; 20 | 21 | return `${API_ENDPOINTS.projects}?until=${previousPageData.pagination.next}`; 22 | }; 23 | 24 | const ProjectsDropdown = ({ 25 | handleProjectChange, 26 | selectedProject, 27 | }: IProjectDropdownProps) => { 28 | const { data, error, isLoading, isValidating, setSize, size } = 29 | useSWRInfinite(getKey, fetcher, { 30 | revalidateOnFocus: false, 31 | }); 32 | 33 | if (error) { 34 | return

Oops!

; 35 | } 36 | 37 | const availableProjects = data 38 | ?.map((page) => 39 | page.projects.map((project) => ({ 40 | label: project.name, 41 | id: project.id, 42 | })) 43 | ) 44 | .flat(); 45 | 46 | availableProjects?.splice(0, 0, { 47 | label: "All Projects", 48 | id: "", 49 | }); 50 | 51 | const scrollRef = useRef(null); 52 | const entry = useIntersectionObserver(scrollRef, {}); 53 | 54 | const isVisible = !!entry?.isIntersecting; 55 | 56 | useEffect(() => { 57 | if (isVisible && !isLoading && !isValidating) { 58 | setSize(size + 1); 59 | } 60 | }, [isVisible]); 61 | 62 | return ( 63 | project.id === selectedProject) 66 | ?.label 67 | } 68 | items={availableProjects} 69 | selectedId={selectedProject} 70 | handleOnClick={handleProjectChange} 71 | scrollRef={scrollRef} 72 | isLoading={isLoading} 73 | /> 74 | ); 75 | }; 76 | 77 | export default ProjectsDropdown; 78 | -------------------------------------------------------------------------------- /src/components/common/AlertDialog.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import * as RadixAlertDialog from "@radix-ui/react-alert-dialog"; 3 | 4 | interface IAlertDialog { 5 | triggerLabel?: string; 6 | title?: string; 7 | description?: string; 8 | confirmLabel?: string; 9 | handleTriggerClick?: () => void; 10 | show?: boolean; 11 | handleConfirm?: () => void; 12 | } 13 | 14 | const AlertDialog = ({ 15 | triggerLabel, 16 | title, 17 | description, 18 | confirmLabel, 19 | handleTriggerClick, 20 | show, 21 | handleConfirm, 22 | }: IAlertDialog) => ( 23 | 24 | 25 | 31 | 32 | {show && ( 33 | 34 | 35 | 36 | 37 | {title} 38 | 39 | 40 | {description} 41 | 42 |
43 | 44 | 47 | 48 | 49 | 52 | 53 |
54 |
55 |
56 | )} 57 |
58 | ); 59 | 60 | export default AlertDialog; 61 | -------------------------------------------------------------------------------- /src/pages/dashboard.tsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import { useRouter } from "next/router"; 3 | import { Fragment, useState } from "react"; 4 | import useSWR from "swr"; 5 | import Header from "~/components/common/Header"; 6 | import Deployments from "~/components/Deployments"; 7 | import ProjectsDropdown from "~/components/ProjectsDropdown"; 8 | import GearIcon from "~/svg/gear.svg"; 9 | import { API_ENDPOINTS } from "~/constants/API"; 10 | import fetcher from "~/helpers/fetcher"; 11 | import { IUser } from "~/types"; 12 | import Link from "next/link"; 13 | 14 | const Dashboard = () => { 15 | const { data, error } = useSWR(API_ENDPOINTS.user, fetcher); 16 | const router = useRouter(); 17 | const [selectedProject, setSelectedProject] = useState(""); 18 | 19 | if ( 20 | error?.message === "No token found" || 21 | error?.message === "Not authenticated" 22 | ) { 23 | router.push("/"); 24 | } 25 | 26 | const handleProjectChange = (id: string) => { 27 | setSelectedProject(id); 28 | }; 29 | 30 | if (!data) return; 31 | 32 | return ( 33 | 34 |
35 |
36 | Avatar 43 |
44 |

45 | {data?.user.name} 46 |

47 |

48 | {data?.user.username} 49 |

50 |
51 |
52 |
53 | 57 | 58 | 61 | 62 |
63 |
64 | 65 |
66 | ); 67 | }; 68 | 69 | export default Dashboard; 70 | -------------------------------------------------------------------------------- /src/components/common/Dropdown.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import * as DropdownMenu from "@radix-ui/react-dropdown-menu"; 3 | import CheckIcon from "~/svg/check.svg"; 4 | import UpdateIcon from "~/svg/update.svg"; 5 | 6 | interface IDropdown { 7 | triggerLabel?: string; 8 | isLoading?: boolean; 9 | items?: { 10 | label: string; 11 | id: string; 12 | }[]; 13 | selectedId?: string; 14 | handleOnClick: (id: string) => void; 15 | scrollRef?: React.RefObject; 16 | } 17 | 18 | const Dropdown = ({ 19 | triggerLabel, 20 | items, 21 | selectedId, 22 | handleOnClick, 23 | scrollRef, 24 | isLoading, 25 | }: IDropdown) => { 26 | return ( 27 | 28 | 29 | {isLoading ? ( 30 | 31 | ) : ( 32 | 38 | )} 39 | 40 | 41 | 42 | 47 | {items?.map((item) => ( 48 | handleOnClick(item.id)} 56 | > 57 | {item.label}{" "} 58 | {selectedId === item.id && ( 59 | 60 | )} 61 | 62 | ))} 63 |
64 | 65 | 66 | 67 | ); 68 | }; 69 | 70 | export default Dropdown; 71 | -------------------------------------------------------------------------------- /src/svg/branch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/svg/gear.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /src/styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | .hide_scrollbar::-webkit-scrollbar { 6 | display: none !important; 7 | } 8 | 9 | /* Karla */ 10 | 11 | /* karla-regular - latin */ 12 | @font-face { 13 | font-family: "Karla"; 14 | font-style: normal; 15 | font-weight: 400; 16 | src: local(""), 17 | url("/fonts/karla/karla-v23-latin-regular.woff2") format("woff2"), 18 | /* Chrome 26+, Opera 23+, Firefox 39+ */ 19 | url("/fonts/karla/karla-v23-latin-regular.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 20 | } 21 | 22 | /* karla-500 - latin */ 23 | @font-face { 24 | font-family: "Karla"; 25 | font-style: normal; 26 | font-weight: 500; 27 | src: local(""), url("/fonts/karla/karla-v23-latin-500.woff2") format("woff2"), 28 | /* Chrome 26+, Opera 23+, Firefox 39+ */ 29 | url("/fonts/karla/karla-v23-latin-500.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 30 | } 31 | 32 | /* karla-600 - latin */ 33 | @font-face { 34 | font-family: "Karla"; 35 | font-style: normal; 36 | font-weight: 600; 37 | src: local(""), url("/fonts/karla/karla-v23-latin-600.woff2") format("woff2"), 38 | /* Chrome 26+, Opera 23+, Firefox 39+ */ 39 | url("/fonts/karla/karla-v23-latin-600.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 40 | } 41 | 42 | /* karla-700 - latin */ 43 | @font-face { 44 | font-family: "Karla"; 45 | font-style: normal; 46 | font-weight: 700; 47 | src: local(""), url("/fonts/karla/karla-v23-latin-700.woff2") format("woff2"), 48 | /* Chrome 26+, Opera 23+, Firefox 39+ */ 49 | url("/fonts/karla/karla-v23-latin-700.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 50 | } 51 | 52 | /* karla-italic - latin */ 53 | @font-face { 54 | font-family: "Karla"; 55 | font-style: italic; 56 | font-weight: 400; 57 | src: local(""), 58 | url("/fonts/karla/karla-v23-latin-italic.woff2") format("woff2"), 59 | /* Chrome 26+, Opera 23+, Firefox 39+ */ 60 | url("/fonts/karla/karla-v23-latin-italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 61 | } 62 | 63 | /* karla-500italic - latin */ 64 | @font-face { 65 | font-family: "Karla"; 66 | font-style: italic; 67 | font-weight: 500; 68 | src: local(""), 69 | url("/fonts/karla/karla-v23-latin-500italic.woff2") format("woff2"), 70 | /* Chrome 26+, Opera 23+, Firefox 39+ */ 71 | url("/fonts/karla/karla-v23-latin-500italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 72 | } 73 | 74 | /* karla-700italic - latin */ 75 | @font-face { 76 | font-family: "Karla"; 77 | font-style: italic; 78 | font-weight: 700; 79 | src: local(""), 80 | url("/fonts/karla/karla-v23-latin-700italic.woff2") format("woff2"), 81 | /* Chrome 26+, Opera 23+, Firefox 39+ */ 82 | url("/fonts/karla/karla-v23-latin-700italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 83 | } 84 | -------------------------------------------------------------------------------- /src/components/TokenRegistration.tsx: -------------------------------------------------------------------------------- 1 | import { useRouter } from "next/router"; 2 | import { useState } from "react"; 3 | import { API_ENDPOINTS } from "~/constants/API"; 4 | import fetcher from "~/helpers/fetcher"; 5 | import UpdateIcon from "~/svg/update.svg"; 6 | 7 | const TokenRegistration = () => { 8 | const [token, setToken] = useState(""); 9 | const [isSubmitting, setIsSubmitting] = useState(false); 10 | const [error, setError] = useState(""); 11 | const router = useRouter(); 12 | 13 | const handleSubmit = async (e: React.FormEvent) => { 14 | e.preventDefault(); 15 | setIsSubmitting(true); 16 | setError(""); 17 | localStorage.setItem("token", token); 18 | try { 19 | await fetcher(API_ENDPOINTS.user); 20 | router.push("/dashboard"); 21 | } catch (error) { 22 | setError("Invalid token"); 23 | localStorage.removeItem("token"); 24 | } finally { 25 | setIsSubmitting(false); 26 | } 27 | }; 28 | 29 | return ( 30 |
31 |
32 | 38 | setToken(e.target.value)} 44 | className={`w-full mt-1 px-3 py-2 border font-normal border-zinc-200 dark:border-zinc-700 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 dark:focus-visible:ring-blue-400 focus-visible:border-transparent ${ 45 | isSubmitting 46 | ? "opacity-40 cursor-not-allowed" 47 | : "opacity-100 cursor-auto" 48 | }`} 49 | placeholder="personal-access-token" 50 | disabled={isSubmitting} 51 | /> 52 | 67 | {error && ( 68 |

{error}

69 | )} 70 |
71 | 72 |

73 | Steps for creating a Personal Access Token are listed{" "} 74 | 80 | here 81 | 82 |

83 |
84 | ); 85 | }; 86 | 87 | export default TokenRegistration; 88 | -------------------------------------------------------------------------------- /src/components/Deployments/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useRef } from "react"; 2 | import useSWRInfinite from "swr/infinite"; 3 | import { API_ENDPOINTS } from "~/constants/API"; 4 | import fetcher from "~/helpers/fetcher"; 5 | import { IDeployment, IDeploymentResponse } from "~/types"; 6 | import UpdateIcon from "~/svg/update.svg"; 7 | import DeploymentCard from "./Card"; 8 | import { useIntersectionObserver } from "~/hooks"; 9 | import { sendNotification } from "@tauri-apps/api/notification"; 10 | 11 | interface IDeploymentsProps { 12 | selectedProject: string; 13 | } 14 | 15 | interface IInprogressDeployments { 16 | [key: string]: IDeployment; 17 | } 18 | 19 | const inProgressDeployments: IInprogressDeployments = {}; 20 | 21 | const Deployments = ({ selectedProject }: IDeploymentsProps) => { 22 | const getKey = (pageIndex: number, previousPageData: IDeploymentResponse) => { 23 | // reached the end 24 | if (previousPageData && !previousPageData.deployments.length) return null; 25 | 26 | if (selectedProject === "") { 27 | if (pageIndex === 0) return API_ENDPOINTS.deployments; 28 | 29 | return `${API_ENDPOINTS.deployments}?until=${previousPageData.pagination.next}`; 30 | } else { 31 | if (pageIndex === 0) 32 | return `${API_ENDPOINTS.deployments}?projectId=${selectedProject}`; 33 | 34 | return `${API_ENDPOINTS.deployments}?projectId=${selectedProject}&until=${previousPageData.pagination.next}`; 35 | } 36 | }; 37 | 38 | const showNotifications = 39 | window.localStorage.getItem("notifications") === "yes" ? true : false; 40 | 41 | const frequency = parseInt(window.localStorage.getItem("frequency") || "15"); 42 | 43 | const { data, error, setSize, size, isLoading, isValidating } = 44 | useSWRInfinite(getKey, fetcher, { 45 | refreshInterval: frequency * 1000, 46 | revalidateOnFocus: false, 47 | refreshWhenHidden: showNotifications, 48 | }); 49 | 50 | const totalDeployments = data 51 | ?.map((page) => page.deployments) 52 | .flat() as IDeployment[]; 53 | 54 | const ref = useRef(null); 55 | const entry = useIntersectionObserver(ref, {}); 56 | 57 | const isVisible = !!entry?.isIntersecting; 58 | 59 | const isDeploymentBuilding = () => { 60 | totalDeployments?.forEach((deployment) => { 61 | if ( 62 | deployment.state === "BUILDING" && 63 | !inProgressDeployments.hasOwnProperty(deployment.uid) 64 | ) { 65 | inProgressDeployments[deployment.uid] = deployment; 66 | sendNotification({ 67 | title: "BuildLog", 68 | body: `${deployment.name} - Deployment started`, 69 | }); 70 | } else if ( 71 | deployment.state === "READY" && 72 | inProgressDeployments.hasOwnProperty(deployment.uid) 73 | ) { 74 | let state = ""; 75 | if (deployment.state === "READY") { 76 | state = "🎉 Deployed"; 77 | } else if (deployment.state === "ERROR") { 78 | state = "❌ Failed"; 79 | } 80 | sendNotification({ 81 | title: "BuildLog", 82 | body: `${deployment.name} - ${state}`, 83 | }); 84 | delete inProgressDeployments[deployment.uid]; 85 | } 86 | }); 87 | }; 88 | 89 | useEffect(() => { 90 | if (showNotifications) { 91 | isDeploymentBuilding(); 92 | } 93 | }, [totalDeployments]); 94 | 95 | useEffect(() => { 96 | if (isVisible && !isLoading && !isValidating) { 97 | setSize(size + 1); 98 | } 99 | }, [isVisible]); 100 | 101 | if (error) { 102 | return ( 103 |

104 | Something broke! Yeah that wasn't supposed to happen. 105 |

106 | ); 107 | } 108 | 109 | return ( 110 |
111 |
112 |

113 | Deployments 114 |

115 | {(isLoading || isValidating) && ( 116 | 117 | )} 118 |
119 | 120 | {totalDeployments?.map((deployment) => ( 121 | 122 | ))} 123 |
124 | {isLoading && ( 125 | 126 | )} 127 |
128 |
129 | ); 130 | }; 131 | 132 | export default Deployments; 133 | -------------------------------------------------------------------------------- /src/components/Deployments/Card.tsx: -------------------------------------------------------------------------------- 1 | import { Fragment } from "react"; 2 | import dayjs from "dayjs"; 3 | import relativeTime from "dayjs/plugin/relativeTime"; 4 | import { IDeployment } from "~/types"; 5 | import CommitIcon from "~/svg/commit.svg"; 6 | import ProjectIcon from "~/svg/archive.svg"; 7 | import ClockIcon from "~/svg/clock.svg"; 8 | import BranchIcon from "~/svg/branch.svg"; 9 | import CheckCircledIcon from "~/svg/check-circled.svg"; 10 | import CrossCircledIcon from "~/svg/cross-circled.svg"; 11 | import VercelIcon from "~/svg/vercel-logo.svg"; 12 | import UpdateIcon from "~/svg/update.svg"; 13 | 14 | dayjs.extend(relativeTime); 15 | 16 | interface IDeploymentCardProps { 17 | deployment: IDeployment; 18 | } 19 | 20 | const DeploymentCard = ({ deployment }: IDeploymentCardProps) => { 21 | const { meta, name, url, ready, creator, state, createdAt, inspectorUrl } = 22 | deployment; 23 | 24 | const renderIcon = () => { 25 | switch (state) { 26 | case "READY": 27 | return ( 28 | 29 | ); 30 | case "ERROR": 31 | return ( 32 | 33 | ); 34 | case "BUILDING": 35 | return ( 36 | 37 | ); 38 | default: 39 | break; 40 | } 41 | }; 42 | 43 | const renderCompletionTime = () => { 44 | const completionSeconds = dayjs(ready).diff(dayjs(createdAt), "s"); 45 | 46 | if (completionSeconds < 60) { 47 | return `${completionSeconds}s`; 48 | } else { 49 | const minutes = Math.floor(completionSeconds / 60); 50 | const seconds = completionSeconds % 60; 51 | 52 | return `${minutes}m ${seconds}s`; 53 | } 54 | }; 55 | 56 | return ( 57 |
58 |
59 | {renderIcon()}{" "} 60 |
{" "} 61 |
62 |
63 | {" "} 64 | 65 | {name} 66 | 67 |
68 | 81 | 92 |
93 | {" "} 94 | 95 | {dayjs(ready).fromNow()} by {creator.username} 96 |   97 | 98 | • 99 | 105 | {" "} 106 | 107 | Inspector 108 | 109 | 110 | {state === "READY" && ( 111 | 112 | • 113 | 119 | View Site 120 | 121 | 122 | )} 123 |
124 |
125 |
126 | ); 127 | }; 128 | 129 | export default DeploymentCard; 130 | -------------------------------------------------------------------------------- /src/pages/settings.tsx: -------------------------------------------------------------------------------- 1 | import { useTheme } from "next-themes"; 2 | import Link from "next/link"; 3 | import { useRouter } from "next/router"; 4 | import { Fragment, useEffect, useState } from "react"; 5 | import AlertDialog from "~/components/common/AlertDialog"; 6 | import Header from "~/components/common/Header"; 7 | import RadioGroup from "~/components/common/RadioGroup"; 8 | import Slider from "~/components/common/Slider"; 9 | import LeftArrow from "~/svg/arrow-left.svg"; 10 | 11 | const THEMES = [ 12 | { 13 | label: "System", 14 | value: "system", 15 | renderer: "System", 16 | }, 17 | { 18 | label: "Light", 19 | value: "light", 20 | renderer: "Light", 21 | }, 22 | { 23 | label: "Dark", 24 | value: "dark", 25 | renderer: "Dark", 26 | }, 27 | ]; 28 | 29 | const NOTIFICATIONS = [ 30 | { 31 | label: "Yes", 32 | value: "yes", 33 | renderer: "Yes", 34 | }, 35 | { 36 | label: "No", 37 | value: "no", 38 | renderer: "No", 39 | }, 40 | ]; 41 | 42 | const SettingsPage = () => { 43 | const [mounted, setMounted] = useState(false); 44 | const { theme, setTheme } = useTheme(); 45 | const router = useRouter(); 46 | const [showConfirmModal, setShowConfirmModal] = useState(false); 47 | const [notificationSetting, setNotificationSetting] = useState("no"); 48 | const [frequency, setFrequency] = useState([15]); 49 | 50 | // When mounted on client, now we can show the UI 51 | useEffect(() => { 52 | setMounted(true); 53 | setNotificationSetting( 54 | window.localStorage.getItem("notifications") || "no" 55 | ); 56 | setFrequency([parseInt(window.localStorage.getItem("frequency") || "15")]); 57 | }, []); 58 | 59 | if (!mounted) return null; 60 | 61 | const handleSetNotification = (value: string) => { 62 | setNotificationSetting(value); 63 | window.localStorage.setItem("notifications", value); 64 | }; 65 | 66 | const handleFrequencyChange = (value: number[]) => { 67 | setFrequency(value); 68 | window.localStorage.setItem("frequency", value[0].toString()); 69 | }; 70 | 71 | const handleClickLogout = () => { 72 | setShowConfirmModal(true); 73 | }; 74 | 75 | return ( 76 | 77 |
78 | 79 | 82 | 83 |

84 | Settings 85 |

86 |
87 |
88 |
89 |
90 |

91 | Theme 92 |

93 |

94 | How would you like BuildLog to look? 95 |

96 |
97 | setTheme(val)} 102 | /> 103 |
104 |
105 |
106 |

107 | Send Notifications 108 |

109 |

110 | Send system messages when deployment starts and ends. 111 |

112 |
113 | handleSetNotification(val)} 118 | /> 119 |
120 |
121 |
122 |

123 | Request Interval 124 |

125 |

126 | How frequently should BuildLog check for new deployments? 127 |

128 |
129 | 137 |
138 |
139 |
140 |

141 | Log Out? 142 |

143 |

144 | Log out of BuildLog and erase saved access token. 145 |

146 |
147 | { 155 | localStorage.removeItem("token"); 156 | setTimeout(() => { 157 | router.push("/"); 158 | }, 1); 159 | }} 160 | /> 161 |
162 |
163 |
164 | ); 165 | }; 166 | 167 | export default SettingsPage; 168 | -------------------------------------------------------------------------------- /src-tauri/src/main.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr( 2 | all(not(debug_assertions), target_os = "windows"), 3 | windows_subsystem = "windows" 4 | )] 5 | 6 | use tauri::Manager; 7 | use tauri::{CustomMenuItem, PhysicalPosition, SystemTray, SystemTrayEvent, SystemTrayMenu}; 8 | 9 | #[cfg(target_os = "macos")] 10 | use cocoa::appkit::{NSWindow, NSWindowButton, NSWindowStyleMask, NSWindowTitleVisibility}; 11 | 12 | #[cfg(target_os = "macos")] 13 | use objc::runtime::YES; 14 | 15 | use tauri::{Runtime, Window}; 16 | 17 | #[cfg(target_os = "macos")] 18 | #[macro_use] 19 | extern crate objc; 20 | 21 | pub trait WindowExt { 22 | #[cfg(target_os = "macos")] 23 | fn set_transparent_titlebar(&self, title_transparent: bool, remove_toolbar: bool); 24 | } 25 | 26 | impl WindowExt for Window { 27 | #[cfg(target_os = "macos")] 28 | fn set_transparent_titlebar(&self, title_transparent: bool, remove_tool_bar: bool) { 29 | unsafe { 30 | let id = self.ns_window().unwrap() as cocoa::base::id; 31 | NSWindow::setTitlebarAppearsTransparent_(id, cocoa::base::YES); 32 | let mut style_mask = id.styleMask(); 33 | style_mask.set( 34 | NSWindowStyleMask::NSFullSizeContentViewWindowMask, 35 | title_transparent, 36 | ); 37 | 38 | id.setStyleMask_(style_mask); 39 | 40 | if remove_tool_bar { 41 | let close_button = id.standardWindowButton_(NSWindowButton::NSWindowCloseButton); 42 | let _: () = msg_send![close_button, setHidden: YES]; 43 | let min_button = 44 | id.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton); 45 | let _: () = msg_send![min_button, setHidden: YES]; 46 | let zoom_button = id.standardWindowButton_(NSWindowButton::NSWindowZoomButton); 47 | let _: () = msg_send![zoom_button, setHidden: YES]; 48 | } 49 | 50 | id.setTitleVisibility_(if title_transparent { 51 | NSWindowTitleVisibility::NSWindowTitleHidden 52 | } else { 53 | NSWindowTitleVisibility::NSWindowTitleVisible 54 | }); 55 | 56 | id.setTitlebarAppearsTransparent_(if title_transparent { 57 | cocoa::base::YES 58 | } else { 59 | cocoa::base::NO 60 | }); 61 | } 62 | } 63 | } 64 | 65 | #[tauri::command] 66 | fn set_review_count(app_handle: tauri::AppHandle, count: &str) { 67 | let mut rev_count = count.to_string(); 68 | rev_count.insert_str(0, " "); 69 | #[cfg(target_os = "macos")] 70 | app_handle.tray_handle().set_title(&rev_count).unwrap(); 71 | } 72 | 73 | fn main() { 74 | let quit = CustomMenuItem::new("quit".to_string(), "Quit BuildLog"); 75 | let tray_menu = SystemTrayMenu::new().add_item(quit); 76 | let system_tray = SystemTray::new() 77 | .with_menu(tray_menu) 78 | .with_menu_on_left_click(false); 79 | 80 | tauri::Builder::default() 81 | .system_tray(system_tray) 82 | .on_system_tray_event(move |app, event| match event { 83 | SystemTrayEvent::LeftClick { position, size, .. } => { 84 | let w = app.get_window("main").unwrap(); 85 | let visible = w.is_visible().unwrap(); 86 | if visible { 87 | w.hide().unwrap(); 88 | } else { 89 | let window_size = w.outer_size().unwrap(); 90 | let physical_pos = PhysicalPosition { 91 | x: position.x as i32 + (size.width as i32 / 2) 92 | - (window_size.width as i32 / 2), 93 | y: position.y as i32 - window_size.height as i32, 94 | }; 95 | 96 | let _ = w.set_position(tauri::Position::Physical(physical_pos)); 97 | w.show().unwrap(); 98 | w.set_focus().unwrap(); 99 | } 100 | } 101 | SystemTrayEvent::RightClick { 102 | position: _, 103 | size: _, 104 | .. 105 | } => { 106 | println!("system tray received a right click"); 107 | } 108 | SystemTrayEvent::DoubleClick { 109 | position: _, 110 | size: _, 111 | .. 112 | } => { 113 | println!("system tray received a double click"); 114 | } 115 | SystemTrayEvent::MenuItemClick { id, .. } => match id.as_str() { 116 | "quit" => { 117 | std::process::exit(0); 118 | } 119 | _ => {} 120 | }, 121 | _ => {} 122 | }) 123 | .on_window_event(|event| match event.event() { 124 | tauri::WindowEvent::CloseRequested { api, .. } => { 125 | // don't kill the app when the user clicks close. 126 | event.window().hide().unwrap(); 127 | api.prevent_close(); 128 | } 129 | tauri::WindowEvent::Focused(false) => { 130 | event.window().hide().unwrap(); 131 | } 132 | _ => {} 133 | }) 134 | .invoke_handler(tauri::generate_handler![set_review_count]) 135 | .setup(|app| { 136 | #[cfg(target_os = "macos")] 137 | // don't show on the taskbar/springboard 138 | app.set_activation_policy(tauri::ActivationPolicy::Accessory); 139 | 140 | let window = app.get_window("main").unwrap(); 141 | #[cfg(target_os = "macos")] 142 | window.set_transparent_titlebar(true, true); 143 | 144 | window.set_always_on_top(true).unwrap(); 145 | 146 | Ok(()) 147 | }) 148 | .build(tauri::generate_context!()) 149 | .expect("error while running tauri application") 150 | .run(|_app_handle, event| match event { 151 | tauri::RunEvent::ExitRequested { api, .. } => { 152 | api.prevent_exit(); 153 | } 154 | _ => {} 155 | }) 156 | } 157 | -------------------------------------------------------------------------------- /src-tauri/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "BuildLog" 7 | version = "0.0.0" 8 | dependencies = [ 9 | "cocoa", 10 | "objc", 11 | "serde", 12 | "serde_json", 13 | "tauri", 14 | "tauri-build", 15 | ] 16 | 17 | [[package]] 18 | name = "adler" 19 | version = "1.0.2" 20 | source = "registry+https://github.com/rust-lang/crates.io-index" 21 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 22 | 23 | [[package]] 24 | name = "aho-corasick" 25 | version = "0.7.20" 26 | source = "registry+https://github.com/rust-lang/crates.io-index" 27 | checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" 28 | dependencies = [ 29 | "memchr", 30 | ] 31 | 32 | [[package]] 33 | name = "alloc-no-stdlib" 34 | version = "2.0.4" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 37 | 38 | [[package]] 39 | name = "alloc-stdlib" 40 | version = "0.2.2" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 43 | dependencies = [ 44 | "alloc-no-stdlib", 45 | ] 46 | 47 | [[package]] 48 | name = "anyhow" 49 | version = "1.0.68" 50 | source = "registry+https://github.com/rust-lang/crates.io-index" 51 | checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" 52 | 53 | [[package]] 54 | name = "atk" 55 | version = "0.15.1" 56 | source = "registry+https://github.com/rust-lang/crates.io-index" 57 | checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" 58 | dependencies = [ 59 | "atk-sys", 60 | "bitflags", 61 | "glib", 62 | "libc", 63 | ] 64 | 65 | [[package]] 66 | name = "atk-sys" 67 | version = "0.15.1" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" 70 | dependencies = [ 71 | "glib-sys", 72 | "gobject-sys", 73 | "libc", 74 | "system-deps 6.0.3", 75 | ] 76 | 77 | [[package]] 78 | name = "autocfg" 79 | version = "1.1.0" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 82 | 83 | [[package]] 84 | name = "base64" 85 | version = "0.13.1" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 88 | 89 | [[package]] 90 | name = "bitflags" 91 | version = "1.3.2" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 94 | 95 | [[package]] 96 | name = "block" 97 | version = "0.1.6" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 100 | 101 | [[package]] 102 | name = "block-buffer" 103 | version = "0.10.3" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" 106 | dependencies = [ 107 | "generic-array", 108 | ] 109 | 110 | [[package]] 111 | name = "brotli" 112 | version = "3.3.4" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" 115 | dependencies = [ 116 | "alloc-no-stdlib", 117 | "alloc-stdlib", 118 | "brotli-decompressor", 119 | ] 120 | 121 | [[package]] 122 | name = "brotli-decompressor" 123 | version = "2.3.4" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" 126 | dependencies = [ 127 | "alloc-no-stdlib", 128 | "alloc-stdlib", 129 | ] 130 | 131 | [[package]] 132 | name = "bstr" 133 | version = "1.2.0" 134 | source = "registry+https://github.com/rust-lang/crates.io-index" 135 | checksum = "b7f0778972c64420fdedc63f09919c8a88bda7b25135357fd25a5d9f3257e832" 136 | dependencies = [ 137 | "memchr", 138 | "serde", 139 | ] 140 | 141 | [[package]] 142 | name = "bumpalo" 143 | version = "3.12.0" 144 | source = "registry+https://github.com/rust-lang/crates.io-index" 145 | checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" 146 | 147 | [[package]] 148 | name = "bytemuck" 149 | version = "1.13.0" 150 | source = "registry+https://github.com/rust-lang/crates.io-index" 151 | checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" 152 | 153 | [[package]] 154 | name = "byteorder" 155 | version = "1.4.3" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 158 | 159 | [[package]] 160 | name = "bytes" 161 | version = "1.4.0" 162 | source = "registry+https://github.com/rust-lang/crates.io-index" 163 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" 164 | 165 | [[package]] 166 | name = "cairo-rs" 167 | version = "0.15.12" 168 | source = "registry+https://github.com/rust-lang/crates.io-index" 169 | checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" 170 | dependencies = [ 171 | "bitflags", 172 | "cairo-sys-rs", 173 | "glib", 174 | "libc", 175 | "thiserror", 176 | ] 177 | 178 | [[package]] 179 | name = "cairo-sys-rs" 180 | version = "0.15.1" 181 | source = "registry+https://github.com/rust-lang/crates.io-index" 182 | checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" 183 | dependencies = [ 184 | "glib-sys", 185 | "libc", 186 | "system-deps 6.0.3", 187 | ] 188 | 189 | [[package]] 190 | name = "cargo_toml" 191 | version = "0.13.3" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "497049e9477329f8f6a559972ee42e117487d01d1e8c2cc9f836ea6fa23a9e1a" 194 | dependencies = [ 195 | "serde", 196 | "toml", 197 | ] 198 | 199 | [[package]] 200 | name = "cc" 201 | version = "1.0.79" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" 204 | 205 | [[package]] 206 | name = "cesu8" 207 | version = "1.1.0" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 210 | 211 | [[package]] 212 | name = "cfb" 213 | version = "0.6.1" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c" 216 | dependencies = [ 217 | "byteorder", 218 | "uuid 0.8.2", 219 | ] 220 | 221 | [[package]] 222 | name = "cfg-expr" 223 | version = "0.9.1" 224 | source = "registry+https://github.com/rust-lang/crates.io-index" 225 | checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" 226 | dependencies = [ 227 | "smallvec", 228 | ] 229 | 230 | [[package]] 231 | name = "cfg-expr" 232 | version = "0.11.0" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" 235 | dependencies = [ 236 | "smallvec", 237 | ] 238 | 239 | [[package]] 240 | name = "cfg-if" 241 | version = "1.0.0" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 244 | 245 | [[package]] 246 | name = "cocoa" 247 | version = "0.24.1" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" 250 | dependencies = [ 251 | "bitflags", 252 | "block", 253 | "cocoa-foundation", 254 | "core-foundation", 255 | "core-graphics", 256 | "foreign-types", 257 | "libc", 258 | "objc", 259 | ] 260 | 261 | [[package]] 262 | name = "cocoa-foundation" 263 | version = "0.1.0" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" 266 | dependencies = [ 267 | "bitflags", 268 | "block", 269 | "core-foundation", 270 | "core-graphics-types", 271 | "foreign-types", 272 | "libc", 273 | "objc", 274 | ] 275 | 276 | [[package]] 277 | name = "color_quant" 278 | version = "1.1.0" 279 | source = "registry+https://github.com/rust-lang/crates.io-index" 280 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 281 | 282 | [[package]] 283 | name = "combine" 284 | version = "4.6.6" 285 | source = "registry+https://github.com/rust-lang/crates.io-index" 286 | checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" 287 | dependencies = [ 288 | "bytes", 289 | "memchr", 290 | ] 291 | 292 | [[package]] 293 | name = "convert_case" 294 | version = "0.4.0" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 297 | 298 | [[package]] 299 | name = "core-foundation" 300 | version = "0.9.3" 301 | source = "registry+https://github.com/rust-lang/crates.io-index" 302 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 303 | dependencies = [ 304 | "core-foundation-sys", 305 | "libc", 306 | ] 307 | 308 | [[package]] 309 | name = "core-foundation-sys" 310 | version = "0.8.3" 311 | source = "registry+https://github.com/rust-lang/crates.io-index" 312 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 313 | 314 | [[package]] 315 | name = "core-graphics" 316 | version = "0.22.3" 317 | source = "registry+https://github.com/rust-lang/crates.io-index" 318 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" 319 | dependencies = [ 320 | "bitflags", 321 | "core-foundation", 322 | "core-graphics-types", 323 | "foreign-types", 324 | "libc", 325 | ] 326 | 327 | [[package]] 328 | name = "core-graphics-types" 329 | version = "0.1.1" 330 | source = "registry+https://github.com/rust-lang/crates.io-index" 331 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 332 | dependencies = [ 333 | "bitflags", 334 | "core-foundation", 335 | "foreign-types", 336 | "libc", 337 | ] 338 | 339 | [[package]] 340 | name = "cpufeatures" 341 | version = "0.2.5" 342 | source = "registry+https://github.com/rust-lang/crates.io-index" 343 | checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" 344 | dependencies = [ 345 | "libc", 346 | ] 347 | 348 | [[package]] 349 | name = "crc32fast" 350 | version = "1.3.2" 351 | source = "registry+https://github.com/rust-lang/crates.io-index" 352 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 353 | dependencies = [ 354 | "cfg-if", 355 | ] 356 | 357 | [[package]] 358 | name = "crossbeam-channel" 359 | version = "0.5.6" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" 362 | dependencies = [ 363 | "cfg-if", 364 | "crossbeam-utils", 365 | ] 366 | 367 | [[package]] 368 | name = "crossbeam-utils" 369 | version = "0.8.14" 370 | source = "registry+https://github.com/rust-lang/crates.io-index" 371 | checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" 372 | dependencies = [ 373 | "cfg-if", 374 | ] 375 | 376 | [[package]] 377 | name = "crypto-common" 378 | version = "0.1.6" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 381 | dependencies = [ 382 | "generic-array", 383 | "typenum", 384 | ] 385 | 386 | [[package]] 387 | name = "cssparser" 388 | version = "0.27.2" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" 391 | dependencies = [ 392 | "cssparser-macros", 393 | "dtoa-short", 394 | "itoa 0.4.8", 395 | "matches", 396 | "phf 0.8.0", 397 | "proc-macro2", 398 | "quote", 399 | "smallvec", 400 | "syn", 401 | ] 402 | 403 | [[package]] 404 | name = "cssparser-macros" 405 | version = "0.6.0" 406 | source = "registry+https://github.com/rust-lang/crates.io-index" 407 | checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" 408 | dependencies = [ 409 | "quote", 410 | "syn", 411 | ] 412 | 413 | [[package]] 414 | name = "ctor" 415 | version = "0.1.26" 416 | source = "registry+https://github.com/rust-lang/crates.io-index" 417 | checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 418 | dependencies = [ 419 | "quote", 420 | "syn", 421 | ] 422 | 423 | [[package]] 424 | name = "cty" 425 | version = "0.2.2" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" 428 | 429 | [[package]] 430 | name = "darling" 431 | version = "0.13.4" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" 434 | dependencies = [ 435 | "darling_core", 436 | "darling_macro", 437 | ] 438 | 439 | [[package]] 440 | name = "darling_core" 441 | version = "0.13.4" 442 | source = "registry+https://github.com/rust-lang/crates.io-index" 443 | checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" 444 | dependencies = [ 445 | "fnv", 446 | "ident_case", 447 | "proc-macro2", 448 | "quote", 449 | "strsim", 450 | "syn", 451 | ] 452 | 453 | [[package]] 454 | name = "darling_macro" 455 | version = "0.13.4" 456 | source = "registry+https://github.com/rust-lang/crates.io-index" 457 | checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" 458 | dependencies = [ 459 | "darling_core", 460 | "quote", 461 | "syn", 462 | ] 463 | 464 | [[package]] 465 | name = "dbus" 466 | version = "0.9.7" 467 | source = "registry+https://github.com/rust-lang/crates.io-index" 468 | checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" 469 | dependencies = [ 470 | "libc", 471 | "libdbus-sys", 472 | "winapi", 473 | ] 474 | 475 | [[package]] 476 | name = "derive_more" 477 | version = "0.99.17" 478 | source = "registry+https://github.com/rust-lang/crates.io-index" 479 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 480 | dependencies = [ 481 | "convert_case", 482 | "proc-macro2", 483 | "quote", 484 | "rustc_version 0.4.0", 485 | "syn", 486 | ] 487 | 488 | [[package]] 489 | name = "digest" 490 | version = "0.10.6" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 493 | dependencies = [ 494 | "block-buffer", 495 | "crypto-common", 496 | ] 497 | 498 | [[package]] 499 | name = "dirs-next" 500 | version = "2.0.0" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 503 | dependencies = [ 504 | "cfg-if", 505 | "dirs-sys-next", 506 | ] 507 | 508 | [[package]] 509 | name = "dirs-sys-next" 510 | version = "0.1.2" 511 | source = "registry+https://github.com/rust-lang/crates.io-index" 512 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 513 | dependencies = [ 514 | "libc", 515 | "redox_users", 516 | "winapi", 517 | ] 518 | 519 | [[package]] 520 | name = "dispatch" 521 | version = "0.2.0" 522 | source = "registry+https://github.com/rust-lang/crates.io-index" 523 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 524 | 525 | [[package]] 526 | name = "dtoa" 527 | version = "0.4.8" 528 | source = "registry+https://github.com/rust-lang/crates.io-index" 529 | checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" 530 | 531 | [[package]] 532 | name = "dtoa-short" 533 | version = "0.3.3" 534 | source = "registry+https://github.com/rust-lang/crates.io-index" 535 | checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" 536 | dependencies = [ 537 | "dtoa", 538 | ] 539 | 540 | [[package]] 541 | name = "dunce" 542 | version = "1.0.3" 543 | source = "registry+https://github.com/rust-lang/crates.io-index" 544 | checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c" 545 | 546 | [[package]] 547 | name = "embed_plist" 548 | version = "1.2.2" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" 551 | 552 | [[package]] 553 | name = "encoding_rs" 554 | version = "0.8.32" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" 557 | dependencies = [ 558 | "cfg-if", 559 | ] 560 | 561 | [[package]] 562 | name = "fastrand" 563 | version = "1.8.0" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" 566 | dependencies = [ 567 | "instant", 568 | ] 569 | 570 | [[package]] 571 | name = "field-offset" 572 | version = "0.3.4" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" 575 | dependencies = [ 576 | "memoffset", 577 | "rustc_version 0.3.3", 578 | ] 579 | 580 | [[package]] 581 | name = "filetime" 582 | version = "0.2.19" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9" 585 | dependencies = [ 586 | "cfg-if", 587 | "libc", 588 | "redox_syscall", 589 | "windows-sys 0.42.0", 590 | ] 591 | 592 | [[package]] 593 | name = "flate2" 594 | version = "1.0.25" 595 | source = "registry+https://github.com/rust-lang/crates.io-index" 596 | checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" 597 | dependencies = [ 598 | "crc32fast", 599 | "miniz_oxide", 600 | ] 601 | 602 | [[package]] 603 | name = "fnv" 604 | version = "1.0.7" 605 | source = "registry+https://github.com/rust-lang/crates.io-index" 606 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 607 | 608 | [[package]] 609 | name = "foreign-types" 610 | version = "0.3.2" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 613 | dependencies = [ 614 | "foreign-types-shared", 615 | ] 616 | 617 | [[package]] 618 | name = "foreign-types-shared" 619 | version = "0.1.1" 620 | source = "registry+https://github.com/rust-lang/crates.io-index" 621 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 622 | 623 | [[package]] 624 | name = "form_urlencoded" 625 | version = "1.1.0" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 628 | dependencies = [ 629 | "percent-encoding", 630 | ] 631 | 632 | [[package]] 633 | name = "futf" 634 | version = "0.1.5" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 637 | dependencies = [ 638 | "mac", 639 | "new_debug_unreachable", 640 | ] 641 | 642 | [[package]] 643 | name = "futures-channel" 644 | version = "0.3.26" 645 | source = "registry+https://github.com/rust-lang/crates.io-index" 646 | checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" 647 | dependencies = [ 648 | "futures-core", 649 | ] 650 | 651 | [[package]] 652 | name = "futures-core" 653 | version = "0.3.26" 654 | source = "registry+https://github.com/rust-lang/crates.io-index" 655 | checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" 656 | 657 | [[package]] 658 | name = "futures-executor" 659 | version = "0.3.26" 660 | source = "registry+https://github.com/rust-lang/crates.io-index" 661 | checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" 662 | dependencies = [ 663 | "futures-core", 664 | "futures-task", 665 | "futures-util", 666 | ] 667 | 668 | [[package]] 669 | name = "futures-io" 670 | version = "0.3.26" 671 | source = "registry+https://github.com/rust-lang/crates.io-index" 672 | checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" 673 | 674 | [[package]] 675 | name = "futures-macro" 676 | version = "0.3.26" 677 | source = "registry+https://github.com/rust-lang/crates.io-index" 678 | checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" 679 | dependencies = [ 680 | "proc-macro2", 681 | "quote", 682 | "syn", 683 | ] 684 | 685 | [[package]] 686 | name = "futures-task" 687 | version = "0.3.26" 688 | source = "registry+https://github.com/rust-lang/crates.io-index" 689 | checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" 690 | 691 | [[package]] 692 | name = "futures-util" 693 | version = "0.3.26" 694 | source = "registry+https://github.com/rust-lang/crates.io-index" 695 | checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" 696 | dependencies = [ 697 | "futures-core", 698 | "futures-macro", 699 | "futures-task", 700 | "pin-project-lite", 701 | "pin-utils", 702 | "slab", 703 | ] 704 | 705 | [[package]] 706 | name = "fxhash" 707 | version = "0.2.1" 708 | source = "registry+https://github.com/rust-lang/crates.io-index" 709 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 710 | dependencies = [ 711 | "byteorder", 712 | ] 713 | 714 | [[package]] 715 | name = "gdk" 716 | version = "0.15.4" 717 | source = "registry+https://github.com/rust-lang/crates.io-index" 718 | checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" 719 | dependencies = [ 720 | "bitflags", 721 | "cairo-rs", 722 | "gdk-pixbuf", 723 | "gdk-sys", 724 | "gio", 725 | "glib", 726 | "libc", 727 | "pango", 728 | ] 729 | 730 | [[package]] 731 | name = "gdk-pixbuf" 732 | version = "0.15.11" 733 | source = "registry+https://github.com/rust-lang/crates.io-index" 734 | checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" 735 | dependencies = [ 736 | "bitflags", 737 | "gdk-pixbuf-sys", 738 | "gio", 739 | "glib", 740 | "libc", 741 | ] 742 | 743 | [[package]] 744 | name = "gdk-pixbuf-sys" 745 | version = "0.15.10" 746 | source = "registry+https://github.com/rust-lang/crates.io-index" 747 | checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" 748 | dependencies = [ 749 | "gio-sys", 750 | "glib-sys", 751 | "gobject-sys", 752 | "libc", 753 | "system-deps 6.0.3", 754 | ] 755 | 756 | [[package]] 757 | name = "gdk-sys" 758 | version = "0.15.1" 759 | source = "registry+https://github.com/rust-lang/crates.io-index" 760 | checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" 761 | dependencies = [ 762 | "cairo-sys-rs", 763 | "gdk-pixbuf-sys", 764 | "gio-sys", 765 | "glib-sys", 766 | "gobject-sys", 767 | "libc", 768 | "pango-sys", 769 | "pkg-config", 770 | "system-deps 6.0.3", 771 | ] 772 | 773 | [[package]] 774 | name = "gdkx11-sys" 775 | version = "0.15.1" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" 778 | dependencies = [ 779 | "gdk-sys", 780 | "glib-sys", 781 | "libc", 782 | "system-deps 6.0.3", 783 | "x11", 784 | ] 785 | 786 | [[package]] 787 | name = "generator" 788 | version = "0.7.2" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "d266041a359dfa931b370ef684cceb84b166beb14f7f0421f4a6a3d0c446d12e" 791 | dependencies = [ 792 | "cc", 793 | "libc", 794 | "log", 795 | "rustversion", 796 | "windows 0.39.0", 797 | ] 798 | 799 | [[package]] 800 | name = "generic-array" 801 | version = "0.14.6" 802 | source = "registry+https://github.com/rust-lang/crates.io-index" 803 | checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" 804 | dependencies = [ 805 | "typenum", 806 | "version_check", 807 | ] 808 | 809 | [[package]] 810 | name = "getrandom" 811 | version = "0.1.16" 812 | source = "registry+https://github.com/rust-lang/crates.io-index" 813 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 814 | dependencies = [ 815 | "cfg-if", 816 | "libc", 817 | "wasi 0.9.0+wasi-snapshot-preview1", 818 | ] 819 | 820 | [[package]] 821 | name = "getrandom" 822 | version = "0.2.8" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" 825 | dependencies = [ 826 | "cfg-if", 827 | "libc", 828 | "wasi 0.11.0+wasi-snapshot-preview1", 829 | ] 830 | 831 | [[package]] 832 | name = "gio" 833 | version = "0.15.12" 834 | source = "registry+https://github.com/rust-lang/crates.io-index" 835 | checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" 836 | dependencies = [ 837 | "bitflags", 838 | "futures-channel", 839 | "futures-core", 840 | "futures-io", 841 | "gio-sys", 842 | "glib", 843 | "libc", 844 | "once_cell", 845 | "thiserror", 846 | ] 847 | 848 | [[package]] 849 | name = "gio-sys" 850 | version = "0.15.10" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" 853 | dependencies = [ 854 | "glib-sys", 855 | "gobject-sys", 856 | "libc", 857 | "system-deps 6.0.3", 858 | "winapi", 859 | ] 860 | 861 | [[package]] 862 | name = "glib" 863 | version = "0.15.12" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" 866 | dependencies = [ 867 | "bitflags", 868 | "futures-channel", 869 | "futures-core", 870 | "futures-executor", 871 | "futures-task", 872 | "glib-macros", 873 | "glib-sys", 874 | "gobject-sys", 875 | "libc", 876 | "once_cell", 877 | "smallvec", 878 | "thiserror", 879 | ] 880 | 881 | [[package]] 882 | name = "glib-macros" 883 | version = "0.15.11" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" 886 | dependencies = [ 887 | "anyhow", 888 | "heck 0.4.1", 889 | "proc-macro-crate", 890 | "proc-macro-error", 891 | "proc-macro2", 892 | "quote", 893 | "syn", 894 | ] 895 | 896 | [[package]] 897 | name = "glib-sys" 898 | version = "0.15.10" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" 901 | dependencies = [ 902 | "libc", 903 | "system-deps 6.0.3", 904 | ] 905 | 906 | [[package]] 907 | name = "glob" 908 | version = "0.3.1" 909 | source = "registry+https://github.com/rust-lang/crates.io-index" 910 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 911 | 912 | [[package]] 913 | name = "globset" 914 | version = "0.4.10" 915 | source = "registry+https://github.com/rust-lang/crates.io-index" 916 | checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" 917 | dependencies = [ 918 | "aho-corasick", 919 | "bstr", 920 | "fnv", 921 | "log", 922 | "regex", 923 | ] 924 | 925 | [[package]] 926 | name = "gobject-sys" 927 | version = "0.15.10" 928 | source = "registry+https://github.com/rust-lang/crates.io-index" 929 | checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" 930 | dependencies = [ 931 | "glib-sys", 932 | "libc", 933 | "system-deps 6.0.3", 934 | ] 935 | 936 | [[package]] 937 | name = "gtk" 938 | version = "0.15.5" 939 | source = "registry+https://github.com/rust-lang/crates.io-index" 940 | checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" 941 | dependencies = [ 942 | "atk", 943 | "bitflags", 944 | "cairo-rs", 945 | "field-offset", 946 | "futures-channel", 947 | "gdk", 948 | "gdk-pixbuf", 949 | "gio", 950 | "glib", 951 | "gtk-sys", 952 | "gtk3-macros", 953 | "libc", 954 | "once_cell", 955 | "pango", 956 | "pkg-config", 957 | ] 958 | 959 | [[package]] 960 | name = "gtk-sys" 961 | version = "0.15.3" 962 | source = "registry+https://github.com/rust-lang/crates.io-index" 963 | checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" 964 | dependencies = [ 965 | "atk-sys", 966 | "cairo-sys-rs", 967 | "gdk-pixbuf-sys", 968 | "gdk-sys", 969 | "gio-sys", 970 | "glib-sys", 971 | "gobject-sys", 972 | "libc", 973 | "pango-sys", 974 | "system-deps 6.0.3", 975 | ] 976 | 977 | [[package]] 978 | name = "gtk3-macros" 979 | version = "0.15.4" 980 | source = "registry+https://github.com/rust-lang/crates.io-index" 981 | checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9" 982 | dependencies = [ 983 | "anyhow", 984 | "proc-macro-crate", 985 | "proc-macro-error", 986 | "proc-macro2", 987 | "quote", 988 | "syn", 989 | ] 990 | 991 | [[package]] 992 | name = "hashbrown" 993 | version = "0.12.3" 994 | source = "registry+https://github.com/rust-lang/crates.io-index" 995 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 996 | 997 | [[package]] 998 | name = "heck" 999 | version = "0.3.3" 1000 | source = "registry+https://github.com/rust-lang/crates.io-index" 1001 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 1002 | dependencies = [ 1003 | "unicode-segmentation", 1004 | ] 1005 | 1006 | [[package]] 1007 | name = "heck" 1008 | version = "0.4.1" 1009 | source = "registry+https://github.com/rust-lang/crates.io-index" 1010 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1011 | 1012 | [[package]] 1013 | name = "hermit-abi" 1014 | version = "0.2.6" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" 1017 | dependencies = [ 1018 | "libc", 1019 | ] 1020 | 1021 | [[package]] 1022 | name = "html5ever" 1023 | version = "0.25.2" 1024 | source = "registry+https://github.com/rust-lang/crates.io-index" 1025 | checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" 1026 | dependencies = [ 1027 | "log", 1028 | "mac", 1029 | "markup5ever", 1030 | "proc-macro2", 1031 | "quote", 1032 | "syn", 1033 | ] 1034 | 1035 | [[package]] 1036 | name = "http" 1037 | version = "0.2.8" 1038 | source = "registry+https://github.com/rust-lang/crates.io-index" 1039 | checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" 1040 | dependencies = [ 1041 | "bytes", 1042 | "fnv", 1043 | "itoa 1.0.5", 1044 | ] 1045 | 1046 | [[package]] 1047 | name = "http-range" 1048 | version = "0.1.5" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" 1051 | 1052 | [[package]] 1053 | name = "ico" 1054 | version = "0.2.0" 1055 | source = "registry+https://github.com/rust-lang/crates.io-index" 1056 | checksum = "031530fe562d8c8d71c0635013d6d155bbfe8ba0aa4b4d2d24ce8af6b71047bd" 1057 | dependencies = [ 1058 | "byteorder", 1059 | "png", 1060 | ] 1061 | 1062 | [[package]] 1063 | name = "ident_case" 1064 | version = "1.0.1" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1067 | 1068 | [[package]] 1069 | name = "idna" 1070 | version = "0.3.0" 1071 | source = "registry+https://github.com/rust-lang/crates.io-index" 1072 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 1073 | dependencies = [ 1074 | "unicode-bidi", 1075 | "unicode-normalization", 1076 | ] 1077 | 1078 | [[package]] 1079 | name = "ignore" 1080 | version = "0.4.18" 1081 | source = "registry+https://github.com/rust-lang/crates.io-index" 1082 | checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" 1083 | dependencies = [ 1084 | "crossbeam-utils", 1085 | "globset", 1086 | "lazy_static", 1087 | "log", 1088 | "memchr", 1089 | "regex", 1090 | "same-file", 1091 | "thread_local", 1092 | "walkdir", 1093 | "winapi-util", 1094 | ] 1095 | 1096 | [[package]] 1097 | name = "image" 1098 | version = "0.24.5" 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" 1100 | checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" 1101 | dependencies = [ 1102 | "bytemuck", 1103 | "byteorder", 1104 | "color_quant", 1105 | "num-rational", 1106 | "num-traits", 1107 | ] 1108 | 1109 | [[package]] 1110 | name = "indexmap" 1111 | version = "1.9.2" 1112 | source = "registry+https://github.com/rust-lang/crates.io-index" 1113 | checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" 1114 | dependencies = [ 1115 | "autocfg", 1116 | "hashbrown", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "infer" 1121 | version = "0.7.0" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b" 1124 | dependencies = [ 1125 | "cfb", 1126 | ] 1127 | 1128 | [[package]] 1129 | name = "instant" 1130 | version = "0.1.12" 1131 | source = "registry+https://github.com/rust-lang/crates.io-index" 1132 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1133 | dependencies = [ 1134 | "cfg-if", 1135 | ] 1136 | 1137 | [[package]] 1138 | name = "itoa" 1139 | version = "0.4.8" 1140 | source = "registry+https://github.com/rust-lang/crates.io-index" 1141 | checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" 1142 | 1143 | [[package]] 1144 | name = "itoa" 1145 | version = "1.0.5" 1146 | source = "registry+https://github.com/rust-lang/crates.io-index" 1147 | checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" 1148 | 1149 | [[package]] 1150 | name = "javascriptcore-rs" 1151 | version = "0.16.0" 1152 | source = "registry+https://github.com/rust-lang/crates.io-index" 1153 | checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" 1154 | dependencies = [ 1155 | "bitflags", 1156 | "glib", 1157 | "javascriptcore-rs-sys", 1158 | ] 1159 | 1160 | [[package]] 1161 | name = "javascriptcore-rs-sys" 1162 | version = "0.4.0" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" 1165 | dependencies = [ 1166 | "glib-sys", 1167 | "gobject-sys", 1168 | "libc", 1169 | "system-deps 5.0.0", 1170 | ] 1171 | 1172 | [[package]] 1173 | name = "jni" 1174 | version = "0.20.0" 1175 | source = "registry+https://github.com/rust-lang/crates.io-index" 1176 | checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" 1177 | dependencies = [ 1178 | "cesu8", 1179 | "combine", 1180 | "jni-sys", 1181 | "log", 1182 | "thiserror", 1183 | "walkdir", 1184 | ] 1185 | 1186 | [[package]] 1187 | name = "jni-sys" 1188 | version = "0.3.0" 1189 | source = "registry+https://github.com/rust-lang/crates.io-index" 1190 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1191 | 1192 | [[package]] 1193 | name = "js-sys" 1194 | version = "0.3.61" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" 1197 | dependencies = [ 1198 | "wasm-bindgen", 1199 | ] 1200 | 1201 | [[package]] 1202 | name = "json-patch" 1203 | version = "0.2.7" 1204 | source = "registry+https://github.com/rust-lang/crates.io-index" 1205 | checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" 1206 | dependencies = [ 1207 | "serde", 1208 | "serde_json", 1209 | "treediff", 1210 | ] 1211 | 1212 | [[package]] 1213 | name = "kuchiki" 1214 | version = "0.8.1" 1215 | source = "registry+https://github.com/rust-lang/crates.io-index" 1216 | checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" 1217 | dependencies = [ 1218 | "cssparser", 1219 | "html5ever", 1220 | "matches", 1221 | "selectors", 1222 | ] 1223 | 1224 | [[package]] 1225 | name = "lazy_static" 1226 | version = "1.4.0" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1229 | 1230 | [[package]] 1231 | name = "libappindicator" 1232 | version = "0.7.1" 1233 | source = "registry+https://github.com/rust-lang/crates.io-index" 1234 | checksum = "db2d3cb96d092b4824cb306c9e544c856a4cb6210c1081945187f7f1924b47e8" 1235 | dependencies = [ 1236 | "glib", 1237 | "gtk", 1238 | "gtk-sys", 1239 | "libappindicator-sys", 1240 | "log", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "libappindicator-sys" 1245 | version = "0.7.3" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "f1b3b6681973cea8cc3bce7391e6d7d5502720b80a581c9a95c9cbaf592826aa" 1248 | dependencies = [ 1249 | "gtk-sys", 1250 | "libloading", 1251 | "once_cell", 1252 | ] 1253 | 1254 | [[package]] 1255 | name = "libc" 1256 | version = "0.2.139" 1257 | source = "registry+https://github.com/rust-lang/crates.io-index" 1258 | checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" 1259 | 1260 | [[package]] 1261 | name = "libdbus-sys" 1262 | version = "0.2.3" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "2264f9d90a9b4e60a2dc722ad899ea0374f03c2e96e755fe22a8f551d4d5fb3c" 1265 | dependencies = [ 1266 | "pkg-config", 1267 | ] 1268 | 1269 | [[package]] 1270 | name = "libloading" 1271 | version = "0.7.4" 1272 | source = "registry+https://github.com/rust-lang/crates.io-index" 1273 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1274 | dependencies = [ 1275 | "cfg-if", 1276 | "winapi", 1277 | ] 1278 | 1279 | [[package]] 1280 | name = "line-wrap" 1281 | version = "0.1.1" 1282 | source = "registry+https://github.com/rust-lang/crates.io-index" 1283 | checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" 1284 | dependencies = [ 1285 | "safemem", 1286 | ] 1287 | 1288 | [[package]] 1289 | name = "lock_api" 1290 | version = "0.4.9" 1291 | source = "registry+https://github.com/rust-lang/crates.io-index" 1292 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 1293 | dependencies = [ 1294 | "autocfg", 1295 | "scopeguard", 1296 | ] 1297 | 1298 | [[package]] 1299 | name = "log" 1300 | version = "0.4.17" 1301 | source = "registry+https://github.com/rust-lang/crates.io-index" 1302 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 1303 | dependencies = [ 1304 | "cfg-if", 1305 | ] 1306 | 1307 | [[package]] 1308 | name = "loom" 1309 | version = "0.5.6" 1310 | source = "registry+https://github.com/rust-lang/crates.io-index" 1311 | checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" 1312 | dependencies = [ 1313 | "cfg-if", 1314 | "generator", 1315 | "scoped-tls", 1316 | "serde", 1317 | "serde_json", 1318 | "tracing", 1319 | "tracing-subscriber", 1320 | ] 1321 | 1322 | [[package]] 1323 | name = "mac" 1324 | version = "0.1.1" 1325 | source = "registry+https://github.com/rust-lang/crates.io-index" 1326 | checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 1327 | 1328 | [[package]] 1329 | name = "mac-notification-sys" 1330 | version = "0.5.6" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | checksum = "3e72d50edb17756489e79d52eb146927bec8eba9dd48faadf9ef08bca3791ad5" 1333 | dependencies = [ 1334 | "cc", 1335 | "dirs-next", 1336 | "objc-foundation", 1337 | "objc_id", 1338 | "time", 1339 | ] 1340 | 1341 | [[package]] 1342 | name = "malloc_buf" 1343 | version = "0.0.6" 1344 | source = "registry+https://github.com/rust-lang/crates.io-index" 1345 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1346 | dependencies = [ 1347 | "libc", 1348 | ] 1349 | 1350 | [[package]] 1351 | name = "markup5ever" 1352 | version = "0.10.1" 1353 | source = "registry+https://github.com/rust-lang/crates.io-index" 1354 | checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" 1355 | dependencies = [ 1356 | "log", 1357 | "phf 0.8.0", 1358 | "phf_codegen", 1359 | "string_cache", 1360 | "string_cache_codegen", 1361 | "tendril", 1362 | ] 1363 | 1364 | [[package]] 1365 | name = "matchers" 1366 | version = "0.1.0" 1367 | source = "registry+https://github.com/rust-lang/crates.io-index" 1368 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 1369 | dependencies = [ 1370 | "regex-automata", 1371 | ] 1372 | 1373 | [[package]] 1374 | name = "matches" 1375 | version = "0.1.10" 1376 | source = "registry+https://github.com/rust-lang/crates.io-index" 1377 | checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 1378 | 1379 | [[package]] 1380 | name = "memchr" 1381 | version = "2.5.0" 1382 | source = "registry+https://github.com/rust-lang/crates.io-index" 1383 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 1384 | 1385 | [[package]] 1386 | name = "memoffset" 1387 | version = "0.6.5" 1388 | source = "registry+https://github.com/rust-lang/crates.io-index" 1389 | checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" 1390 | dependencies = [ 1391 | "autocfg", 1392 | ] 1393 | 1394 | [[package]] 1395 | name = "miniz_oxide" 1396 | version = "0.6.2" 1397 | source = "registry+https://github.com/rust-lang/crates.io-index" 1398 | checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" 1399 | dependencies = [ 1400 | "adler", 1401 | ] 1402 | 1403 | [[package]] 1404 | name = "ndk" 1405 | version = "0.6.0" 1406 | source = "registry+https://github.com/rust-lang/crates.io-index" 1407 | checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" 1408 | dependencies = [ 1409 | "bitflags", 1410 | "jni-sys", 1411 | "ndk-sys", 1412 | "num_enum", 1413 | "thiserror", 1414 | ] 1415 | 1416 | [[package]] 1417 | name = "ndk-context" 1418 | version = "0.1.1" 1419 | source = "registry+https://github.com/rust-lang/crates.io-index" 1420 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1421 | 1422 | [[package]] 1423 | name = "ndk-sys" 1424 | version = "0.3.0" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" 1427 | dependencies = [ 1428 | "jni-sys", 1429 | ] 1430 | 1431 | [[package]] 1432 | name = "new_debug_unreachable" 1433 | version = "1.0.4" 1434 | source = "registry+https://github.com/rust-lang/crates.io-index" 1435 | checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" 1436 | 1437 | [[package]] 1438 | name = "nodrop" 1439 | version = "0.1.14" 1440 | source = "registry+https://github.com/rust-lang/crates.io-index" 1441 | checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 1442 | 1443 | [[package]] 1444 | name = "nom8" 1445 | version = "0.2.0" 1446 | source = "registry+https://github.com/rust-lang/crates.io-index" 1447 | checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" 1448 | dependencies = [ 1449 | "memchr", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "notify-rust" 1454 | version = "4.7.0" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "3ce656bb6d22a93ae276a23de52d1aec5ba4db3ece3c0eb79dfd5add7384db6a" 1457 | dependencies = [ 1458 | "dbus", 1459 | "mac-notification-sys", 1460 | "tauri-winrt-notification", 1461 | ] 1462 | 1463 | [[package]] 1464 | name = "nu-ansi-term" 1465 | version = "0.46.0" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 1468 | dependencies = [ 1469 | "overload", 1470 | "winapi", 1471 | ] 1472 | 1473 | [[package]] 1474 | name = "num-integer" 1475 | version = "0.1.45" 1476 | source = "registry+https://github.com/rust-lang/crates.io-index" 1477 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1478 | dependencies = [ 1479 | "autocfg", 1480 | "num-traits", 1481 | ] 1482 | 1483 | [[package]] 1484 | name = "num-rational" 1485 | version = "0.4.1" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" 1488 | dependencies = [ 1489 | "autocfg", 1490 | "num-integer", 1491 | "num-traits", 1492 | ] 1493 | 1494 | [[package]] 1495 | name = "num-traits" 1496 | version = "0.2.15" 1497 | source = "registry+https://github.com/rust-lang/crates.io-index" 1498 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 1499 | dependencies = [ 1500 | "autocfg", 1501 | ] 1502 | 1503 | [[package]] 1504 | name = "num_cpus" 1505 | version = "1.15.0" 1506 | source = "registry+https://github.com/rust-lang/crates.io-index" 1507 | checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" 1508 | dependencies = [ 1509 | "hermit-abi", 1510 | "libc", 1511 | ] 1512 | 1513 | [[package]] 1514 | name = "num_enum" 1515 | version = "0.5.9" 1516 | source = "registry+https://github.com/rust-lang/crates.io-index" 1517 | checksum = "8d829733185c1ca374f17e52b762f24f535ec625d2cc1f070e34c8a9068f341b" 1518 | dependencies = [ 1519 | "num_enum_derive", 1520 | ] 1521 | 1522 | [[package]] 1523 | name = "num_enum_derive" 1524 | version = "0.5.9" 1525 | source = "registry+https://github.com/rust-lang/crates.io-index" 1526 | checksum = "2be1598bf1c313dcdd12092e3f1920f463462525a21b7b4e11b4168353d0123e" 1527 | dependencies = [ 1528 | "proc-macro-crate", 1529 | "proc-macro2", 1530 | "quote", 1531 | "syn", 1532 | ] 1533 | 1534 | [[package]] 1535 | name = "objc" 1536 | version = "0.2.7" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1539 | dependencies = [ 1540 | "malloc_buf", 1541 | "objc_exception", 1542 | ] 1543 | 1544 | [[package]] 1545 | name = "objc-foundation" 1546 | version = "0.1.1" 1547 | source = "registry+https://github.com/rust-lang/crates.io-index" 1548 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 1549 | dependencies = [ 1550 | "block", 1551 | "objc", 1552 | "objc_id", 1553 | ] 1554 | 1555 | [[package]] 1556 | name = "objc_exception" 1557 | version = "0.1.2" 1558 | source = "registry+https://github.com/rust-lang/crates.io-index" 1559 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 1560 | dependencies = [ 1561 | "cc", 1562 | ] 1563 | 1564 | [[package]] 1565 | name = "objc_id" 1566 | version = "0.1.1" 1567 | source = "registry+https://github.com/rust-lang/crates.io-index" 1568 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 1569 | dependencies = [ 1570 | "objc", 1571 | ] 1572 | 1573 | [[package]] 1574 | name = "once_cell" 1575 | version = "1.17.0" 1576 | source = "registry+https://github.com/rust-lang/crates.io-index" 1577 | checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" 1578 | 1579 | [[package]] 1580 | name = "open" 1581 | version = "3.2.0" 1582 | source = "registry+https://github.com/rust-lang/crates.io-index" 1583 | checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" 1584 | dependencies = [ 1585 | "pathdiff", 1586 | "windows-sys 0.42.0", 1587 | ] 1588 | 1589 | [[package]] 1590 | name = "overload" 1591 | version = "0.1.1" 1592 | source = "registry+https://github.com/rust-lang/crates.io-index" 1593 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 1594 | 1595 | [[package]] 1596 | name = "pango" 1597 | version = "0.15.10" 1598 | source = "registry+https://github.com/rust-lang/crates.io-index" 1599 | checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" 1600 | dependencies = [ 1601 | "bitflags", 1602 | "glib", 1603 | "libc", 1604 | "once_cell", 1605 | "pango-sys", 1606 | ] 1607 | 1608 | [[package]] 1609 | name = "pango-sys" 1610 | version = "0.15.10" 1611 | source = "registry+https://github.com/rust-lang/crates.io-index" 1612 | checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" 1613 | dependencies = [ 1614 | "glib-sys", 1615 | "gobject-sys", 1616 | "libc", 1617 | "system-deps 6.0.3", 1618 | ] 1619 | 1620 | [[package]] 1621 | name = "parking_lot" 1622 | version = "0.12.1" 1623 | source = "registry+https://github.com/rust-lang/crates.io-index" 1624 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 1625 | dependencies = [ 1626 | "lock_api", 1627 | "parking_lot_core", 1628 | ] 1629 | 1630 | [[package]] 1631 | name = "parking_lot_core" 1632 | version = "0.9.7" 1633 | source = "registry+https://github.com/rust-lang/crates.io-index" 1634 | checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" 1635 | dependencies = [ 1636 | "cfg-if", 1637 | "libc", 1638 | "redox_syscall", 1639 | "smallvec", 1640 | "windows-sys 0.45.0", 1641 | ] 1642 | 1643 | [[package]] 1644 | name = "paste" 1645 | version = "1.0.11" 1646 | source = "registry+https://github.com/rust-lang/crates.io-index" 1647 | checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" 1648 | 1649 | [[package]] 1650 | name = "pathdiff" 1651 | version = "0.2.1" 1652 | source = "registry+https://github.com/rust-lang/crates.io-index" 1653 | checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" 1654 | 1655 | [[package]] 1656 | name = "percent-encoding" 1657 | version = "2.2.0" 1658 | source = "registry+https://github.com/rust-lang/crates.io-index" 1659 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 1660 | 1661 | [[package]] 1662 | name = "pest" 1663 | version = "2.5.4" 1664 | source = "registry+https://github.com/rust-lang/crates.io-index" 1665 | checksum = "4ab62d2fa33726dbe6321cc97ef96d8cde531e3eeaf858a058de53a8a6d40d8f" 1666 | dependencies = [ 1667 | "thiserror", 1668 | "ucd-trie", 1669 | ] 1670 | 1671 | [[package]] 1672 | name = "phf" 1673 | version = "0.8.0" 1674 | source = "registry+https://github.com/rust-lang/crates.io-index" 1675 | checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" 1676 | dependencies = [ 1677 | "phf_macros 0.8.0", 1678 | "phf_shared 0.8.0", 1679 | "proc-macro-hack", 1680 | ] 1681 | 1682 | [[package]] 1683 | name = "phf" 1684 | version = "0.10.1" 1685 | source = "registry+https://github.com/rust-lang/crates.io-index" 1686 | checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" 1687 | dependencies = [ 1688 | "phf_macros 0.10.0", 1689 | "phf_shared 0.10.0", 1690 | "proc-macro-hack", 1691 | ] 1692 | 1693 | [[package]] 1694 | name = "phf_codegen" 1695 | version = "0.8.0" 1696 | source = "registry+https://github.com/rust-lang/crates.io-index" 1697 | checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" 1698 | dependencies = [ 1699 | "phf_generator 0.8.0", 1700 | "phf_shared 0.8.0", 1701 | ] 1702 | 1703 | [[package]] 1704 | name = "phf_generator" 1705 | version = "0.8.0" 1706 | source = "registry+https://github.com/rust-lang/crates.io-index" 1707 | checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" 1708 | dependencies = [ 1709 | "phf_shared 0.8.0", 1710 | "rand 0.7.3", 1711 | ] 1712 | 1713 | [[package]] 1714 | name = "phf_generator" 1715 | version = "0.10.0" 1716 | source = "registry+https://github.com/rust-lang/crates.io-index" 1717 | checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" 1718 | dependencies = [ 1719 | "phf_shared 0.10.0", 1720 | "rand 0.8.5", 1721 | ] 1722 | 1723 | [[package]] 1724 | name = "phf_macros" 1725 | version = "0.8.0" 1726 | source = "registry+https://github.com/rust-lang/crates.io-index" 1727 | checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" 1728 | dependencies = [ 1729 | "phf_generator 0.8.0", 1730 | "phf_shared 0.8.0", 1731 | "proc-macro-hack", 1732 | "proc-macro2", 1733 | "quote", 1734 | "syn", 1735 | ] 1736 | 1737 | [[package]] 1738 | name = "phf_macros" 1739 | version = "0.10.0" 1740 | source = "registry+https://github.com/rust-lang/crates.io-index" 1741 | checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" 1742 | dependencies = [ 1743 | "phf_generator 0.10.0", 1744 | "phf_shared 0.10.0", 1745 | "proc-macro-hack", 1746 | "proc-macro2", 1747 | "quote", 1748 | "syn", 1749 | ] 1750 | 1751 | [[package]] 1752 | name = "phf_shared" 1753 | version = "0.8.0" 1754 | source = "registry+https://github.com/rust-lang/crates.io-index" 1755 | checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" 1756 | dependencies = [ 1757 | "siphasher", 1758 | ] 1759 | 1760 | [[package]] 1761 | name = "phf_shared" 1762 | version = "0.10.0" 1763 | source = "registry+https://github.com/rust-lang/crates.io-index" 1764 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 1765 | dependencies = [ 1766 | "siphasher", 1767 | ] 1768 | 1769 | [[package]] 1770 | name = "pin-project-lite" 1771 | version = "0.2.9" 1772 | source = "registry+https://github.com/rust-lang/crates.io-index" 1773 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 1774 | 1775 | [[package]] 1776 | name = "pin-utils" 1777 | version = "0.1.0" 1778 | source = "registry+https://github.com/rust-lang/crates.io-index" 1779 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1780 | 1781 | [[package]] 1782 | name = "pkg-config" 1783 | version = "0.3.26" 1784 | source = "registry+https://github.com/rust-lang/crates.io-index" 1785 | checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" 1786 | 1787 | [[package]] 1788 | name = "plist" 1789 | version = "1.4.0" 1790 | source = "registry+https://github.com/rust-lang/crates.io-index" 1791 | checksum = "5329b8f106a176ab0dce4aae5da86bfcb139bb74fb00882859e03745011f3635" 1792 | dependencies = [ 1793 | "base64", 1794 | "indexmap", 1795 | "line-wrap", 1796 | "quick-xml 0.26.0", 1797 | "serde", 1798 | "time", 1799 | ] 1800 | 1801 | [[package]] 1802 | name = "png" 1803 | version = "0.17.7" 1804 | source = "registry+https://github.com/rust-lang/crates.io-index" 1805 | checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" 1806 | dependencies = [ 1807 | "bitflags", 1808 | "crc32fast", 1809 | "flate2", 1810 | "miniz_oxide", 1811 | ] 1812 | 1813 | [[package]] 1814 | name = "ppv-lite86" 1815 | version = "0.2.17" 1816 | source = "registry+https://github.com/rust-lang/crates.io-index" 1817 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1818 | 1819 | [[package]] 1820 | name = "precomputed-hash" 1821 | version = "0.1.1" 1822 | source = "registry+https://github.com/rust-lang/crates.io-index" 1823 | checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 1824 | 1825 | [[package]] 1826 | name = "proc-macro-crate" 1827 | version = "1.3.0" 1828 | source = "registry+https://github.com/rust-lang/crates.io-index" 1829 | checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34" 1830 | dependencies = [ 1831 | "once_cell", 1832 | "toml_edit", 1833 | ] 1834 | 1835 | [[package]] 1836 | name = "proc-macro-error" 1837 | version = "1.0.4" 1838 | source = "registry+https://github.com/rust-lang/crates.io-index" 1839 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 1840 | dependencies = [ 1841 | "proc-macro-error-attr", 1842 | "proc-macro2", 1843 | "quote", 1844 | "syn", 1845 | "version_check", 1846 | ] 1847 | 1848 | [[package]] 1849 | name = "proc-macro-error-attr" 1850 | version = "1.0.4" 1851 | source = "registry+https://github.com/rust-lang/crates.io-index" 1852 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 1853 | dependencies = [ 1854 | "proc-macro2", 1855 | "quote", 1856 | "version_check", 1857 | ] 1858 | 1859 | [[package]] 1860 | name = "proc-macro-hack" 1861 | version = "0.5.20+deprecated" 1862 | source = "registry+https://github.com/rust-lang/crates.io-index" 1863 | checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 1864 | 1865 | [[package]] 1866 | name = "proc-macro2" 1867 | version = "1.0.50" 1868 | source = "registry+https://github.com/rust-lang/crates.io-index" 1869 | checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" 1870 | dependencies = [ 1871 | "unicode-ident", 1872 | ] 1873 | 1874 | [[package]] 1875 | name = "quick-xml" 1876 | version = "0.23.1" 1877 | source = "registry+https://github.com/rust-lang/crates.io-index" 1878 | checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea" 1879 | dependencies = [ 1880 | "memchr", 1881 | ] 1882 | 1883 | [[package]] 1884 | name = "quick-xml" 1885 | version = "0.26.0" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | checksum = "7f50b1c63b38611e7d4d7f68b82d3ad0cc71a2ad2e7f61fc10f1328d917c93cd" 1888 | dependencies = [ 1889 | "memchr", 1890 | ] 1891 | 1892 | [[package]] 1893 | name = "quote" 1894 | version = "1.0.23" 1895 | source = "registry+https://github.com/rust-lang/crates.io-index" 1896 | checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" 1897 | dependencies = [ 1898 | "proc-macro2", 1899 | ] 1900 | 1901 | [[package]] 1902 | name = "rand" 1903 | version = "0.7.3" 1904 | source = "registry+https://github.com/rust-lang/crates.io-index" 1905 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 1906 | dependencies = [ 1907 | "getrandom 0.1.16", 1908 | "libc", 1909 | "rand_chacha 0.2.2", 1910 | "rand_core 0.5.1", 1911 | "rand_hc", 1912 | "rand_pcg", 1913 | ] 1914 | 1915 | [[package]] 1916 | name = "rand" 1917 | version = "0.8.5" 1918 | source = "registry+https://github.com/rust-lang/crates.io-index" 1919 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1920 | dependencies = [ 1921 | "libc", 1922 | "rand_chacha 0.3.1", 1923 | "rand_core 0.6.4", 1924 | ] 1925 | 1926 | [[package]] 1927 | name = "rand_chacha" 1928 | version = "0.2.2" 1929 | source = "registry+https://github.com/rust-lang/crates.io-index" 1930 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 1931 | dependencies = [ 1932 | "ppv-lite86", 1933 | "rand_core 0.5.1", 1934 | ] 1935 | 1936 | [[package]] 1937 | name = "rand_chacha" 1938 | version = "0.3.1" 1939 | source = "registry+https://github.com/rust-lang/crates.io-index" 1940 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1941 | dependencies = [ 1942 | "ppv-lite86", 1943 | "rand_core 0.6.4", 1944 | ] 1945 | 1946 | [[package]] 1947 | name = "rand_core" 1948 | version = "0.5.1" 1949 | source = "registry+https://github.com/rust-lang/crates.io-index" 1950 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1951 | dependencies = [ 1952 | "getrandom 0.1.16", 1953 | ] 1954 | 1955 | [[package]] 1956 | name = "rand_core" 1957 | version = "0.6.4" 1958 | source = "registry+https://github.com/rust-lang/crates.io-index" 1959 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1960 | dependencies = [ 1961 | "getrandom 0.2.8", 1962 | ] 1963 | 1964 | [[package]] 1965 | name = "rand_hc" 1966 | version = "0.2.0" 1967 | source = "registry+https://github.com/rust-lang/crates.io-index" 1968 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1969 | dependencies = [ 1970 | "rand_core 0.5.1", 1971 | ] 1972 | 1973 | [[package]] 1974 | name = "rand_pcg" 1975 | version = "0.2.1" 1976 | source = "registry+https://github.com/rust-lang/crates.io-index" 1977 | checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 1978 | dependencies = [ 1979 | "rand_core 0.5.1", 1980 | ] 1981 | 1982 | [[package]] 1983 | name = "raw-window-handle" 1984 | version = "0.5.0" 1985 | source = "registry+https://github.com/rust-lang/crates.io-index" 1986 | checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" 1987 | dependencies = [ 1988 | "cty", 1989 | ] 1990 | 1991 | [[package]] 1992 | name = "redox_syscall" 1993 | version = "0.2.16" 1994 | source = "registry+https://github.com/rust-lang/crates.io-index" 1995 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 1996 | dependencies = [ 1997 | "bitflags", 1998 | ] 1999 | 2000 | [[package]] 2001 | name = "redox_users" 2002 | version = "0.4.3" 2003 | source = "registry+https://github.com/rust-lang/crates.io-index" 2004 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 2005 | dependencies = [ 2006 | "getrandom 0.2.8", 2007 | "redox_syscall", 2008 | "thiserror", 2009 | ] 2010 | 2011 | [[package]] 2012 | name = "regex" 2013 | version = "1.7.1" 2014 | source = "registry+https://github.com/rust-lang/crates.io-index" 2015 | checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" 2016 | dependencies = [ 2017 | "aho-corasick", 2018 | "memchr", 2019 | "regex-syntax", 2020 | ] 2021 | 2022 | [[package]] 2023 | name = "regex-automata" 2024 | version = "0.1.10" 2025 | source = "registry+https://github.com/rust-lang/crates.io-index" 2026 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 2027 | dependencies = [ 2028 | "regex-syntax", 2029 | ] 2030 | 2031 | [[package]] 2032 | name = "regex-syntax" 2033 | version = "0.6.28" 2034 | source = "registry+https://github.com/rust-lang/crates.io-index" 2035 | checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" 2036 | 2037 | [[package]] 2038 | name = "remove_dir_all" 2039 | version = "0.5.3" 2040 | source = "registry+https://github.com/rust-lang/crates.io-index" 2041 | checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 2042 | dependencies = [ 2043 | "winapi", 2044 | ] 2045 | 2046 | [[package]] 2047 | name = "rfd" 2048 | version = "0.10.0" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" 2051 | dependencies = [ 2052 | "block", 2053 | "dispatch", 2054 | "glib-sys", 2055 | "gobject-sys", 2056 | "gtk-sys", 2057 | "js-sys", 2058 | "lazy_static", 2059 | "log", 2060 | "objc", 2061 | "objc-foundation", 2062 | "objc_id", 2063 | "raw-window-handle", 2064 | "wasm-bindgen", 2065 | "wasm-bindgen-futures", 2066 | "web-sys", 2067 | "windows 0.37.0", 2068 | ] 2069 | 2070 | [[package]] 2071 | name = "rustc_version" 2072 | version = "0.3.3" 2073 | source = "registry+https://github.com/rust-lang/crates.io-index" 2074 | checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" 2075 | dependencies = [ 2076 | "semver 0.11.0", 2077 | ] 2078 | 2079 | [[package]] 2080 | name = "rustc_version" 2081 | version = "0.4.0" 2082 | source = "registry+https://github.com/rust-lang/crates.io-index" 2083 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 2084 | dependencies = [ 2085 | "semver 1.0.16", 2086 | ] 2087 | 2088 | [[package]] 2089 | name = "rustversion" 2090 | version = "1.0.11" 2091 | source = "registry+https://github.com/rust-lang/crates.io-index" 2092 | checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" 2093 | 2094 | [[package]] 2095 | name = "ryu" 2096 | version = "1.0.12" 2097 | source = "registry+https://github.com/rust-lang/crates.io-index" 2098 | checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" 2099 | 2100 | [[package]] 2101 | name = "safemem" 2102 | version = "0.3.3" 2103 | source = "registry+https://github.com/rust-lang/crates.io-index" 2104 | checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" 2105 | 2106 | [[package]] 2107 | name = "same-file" 2108 | version = "1.0.6" 2109 | source = "registry+https://github.com/rust-lang/crates.io-index" 2110 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2111 | dependencies = [ 2112 | "winapi-util", 2113 | ] 2114 | 2115 | [[package]] 2116 | name = "scoped-tls" 2117 | version = "1.0.1" 2118 | source = "registry+https://github.com/rust-lang/crates.io-index" 2119 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2120 | 2121 | [[package]] 2122 | name = "scopeguard" 2123 | version = "1.1.0" 2124 | source = "registry+https://github.com/rust-lang/crates.io-index" 2125 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 2126 | 2127 | [[package]] 2128 | name = "selectors" 2129 | version = "0.22.0" 2130 | source = "registry+https://github.com/rust-lang/crates.io-index" 2131 | checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" 2132 | dependencies = [ 2133 | "bitflags", 2134 | "cssparser", 2135 | "derive_more", 2136 | "fxhash", 2137 | "log", 2138 | "matches", 2139 | "phf 0.8.0", 2140 | "phf_codegen", 2141 | "precomputed-hash", 2142 | "servo_arc", 2143 | "smallvec", 2144 | "thin-slice", 2145 | ] 2146 | 2147 | [[package]] 2148 | name = "semver" 2149 | version = "0.11.0" 2150 | source = "registry+https://github.com/rust-lang/crates.io-index" 2151 | checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" 2152 | dependencies = [ 2153 | "semver-parser", 2154 | ] 2155 | 2156 | [[package]] 2157 | name = "semver" 2158 | version = "1.0.16" 2159 | source = "registry+https://github.com/rust-lang/crates.io-index" 2160 | checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" 2161 | dependencies = [ 2162 | "serde", 2163 | ] 2164 | 2165 | [[package]] 2166 | name = "semver-parser" 2167 | version = "0.10.2" 2168 | source = "registry+https://github.com/rust-lang/crates.io-index" 2169 | checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" 2170 | dependencies = [ 2171 | "pest", 2172 | ] 2173 | 2174 | [[package]] 2175 | name = "serde" 2176 | version = "1.0.152" 2177 | source = "registry+https://github.com/rust-lang/crates.io-index" 2178 | checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" 2179 | dependencies = [ 2180 | "serde_derive", 2181 | ] 2182 | 2183 | [[package]] 2184 | name = "serde_derive" 2185 | version = "1.0.152" 2186 | source = "registry+https://github.com/rust-lang/crates.io-index" 2187 | checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" 2188 | dependencies = [ 2189 | "proc-macro2", 2190 | "quote", 2191 | "syn", 2192 | ] 2193 | 2194 | [[package]] 2195 | name = "serde_json" 2196 | version = "1.0.91" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" 2199 | dependencies = [ 2200 | "itoa 1.0.5", 2201 | "ryu", 2202 | "serde", 2203 | ] 2204 | 2205 | [[package]] 2206 | name = "serde_repr" 2207 | version = "0.1.10" 2208 | source = "registry+https://github.com/rust-lang/crates.io-index" 2209 | checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e" 2210 | dependencies = [ 2211 | "proc-macro2", 2212 | "quote", 2213 | "syn", 2214 | ] 2215 | 2216 | [[package]] 2217 | name = "serde_with" 2218 | version = "1.14.0" 2219 | source = "registry+https://github.com/rust-lang/crates.io-index" 2220 | checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" 2221 | dependencies = [ 2222 | "serde", 2223 | "serde_with_macros", 2224 | ] 2225 | 2226 | [[package]] 2227 | name = "serde_with_macros" 2228 | version = "1.5.2" 2229 | source = "registry+https://github.com/rust-lang/crates.io-index" 2230 | checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" 2231 | dependencies = [ 2232 | "darling", 2233 | "proc-macro2", 2234 | "quote", 2235 | "syn", 2236 | ] 2237 | 2238 | [[package]] 2239 | name = "serialize-to-javascript" 2240 | version = "0.1.1" 2241 | source = "registry+https://github.com/rust-lang/crates.io-index" 2242 | checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" 2243 | dependencies = [ 2244 | "serde", 2245 | "serde_json", 2246 | "serialize-to-javascript-impl", 2247 | ] 2248 | 2249 | [[package]] 2250 | name = "serialize-to-javascript-impl" 2251 | version = "0.1.1" 2252 | source = "registry+https://github.com/rust-lang/crates.io-index" 2253 | checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" 2254 | dependencies = [ 2255 | "proc-macro2", 2256 | "quote", 2257 | "syn", 2258 | ] 2259 | 2260 | [[package]] 2261 | name = "servo_arc" 2262 | version = "0.1.1" 2263 | source = "registry+https://github.com/rust-lang/crates.io-index" 2264 | checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" 2265 | dependencies = [ 2266 | "nodrop", 2267 | "stable_deref_trait", 2268 | ] 2269 | 2270 | [[package]] 2271 | name = "sha2" 2272 | version = "0.10.6" 2273 | source = "registry+https://github.com/rust-lang/crates.io-index" 2274 | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" 2275 | dependencies = [ 2276 | "cfg-if", 2277 | "cpufeatures", 2278 | "digest", 2279 | ] 2280 | 2281 | [[package]] 2282 | name = "sharded-slab" 2283 | version = "0.1.4" 2284 | source = "registry+https://github.com/rust-lang/crates.io-index" 2285 | checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" 2286 | dependencies = [ 2287 | "lazy_static", 2288 | ] 2289 | 2290 | [[package]] 2291 | name = "siphasher" 2292 | version = "0.3.10" 2293 | source = "registry+https://github.com/rust-lang/crates.io-index" 2294 | checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" 2295 | 2296 | [[package]] 2297 | name = "slab" 2298 | version = "0.4.7" 2299 | source = "registry+https://github.com/rust-lang/crates.io-index" 2300 | checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" 2301 | dependencies = [ 2302 | "autocfg", 2303 | ] 2304 | 2305 | [[package]] 2306 | name = "smallvec" 2307 | version = "1.10.0" 2308 | source = "registry+https://github.com/rust-lang/crates.io-index" 2309 | checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 2310 | 2311 | [[package]] 2312 | name = "soup2" 2313 | version = "0.2.1" 2314 | source = "registry+https://github.com/rust-lang/crates.io-index" 2315 | checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" 2316 | dependencies = [ 2317 | "bitflags", 2318 | "gio", 2319 | "glib", 2320 | "libc", 2321 | "once_cell", 2322 | "soup2-sys", 2323 | ] 2324 | 2325 | [[package]] 2326 | name = "soup2-sys" 2327 | version = "0.2.0" 2328 | source = "registry+https://github.com/rust-lang/crates.io-index" 2329 | checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" 2330 | dependencies = [ 2331 | "bitflags", 2332 | "gio-sys", 2333 | "glib-sys", 2334 | "gobject-sys", 2335 | "libc", 2336 | "system-deps 5.0.0", 2337 | ] 2338 | 2339 | [[package]] 2340 | name = "stable_deref_trait" 2341 | version = "1.2.0" 2342 | source = "registry+https://github.com/rust-lang/crates.io-index" 2343 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2344 | 2345 | [[package]] 2346 | name = "state" 2347 | version = "0.5.3" 2348 | source = "registry+https://github.com/rust-lang/crates.io-index" 2349 | checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" 2350 | dependencies = [ 2351 | "loom", 2352 | ] 2353 | 2354 | [[package]] 2355 | name = "string_cache" 2356 | version = "0.8.4" 2357 | source = "registry+https://github.com/rust-lang/crates.io-index" 2358 | checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" 2359 | dependencies = [ 2360 | "new_debug_unreachable", 2361 | "once_cell", 2362 | "parking_lot", 2363 | "phf_shared 0.10.0", 2364 | "precomputed-hash", 2365 | "serde", 2366 | ] 2367 | 2368 | [[package]] 2369 | name = "string_cache_codegen" 2370 | version = "0.5.2" 2371 | source = "registry+https://github.com/rust-lang/crates.io-index" 2372 | checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" 2373 | dependencies = [ 2374 | "phf_generator 0.10.0", 2375 | "phf_shared 0.10.0", 2376 | "proc-macro2", 2377 | "quote", 2378 | ] 2379 | 2380 | [[package]] 2381 | name = "strsim" 2382 | version = "0.10.0" 2383 | source = "registry+https://github.com/rust-lang/crates.io-index" 2384 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 2385 | 2386 | [[package]] 2387 | name = "strum" 2388 | version = "0.22.0" 2389 | source = "registry+https://github.com/rust-lang/crates.io-index" 2390 | checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e" 2391 | dependencies = [ 2392 | "strum_macros", 2393 | ] 2394 | 2395 | [[package]] 2396 | name = "strum_macros" 2397 | version = "0.22.0" 2398 | source = "registry+https://github.com/rust-lang/crates.io-index" 2399 | checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb" 2400 | dependencies = [ 2401 | "heck 0.3.3", 2402 | "proc-macro2", 2403 | "quote", 2404 | "syn", 2405 | ] 2406 | 2407 | [[package]] 2408 | name = "syn" 2409 | version = "1.0.107" 2410 | source = "registry+https://github.com/rust-lang/crates.io-index" 2411 | checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" 2412 | dependencies = [ 2413 | "proc-macro2", 2414 | "quote", 2415 | "unicode-ident", 2416 | ] 2417 | 2418 | [[package]] 2419 | name = "system-deps" 2420 | version = "5.0.0" 2421 | source = "registry+https://github.com/rust-lang/crates.io-index" 2422 | checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" 2423 | dependencies = [ 2424 | "cfg-expr 0.9.1", 2425 | "heck 0.3.3", 2426 | "pkg-config", 2427 | "toml", 2428 | "version-compare 0.0.11", 2429 | ] 2430 | 2431 | [[package]] 2432 | name = "system-deps" 2433 | version = "6.0.3" 2434 | source = "registry+https://github.com/rust-lang/crates.io-index" 2435 | checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" 2436 | dependencies = [ 2437 | "cfg-expr 0.11.0", 2438 | "heck 0.4.1", 2439 | "pkg-config", 2440 | "toml", 2441 | "version-compare 0.1.1", 2442 | ] 2443 | 2444 | [[package]] 2445 | name = "tao" 2446 | version = "0.15.8" 2447 | source = "registry+https://github.com/rust-lang/crates.io-index" 2448 | checksum = "ac8e6399427c8494f9849b58694754d7cc741293348a6836b6c8d2c5aa82d8e6" 2449 | dependencies = [ 2450 | "bitflags", 2451 | "cairo-rs", 2452 | "cc", 2453 | "cocoa", 2454 | "core-foundation", 2455 | "core-graphics", 2456 | "crossbeam-channel", 2457 | "dirs-next", 2458 | "dispatch", 2459 | "gdk", 2460 | "gdk-pixbuf", 2461 | "gdk-sys", 2462 | "gdkx11-sys", 2463 | "gio", 2464 | "glib", 2465 | "glib-sys", 2466 | "gtk", 2467 | "image", 2468 | "instant", 2469 | "jni", 2470 | "lazy_static", 2471 | "libappindicator", 2472 | "libc", 2473 | "log", 2474 | "ndk", 2475 | "ndk-context", 2476 | "ndk-sys", 2477 | "objc", 2478 | "once_cell", 2479 | "parking_lot", 2480 | "paste", 2481 | "png", 2482 | "raw-window-handle", 2483 | "scopeguard", 2484 | "serde", 2485 | "unicode-segmentation", 2486 | "uuid 1.3.0", 2487 | "windows 0.39.0", 2488 | "windows-implement", 2489 | "x11-dl", 2490 | ] 2491 | 2492 | [[package]] 2493 | name = "tar" 2494 | version = "0.4.38" 2495 | source = "registry+https://github.com/rust-lang/crates.io-index" 2496 | checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" 2497 | dependencies = [ 2498 | "filetime", 2499 | "libc", 2500 | "xattr", 2501 | ] 2502 | 2503 | [[package]] 2504 | name = "tauri" 2505 | version = "1.2.4" 2506 | source = "registry+https://github.com/rust-lang/crates.io-index" 2507 | checksum = "fe7e0f1d535e7cbbbab43c82be4fc992b84f9156c16c160955617e0260ebc449" 2508 | dependencies = [ 2509 | "anyhow", 2510 | "cocoa", 2511 | "dirs-next", 2512 | "embed_plist", 2513 | "encoding_rs", 2514 | "flate2", 2515 | "futures-util", 2516 | "glib", 2517 | "glob", 2518 | "gtk", 2519 | "heck 0.4.1", 2520 | "http", 2521 | "ignore", 2522 | "notify-rust", 2523 | "objc", 2524 | "once_cell", 2525 | "open", 2526 | "percent-encoding", 2527 | "rand 0.8.5", 2528 | "raw-window-handle", 2529 | "regex", 2530 | "rfd", 2531 | "semver 1.0.16", 2532 | "serde", 2533 | "serde_json", 2534 | "serde_repr", 2535 | "serialize-to-javascript", 2536 | "state", 2537 | "tar", 2538 | "tauri-macros", 2539 | "tauri-runtime", 2540 | "tauri-runtime-wry", 2541 | "tauri-utils", 2542 | "tempfile", 2543 | "thiserror", 2544 | "tokio", 2545 | "url", 2546 | "uuid 1.3.0", 2547 | "webkit2gtk", 2548 | "webview2-com", 2549 | "windows 0.39.0", 2550 | ] 2551 | 2552 | [[package]] 2553 | name = "tauri-build" 2554 | version = "1.2.1" 2555 | source = "registry+https://github.com/rust-lang/crates.io-index" 2556 | checksum = "8807c85d656b2b93927c19fe5a5f1f1f348f96c2de8b90763b3c2d561511f9b4" 2557 | dependencies = [ 2558 | "anyhow", 2559 | "cargo_toml", 2560 | "heck 0.4.1", 2561 | "json-patch", 2562 | "semver 1.0.16", 2563 | "serde_json", 2564 | "tauri-utils", 2565 | "winres", 2566 | ] 2567 | 2568 | [[package]] 2569 | name = "tauri-codegen" 2570 | version = "1.2.1" 2571 | source = "registry+https://github.com/rust-lang/crates.io-index" 2572 | checksum = "14388d484b6b1b5dc0f6a7d6cc6433b3b230bec85eaa576adcdf3f9fafa49251" 2573 | dependencies = [ 2574 | "base64", 2575 | "brotli", 2576 | "ico", 2577 | "json-patch", 2578 | "plist", 2579 | "png", 2580 | "proc-macro2", 2581 | "quote", 2582 | "regex", 2583 | "semver 1.0.16", 2584 | "serde", 2585 | "serde_json", 2586 | "sha2", 2587 | "tauri-utils", 2588 | "thiserror", 2589 | "time", 2590 | "uuid 1.3.0", 2591 | "walkdir", 2592 | ] 2593 | 2594 | [[package]] 2595 | name = "tauri-macros" 2596 | version = "1.2.1" 2597 | source = "registry+https://github.com/rust-lang/crates.io-index" 2598 | checksum = "069319e5ecbe653a799b94b0690d9f9bf5d00f7b1d3989aa331c524d4e354075" 2599 | dependencies = [ 2600 | "heck 0.4.1", 2601 | "proc-macro2", 2602 | "quote", 2603 | "syn", 2604 | "tauri-codegen", 2605 | "tauri-utils", 2606 | ] 2607 | 2608 | [[package]] 2609 | name = "tauri-runtime" 2610 | version = "0.12.1" 2611 | source = "registry+https://github.com/rust-lang/crates.io-index" 2612 | checksum = "c507d954d08ac8705d235bc70ec6975b9054fb95ff7823af72dbb04186596f3b" 2613 | dependencies = [ 2614 | "gtk", 2615 | "http", 2616 | "http-range", 2617 | "rand 0.8.5", 2618 | "raw-window-handle", 2619 | "serde", 2620 | "serde_json", 2621 | "tauri-utils", 2622 | "thiserror", 2623 | "uuid 1.3.0", 2624 | "webview2-com", 2625 | "windows 0.39.0", 2626 | ] 2627 | 2628 | [[package]] 2629 | name = "tauri-runtime-wry" 2630 | version = "0.12.2" 2631 | source = "registry+https://github.com/rust-lang/crates.io-index" 2632 | checksum = "36b1c5764a41a13176a4599b5b7bd0881bea7d94dfe45e1e755f789b98317e30" 2633 | dependencies = [ 2634 | "cocoa", 2635 | "gtk", 2636 | "percent-encoding", 2637 | "rand 0.8.5", 2638 | "raw-window-handle", 2639 | "tauri-runtime", 2640 | "tauri-utils", 2641 | "uuid 1.3.0", 2642 | "webkit2gtk", 2643 | "webview2-com", 2644 | "windows 0.39.0", 2645 | "wry", 2646 | ] 2647 | 2648 | [[package]] 2649 | name = "tauri-utils" 2650 | version = "1.2.1" 2651 | source = "registry+https://github.com/rust-lang/crates.io-index" 2652 | checksum = "5abbc109a6eb45127956ffcc26ef0e875d160150ac16cfa45d26a6b2871686f1" 2653 | dependencies = [ 2654 | "brotli", 2655 | "ctor", 2656 | "glob", 2657 | "heck 0.4.1", 2658 | "html5ever", 2659 | "infer", 2660 | "json-patch", 2661 | "kuchiki", 2662 | "memchr", 2663 | "phf 0.10.1", 2664 | "proc-macro2", 2665 | "quote", 2666 | "semver 1.0.16", 2667 | "serde", 2668 | "serde_json", 2669 | "serde_with", 2670 | "thiserror", 2671 | "url", 2672 | "walkdir", 2673 | "windows 0.39.0", 2674 | ] 2675 | 2676 | [[package]] 2677 | name = "tauri-winrt-notification" 2678 | version = "0.1.0" 2679 | source = "registry+https://github.com/rust-lang/crates.io-index" 2680 | checksum = "c58de036c4d2e20717024de2a3c4bf56c301f07b21bc8ef9b57189fce06f1f3b" 2681 | dependencies = [ 2682 | "quick-xml 0.23.1", 2683 | "strum", 2684 | "windows 0.39.0", 2685 | ] 2686 | 2687 | [[package]] 2688 | name = "tempfile" 2689 | version = "3.3.0" 2690 | source = "registry+https://github.com/rust-lang/crates.io-index" 2691 | checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" 2692 | dependencies = [ 2693 | "cfg-if", 2694 | "fastrand", 2695 | "libc", 2696 | "redox_syscall", 2697 | "remove_dir_all", 2698 | "winapi", 2699 | ] 2700 | 2701 | [[package]] 2702 | name = "tendril" 2703 | version = "0.4.3" 2704 | source = "registry+https://github.com/rust-lang/crates.io-index" 2705 | checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 2706 | dependencies = [ 2707 | "futf", 2708 | "mac", 2709 | "utf-8", 2710 | ] 2711 | 2712 | [[package]] 2713 | name = "thin-slice" 2714 | version = "0.1.1" 2715 | source = "registry+https://github.com/rust-lang/crates.io-index" 2716 | checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" 2717 | 2718 | [[package]] 2719 | name = "thiserror" 2720 | version = "1.0.38" 2721 | source = "registry+https://github.com/rust-lang/crates.io-index" 2722 | checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" 2723 | dependencies = [ 2724 | "thiserror-impl", 2725 | ] 2726 | 2727 | [[package]] 2728 | name = "thiserror-impl" 2729 | version = "1.0.38" 2730 | source = "registry+https://github.com/rust-lang/crates.io-index" 2731 | checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" 2732 | dependencies = [ 2733 | "proc-macro2", 2734 | "quote", 2735 | "syn", 2736 | ] 2737 | 2738 | [[package]] 2739 | name = "thread_local" 2740 | version = "1.1.4" 2741 | source = "registry+https://github.com/rust-lang/crates.io-index" 2742 | checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" 2743 | dependencies = [ 2744 | "once_cell", 2745 | ] 2746 | 2747 | [[package]] 2748 | name = "time" 2749 | version = "0.3.17" 2750 | source = "registry+https://github.com/rust-lang/crates.io-index" 2751 | checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" 2752 | dependencies = [ 2753 | "itoa 1.0.5", 2754 | "serde", 2755 | "time-core", 2756 | "time-macros", 2757 | ] 2758 | 2759 | [[package]] 2760 | name = "time-core" 2761 | version = "0.1.0" 2762 | source = "registry+https://github.com/rust-lang/crates.io-index" 2763 | checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" 2764 | 2765 | [[package]] 2766 | name = "time-macros" 2767 | version = "0.2.6" 2768 | source = "registry+https://github.com/rust-lang/crates.io-index" 2769 | checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" 2770 | dependencies = [ 2771 | "time-core", 2772 | ] 2773 | 2774 | [[package]] 2775 | name = "tinyvec" 2776 | version = "1.6.0" 2777 | source = "registry+https://github.com/rust-lang/crates.io-index" 2778 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 2779 | dependencies = [ 2780 | "tinyvec_macros", 2781 | ] 2782 | 2783 | [[package]] 2784 | name = "tinyvec_macros" 2785 | version = "0.1.1" 2786 | source = "registry+https://github.com/rust-lang/crates.io-index" 2787 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2788 | 2789 | [[package]] 2790 | name = "tokio" 2791 | version = "1.25.0" 2792 | source = "registry+https://github.com/rust-lang/crates.io-index" 2793 | checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af" 2794 | dependencies = [ 2795 | "autocfg", 2796 | "bytes", 2797 | "memchr", 2798 | "num_cpus", 2799 | "pin-project-lite", 2800 | "windows-sys 0.42.0", 2801 | ] 2802 | 2803 | [[package]] 2804 | name = "toml" 2805 | version = "0.5.11" 2806 | source = "registry+https://github.com/rust-lang/crates.io-index" 2807 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 2808 | dependencies = [ 2809 | "serde", 2810 | ] 2811 | 2812 | [[package]] 2813 | name = "toml_datetime" 2814 | version = "0.5.1" 2815 | source = "registry+https://github.com/rust-lang/crates.io-index" 2816 | checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" 2817 | 2818 | [[package]] 2819 | name = "toml_edit" 2820 | version = "0.18.1" 2821 | source = "registry+https://github.com/rust-lang/crates.io-index" 2822 | checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" 2823 | dependencies = [ 2824 | "indexmap", 2825 | "nom8", 2826 | "toml_datetime", 2827 | ] 2828 | 2829 | [[package]] 2830 | name = "tracing" 2831 | version = "0.1.37" 2832 | source = "registry+https://github.com/rust-lang/crates.io-index" 2833 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 2834 | dependencies = [ 2835 | "cfg-if", 2836 | "pin-project-lite", 2837 | "tracing-attributes", 2838 | "tracing-core", 2839 | ] 2840 | 2841 | [[package]] 2842 | name = "tracing-attributes" 2843 | version = "0.1.23" 2844 | source = "registry+https://github.com/rust-lang/crates.io-index" 2845 | checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" 2846 | dependencies = [ 2847 | "proc-macro2", 2848 | "quote", 2849 | "syn", 2850 | ] 2851 | 2852 | [[package]] 2853 | name = "tracing-core" 2854 | version = "0.1.30" 2855 | source = "registry+https://github.com/rust-lang/crates.io-index" 2856 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" 2857 | dependencies = [ 2858 | "once_cell", 2859 | "valuable", 2860 | ] 2861 | 2862 | [[package]] 2863 | name = "tracing-log" 2864 | version = "0.1.3" 2865 | source = "registry+https://github.com/rust-lang/crates.io-index" 2866 | checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" 2867 | dependencies = [ 2868 | "lazy_static", 2869 | "log", 2870 | "tracing-core", 2871 | ] 2872 | 2873 | [[package]] 2874 | name = "tracing-subscriber" 2875 | version = "0.3.16" 2876 | source = "registry+https://github.com/rust-lang/crates.io-index" 2877 | checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" 2878 | dependencies = [ 2879 | "matchers", 2880 | "nu-ansi-term", 2881 | "once_cell", 2882 | "regex", 2883 | "sharded-slab", 2884 | "smallvec", 2885 | "thread_local", 2886 | "tracing", 2887 | "tracing-core", 2888 | "tracing-log", 2889 | ] 2890 | 2891 | [[package]] 2892 | name = "treediff" 2893 | version = "3.0.2" 2894 | source = "registry+https://github.com/rust-lang/crates.io-index" 2895 | checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" 2896 | dependencies = [ 2897 | "serde_json", 2898 | ] 2899 | 2900 | [[package]] 2901 | name = "typenum" 2902 | version = "1.16.0" 2903 | source = "registry+https://github.com/rust-lang/crates.io-index" 2904 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 2905 | 2906 | [[package]] 2907 | name = "ucd-trie" 2908 | version = "0.1.5" 2909 | source = "registry+https://github.com/rust-lang/crates.io-index" 2910 | checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" 2911 | 2912 | [[package]] 2913 | name = "unicode-bidi" 2914 | version = "0.3.10" 2915 | source = "registry+https://github.com/rust-lang/crates.io-index" 2916 | checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" 2917 | 2918 | [[package]] 2919 | name = "unicode-ident" 2920 | version = "1.0.6" 2921 | source = "registry+https://github.com/rust-lang/crates.io-index" 2922 | checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" 2923 | 2924 | [[package]] 2925 | name = "unicode-normalization" 2926 | version = "0.1.22" 2927 | source = "registry+https://github.com/rust-lang/crates.io-index" 2928 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 2929 | dependencies = [ 2930 | "tinyvec", 2931 | ] 2932 | 2933 | [[package]] 2934 | name = "unicode-segmentation" 2935 | version = "1.10.1" 2936 | source = "registry+https://github.com/rust-lang/crates.io-index" 2937 | checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" 2938 | 2939 | [[package]] 2940 | name = "url" 2941 | version = "2.3.1" 2942 | source = "registry+https://github.com/rust-lang/crates.io-index" 2943 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 2944 | dependencies = [ 2945 | "form_urlencoded", 2946 | "idna", 2947 | "percent-encoding", 2948 | "serde", 2949 | ] 2950 | 2951 | [[package]] 2952 | name = "utf-8" 2953 | version = "0.7.6" 2954 | source = "registry+https://github.com/rust-lang/crates.io-index" 2955 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 2956 | 2957 | [[package]] 2958 | name = "uuid" 2959 | version = "0.8.2" 2960 | source = "registry+https://github.com/rust-lang/crates.io-index" 2961 | checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" 2962 | 2963 | [[package]] 2964 | name = "uuid" 2965 | version = "1.3.0" 2966 | source = "registry+https://github.com/rust-lang/crates.io-index" 2967 | checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" 2968 | dependencies = [ 2969 | "getrandom 0.2.8", 2970 | ] 2971 | 2972 | [[package]] 2973 | name = "valuable" 2974 | version = "0.1.0" 2975 | source = "registry+https://github.com/rust-lang/crates.io-index" 2976 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 2977 | 2978 | [[package]] 2979 | name = "version-compare" 2980 | version = "0.0.11" 2981 | source = "registry+https://github.com/rust-lang/crates.io-index" 2982 | checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" 2983 | 2984 | [[package]] 2985 | name = "version-compare" 2986 | version = "0.1.1" 2987 | source = "registry+https://github.com/rust-lang/crates.io-index" 2988 | checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" 2989 | 2990 | [[package]] 2991 | name = "version_check" 2992 | version = "0.9.4" 2993 | source = "registry+https://github.com/rust-lang/crates.io-index" 2994 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2995 | 2996 | [[package]] 2997 | name = "walkdir" 2998 | version = "2.3.2" 2999 | source = "registry+https://github.com/rust-lang/crates.io-index" 3000 | checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" 3001 | dependencies = [ 3002 | "same-file", 3003 | "winapi", 3004 | "winapi-util", 3005 | ] 3006 | 3007 | [[package]] 3008 | name = "wasi" 3009 | version = "0.9.0+wasi-snapshot-preview1" 3010 | source = "registry+https://github.com/rust-lang/crates.io-index" 3011 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 3012 | 3013 | [[package]] 3014 | name = "wasi" 3015 | version = "0.11.0+wasi-snapshot-preview1" 3016 | source = "registry+https://github.com/rust-lang/crates.io-index" 3017 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3018 | 3019 | [[package]] 3020 | name = "wasm-bindgen" 3021 | version = "0.2.84" 3022 | source = "registry+https://github.com/rust-lang/crates.io-index" 3023 | checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" 3024 | dependencies = [ 3025 | "cfg-if", 3026 | "wasm-bindgen-macro", 3027 | ] 3028 | 3029 | [[package]] 3030 | name = "wasm-bindgen-backend" 3031 | version = "0.2.84" 3032 | source = "registry+https://github.com/rust-lang/crates.io-index" 3033 | checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" 3034 | dependencies = [ 3035 | "bumpalo", 3036 | "log", 3037 | "once_cell", 3038 | "proc-macro2", 3039 | "quote", 3040 | "syn", 3041 | "wasm-bindgen-shared", 3042 | ] 3043 | 3044 | [[package]] 3045 | name = "wasm-bindgen-futures" 3046 | version = "0.4.34" 3047 | source = "registry+https://github.com/rust-lang/crates.io-index" 3048 | checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" 3049 | dependencies = [ 3050 | "cfg-if", 3051 | "js-sys", 3052 | "wasm-bindgen", 3053 | "web-sys", 3054 | ] 3055 | 3056 | [[package]] 3057 | name = "wasm-bindgen-macro" 3058 | version = "0.2.84" 3059 | source = "registry+https://github.com/rust-lang/crates.io-index" 3060 | checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" 3061 | dependencies = [ 3062 | "quote", 3063 | "wasm-bindgen-macro-support", 3064 | ] 3065 | 3066 | [[package]] 3067 | name = "wasm-bindgen-macro-support" 3068 | version = "0.2.84" 3069 | source = "registry+https://github.com/rust-lang/crates.io-index" 3070 | checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" 3071 | dependencies = [ 3072 | "proc-macro2", 3073 | "quote", 3074 | "syn", 3075 | "wasm-bindgen-backend", 3076 | "wasm-bindgen-shared", 3077 | ] 3078 | 3079 | [[package]] 3080 | name = "wasm-bindgen-shared" 3081 | version = "0.2.84" 3082 | source = "registry+https://github.com/rust-lang/crates.io-index" 3083 | checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" 3084 | 3085 | [[package]] 3086 | name = "web-sys" 3087 | version = "0.3.61" 3088 | source = "registry+https://github.com/rust-lang/crates.io-index" 3089 | checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" 3090 | dependencies = [ 3091 | "js-sys", 3092 | "wasm-bindgen", 3093 | ] 3094 | 3095 | [[package]] 3096 | name = "webkit2gtk" 3097 | version = "0.18.2" 3098 | source = "registry+https://github.com/rust-lang/crates.io-index" 3099 | checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" 3100 | dependencies = [ 3101 | "bitflags", 3102 | "cairo-rs", 3103 | "gdk", 3104 | "gdk-sys", 3105 | "gio", 3106 | "gio-sys", 3107 | "glib", 3108 | "glib-sys", 3109 | "gobject-sys", 3110 | "gtk", 3111 | "gtk-sys", 3112 | "javascriptcore-rs", 3113 | "libc", 3114 | "once_cell", 3115 | "soup2", 3116 | "webkit2gtk-sys", 3117 | ] 3118 | 3119 | [[package]] 3120 | name = "webkit2gtk-sys" 3121 | version = "0.18.0" 3122 | source = "registry+https://github.com/rust-lang/crates.io-index" 3123 | checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" 3124 | dependencies = [ 3125 | "atk-sys", 3126 | "bitflags", 3127 | "cairo-sys-rs", 3128 | "gdk-pixbuf-sys", 3129 | "gdk-sys", 3130 | "gio-sys", 3131 | "glib-sys", 3132 | "gobject-sys", 3133 | "gtk-sys", 3134 | "javascriptcore-rs-sys", 3135 | "libc", 3136 | "pango-sys", 3137 | "pkg-config", 3138 | "soup2-sys", 3139 | "system-deps 6.0.3", 3140 | ] 3141 | 3142 | [[package]] 3143 | name = "webview2-com" 3144 | version = "0.19.1" 3145 | source = "registry+https://github.com/rust-lang/crates.io-index" 3146 | checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" 3147 | dependencies = [ 3148 | "webview2-com-macros", 3149 | "webview2-com-sys", 3150 | "windows 0.39.0", 3151 | "windows-implement", 3152 | ] 3153 | 3154 | [[package]] 3155 | name = "webview2-com-macros" 3156 | version = "0.6.0" 3157 | source = "registry+https://github.com/rust-lang/crates.io-index" 3158 | checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" 3159 | dependencies = [ 3160 | "proc-macro2", 3161 | "quote", 3162 | "syn", 3163 | ] 3164 | 3165 | [[package]] 3166 | name = "webview2-com-sys" 3167 | version = "0.19.0" 3168 | source = "registry+https://github.com/rust-lang/crates.io-index" 3169 | checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" 3170 | dependencies = [ 3171 | "regex", 3172 | "serde", 3173 | "serde_json", 3174 | "thiserror", 3175 | "windows 0.39.0", 3176 | "windows-bindgen", 3177 | "windows-metadata", 3178 | ] 3179 | 3180 | [[package]] 3181 | name = "winapi" 3182 | version = "0.3.9" 3183 | source = "registry+https://github.com/rust-lang/crates.io-index" 3184 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3185 | dependencies = [ 3186 | "winapi-i686-pc-windows-gnu", 3187 | "winapi-x86_64-pc-windows-gnu", 3188 | ] 3189 | 3190 | [[package]] 3191 | name = "winapi-i686-pc-windows-gnu" 3192 | version = "0.4.0" 3193 | source = "registry+https://github.com/rust-lang/crates.io-index" 3194 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3195 | 3196 | [[package]] 3197 | name = "winapi-util" 3198 | version = "0.1.5" 3199 | source = "registry+https://github.com/rust-lang/crates.io-index" 3200 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 3201 | dependencies = [ 3202 | "winapi", 3203 | ] 3204 | 3205 | [[package]] 3206 | name = "winapi-x86_64-pc-windows-gnu" 3207 | version = "0.4.0" 3208 | source = "registry+https://github.com/rust-lang/crates.io-index" 3209 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3210 | 3211 | [[package]] 3212 | name = "windows" 3213 | version = "0.37.0" 3214 | source = "registry+https://github.com/rust-lang/crates.io-index" 3215 | checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" 3216 | dependencies = [ 3217 | "windows_aarch64_msvc 0.37.0", 3218 | "windows_i686_gnu 0.37.0", 3219 | "windows_i686_msvc 0.37.0", 3220 | "windows_x86_64_gnu 0.37.0", 3221 | "windows_x86_64_msvc 0.37.0", 3222 | ] 3223 | 3224 | [[package]] 3225 | name = "windows" 3226 | version = "0.39.0" 3227 | source = "registry+https://github.com/rust-lang/crates.io-index" 3228 | checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" 3229 | dependencies = [ 3230 | "windows-implement", 3231 | "windows_aarch64_msvc 0.39.0", 3232 | "windows_i686_gnu 0.39.0", 3233 | "windows_i686_msvc 0.39.0", 3234 | "windows_x86_64_gnu 0.39.0", 3235 | "windows_x86_64_msvc 0.39.0", 3236 | ] 3237 | 3238 | [[package]] 3239 | name = "windows-bindgen" 3240 | version = "0.39.0" 3241 | source = "registry+https://github.com/rust-lang/crates.io-index" 3242 | checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" 3243 | dependencies = [ 3244 | "windows-metadata", 3245 | "windows-tokens", 3246 | ] 3247 | 3248 | [[package]] 3249 | name = "windows-implement" 3250 | version = "0.39.0" 3251 | source = "registry+https://github.com/rust-lang/crates.io-index" 3252 | checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" 3253 | dependencies = [ 3254 | "syn", 3255 | "windows-tokens", 3256 | ] 3257 | 3258 | [[package]] 3259 | name = "windows-metadata" 3260 | version = "0.39.0" 3261 | source = "registry+https://github.com/rust-lang/crates.io-index" 3262 | checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" 3263 | 3264 | [[package]] 3265 | name = "windows-sys" 3266 | version = "0.42.0" 3267 | source = "registry+https://github.com/rust-lang/crates.io-index" 3268 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 3269 | dependencies = [ 3270 | "windows_aarch64_gnullvm", 3271 | "windows_aarch64_msvc 0.42.1", 3272 | "windows_i686_gnu 0.42.1", 3273 | "windows_i686_msvc 0.42.1", 3274 | "windows_x86_64_gnu 0.42.1", 3275 | "windows_x86_64_gnullvm", 3276 | "windows_x86_64_msvc 0.42.1", 3277 | ] 3278 | 3279 | [[package]] 3280 | name = "windows-sys" 3281 | version = "0.45.0" 3282 | source = "registry+https://github.com/rust-lang/crates.io-index" 3283 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 3284 | dependencies = [ 3285 | "windows-targets", 3286 | ] 3287 | 3288 | [[package]] 3289 | name = "windows-targets" 3290 | version = "0.42.1" 3291 | source = "registry+https://github.com/rust-lang/crates.io-index" 3292 | checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" 3293 | dependencies = [ 3294 | "windows_aarch64_gnullvm", 3295 | "windows_aarch64_msvc 0.42.1", 3296 | "windows_i686_gnu 0.42.1", 3297 | "windows_i686_msvc 0.42.1", 3298 | "windows_x86_64_gnu 0.42.1", 3299 | "windows_x86_64_gnullvm", 3300 | "windows_x86_64_msvc 0.42.1", 3301 | ] 3302 | 3303 | [[package]] 3304 | name = "windows-tokens" 3305 | version = "0.39.0" 3306 | source = "registry+https://github.com/rust-lang/crates.io-index" 3307 | checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" 3308 | 3309 | [[package]] 3310 | name = "windows_aarch64_gnullvm" 3311 | version = "0.42.1" 3312 | source = "registry+https://github.com/rust-lang/crates.io-index" 3313 | checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" 3314 | 3315 | [[package]] 3316 | name = "windows_aarch64_msvc" 3317 | version = "0.37.0" 3318 | source = "registry+https://github.com/rust-lang/crates.io-index" 3319 | checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" 3320 | 3321 | [[package]] 3322 | name = "windows_aarch64_msvc" 3323 | version = "0.39.0" 3324 | source = "registry+https://github.com/rust-lang/crates.io-index" 3325 | checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" 3326 | 3327 | [[package]] 3328 | name = "windows_aarch64_msvc" 3329 | version = "0.42.1" 3330 | source = "registry+https://github.com/rust-lang/crates.io-index" 3331 | checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" 3332 | 3333 | [[package]] 3334 | name = "windows_i686_gnu" 3335 | version = "0.37.0" 3336 | source = "registry+https://github.com/rust-lang/crates.io-index" 3337 | checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" 3338 | 3339 | [[package]] 3340 | name = "windows_i686_gnu" 3341 | version = "0.39.0" 3342 | source = "registry+https://github.com/rust-lang/crates.io-index" 3343 | checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" 3344 | 3345 | [[package]] 3346 | name = "windows_i686_gnu" 3347 | version = "0.42.1" 3348 | source = "registry+https://github.com/rust-lang/crates.io-index" 3349 | checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" 3350 | 3351 | [[package]] 3352 | name = "windows_i686_msvc" 3353 | version = "0.37.0" 3354 | source = "registry+https://github.com/rust-lang/crates.io-index" 3355 | checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" 3356 | 3357 | [[package]] 3358 | name = "windows_i686_msvc" 3359 | version = "0.39.0" 3360 | source = "registry+https://github.com/rust-lang/crates.io-index" 3361 | checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" 3362 | 3363 | [[package]] 3364 | name = "windows_i686_msvc" 3365 | version = "0.42.1" 3366 | source = "registry+https://github.com/rust-lang/crates.io-index" 3367 | checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" 3368 | 3369 | [[package]] 3370 | name = "windows_x86_64_gnu" 3371 | version = "0.37.0" 3372 | source = "registry+https://github.com/rust-lang/crates.io-index" 3373 | checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" 3374 | 3375 | [[package]] 3376 | name = "windows_x86_64_gnu" 3377 | version = "0.39.0" 3378 | source = "registry+https://github.com/rust-lang/crates.io-index" 3379 | checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" 3380 | 3381 | [[package]] 3382 | name = "windows_x86_64_gnu" 3383 | version = "0.42.1" 3384 | source = "registry+https://github.com/rust-lang/crates.io-index" 3385 | checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" 3386 | 3387 | [[package]] 3388 | name = "windows_x86_64_gnullvm" 3389 | version = "0.42.1" 3390 | source = "registry+https://github.com/rust-lang/crates.io-index" 3391 | checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" 3392 | 3393 | [[package]] 3394 | name = "windows_x86_64_msvc" 3395 | version = "0.37.0" 3396 | source = "registry+https://github.com/rust-lang/crates.io-index" 3397 | checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" 3398 | 3399 | [[package]] 3400 | name = "windows_x86_64_msvc" 3401 | version = "0.39.0" 3402 | source = "registry+https://github.com/rust-lang/crates.io-index" 3403 | checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" 3404 | 3405 | [[package]] 3406 | name = "windows_x86_64_msvc" 3407 | version = "0.42.1" 3408 | source = "registry+https://github.com/rust-lang/crates.io-index" 3409 | checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" 3410 | 3411 | [[package]] 3412 | name = "winres" 3413 | version = "0.1.12" 3414 | source = "registry+https://github.com/rust-lang/crates.io-index" 3415 | checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c" 3416 | dependencies = [ 3417 | "toml", 3418 | ] 3419 | 3420 | [[package]] 3421 | name = "wry" 3422 | version = "0.23.4" 3423 | source = "registry+https://github.com/rust-lang/crates.io-index" 3424 | checksum = "4c1ad8e2424f554cc5bdebe8aa374ef5b433feff817aebabca0389961fc7ef98" 3425 | dependencies = [ 3426 | "base64", 3427 | "block", 3428 | "cocoa", 3429 | "core-graphics", 3430 | "crossbeam-channel", 3431 | "dunce", 3432 | "gdk", 3433 | "gio", 3434 | "glib", 3435 | "gtk", 3436 | "html5ever", 3437 | "http", 3438 | "kuchiki", 3439 | "libc", 3440 | "log", 3441 | "objc", 3442 | "objc_id", 3443 | "once_cell", 3444 | "serde", 3445 | "serde_json", 3446 | "sha2", 3447 | "soup2", 3448 | "tao", 3449 | "thiserror", 3450 | "url", 3451 | "webkit2gtk", 3452 | "webkit2gtk-sys", 3453 | "webview2-com", 3454 | "windows 0.39.0", 3455 | "windows-implement", 3456 | ] 3457 | 3458 | [[package]] 3459 | name = "x11" 3460 | version = "2.21.0" 3461 | source = "registry+https://github.com/rust-lang/crates.io-index" 3462 | checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" 3463 | dependencies = [ 3464 | "libc", 3465 | "pkg-config", 3466 | ] 3467 | 3468 | [[package]] 3469 | name = "x11-dl" 3470 | version = "2.21.0" 3471 | source = "registry+https://github.com/rust-lang/crates.io-index" 3472 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 3473 | dependencies = [ 3474 | "libc", 3475 | "once_cell", 3476 | "pkg-config", 3477 | ] 3478 | 3479 | [[package]] 3480 | name = "xattr" 3481 | version = "0.2.3" 3482 | source = "registry+https://github.com/rust-lang/crates.io-index" 3483 | checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" 3484 | dependencies = [ 3485 | "libc", 3486 | ] 3487 | --------------------------------------------------------------------------------