├── .DS_Store ├── README.md ├── app-icon.png ├── babel.config.json ├── config ├── utils │ ├── getWebpackEntries.js │ └── resolve.js ├── webpack.analyzer.js ├── webpack.base.js ├── webpack.dev.js ├── webpack.prod.js └── webpack.qa.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── src-tauri ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── build.rs ├── icons │ ├── 128x128.png │ ├── 128x128@2x.png │ ├── 32x32.png │ ├── Square107x107Logo.png │ ├── Square142x142Logo.png │ ├── Square150x150Logo.png │ ├── Square284x284Logo.png │ ├── Square30x30Logo.png │ ├── Square310x310Logo.png │ ├── Square44x44Logo.png │ ├── Square71x71Logo.png │ ├── Square89x89Logo.png │ ├── StoreLogo.png │ ├── icon.icns │ ├── icon.ico │ └── icon.png ├── src │ └── main.rs └── tauri.conf.json ├── src ├── assets │ ├── css │ │ └── global.css │ └── images │ │ ├── preview1.png │ │ ├── preview2.png │ │ ├── preview3.png │ │ ├── preview4.jpg │ │ └── preview5.jpg ├── components │ └── LazyLoading │ │ └── index.tsx ├── declaration.d.ts ├── index.html ├── index.tsx ├── router │ ├── constans.tsx │ ├── index.tsx │ └── routeList.tsx ├── screen │ └── home │ │ ├── components │ │ ├── Generate │ │ │ ├── components │ │ │ │ ├── AddServerPop │ │ │ │ │ └── index.tsx │ │ │ │ ├── CustomRequestOption │ │ │ │ │ └── index.tsx │ │ │ │ └── OnlyDataExport │ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ └── Setting │ │ │ ├── index.tsx │ │ │ └── styles.css │ │ └── index.tsx ├── store │ ├── constants.ts │ └── globalStore.tsx └── utils │ ├── FetchRequest.ts │ ├── Parser.ts │ └── fileUtls.ts ├── tailwind.config.js ├── tsconfig.json └── yarn.lock /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # apifox-tool 导出 TypeScript 的接口数据定义 2 | 3 | 根据 apifox 导出的 swagger 格式的 json 文件,导出 TypeScript 的接口和接口参数数据定义。 4 | 5 | ![预览](/src/assets/images/preview1.png) 6 | ![预览](/src/assets/images/preview2.png) 7 | ![预览](/src/assets/images/preview3.png) 8 | 9 | ![生成的代码示例](/src/assets/images/preview4.jpg) 10 | ![生成的代码示例](/src/assets/images/preview5.jpg) 11 | 12 | ## 安装 13 | 14 | release 里有编译好的安装包文件,直接下载安装即可。 也可以自行下载源码编译。 15 | -------------------------------------------------------------------------------- /app-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/app-icon.png -------------------------------------------------------------------------------- /babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [["react-app", { "flow": false, "runtime": "automatic" }]] 3 | } 4 | -------------------------------------------------------------------------------- /config/utils/getWebpackEntries.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | /** 5 | * 6 | * @param root {string} 7 | * @returns {string[]} 8 | */ 9 | const getHTMLFiles = (root) => { 10 | /** 11 | * @type {string[]} 12 | */ 13 | const result = []; 14 | /** 15 | * 16 | * @param file {string} 17 | */ 18 | const getFile = (file) => { 19 | if (fs.statSync(file).isDirectory()) { 20 | const children = fs.readdirSync(file); 21 | children.forEach((item) => { 22 | getFile(path.join(file, item)); 23 | }); 24 | return; 25 | } 26 | 27 | if (path.extname(file) === '.html') { 28 | result.push(file); 29 | } 30 | }; 31 | getFile(root); 32 | return result; 33 | }; 34 | 35 | const entryExtensions = ['.js', '.ts', '.jsx', '.tsx']; 36 | /** 37 | * 38 | * @param htmlFile {string} 39 | * @returns {string} 40 | */ 41 | const getEntryByHTMLFile = (htmlFile) => { 42 | let result = ''; 43 | entryExtensions.some((ext) => { 44 | const file = htmlFile.replace('.html', ext); 45 | if (fs.existsSync(file)) { 46 | result = file; 47 | return true; 48 | } 49 | return false; 50 | }); 51 | return result; 52 | }; 53 | 54 | /** 55 | * 56 | * @param rootPath {string} 57 | * @returns {{entry: string, entryName: string, html: string}[]} 58 | */ 59 | const getWebpackEntries = (rootPath) => { 60 | const files = getHTMLFiles(rootPath); 61 | return files.map((file) => ({ 62 | entryName: path.relative(rootPath, file).replace('.html', ''), 63 | entry: getEntryByHTMLFile(file), 64 | html: file, 65 | })); 66 | }; 67 | 68 | module.exports = { getWebpackEntries }; 69 | -------------------------------------------------------------------------------- /config/utils/resolve.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | /** 4 | * @param name {string} 5 | * @returns {string} 6 | */ 7 | const resolve = (name) => { 8 | return path.resolve(__dirname, '../..', name); 9 | }; 10 | module.exports = { resolve }; 11 | -------------------------------------------------------------------------------- /config/webpack.analyzer.js: -------------------------------------------------------------------------------- 1 | const DotenvWebpackPlugin = require('dotenv-webpack'); 2 | const { WebpackConfiguration } = require('webpack-dev-server'); 3 | const { resolve } = require('./utils/resolve'); 4 | const { generate } = require('./webpack.base'); 5 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; 6 | 7 | const base = generate(false); 8 | const basePlugins = base.plugins; 9 | 10 | /** 11 | * 12 | * @type {WebpackConfiguration} 13 | */ 14 | const config = { 15 | ...base, 16 | devServer: { 17 | static: { 18 | directory: resolve('dist'), 19 | }, 20 | compress: true, 21 | host: 'local-ipv4', 22 | port: 8080, 23 | open: true, 24 | hot: true, 25 | historyApiFallback: true, 26 | }, 27 | plugins: [...basePlugins, new DotenvWebpackPlugin({ path: resolve('.env') }), new BundleAnalyzerPlugin()], 28 | }; 29 | 30 | module.exports = config; 31 | -------------------------------------------------------------------------------- /config/webpack.base.js: -------------------------------------------------------------------------------- 1 | const HtmlWebpackPlugin = require('html-webpack-plugin'); 2 | const { getWebpackEntries } = require('./utils/getWebpackEntries'); 3 | const { resolve } = require('./utils/resolve'); 4 | const MiniCssExtractPlugin = require('mini-css-extract-plugin'); 5 | const TerserPlugin = require('terser-webpack-plugin'); 6 | 7 | const os = require('os'); 8 | const clientRoot = resolve('src'); 9 | 10 | /** 11 | * genrate webpack config 12 | * @param isOptimization {boolean} 13 | * @publicpath same with .env file of ROUTER_BASE 14 | * @returns {import("webpack-dev-server").WebpackConfiguration} 15 | */ 16 | const generate = (isOptimization = false, publicpath = '') => { 17 | console.log(`webpack build, isOptimization:${isOptimization}`); 18 | /** 19 | * @type {import("webpack").EntryObject} 20 | */ 21 | const entries = {}; 22 | /** 23 | * @type {HtmlWebpackPlugin[]} 24 | */ 25 | const htmlPlugins = []; 26 | 27 | // vendor entry 28 | entries['vendor'] = ['react', 'react-dom']; 29 | 30 | // html entries 31 | const rawEntries = getWebpackEntries(clientRoot); 32 | // console.log('entry', rawEntries); 33 | rawEntries.forEach((entry) => { 34 | const entryName = entry.entryName; 35 | entries[entryName] = { 36 | import: [entry.entry], 37 | dependOn: 'vendor', 38 | }; 39 | 40 | /** 41 | * @type {import('html-webpack-plugin'.Options)} 42 | */ 43 | const htmlPluginOptions = { 44 | inject: true, 45 | filename: `${entry.entryName}.html`, 46 | template: entry.html, 47 | chunks: entryName ? ['vendor', entryName] : [], 48 | publicPath: publicpath, 49 | // favicon: resolve('src/favicon.ico'), 50 | }; 51 | htmlPlugins.push(new HtmlWebpackPlugin(htmlPluginOptions)); 52 | }); 53 | 54 | // html plugins 55 | return { 56 | mode: isOptimization ? 'production' : 'development', 57 | devtool: isOptimization ? false : 'source-map', 58 | entry: entries, 59 | output: { 60 | path: resolve('dist'), 61 | filename: isOptimization ? '[name].[contenthash:8].js' : '[name].bundle.js', 62 | chunkFilename: isOptimization ? '[name].[contenthash:8].chunk.js' : '[name].chunk.js', 63 | assetModuleFilename: '[name].[contenthash:8][ext][query]', 64 | }, 65 | plugins: [ 66 | ...htmlPlugins, 67 | new MiniCssExtractPlugin({ 68 | filename: 'css/[name].[contenthash:8].css', 69 | chunkFilename: 'css/[id][name].[contenthash:8].chunk.css', 70 | }), 71 | ], 72 | resolve: { 73 | extensions: ['.js', '.jsx', '.ts', '.tsx'], 74 | alias: { 75 | '@': clientRoot, 76 | }, 77 | }, 78 | module: { 79 | rules: [ 80 | { 81 | test: /\.(png|jpg|jpeg|gif|woff|woff2|eot|ttf|mp3|webp)$/, 82 | type: 'asset', 83 | parser: { 84 | dataUrlCondition: { 85 | maxSize: 1024, // 1kb 86 | }, 87 | }, 88 | }, 89 | { test: /\.([cm]?ts|tsx)$/, loader: 'ts-loader' }, 90 | { 91 | test: /\.(js|jsx)$/, 92 | loader: 'babel-loader', 93 | resolve: { 94 | fullySpecified: false, 95 | }, 96 | options: { 97 | cacheDirectory: true, 98 | }, 99 | }, 100 | { 101 | test: /\.css$/, 102 | use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'], 103 | include: [resolve('src/assets/css/global.css'), resolve('node_modules')], 104 | }, 105 | { 106 | test: /\.less$/, 107 | use: [ 108 | MiniCssExtractPlugin.loader, 109 | { 110 | loader: 'css-loader', 111 | options: { 112 | importLoaders: 3, 113 | modules: { 114 | localIdentName: '[name]_[local]-[hash:8]', 115 | }, 116 | }, 117 | }, 118 | 'less-loader', 119 | ], 120 | }, 121 | { 122 | test: /\.css$/, 123 | use: [ 124 | { 125 | loader: MiniCssExtractPlugin.loader, 126 | options: { 127 | esModule: false, 128 | }, 129 | }, 130 | { 131 | loader: 'css-loader', 132 | options: { 133 | importLoaders: 1, 134 | modules: { 135 | localIdentName: '[name]_[local]-[hash:8]', 136 | }, 137 | }, 138 | }, 139 | 'postcss-loader', 140 | ], 141 | include: [clientRoot], 142 | exclude: [resolve('src/assets/css/global.css')], 143 | }, 144 | { 145 | test: /\.s[ac]ss$/i, 146 | use: [ 147 | MiniCssExtractPlugin.loader, 148 | { 149 | loader: 'css-loader', 150 | options: { 151 | importLoaders: 3, 152 | modules: { 153 | localIdentName: '[name]_[local]-[hash:8]', 154 | }, 155 | }, 156 | }, 157 | 'sass-loader', 158 | ], 159 | }, 160 | { 161 | test: /\.svg$/i, 162 | type: 'asset', 163 | resourceQuery: /url/, 164 | }, 165 | { 166 | test: /\.svg$/i, 167 | issuer: /\.[jt]sx?$/, 168 | resourceQuery: { not: [/url/] }, 169 | use: ['@svgr/webpack'], 170 | }, 171 | ], 172 | }, 173 | optimization: { 174 | minimize: isOptimization, 175 | minimizer: isOptimization 176 | ? [ 177 | new TerserPlugin({ 178 | parallel: os.cpus().length, 179 | extractComments: false, 180 | terserOptions: { 181 | output: { 182 | comments: false, 183 | }, 184 | mangle: true, 185 | compress: { 186 | drop_console: false, 187 | }, 188 | }, 189 | }), 190 | ] 191 | : undefined, 192 | }, 193 | }; 194 | }; 195 | 196 | module.exports = { generate }; 197 | -------------------------------------------------------------------------------- /config/webpack.dev.js: -------------------------------------------------------------------------------- 1 | const DotenvWebpackPlugin = require('dotenv-webpack'); 2 | const { WebpackConfiguration } = require('webpack-dev-server'); 3 | const { resolve } = require('./utils/resolve'); 4 | const { generate } = require('./webpack.base'); 5 | 6 | // 此处的publicpath 与 .env对应的环境内 ROUTER_BASE 一致 7 | const base = generate(false); 8 | const basePlugins = base.plugins; 9 | 10 | /** 11 | * @type {WebpackConfiguration} 12 | */ 13 | const config = { 14 | ...base, 15 | devServer: { 16 | static: { 17 | directory: resolve('dist'), 18 | }, 19 | compress: true, 20 | open: true, 21 | hot: true, 22 | historyApiFallback: true, 23 | port: '3000', 24 | // host: 'local-ipv4', //关闭此选项,则是使用localhost 25 | // proxy: { 26 | // '/api/question': { 27 | // target: 'http://localhost:3000/api/question', 28 | // pathRewrite: { '^/api/question': '' }, 29 | // changeOrigin: true, 30 | // }, 31 | // }, 32 | }, 33 | plugins: [...basePlugins, new DotenvWebpackPlugin({ path: resolve('.env') })], 34 | }; 35 | 36 | module.exports = config; 37 | -------------------------------------------------------------------------------- /config/webpack.prod.js: -------------------------------------------------------------------------------- 1 | const DotenvWebpackPlugin = require('dotenv-webpack'); 2 | const { WebpackConfiguration } = require('webpack-dev-server'); 3 | const { resolve } = require('./utils/resolve'); 4 | const { generate } = require('./webpack.base'); 5 | 6 | // 此处的publicpath 与 .env对应的环境内 ROUTER_BASE 一致 7 | const base = generate(true, ''); 8 | const basePlugins = base.plugins; 9 | 10 | /** 11 | * 12 | * @type {WebpackConfiguration} 13 | */ 14 | const config = { 15 | ...base, 16 | plugins: [...basePlugins, new DotenvWebpackPlugin({ path: resolve('.env.prod') })], 17 | }; 18 | 19 | module.exports = config; 20 | -------------------------------------------------------------------------------- /config/webpack.qa.js: -------------------------------------------------------------------------------- 1 | const DotenvWebpackPlugin = require('dotenv-webpack'); 2 | const { WebpackConfiguration } = require('webpack-dev-server'); 3 | const { resolve } = require('./utils/resolve'); 4 | const { generate } = require('./webpack.base'); 5 | 6 | // 此处的publicpath 与 .env对应的环境内 ROUTER_BASE 一致 7 | const base = generate(true, '/qa'); 8 | const basePlugins = base.plugins; 9 | 10 | /** 11 | * 12 | * @type {WebpackConfiguration} 13 | */ 14 | const config = { 15 | ...base, 16 | plugins: [...basePlugins, new DotenvWebpackPlugin({ path: resolve('.env.qa') })], 17 | }; 18 | 19 | module.exports = config; 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-template", 3 | "version": "1.0.2", 4 | "description": "react app template with react-router, tailwindcss and more", 5 | "main": "index.js", 6 | "scripts": { 7 | "clean": "rimraf dist/", 8 | "start": "cross-env NODE_ENV=development webpack serve --config config/webpack.dev.js", 9 | "build:prod": "cross-env NODE_ENV=production webpack --config config/webpack.prod.js", 10 | "analyzer": "webpack --config config/webpack.analyzer.js --progress", 11 | "lint": "eslint src/ --fix" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "dependencies": { 16 | "@yangqiming/ts-utils-svp": "^1.0.8", 17 | "@arco-design/web-react": "^2.54.3", 18 | "@shm-open/utilities": "^1.13.3", 19 | "@svgr/webpack": "^7.0.0", 20 | "@tauri-apps/api": "^1.5.1", 21 | "axios": "^1.4.0", 22 | "classnames": "^2.3.2", 23 | "dayjs": "^1.11.7", 24 | "react": "^18.2.0", 25 | "react-dom": "^18.2.0", 26 | "react-router": "^6.8.1", 27 | "react-router-dom": "^6.8.1" 28 | }, 29 | "devDependencies": { 30 | "@babel/core": "^7.18.13", 31 | "@babel/plugin-transform-runtime": "^7.18.10", 32 | "@shm-open/eslint-config-bundle": "^1.9.13", 33 | "@tauri-apps/cli": "^1.5.6", 34 | "@types/dotenv-webpack": "^7.0.3", 35 | "@types/node": "^18.7.14", 36 | "@types/react": "^18.0.18", 37 | "@types/react-copy-to-clipboard": "^5.0.4", 38 | "@types/react-dom": "^18.0.6", 39 | "autoprefixer": "^10.4.8", 40 | "babel-loader": "^8.2.5", 41 | "babel-preset-react-app": "^10.0.1", 42 | "core-js": "^3.25.0", 43 | "cross-env": "^7.0.3", 44 | "css-loader": "^6.7.1", 45 | "dotenv-webpack": "^8.0.1", 46 | "eslint-plugin-react-hooks": "^4.6.0", 47 | "html-webpack-plugin": "^5.5.0", 48 | "http-proxy-middleware": "^2.0.6", 49 | "less": "^4.1.3", 50 | "less-loader": "^11.1.0", 51 | "mini-css-extract-plugin": "^2.6.1", 52 | "postcss": "^8.4.16", 53 | "postcss-loader": "^7.0.1", 54 | "react-app-rewired": "^2.2.1", 55 | "rimraf": "^3.0.2", 56 | "sass": "^1.63.6", 57 | "sass-loader": "^13.2.0", 58 | "tailwindcss": "^3.2.7", 59 | "terser-webpack-plugin": "^5.3.6", 60 | "ts-loader": "^9.4.2", 61 | "typescript": "^4.8.2", 62 | "webpack": "^5.74.0", 63 | "webpack-bundle-analyzer": "^4.6.1", 64 | "webpack-cli": "^4.10.0", 65 | "webpack-dev-server": "^4.10.1" 66 | }, 67 | "browserslist": [ 68 | "> 2%", 69 | "last 2 versions", 70 | "not ie <= 8" 71 | ] 72 | } -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable global-require */ 2 | module.exports = { 3 | plugins: [require('tailwindcss'), require('autoprefixer')], 4 | }; 5 | -------------------------------------------------------------------------------- /src-tauri/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | -------------------------------------------------------------------------------- /src-tauri/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.21.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "aho-corasick" 22 | version = "1.1.2" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 25 | dependencies = [ 26 | "memchr", 27 | ] 28 | 29 | [[package]] 30 | name = "alloc-no-stdlib" 31 | version = "2.0.4" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 34 | 35 | [[package]] 36 | name = "alloc-stdlib" 37 | version = "0.2.2" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 40 | dependencies = [ 41 | "alloc-no-stdlib", 42 | ] 43 | 44 | [[package]] 45 | name = "android-tzdata" 46 | version = "0.1.1" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 49 | 50 | [[package]] 51 | name = "android_system_properties" 52 | version = "0.1.5" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 55 | dependencies = [ 56 | "libc", 57 | ] 58 | 59 | [[package]] 60 | name = "anyhow" 61 | version = "1.0.75" 62 | source = "registry+https://github.com/rust-lang/crates.io-index" 63 | checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" 64 | 65 | [[package]] 66 | name = "app" 67 | version = "0.1.0" 68 | dependencies = [ 69 | "serde", 70 | "serde_json", 71 | "tauri", 72 | "tauri-build", 73 | ] 74 | 75 | [[package]] 76 | name = "async-broadcast" 77 | version = "0.5.1" 78 | source = "registry+https://github.com/rust-lang/crates.io-index" 79 | checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" 80 | dependencies = [ 81 | "event-listener 2.5.3", 82 | "futures-core", 83 | ] 84 | 85 | [[package]] 86 | name = "async-channel" 87 | version = "2.1.1" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" 90 | dependencies = [ 91 | "concurrent-queue", 92 | "event-listener 4.0.3", 93 | "event-listener-strategy", 94 | "futures-core", 95 | "pin-project-lite", 96 | ] 97 | 98 | [[package]] 99 | name = "async-executor" 100 | version = "1.8.0" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" 103 | dependencies = [ 104 | "async-lock 3.3.0", 105 | "async-task", 106 | "concurrent-queue", 107 | "fastrand 2.0.1", 108 | "futures-lite 2.2.0", 109 | "slab", 110 | ] 111 | 112 | [[package]] 113 | name = "async-fs" 114 | version = "1.6.0" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" 117 | dependencies = [ 118 | "async-lock 2.8.0", 119 | "autocfg", 120 | "blocking", 121 | "futures-lite 1.13.0", 122 | ] 123 | 124 | [[package]] 125 | name = "async-io" 126 | version = "1.13.0" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" 129 | dependencies = [ 130 | "async-lock 2.8.0", 131 | "autocfg", 132 | "cfg-if", 133 | "concurrent-queue", 134 | "futures-lite 1.13.0", 135 | "log", 136 | "parking", 137 | "polling 2.8.0", 138 | "rustix 0.37.27", 139 | "slab", 140 | "socket2", 141 | "waker-fn", 142 | ] 143 | 144 | [[package]] 145 | name = "async-io" 146 | version = "2.3.1" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" 149 | dependencies = [ 150 | "async-lock 3.3.0", 151 | "cfg-if", 152 | "concurrent-queue", 153 | "futures-io", 154 | "futures-lite 2.2.0", 155 | "parking", 156 | "polling 3.3.2", 157 | "rustix 0.38.21", 158 | "slab", 159 | "tracing", 160 | "windows-sys 0.52.0", 161 | ] 162 | 163 | [[package]] 164 | name = "async-lock" 165 | version = "2.8.0" 166 | source = "registry+https://github.com/rust-lang/crates.io-index" 167 | checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" 168 | dependencies = [ 169 | "event-listener 2.5.3", 170 | ] 171 | 172 | [[package]] 173 | name = "async-lock" 174 | version = "3.3.0" 175 | source = "registry+https://github.com/rust-lang/crates.io-index" 176 | checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" 177 | dependencies = [ 178 | "event-listener 4.0.3", 179 | "event-listener-strategy", 180 | "pin-project-lite", 181 | ] 182 | 183 | [[package]] 184 | name = "async-process" 185 | version = "1.8.1" 186 | source = "registry+https://github.com/rust-lang/crates.io-index" 187 | checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" 188 | dependencies = [ 189 | "async-io 1.13.0", 190 | "async-lock 2.8.0", 191 | "async-signal", 192 | "blocking", 193 | "cfg-if", 194 | "event-listener 3.1.0", 195 | "futures-lite 1.13.0", 196 | "rustix 0.38.21", 197 | "windows-sys 0.48.0", 198 | ] 199 | 200 | [[package]] 201 | name = "async-recursion" 202 | version = "1.0.5" 203 | source = "registry+https://github.com/rust-lang/crates.io-index" 204 | checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" 205 | dependencies = [ 206 | "proc-macro2", 207 | "quote", 208 | "syn 2.0.38", 209 | ] 210 | 211 | [[package]] 212 | name = "async-signal" 213 | version = "0.2.5" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" 216 | dependencies = [ 217 | "async-io 2.3.1", 218 | "async-lock 2.8.0", 219 | "atomic-waker", 220 | "cfg-if", 221 | "futures-core", 222 | "futures-io", 223 | "rustix 0.38.21", 224 | "signal-hook-registry", 225 | "slab", 226 | "windows-sys 0.48.0", 227 | ] 228 | 229 | [[package]] 230 | name = "async-task" 231 | version = "4.7.0" 232 | source = "registry+https://github.com/rust-lang/crates.io-index" 233 | checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" 234 | 235 | [[package]] 236 | name = "async-trait" 237 | version = "0.1.76" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "531b97fb4cd3dfdce92c35dedbfdc1f0b9d8091c8ca943d6dae340ef5012d514" 240 | dependencies = [ 241 | "proc-macro2", 242 | "quote", 243 | "syn 2.0.38", 244 | ] 245 | 246 | [[package]] 247 | name = "atk" 248 | version = "0.15.1" 249 | source = "registry+https://github.com/rust-lang/crates.io-index" 250 | checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" 251 | dependencies = [ 252 | "atk-sys", 253 | "bitflags 1.3.2", 254 | "glib", 255 | "libc", 256 | ] 257 | 258 | [[package]] 259 | name = "atk-sys" 260 | version = "0.15.1" 261 | source = "registry+https://github.com/rust-lang/crates.io-index" 262 | checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" 263 | dependencies = [ 264 | "glib-sys", 265 | "gobject-sys", 266 | "libc", 267 | "system-deps 6.1.2", 268 | ] 269 | 270 | [[package]] 271 | name = "atomic-waker" 272 | version = "1.1.2" 273 | source = "registry+https://github.com/rust-lang/crates.io-index" 274 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 275 | 276 | [[package]] 277 | name = "autocfg" 278 | version = "1.1.0" 279 | source = "registry+https://github.com/rust-lang/crates.io-index" 280 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 281 | 282 | [[package]] 283 | name = "backtrace" 284 | version = "0.3.69" 285 | source = "registry+https://github.com/rust-lang/crates.io-index" 286 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 287 | dependencies = [ 288 | "addr2line", 289 | "cc", 290 | "cfg-if", 291 | "libc", 292 | "miniz_oxide", 293 | "object", 294 | "rustc-demangle", 295 | ] 296 | 297 | [[package]] 298 | name = "base64" 299 | version = "0.13.1" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 302 | 303 | [[package]] 304 | name = "base64" 305 | version = "0.21.5" 306 | source = "registry+https://github.com/rust-lang/crates.io-index" 307 | checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" 308 | 309 | [[package]] 310 | name = "bitflags" 311 | version = "1.3.2" 312 | source = "registry+https://github.com/rust-lang/crates.io-index" 313 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 314 | 315 | [[package]] 316 | name = "bitflags" 317 | version = "2.4.1" 318 | source = "registry+https://github.com/rust-lang/crates.io-index" 319 | checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 320 | 321 | [[package]] 322 | name = "block" 323 | version = "0.1.6" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 326 | 327 | [[package]] 328 | name = "block-buffer" 329 | version = "0.10.4" 330 | source = "registry+https://github.com/rust-lang/crates.io-index" 331 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 332 | dependencies = [ 333 | "generic-array", 334 | ] 335 | 336 | [[package]] 337 | name = "blocking" 338 | version = "1.5.1" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" 341 | dependencies = [ 342 | "async-channel", 343 | "async-lock 3.3.0", 344 | "async-task", 345 | "fastrand 2.0.1", 346 | "futures-io", 347 | "futures-lite 2.2.0", 348 | "piper", 349 | "tracing", 350 | ] 351 | 352 | [[package]] 353 | name = "brotli" 354 | version = "3.4.0" 355 | source = "registry+https://github.com/rust-lang/crates.io-index" 356 | checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" 357 | dependencies = [ 358 | "alloc-no-stdlib", 359 | "alloc-stdlib", 360 | "brotli-decompressor", 361 | ] 362 | 363 | [[package]] 364 | name = "brotli-decompressor" 365 | version = "2.5.0" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" 368 | dependencies = [ 369 | "alloc-no-stdlib", 370 | "alloc-stdlib", 371 | ] 372 | 373 | [[package]] 374 | name = "bstr" 375 | version = "1.7.0" 376 | source = "registry+https://github.com/rust-lang/crates.io-index" 377 | checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019" 378 | dependencies = [ 379 | "memchr", 380 | "serde", 381 | ] 382 | 383 | [[package]] 384 | name = "bumpalo" 385 | version = "3.14.0" 386 | source = "registry+https://github.com/rust-lang/crates.io-index" 387 | checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" 388 | 389 | [[package]] 390 | name = "bytemuck" 391 | version = "1.14.0" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" 394 | 395 | [[package]] 396 | name = "byteorder" 397 | version = "1.5.0" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 400 | 401 | [[package]] 402 | name = "bytes" 403 | version = "1.5.0" 404 | source = "registry+https://github.com/rust-lang/crates.io-index" 405 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 406 | 407 | [[package]] 408 | name = "cairo-rs" 409 | version = "0.15.12" 410 | source = "registry+https://github.com/rust-lang/crates.io-index" 411 | checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" 412 | dependencies = [ 413 | "bitflags 1.3.2", 414 | "cairo-sys-rs", 415 | "glib", 416 | "libc", 417 | "thiserror", 418 | ] 419 | 420 | [[package]] 421 | name = "cairo-sys-rs" 422 | version = "0.15.1" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" 425 | dependencies = [ 426 | "glib-sys", 427 | "libc", 428 | "system-deps 6.1.2", 429 | ] 430 | 431 | [[package]] 432 | name = "cargo_toml" 433 | version = "0.15.3" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" 436 | dependencies = [ 437 | "serde", 438 | "toml 0.7.8", 439 | ] 440 | 441 | [[package]] 442 | name = "cc" 443 | version = "1.0.83" 444 | source = "registry+https://github.com/rust-lang/crates.io-index" 445 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 446 | dependencies = [ 447 | "libc", 448 | ] 449 | 450 | [[package]] 451 | name = "cesu8" 452 | version = "1.1.0" 453 | source = "registry+https://github.com/rust-lang/crates.io-index" 454 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 455 | 456 | [[package]] 457 | name = "cfb" 458 | version = "0.7.3" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" 461 | dependencies = [ 462 | "byteorder", 463 | "fnv", 464 | "uuid", 465 | ] 466 | 467 | [[package]] 468 | name = "cfg-expr" 469 | version = "0.9.1" 470 | source = "registry+https://github.com/rust-lang/crates.io-index" 471 | checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" 472 | dependencies = [ 473 | "smallvec", 474 | ] 475 | 476 | [[package]] 477 | name = "cfg-expr" 478 | version = "0.15.5" 479 | source = "registry+https://github.com/rust-lang/crates.io-index" 480 | checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" 481 | dependencies = [ 482 | "smallvec", 483 | "target-lexicon", 484 | ] 485 | 486 | [[package]] 487 | name = "cfg-if" 488 | version = "1.0.0" 489 | source = "registry+https://github.com/rust-lang/crates.io-index" 490 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 491 | 492 | [[package]] 493 | name = "chrono" 494 | version = "0.4.31" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" 497 | dependencies = [ 498 | "android-tzdata", 499 | "iana-time-zone", 500 | "num-traits", 501 | "serde", 502 | "windows-targets 0.48.5", 503 | ] 504 | 505 | [[package]] 506 | name = "cocoa" 507 | version = "0.24.1" 508 | source = "registry+https://github.com/rust-lang/crates.io-index" 509 | checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" 510 | dependencies = [ 511 | "bitflags 1.3.2", 512 | "block", 513 | "cocoa-foundation", 514 | "core-foundation", 515 | "core-graphics", 516 | "foreign-types", 517 | "libc", 518 | "objc", 519 | ] 520 | 521 | [[package]] 522 | name = "cocoa-foundation" 523 | version = "0.1.2" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" 526 | dependencies = [ 527 | "bitflags 1.3.2", 528 | "block", 529 | "core-foundation", 530 | "core-graphics-types", 531 | "libc", 532 | "objc", 533 | ] 534 | 535 | [[package]] 536 | name = "color_quant" 537 | version = "1.1.0" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 540 | 541 | [[package]] 542 | name = "combine" 543 | version = "4.6.6" 544 | source = "registry+https://github.com/rust-lang/crates.io-index" 545 | checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" 546 | dependencies = [ 547 | "bytes", 548 | "memchr", 549 | ] 550 | 551 | [[package]] 552 | name = "concurrent-queue" 553 | version = "2.4.0" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" 556 | dependencies = [ 557 | "crossbeam-utils", 558 | ] 559 | 560 | [[package]] 561 | name = "convert_case" 562 | version = "0.4.0" 563 | source = "registry+https://github.com/rust-lang/crates.io-index" 564 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 565 | 566 | [[package]] 567 | name = "core-foundation" 568 | version = "0.9.3" 569 | source = "registry+https://github.com/rust-lang/crates.io-index" 570 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 571 | dependencies = [ 572 | "core-foundation-sys", 573 | "libc", 574 | ] 575 | 576 | [[package]] 577 | name = "core-foundation-sys" 578 | version = "0.8.4" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 581 | 582 | [[package]] 583 | name = "core-graphics" 584 | version = "0.22.3" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" 587 | dependencies = [ 588 | "bitflags 1.3.2", 589 | "core-foundation", 590 | "core-graphics-types", 591 | "foreign-types", 592 | "libc", 593 | ] 594 | 595 | [[package]] 596 | name = "core-graphics-types" 597 | version = "0.1.2" 598 | source = "registry+https://github.com/rust-lang/crates.io-index" 599 | checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" 600 | dependencies = [ 601 | "bitflags 1.3.2", 602 | "core-foundation", 603 | "libc", 604 | ] 605 | 606 | [[package]] 607 | name = "cpufeatures" 608 | version = "0.2.11" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" 611 | dependencies = [ 612 | "libc", 613 | ] 614 | 615 | [[package]] 616 | name = "crc32fast" 617 | version = "1.3.2" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 620 | dependencies = [ 621 | "cfg-if", 622 | ] 623 | 624 | [[package]] 625 | name = "crossbeam-channel" 626 | version = "0.5.8" 627 | source = "registry+https://github.com/rust-lang/crates.io-index" 628 | checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" 629 | dependencies = [ 630 | "cfg-if", 631 | "crossbeam-utils", 632 | ] 633 | 634 | [[package]] 635 | name = "crossbeam-utils" 636 | version = "0.8.16" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" 639 | dependencies = [ 640 | "cfg-if", 641 | ] 642 | 643 | [[package]] 644 | name = "crypto-common" 645 | version = "0.1.6" 646 | source = "registry+https://github.com/rust-lang/crates.io-index" 647 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 648 | dependencies = [ 649 | "generic-array", 650 | "typenum", 651 | ] 652 | 653 | [[package]] 654 | name = "cssparser" 655 | version = "0.27.2" 656 | source = "registry+https://github.com/rust-lang/crates.io-index" 657 | checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" 658 | dependencies = [ 659 | "cssparser-macros", 660 | "dtoa-short", 661 | "itoa 0.4.8", 662 | "matches", 663 | "phf 0.8.0", 664 | "proc-macro2", 665 | "quote", 666 | "smallvec", 667 | "syn 1.0.109", 668 | ] 669 | 670 | [[package]] 671 | name = "cssparser-macros" 672 | version = "0.6.1" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" 675 | dependencies = [ 676 | "quote", 677 | "syn 2.0.38", 678 | ] 679 | 680 | [[package]] 681 | name = "ctor" 682 | version = "0.1.26" 683 | source = "registry+https://github.com/rust-lang/crates.io-index" 684 | checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 685 | dependencies = [ 686 | "quote", 687 | "syn 1.0.109", 688 | ] 689 | 690 | [[package]] 691 | name = "darling" 692 | version = "0.20.3" 693 | source = "registry+https://github.com/rust-lang/crates.io-index" 694 | checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" 695 | dependencies = [ 696 | "darling_core", 697 | "darling_macro", 698 | ] 699 | 700 | [[package]] 701 | name = "darling_core" 702 | version = "0.20.3" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" 705 | dependencies = [ 706 | "fnv", 707 | "ident_case", 708 | "proc-macro2", 709 | "quote", 710 | "strsim", 711 | "syn 2.0.38", 712 | ] 713 | 714 | [[package]] 715 | name = "darling_macro" 716 | version = "0.20.3" 717 | source = "registry+https://github.com/rust-lang/crates.io-index" 718 | checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" 719 | dependencies = [ 720 | "darling_core", 721 | "quote", 722 | "syn 2.0.38", 723 | ] 724 | 725 | [[package]] 726 | name = "deranged" 727 | version = "0.3.9" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" 730 | dependencies = [ 731 | "powerfmt", 732 | "serde", 733 | ] 734 | 735 | [[package]] 736 | name = "derivative" 737 | version = "2.2.0" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 740 | dependencies = [ 741 | "proc-macro2", 742 | "quote", 743 | "syn 1.0.109", 744 | ] 745 | 746 | [[package]] 747 | name = "derive_more" 748 | version = "0.99.17" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 751 | dependencies = [ 752 | "convert_case", 753 | "proc-macro2", 754 | "quote", 755 | "rustc_version", 756 | "syn 1.0.109", 757 | ] 758 | 759 | [[package]] 760 | name = "digest" 761 | version = "0.10.7" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 764 | dependencies = [ 765 | "block-buffer", 766 | "crypto-common", 767 | ] 768 | 769 | [[package]] 770 | name = "dirs-next" 771 | version = "2.0.0" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 774 | dependencies = [ 775 | "cfg-if", 776 | "dirs-sys-next", 777 | ] 778 | 779 | [[package]] 780 | name = "dirs-sys-next" 781 | version = "0.1.2" 782 | source = "registry+https://github.com/rust-lang/crates.io-index" 783 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 784 | dependencies = [ 785 | "libc", 786 | "redox_users", 787 | "winapi", 788 | ] 789 | 790 | [[package]] 791 | name = "dispatch" 792 | version = "0.2.0" 793 | source = "registry+https://github.com/rust-lang/crates.io-index" 794 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 795 | 796 | [[package]] 797 | name = "dtoa" 798 | version = "1.0.9" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" 801 | 802 | [[package]] 803 | name = "dtoa-short" 804 | version = "0.3.4" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" 807 | dependencies = [ 808 | "dtoa", 809 | ] 810 | 811 | [[package]] 812 | name = "dunce" 813 | version = "1.0.4" 814 | source = "registry+https://github.com/rust-lang/crates.io-index" 815 | checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" 816 | 817 | [[package]] 818 | name = "embed-resource" 819 | version = "2.4.0" 820 | source = "registry+https://github.com/rust-lang/crates.io-index" 821 | checksum = "f54cc3e827ee1c3812239a9a41dede7b4d7d5d5464faa32d71bd7cba28ce2cb2" 822 | dependencies = [ 823 | "cc", 824 | "rustc_version", 825 | "toml 0.8.5", 826 | "vswhom", 827 | "winreg", 828 | ] 829 | 830 | [[package]] 831 | name = "embed_plist" 832 | version = "1.2.2" 833 | source = "registry+https://github.com/rust-lang/crates.io-index" 834 | checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" 835 | 836 | [[package]] 837 | name = "encoding_rs" 838 | version = "0.8.33" 839 | source = "registry+https://github.com/rust-lang/crates.io-index" 840 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 841 | dependencies = [ 842 | "cfg-if", 843 | ] 844 | 845 | [[package]] 846 | name = "enumflags2" 847 | version = "0.7.8" 848 | source = "registry+https://github.com/rust-lang/crates.io-index" 849 | checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" 850 | dependencies = [ 851 | "enumflags2_derive", 852 | "serde", 853 | ] 854 | 855 | [[package]] 856 | name = "enumflags2_derive" 857 | version = "0.7.8" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" 860 | dependencies = [ 861 | "proc-macro2", 862 | "quote", 863 | "syn 2.0.38", 864 | ] 865 | 866 | [[package]] 867 | name = "equivalent" 868 | version = "1.0.1" 869 | source = "registry+https://github.com/rust-lang/crates.io-index" 870 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 871 | 872 | [[package]] 873 | name = "errno" 874 | version = "0.3.5" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" 877 | dependencies = [ 878 | "libc", 879 | "windows-sys 0.48.0", 880 | ] 881 | 882 | [[package]] 883 | name = "event-listener" 884 | version = "2.5.3" 885 | source = "registry+https://github.com/rust-lang/crates.io-index" 886 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 887 | 888 | [[package]] 889 | name = "event-listener" 890 | version = "3.1.0" 891 | source = "registry+https://github.com/rust-lang/crates.io-index" 892 | checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" 893 | dependencies = [ 894 | "concurrent-queue", 895 | "parking", 896 | "pin-project-lite", 897 | ] 898 | 899 | [[package]] 900 | name = "event-listener" 901 | version = "4.0.3" 902 | source = "registry+https://github.com/rust-lang/crates.io-index" 903 | checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" 904 | dependencies = [ 905 | "concurrent-queue", 906 | "parking", 907 | "pin-project-lite", 908 | ] 909 | 910 | [[package]] 911 | name = "event-listener-strategy" 912 | version = "0.4.0" 913 | source = "registry+https://github.com/rust-lang/crates.io-index" 914 | checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" 915 | dependencies = [ 916 | "event-listener 4.0.3", 917 | "pin-project-lite", 918 | ] 919 | 920 | [[package]] 921 | name = "fastrand" 922 | version = "1.9.0" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 925 | dependencies = [ 926 | "instant", 927 | ] 928 | 929 | [[package]] 930 | name = "fastrand" 931 | version = "2.0.1" 932 | source = "registry+https://github.com/rust-lang/crates.io-index" 933 | checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 934 | 935 | [[package]] 936 | name = "fdeflate" 937 | version = "0.3.0" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" 940 | dependencies = [ 941 | "simd-adler32", 942 | ] 943 | 944 | [[package]] 945 | name = "field-offset" 946 | version = "0.3.6" 947 | source = "registry+https://github.com/rust-lang/crates.io-index" 948 | checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" 949 | dependencies = [ 950 | "memoffset 0.9.0", 951 | "rustc_version", 952 | ] 953 | 954 | [[package]] 955 | name = "filetime" 956 | version = "0.2.22" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" 959 | dependencies = [ 960 | "cfg-if", 961 | "libc", 962 | "redox_syscall 0.3.5", 963 | "windows-sys 0.48.0", 964 | ] 965 | 966 | [[package]] 967 | name = "flate2" 968 | version = "1.0.28" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" 971 | dependencies = [ 972 | "crc32fast", 973 | "miniz_oxide", 974 | ] 975 | 976 | [[package]] 977 | name = "fnv" 978 | version = "1.0.7" 979 | source = "registry+https://github.com/rust-lang/crates.io-index" 980 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 981 | 982 | [[package]] 983 | name = "foreign-types" 984 | version = "0.3.2" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 987 | dependencies = [ 988 | "foreign-types-shared", 989 | ] 990 | 991 | [[package]] 992 | name = "foreign-types-shared" 993 | version = "0.1.1" 994 | source = "registry+https://github.com/rust-lang/crates.io-index" 995 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 996 | 997 | [[package]] 998 | name = "form_urlencoded" 999 | version = "1.2.0" 1000 | source = "registry+https://github.com/rust-lang/crates.io-index" 1001 | checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" 1002 | dependencies = [ 1003 | "percent-encoding", 1004 | ] 1005 | 1006 | [[package]] 1007 | name = "futf" 1008 | version = "0.1.5" 1009 | source = "registry+https://github.com/rust-lang/crates.io-index" 1010 | checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 1011 | dependencies = [ 1012 | "mac", 1013 | "new_debug_unreachable", 1014 | ] 1015 | 1016 | [[package]] 1017 | name = "futures-channel" 1018 | version = "0.3.29" 1019 | source = "registry+https://github.com/rust-lang/crates.io-index" 1020 | checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" 1021 | dependencies = [ 1022 | "futures-core", 1023 | ] 1024 | 1025 | [[package]] 1026 | name = "futures-core" 1027 | version = "0.3.29" 1028 | source = "registry+https://github.com/rust-lang/crates.io-index" 1029 | checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" 1030 | 1031 | [[package]] 1032 | name = "futures-executor" 1033 | version = "0.3.29" 1034 | source = "registry+https://github.com/rust-lang/crates.io-index" 1035 | checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" 1036 | dependencies = [ 1037 | "futures-core", 1038 | "futures-task", 1039 | "futures-util", 1040 | ] 1041 | 1042 | [[package]] 1043 | name = "futures-io" 1044 | version = "0.3.29" 1045 | source = "registry+https://github.com/rust-lang/crates.io-index" 1046 | checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" 1047 | 1048 | [[package]] 1049 | name = "futures-lite" 1050 | version = "1.13.0" 1051 | source = "registry+https://github.com/rust-lang/crates.io-index" 1052 | checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" 1053 | dependencies = [ 1054 | "fastrand 1.9.0", 1055 | "futures-core", 1056 | "futures-io", 1057 | "memchr", 1058 | "parking", 1059 | "pin-project-lite", 1060 | "waker-fn", 1061 | ] 1062 | 1063 | [[package]] 1064 | name = "futures-lite" 1065 | version = "2.2.0" 1066 | source = "registry+https://github.com/rust-lang/crates.io-index" 1067 | checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" 1068 | dependencies = [ 1069 | "fastrand 2.0.1", 1070 | "futures-core", 1071 | "futures-io", 1072 | "parking", 1073 | "pin-project-lite", 1074 | ] 1075 | 1076 | [[package]] 1077 | name = "futures-macro" 1078 | version = "0.3.29" 1079 | source = "registry+https://github.com/rust-lang/crates.io-index" 1080 | checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" 1081 | dependencies = [ 1082 | "proc-macro2", 1083 | "quote", 1084 | "syn 2.0.38", 1085 | ] 1086 | 1087 | [[package]] 1088 | name = "futures-sink" 1089 | version = "0.3.30" 1090 | source = "registry+https://github.com/rust-lang/crates.io-index" 1091 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 1092 | 1093 | [[package]] 1094 | name = "futures-task" 1095 | version = "0.3.29" 1096 | source = "registry+https://github.com/rust-lang/crates.io-index" 1097 | checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" 1098 | 1099 | [[package]] 1100 | name = "futures-util" 1101 | version = "0.3.29" 1102 | source = "registry+https://github.com/rust-lang/crates.io-index" 1103 | checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" 1104 | dependencies = [ 1105 | "futures-core", 1106 | "futures-io", 1107 | "futures-macro", 1108 | "futures-sink", 1109 | "futures-task", 1110 | "memchr", 1111 | "pin-project-lite", 1112 | "pin-utils", 1113 | "slab", 1114 | ] 1115 | 1116 | [[package]] 1117 | name = "fxhash" 1118 | version = "0.2.1" 1119 | source = "registry+https://github.com/rust-lang/crates.io-index" 1120 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 1121 | dependencies = [ 1122 | "byteorder", 1123 | ] 1124 | 1125 | [[package]] 1126 | name = "gdk" 1127 | version = "0.15.4" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" 1130 | dependencies = [ 1131 | "bitflags 1.3.2", 1132 | "cairo-rs", 1133 | "gdk-pixbuf", 1134 | "gdk-sys", 1135 | "gio", 1136 | "glib", 1137 | "libc", 1138 | "pango", 1139 | ] 1140 | 1141 | [[package]] 1142 | name = "gdk-pixbuf" 1143 | version = "0.15.11" 1144 | source = "registry+https://github.com/rust-lang/crates.io-index" 1145 | checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" 1146 | dependencies = [ 1147 | "bitflags 1.3.2", 1148 | "gdk-pixbuf-sys", 1149 | "gio", 1150 | "glib", 1151 | "libc", 1152 | ] 1153 | 1154 | [[package]] 1155 | name = "gdk-pixbuf-sys" 1156 | version = "0.15.10" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" 1159 | dependencies = [ 1160 | "gio-sys", 1161 | "glib-sys", 1162 | "gobject-sys", 1163 | "libc", 1164 | "system-deps 6.1.2", 1165 | ] 1166 | 1167 | [[package]] 1168 | name = "gdk-sys" 1169 | version = "0.15.1" 1170 | source = "registry+https://github.com/rust-lang/crates.io-index" 1171 | checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" 1172 | dependencies = [ 1173 | "cairo-sys-rs", 1174 | "gdk-pixbuf-sys", 1175 | "gio-sys", 1176 | "glib-sys", 1177 | "gobject-sys", 1178 | "libc", 1179 | "pango-sys", 1180 | "pkg-config", 1181 | "system-deps 6.1.2", 1182 | ] 1183 | 1184 | [[package]] 1185 | name = "gdkwayland-sys" 1186 | version = "0.15.3" 1187 | source = "registry+https://github.com/rust-lang/crates.io-index" 1188 | checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" 1189 | dependencies = [ 1190 | "gdk-sys", 1191 | "glib-sys", 1192 | "gobject-sys", 1193 | "libc", 1194 | "pkg-config", 1195 | "system-deps 6.1.2", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "gdkx11-sys" 1200 | version = "0.15.1" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" 1203 | dependencies = [ 1204 | "gdk-sys", 1205 | "glib-sys", 1206 | "libc", 1207 | "system-deps 6.1.2", 1208 | "x11", 1209 | ] 1210 | 1211 | [[package]] 1212 | name = "generator" 1213 | version = "0.7.5" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" 1216 | dependencies = [ 1217 | "cc", 1218 | "libc", 1219 | "log", 1220 | "rustversion", 1221 | "windows 0.48.0", 1222 | ] 1223 | 1224 | [[package]] 1225 | name = "generic-array" 1226 | version = "0.14.7" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1229 | dependencies = [ 1230 | "typenum", 1231 | "version_check", 1232 | ] 1233 | 1234 | [[package]] 1235 | name = "getrandom" 1236 | version = "0.1.16" 1237 | source = "registry+https://github.com/rust-lang/crates.io-index" 1238 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 1239 | dependencies = [ 1240 | "cfg-if", 1241 | "libc", 1242 | "wasi 0.9.0+wasi-snapshot-preview1", 1243 | ] 1244 | 1245 | [[package]] 1246 | name = "getrandom" 1247 | version = "0.2.10" 1248 | source = "registry+https://github.com/rust-lang/crates.io-index" 1249 | checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" 1250 | dependencies = [ 1251 | "cfg-if", 1252 | "libc", 1253 | "wasi 0.11.0+wasi-snapshot-preview1", 1254 | ] 1255 | 1256 | [[package]] 1257 | name = "gimli" 1258 | version = "0.28.0" 1259 | source = "registry+https://github.com/rust-lang/crates.io-index" 1260 | checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" 1261 | 1262 | [[package]] 1263 | name = "gio" 1264 | version = "0.15.12" 1265 | source = "registry+https://github.com/rust-lang/crates.io-index" 1266 | checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" 1267 | dependencies = [ 1268 | "bitflags 1.3.2", 1269 | "futures-channel", 1270 | "futures-core", 1271 | "futures-io", 1272 | "gio-sys", 1273 | "glib", 1274 | "libc", 1275 | "once_cell", 1276 | "thiserror", 1277 | ] 1278 | 1279 | [[package]] 1280 | name = "gio-sys" 1281 | version = "0.15.10" 1282 | source = "registry+https://github.com/rust-lang/crates.io-index" 1283 | checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" 1284 | dependencies = [ 1285 | "glib-sys", 1286 | "gobject-sys", 1287 | "libc", 1288 | "system-deps 6.1.2", 1289 | "winapi", 1290 | ] 1291 | 1292 | [[package]] 1293 | name = "glib" 1294 | version = "0.15.12" 1295 | source = "registry+https://github.com/rust-lang/crates.io-index" 1296 | checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" 1297 | dependencies = [ 1298 | "bitflags 1.3.2", 1299 | "futures-channel", 1300 | "futures-core", 1301 | "futures-executor", 1302 | "futures-task", 1303 | "glib-macros", 1304 | "glib-sys", 1305 | "gobject-sys", 1306 | "libc", 1307 | "once_cell", 1308 | "smallvec", 1309 | "thiserror", 1310 | ] 1311 | 1312 | [[package]] 1313 | name = "glib-macros" 1314 | version = "0.15.13" 1315 | source = "registry+https://github.com/rust-lang/crates.io-index" 1316 | checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" 1317 | dependencies = [ 1318 | "anyhow", 1319 | "heck 0.4.1", 1320 | "proc-macro-crate", 1321 | "proc-macro-error", 1322 | "proc-macro2", 1323 | "quote", 1324 | "syn 1.0.109", 1325 | ] 1326 | 1327 | [[package]] 1328 | name = "glib-sys" 1329 | version = "0.15.10" 1330 | source = "registry+https://github.com/rust-lang/crates.io-index" 1331 | checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" 1332 | dependencies = [ 1333 | "libc", 1334 | "system-deps 6.1.2", 1335 | ] 1336 | 1337 | [[package]] 1338 | name = "glob" 1339 | version = "0.3.1" 1340 | source = "registry+https://github.com/rust-lang/crates.io-index" 1341 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 1342 | 1343 | [[package]] 1344 | name = "globset" 1345 | version = "0.4.13" 1346 | source = "registry+https://github.com/rust-lang/crates.io-index" 1347 | checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" 1348 | dependencies = [ 1349 | "aho-corasick", 1350 | "bstr", 1351 | "fnv", 1352 | "log", 1353 | "regex", 1354 | ] 1355 | 1356 | [[package]] 1357 | name = "gobject-sys" 1358 | version = "0.15.10" 1359 | source = "registry+https://github.com/rust-lang/crates.io-index" 1360 | checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" 1361 | dependencies = [ 1362 | "glib-sys", 1363 | "libc", 1364 | "system-deps 6.1.2", 1365 | ] 1366 | 1367 | [[package]] 1368 | name = "gtk" 1369 | version = "0.15.5" 1370 | source = "registry+https://github.com/rust-lang/crates.io-index" 1371 | checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" 1372 | dependencies = [ 1373 | "atk", 1374 | "bitflags 1.3.2", 1375 | "cairo-rs", 1376 | "field-offset", 1377 | "futures-channel", 1378 | "gdk", 1379 | "gdk-pixbuf", 1380 | "gio", 1381 | "glib", 1382 | "gtk-sys", 1383 | "gtk3-macros", 1384 | "libc", 1385 | "once_cell", 1386 | "pango", 1387 | "pkg-config", 1388 | ] 1389 | 1390 | [[package]] 1391 | name = "gtk-sys" 1392 | version = "0.15.3" 1393 | source = "registry+https://github.com/rust-lang/crates.io-index" 1394 | checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" 1395 | dependencies = [ 1396 | "atk-sys", 1397 | "cairo-sys-rs", 1398 | "gdk-pixbuf-sys", 1399 | "gdk-sys", 1400 | "gio-sys", 1401 | "glib-sys", 1402 | "gobject-sys", 1403 | "libc", 1404 | "pango-sys", 1405 | "system-deps 6.1.2", 1406 | ] 1407 | 1408 | [[package]] 1409 | name = "gtk3-macros" 1410 | version = "0.15.6" 1411 | source = "registry+https://github.com/rust-lang/crates.io-index" 1412 | checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" 1413 | dependencies = [ 1414 | "anyhow", 1415 | "proc-macro-crate", 1416 | "proc-macro-error", 1417 | "proc-macro2", 1418 | "quote", 1419 | "syn 1.0.109", 1420 | ] 1421 | 1422 | [[package]] 1423 | name = "hashbrown" 1424 | version = "0.12.3" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1427 | 1428 | [[package]] 1429 | name = "hashbrown" 1430 | version = "0.14.2" 1431 | source = "registry+https://github.com/rust-lang/crates.io-index" 1432 | checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" 1433 | 1434 | [[package]] 1435 | name = "heck" 1436 | version = "0.3.3" 1437 | source = "registry+https://github.com/rust-lang/crates.io-index" 1438 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 1439 | dependencies = [ 1440 | "unicode-segmentation", 1441 | ] 1442 | 1443 | [[package]] 1444 | name = "heck" 1445 | version = "0.4.1" 1446 | source = "registry+https://github.com/rust-lang/crates.io-index" 1447 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1448 | 1449 | [[package]] 1450 | name = "hermit-abi" 1451 | version = "0.3.3" 1452 | source = "registry+https://github.com/rust-lang/crates.io-index" 1453 | checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" 1454 | 1455 | [[package]] 1456 | name = "hex" 1457 | version = "0.4.3" 1458 | source = "registry+https://github.com/rust-lang/crates.io-index" 1459 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1460 | 1461 | [[package]] 1462 | name = "html5ever" 1463 | version = "0.25.2" 1464 | source = "registry+https://github.com/rust-lang/crates.io-index" 1465 | checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" 1466 | dependencies = [ 1467 | "log", 1468 | "mac", 1469 | "markup5ever 0.10.1", 1470 | "proc-macro2", 1471 | "quote", 1472 | "syn 1.0.109", 1473 | ] 1474 | 1475 | [[package]] 1476 | name = "html5ever" 1477 | version = "0.26.0" 1478 | source = "registry+https://github.com/rust-lang/crates.io-index" 1479 | checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" 1480 | dependencies = [ 1481 | "log", 1482 | "mac", 1483 | "markup5ever 0.11.0", 1484 | "proc-macro2", 1485 | "quote", 1486 | "syn 1.0.109", 1487 | ] 1488 | 1489 | [[package]] 1490 | name = "http" 1491 | version = "0.2.9" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" 1494 | dependencies = [ 1495 | "bytes", 1496 | "fnv", 1497 | "itoa 1.0.9", 1498 | ] 1499 | 1500 | [[package]] 1501 | name = "http-range" 1502 | version = "0.1.5" 1503 | source = "registry+https://github.com/rust-lang/crates.io-index" 1504 | checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" 1505 | 1506 | [[package]] 1507 | name = "iana-time-zone" 1508 | version = "0.1.58" 1509 | source = "registry+https://github.com/rust-lang/crates.io-index" 1510 | checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" 1511 | dependencies = [ 1512 | "android_system_properties", 1513 | "core-foundation-sys", 1514 | "iana-time-zone-haiku", 1515 | "js-sys", 1516 | "wasm-bindgen", 1517 | "windows-core", 1518 | ] 1519 | 1520 | [[package]] 1521 | name = "iana-time-zone-haiku" 1522 | version = "0.1.2" 1523 | source = "registry+https://github.com/rust-lang/crates.io-index" 1524 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1525 | dependencies = [ 1526 | "cc", 1527 | ] 1528 | 1529 | [[package]] 1530 | name = "ico" 1531 | version = "0.3.0" 1532 | source = "registry+https://github.com/rust-lang/crates.io-index" 1533 | checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" 1534 | dependencies = [ 1535 | "byteorder", 1536 | "png", 1537 | ] 1538 | 1539 | [[package]] 1540 | name = "ident_case" 1541 | version = "1.0.1" 1542 | source = "registry+https://github.com/rust-lang/crates.io-index" 1543 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1544 | 1545 | [[package]] 1546 | name = "idna" 1547 | version = "0.4.0" 1548 | source = "registry+https://github.com/rust-lang/crates.io-index" 1549 | checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" 1550 | dependencies = [ 1551 | "unicode-bidi", 1552 | "unicode-normalization", 1553 | ] 1554 | 1555 | [[package]] 1556 | name = "ignore" 1557 | version = "0.4.20" 1558 | source = "registry+https://github.com/rust-lang/crates.io-index" 1559 | checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" 1560 | dependencies = [ 1561 | "globset", 1562 | "lazy_static", 1563 | "log", 1564 | "memchr", 1565 | "regex", 1566 | "same-file", 1567 | "thread_local", 1568 | "walkdir", 1569 | "winapi-util", 1570 | ] 1571 | 1572 | [[package]] 1573 | name = "image" 1574 | version = "0.24.7" 1575 | source = "registry+https://github.com/rust-lang/crates.io-index" 1576 | checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" 1577 | dependencies = [ 1578 | "bytemuck", 1579 | "byteorder", 1580 | "color_quant", 1581 | "num-rational", 1582 | "num-traits", 1583 | ] 1584 | 1585 | [[package]] 1586 | name = "indexmap" 1587 | version = "1.9.3" 1588 | source = "registry+https://github.com/rust-lang/crates.io-index" 1589 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 1590 | dependencies = [ 1591 | "autocfg", 1592 | "hashbrown 0.12.3", 1593 | "serde", 1594 | ] 1595 | 1596 | [[package]] 1597 | name = "indexmap" 1598 | version = "2.0.2" 1599 | source = "registry+https://github.com/rust-lang/crates.io-index" 1600 | checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" 1601 | dependencies = [ 1602 | "equivalent", 1603 | "hashbrown 0.14.2", 1604 | "serde", 1605 | ] 1606 | 1607 | [[package]] 1608 | name = "infer" 1609 | version = "0.12.0" 1610 | source = "registry+https://github.com/rust-lang/crates.io-index" 1611 | checksum = "a898e4b7951673fce96614ce5751d13c40fc5674bc2d759288e46c3ab62598b3" 1612 | dependencies = [ 1613 | "cfb", 1614 | ] 1615 | 1616 | [[package]] 1617 | name = "instant" 1618 | version = "0.1.12" 1619 | source = "registry+https://github.com/rust-lang/crates.io-index" 1620 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1621 | dependencies = [ 1622 | "cfg-if", 1623 | ] 1624 | 1625 | [[package]] 1626 | name = "io-lifetimes" 1627 | version = "1.0.11" 1628 | source = "registry+https://github.com/rust-lang/crates.io-index" 1629 | checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" 1630 | dependencies = [ 1631 | "hermit-abi", 1632 | "libc", 1633 | "windows-sys 0.48.0", 1634 | ] 1635 | 1636 | [[package]] 1637 | name = "itoa" 1638 | version = "0.4.8" 1639 | source = "registry+https://github.com/rust-lang/crates.io-index" 1640 | checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" 1641 | 1642 | [[package]] 1643 | name = "itoa" 1644 | version = "1.0.9" 1645 | source = "registry+https://github.com/rust-lang/crates.io-index" 1646 | checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" 1647 | 1648 | [[package]] 1649 | name = "javascriptcore-rs" 1650 | version = "0.16.0" 1651 | source = "registry+https://github.com/rust-lang/crates.io-index" 1652 | checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" 1653 | dependencies = [ 1654 | "bitflags 1.3.2", 1655 | "glib", 1656 | "javascriptcore-rs-sys", 1657 | ] 1658 | 1659 | [[package]] 1660 | name = "javascriptcore-rs-sys" 1661 | version = "0.4.0" 1662 | source = "registry+https://github.com/rust-lang/crates.io-index" 1663 | checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" 1664 | dependencies = [ 1665 | "glib-sys", 1666 | "gobject-sys", 1667 | "libc", 1668 | "system-deps 5.0.0", 1669 | ] 1670 | 1671 | [[package]] 1672 | name = "jni" 1673 | version = "0.20.0" 1674 | source = "registry+https://github.com/rust-lang/crates.io-index" 1675 | checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" 1676 | dependencies = [ 1677 | "cesu8", 1678 | "combine", 1679 | "jni-sys", 1680 | "log", 1681 | "thiserror", 1682 | "walkdir", 1683 | ] 1684 | 1685 | [[package]] 1686 | name = "jni-sys" 1687 | version = "0.3.0" 1688 | source = "registry+https://github.com/rust-lang/crates.io-index" 1689 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1690 | 1691 | [[package]] 1692 | name = "js-sys" 1693 | version = "0.3.64" 1694 | source = "registry+https://github.com/rust-lang/crates.io-index" 1695 | checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" 1696 | dependencies = [ 1697 | "wasm-bindgen", 1698 | ] 1699 | 1700 | [[package]] 1701 | name = "json-patch" 1702 | version = "1.2.0" 1703 | source = "registry+https://github.com/rust-lang/crates.io-index" 1704 | checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" 1705 | dependencies = [ 1706 | "serde", 1707 | "serde_json", 1708 | "thiserror", 1709 | "treediff", 1710 | ] 1711 | 1712 | [[package]] 1713 | name = "kuchiki" 1714 | version = "0.8.1" 1715 | source = "registry+https://github.com/rust-lang/crates.io-index" 1716 | checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" 1717 | dependencies = [ 1718 | "cssparser", 1719 | "html5ever 0.25.2", 1720 | "matches", 1721 | "selectors", 1722 | ] 1723 | 1724 | [[package]] 1725 | name = "kuchikiki" 1726 | version = "0.8.2" 1727 | source = "registry+https://github.com/rust-lang/crates.io-index" 1728 | checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" 1729 | dependencies = [ 1730 | "cssparser", 1731 | "html5ever 0.26.0", 1732 | "indexmap 1.9.3", 1733 | "matches", 1734 | "selectors", 1735 | ] 1736 | 1737 | [[package]] 1738 | name = "lazy_static" 1739 | version = "1.4.0" 1740 | source = "registry+https://github.com/rust-lang/crates.io-index" 1741 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1742 | 1743 | [[package]] 1744 | name = "libc" 1745 | version = "0.2.149" 1746 | source = "registry+https://github.com/rust-lang/crates.io-index" 1747 | checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" 1748 | 1749 | [[package]] 1750 | name = "line-wrap" 1751 | version = "0.1.1" 1752 | source = "registry+https://github.com/rust-lang/crates.io-index" 1753 | checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" 1754 | dependencies = [ 1755 | "safemem", 1756 | ] 1757 | 1758 | [[package]] 1759 | name = "linux-raw-sys" 1760 | version = "0.3.8" 1761 | source = "registry+https://github.com/rust-lang/crates.io-index" 1762 | checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" 1763 | 1764 | [[package]] 1765 | name = "linux-raw-sys" 1766 | version = "0.4.10" 1767 | source = "registry+https://github.com/rust-lang/crates.io-index" 1768 | checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" 1769 | 1770 | [[package]] 1771 | name = "lock_api" 1772 | version = "0.4.11" 1773 | source = "registry+https://github.com/rust-lang/crates.io-index" 1774 | checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 1775 | dependencies = [ 1776 | "autocfg", 1777 | "scopeguard", 1778 | ] 1779 | 1780 | [[package]] 1781 | name = "log" 1782 | version = "0.4.20" 1783 | source = "registry+https://github.com/rust-lang/crates.io-index" 1784 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 1785 | 1786 | [[package]] 1787 | name = "loom" 1788 | version = "0.5.6" 1789 | source = "registry+https://github.com/rust-lang/crates.io-index" 1790 | checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" 1791 | dependencies = [ 1792 | "cfg-if", 1793 | "generator", 1794 | "scoped-tls", 1795 | "serde", 1796 | "serde_json", 1797 | "tracing", 1798 | "tracing-subscriber", 1799 | ] 1800 | 1801 | [[package]] 1802 | name = "mac" 1803 | version = "0.1.1" 1804 | source = "registry+https://github.com/rust-lang/crates.io-index" 1805 | checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 1806 | 1807 | [[package]] 1808 | name = "mac-notification-sys" 1809 | version = "0.6.1" 1810 | source = "registry+https://github.com/rust-lang/crates.io-index" 1811 | checksum = "51fca4d74ff9dbaac16a01b924bc3693fa2bba0862c2c633abc73f9a8ea21f64" 1812 | dependencies = [ 1813 | "cc", 1814 | "dirs-next", 1815 | "objc-foundation", 1816 | "objc_id", 1817 | "time", 1818 | ] 1819 | 1820 | [[package]] 1821 | name = "malloc_buf" 1822 | version = "0.0.6" 1823 | source = "registry+https://github.com/rust-lang/crates.io-index" 1824 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1825 | dependencies = [ 1826 | "libc", 1827 | ] 1828 | 1829 | [[package]] 1830 | name = "markup5ever" 1831 | version = "0.10.1" 1832 | source = "registry+https://github.com/rust-lang/crates.io-index" 1833 | checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" 1834 | dependencies = [ 1835 | "log", 1836 | "phf 0.8.0", 1837 | "phf_codegen 0.8.0", 1838 | "string_cache", 1839 | "string_cache_codegen", 1840 | "tendril", 1841 | ] 1842 | 1843 | [[package]] 1844 | name = "markup5ever" 1845 | version = "0.11.0" 1846 | source = "registry+https://github.com/rust-lang/crates.io-index" 1847 | checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" 1848 | dependencies = [ 1849 | "log", 1850 | "phf 0.10.1", 1851 | "phf_codegen 0.10.0", 1852 | "string_cache", 1853 | "string_cache_codegen", 1854 | "tendril", 1855 | ] 1856 | 1857 | [[package]] 1858 | name = "matchers" 1859 | version = "0.1.0" 1860 | source = "registry+https://github.com/rust-lang/crates.io-index" 1861 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 1862 | dependencies = [ 1863 | "regex-automata 0.1.10", 1864 | ] 1865 | 1866 | [[package]] 1867 | name = "matches" 1868 | version = "0.1.10" 1869 | source = "registry+https://github.com/rust-lang/crates.io-index" 1870 | checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 1871 | 1872 | [[package]] 1873 | name = "memchr" 1874 | version = "2.6.4" 1875 | source = "registry+https://github.com/rust-lang/crates.io-index" 1876 | checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" 1877 | 1878 | [[package]] 1879 | name = "memoffset" 1880 | version = "0.7.1" 1881 | source = "registry+https://github.com/rust-lang/crates.io-index" 1882 | checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" 1883 | dependencies = [ 1884 | "autocfg", 1885 | ] 1886 | 1887 | [[package]] 1888 | name = "memoffset" 1889 | version = "0.9.0" 1890 | source = "registry+https://github.com/rust-lang/crates.io-index" 1891 | checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" 1892 | dependencies = [ 1893 | "autocfg", 1894 | ] 1895 | 1896 | [[package]] 1897 | name = "miniz_oxide" 1898 | version = "0.7.1" 1899 | source = "registry+https://github.com/rust-lang/crates.io-index" 1900 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1901 | dependencies = [ 1902 | "adler", 1903 | "simd-adler32", 1904 | ] 1905 | 1906 | [[package]] 1907 | name = "ndk" 1908 | version = "0.6.0" 1909 | source = "registry+https://github.com/rust-lang/crates.io-index" 1910 | checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" 1911 | dependencies = [ 1912 | "bitflags 1.3.2", 1913 | "jni-sys", 1914 | "ndk-sys", 1915 | "num_enum", 1916 | "thiserror", 1917 | ] 1918 | 1919 | [[package]] 1920 | name = "ndk-context" 1921 | version = "0.1.1" 1922 | source = "registry+https://github.com/rust-lang/crates.io-index" 1923 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1924 | 1925 | [[package]] 1926 | name = "ndk-sys" 1927 | version = "0.3.0" 1928 | source = "registry+https://github.com/rust-lang/crates.io-index" 1929 | checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" 1930 | dependencies = [ 1931 | "jni-sys", 1932 | ] 1933 | 1934 | [[package]] 1935 | name = "new_debug_unreachable" 1936 | version = "1.0.4" 1937 | source = "registry+https://github.com/rust-lang/crates.io-index" 1938 | checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" 1939 | 1940 | [[package]] 1941 | name = "nix" 1942 | version = "0.26.4" 1943 | source = "registry+https://github.com/rust-lang/crates.io-index" 1944 | checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" 1945 | dependencies = [ 1946 | "bitflags 1.3.2", 1947 | "cfg-if", 1948 | "libc", 1949 | "memoffset 0.7.1", 1950 | ] 1951 | 1952 | [[package]] 1953 | name = "nodrop" 1954 | version = "0.1.14" 1955 | source = "registry+https://github.com/rust-lang/crates.io-index" 1956 | checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 1957 | 1958 | [[package]] 1959 | name = "notify-rust" 1960 | version = "4.10.0" 1961 | source = "registry+https://github.com/rust-lang/crates.io-index" 1962 | checksum = "827c5edfa80235ded4ab3fe8e9dc619b4f866ef16fe9b1c6b8a7f8692c0f2226" 1963 | dependencies = [ 1964 | "log", 1965 | "mac-notification-sys", 1966 | "serde", 1967 | "tauri-winrt-notification", 1968 | "zbus", 1969 | ] 1970 | 1971 | [[package]] 1972 | name = "nu-ansi-term" 1973 | version = "0.46.0" 1974 | source = "registry+https://github.com/rust-lang/crates.io-index" 1975 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 1976 | dependencies = [ 1977 | "overload", 1978 | "winapi", 1979 | ] 1980 | 1981 | [[package]] 1982 | name = "num-integer" 1983 | version = "0.1.45" 1984 | source = "registry+https://github.com/rust-lang/crates.io-index" 1985 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1986 | dependencies = [ 1987 | "autocfg", 1988 | "num-traits", 1989 | ] 1990 | 1991 | [[package]] 1992 | name = "num-rational" 1993 | version = "0.4.1" 1994 | source = "registry+https://github.com/rust-lang/crates.io-index" 1995 | checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" 1996 | dependencies = [ 1997 | "autocfg", 1998 | "num-integer", 1999 | "num-traits", 2000 | ] 2001 | 2002 | [[package]] 2003 | name = "num-traits" 2004 | version = "0.2.17" 2005 | source = "registry+https://github.com/rust-lang/crates.io-index" 2006 | checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" 2007 | dependencies = [ 2008 | "autocfg", 2009 | ] 2010 | 2011 | [[package]] 2012 | name = "num_cpus" 2013 | version = "1.16.0" 2014 | source = "registry+https://github.com/rust-lang/crates.io-index" 2015 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 2016 | dependencies = [ 2017 | "hermit-abi", 2018 | "libc", 2019 | ] 2020 | 2021 | [[package]] 2022 | name = "num_enum" 2023 | version = "0.5.11" 2024 | source = "registry+https://github.com/rust-lang/crates.io-index" 2025 | checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" 2026 | dependencies = [ 2027 | "num_enum_derive", 2028 | ] 2029 | 2030 | [[package]] 2031 | name = "num_enum_derive" 2032 | version = "0.5.11" 2033 | source = "registry+https://github.com/rust-lang/crates.io-index" 2034 | checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" 2035 | dependencies = [ 2036 | "proc-macro-crate", 2037 | "proc-macro2", 2038 | "quote", 2039 | "syn 1.0.109", 2040 | ] 2041 | 2042 | [[package]] 2043 | name = "objc" 2044 | version = "0.2.7" 2045 | source = "registry+https://github.com/rust-lang/crates.io-index" 2046 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 2047 | dependencies = [ 2048 | "malloc_buf", 2049 | "objc_exception", 2050 | ] 2051 | 2052 | [[package]] 2053 | name = "objc-foundation" 2054 | version = "0.1.1" 2055 | source = "registry+https://github.com/rust-lang/crates.io-index" 2056 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 2057 | dependencies = [ 2058 | "block", 2059 | "objc", 2060 | "objc_id", 2061 | ] 2062 | 2063 | [[package]] 2064 | name = "objc_exception" 2065 | version = "0.1.2" 2066 | source = "registry+https://github.com/rust-lang/crates.io-index" 2067 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 2068 | dependencies = [ 2069 | "cc", 2070 | ] 2071 | 2072 | [[package]] 2073 | name = "objc_id" 2074 | version = "0.1.1" 2075 | source = "registry+https://github.com/rust-lang/crates.io-index" 2076 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 2077 | dependencies = [ 2078 | "objc", 2079 | ] 2080 | 2081 | [[package]] 2082 | name = "object" 2083 | version = "0.32.1" 2084 | source = "registry+https://github.com/rust-lang/crates.io-index" 2085 | checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" 2086 | dependencies = [ 2087 | "memchr", 2088 | ] 2089 | 2090 | [[package]] 2091 | name = "once_cell" 2092 | version = "1.18.0" 2093 | source = "registry+https://github.com/rust-lang/crates.io-index" 2094 | checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" 2095 | 2096 | [[package]] 2097 | name = "ordered-stream" 2098 | version = "0.2.0" 2099 | source = "registry+https://github.com/rust-lang/crates.io-index" 2100 | checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 2101 | dependencies = [ 2102 | "futures-core", 2103 | "pin-project-lite", 2104 | ] 2105 | 2106 | [[package]] 2107 | name = "overload" 2108 | version = "0.1.1" 2109 | source = "registry+https://github.com/rust-lang/crates.io-index" 2110 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 2111 | 2112 | [[package]] 2113 | name = "pango" 2114 | version = "0.15.10" 2115 | source = "registry+https://github.com/rust-lang/crates.io-index" 2116 | checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" 2117 | dependencies = [ 2118 | "bitflags 1.3.2", 2119 | "glib", 2120 | "libc", 2121 | "once_cell", 2122 | "pango-sys", 2123 | ] 2124 | 2125 | [[package]] 2126 | name = "pango-sys" 2127 | version = "0.15.10" 2128 | source = "registry+https://github.com/rust-lang/crates.io-index" 2129 | checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" 2130 | dependencies = [ 2131 | "glib-sys", 2132 | "gobject-sys", 2133 | "libc", 2134 | "system-deps 6.1.2", 2135 | ] 2136 | 2137 | [[package]] 2138 | name = "parking" 2139 | version = "2.2.0" 2140 | source = "registry+https://github.com/rust-lang/crates.io-index" 2141 | checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" 2142 | 2143 | [[package]] 2144 | name = "parking_lot" 2145 | version = "0.12.1" 2146 | source = "registry+https://github.com/rust-lang/crates.io-index" 2147 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 2148 | dependencies = [ 2149 | "lock_api", 2150 | "parking_lot_core", 2151 | ] 2152 | 2153 | [[package]] 2154 | name = "parking_lot_core" 2155 | version = "0.9.9" 2156 | source = "registry+https://github.com/rust-lang/crates.io-index" 2157 | checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 2158 | dependencies = [ 2159 | "cfg-if", 2160 | "libc", 2161 | "redox_syscall 0.4.1", 2162 | "smallvec", 2163 | "windows-targets 0.48.5", 2164 | ] 2165 | 2166 | [[package]] 2167 | name = "percent-encoding" 2168 | version = "2.3.0" 2169 | source = "registry+https://github.com/rust-lang/crates.io-index" 2170 | checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" 2171 | 2172 | [[package]] 2173 | name = "phf" 2174 | version = "0.8.0" 2175 | source = "registry+https://github.com/rust-lang/crates.io-index" 2176 | checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" 2177 | dependencies = [ 2178 | "phf_macros 0.8.0", 2179 | "phf_shared 0.8.0", 2180 | "proc-macro-hack", 2181 | ] 2182 | 2183 | [[package]] 2184 | name = "phf" 2185 | version = "0.10.1" 2186 | source = "registry+https://github.com/rust-lang/crates.io-index" 2187 | checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" 2188 | dependencies = [ 2189 | "phf_macros 0.10.0", 2190 | "phf_shared 0.10.0", 2191 | "proc-macro-hack", 2192 | ] 2193 | 2194 | [[package]] 2195 | name = "phf_codegen" 2196 | version = "0.8.0" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" 2199 | dependencies = [ 2200 | "phf_generator 0.8.0", 2201 | "phf_shared 0.8.0", 2202 | ] 2203 | 2204 | [[package]] 2205 | name = "phf_codegen" 2206 | version = "0.10.0" 2207 | source = "registry+https://github.com/rust-lang/crates.io-index" 2208 | checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" 2209 | dependencies = [ 2210 | "phf_generator 0.10.0", 2211 | "phf_shared 0.10.0", 2212 | ] 2213 | 2214 | [[package]] 2215 | name = "phf_generator" 2216 | version = "0.8.0" 2217 | source = "registry+https://github.com/rust-lang/crates.io-index" 2218 | checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" 2219 | dependencies = [ 2220 | "phf_shared 0.8.0", 2221 | "rand 0.7.3", 2222 | ] 2223 | 2224 | [[package]] 2225 | name = "phf_generator" 2226 | version = "0.10.0" 2227 | source = "registry+https://github.com/rust-lang/crates.io-index" 2228 | checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" 2229 | dependencies = [ 2230 | "phf_shared 0.10.0", 2231 | "rand 0.8.5", 2232 | ] 2233 | 2234 | [[package]] 2235 | name = "phf_macros" 2236 | version = "0.8.0" 2237 | source = "registry+https://github.com/rust-lang/crates.io-index" 2238 | checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" 2239 | dependencies = [ 2240 | "phf_generator 0.8.0", 2241 | "phf_shared 0.8.0", 2242 | "proc-macro-hack", 2243 | "proc-macro2", 2244 | "quote", 2245 | "syn 1.0.109", 2246 | ] 2247 | 2248 | [[package]] 2249 | name = "phf_macros" 2250 | version = "0.10.0" 2251 | source = "registry+https://github.com/rust-lang/crates.io-index" 2252 | checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" 2253 | dependencies = [ 2254 | "phf_generator 0.10.0", 2255 | "phf_shared 0.10.0", 2256 | "proc-macro-hack", 2257 | "proc-macro2", 2258 | "quote", 2259 | "syn 1.0.109", 2260 | ] 2261 | 2262 | [[package]] 2263 | name = "phf_shared" 2264 | version = "0.8.0" 2265 | source = "registry+https://github.com/rust-lang/crates.io-index" 2266 | checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" 2267 | dependencies = [ 2268 | "siphasher", 2269 | ] 2270 | 2271 | [[package]] 2272 | name = "phf_shared" 2273 | version = "0.10.0" 2274 | source = "registry+https://github.com/rust-lang/crates.io-index" 2275 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 2276 | dependencies = [ 2277 | "siphasher", 2278 | ] 2279 | 2280 | [[package]] 2281 | name = "pin-project-lite" 2282 | version = "0.2.13" 2283 | source = "registry+https://github.com/rust-lang/crates.io-index" 2284 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 2285 | 2286 | [[package]] 2287 | name = "pin-utils" 2288 | version = "0.1.0" 2289 | source = "registry+https://github.com/rust-lang/crates.io-index" 2290 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2291 | 2292 | [[package]] 2293 | name = "piper" 2294 | version = "0.2.1" 2295 | source = "registry+https://github.com/rust-lang/crates.io-index" 2296 | checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" 2297 | dependencies = [ 2298 | "atomic-waker", 2299 | "fastrand 2.0.1", 2300 | "futures-io", 2301 | ] 2302 | 2303 | [[package]] 2304 | name = "pkg-config" 2305 | version = "0.3.27" 2306 | source = "registry+https://github.com/rust-lang/crates.io-index" 2307 | checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" 2308 | 2309 | [[package]] 2310 | name = "plist" 2311 | version = "1.5.1" 2312 | source = "registry+https://github.com/rust-lang/crates.io-index" 2313 | checksum = "9a4a0cfc5fb21a09dc6af4bf834cf10d4a32fccd9e2ea468c4b1751a097487aa" 2314 | dependencies = [ 2315 | "base64 0.21.5", 2316 | "indexmap 1.9.3", 2317 | "line-wrap", 2318 | "quick-xml", 2319 | "serde", 2320 | "time", 2321 | ] 2322 | 2323 | [[package]] 2324 | name = "png" 2325 | version = "0.17.10" 2326 | source = "registry+https://github.com/rust-lang/crates.io-index" 2327 | checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" 2328 | dependencies = [ 2329 | "bitflags 1.3.2", 2330 | "crc32fast", 2331 | "fdeflate", 2332 | "flate2", 2333 | "miniz_oxide", 2334 | ] 2335 | 2336 | [[package]] 2337 | name = "polling" 2338 | version = "2.8.0" 2339 | source = "registry+https://github.com/rust-lang/crates.io-index" 2340 | checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" 2341 | dependencies = [ 2342 | "autocfg", 2343 | "bitflags 1.3.2", 2344 | "cfg-if", 2345 | "concurrent-queue", 2346 | "libc", 2347 | "log", 2348 | "pin-project-lite", 2349 | "windows-sys 0.48.0", 2350 | ] 2351 | 2352 | [[package]] 2353 | name = "polling" 2354 | version = "3.3.2" 2355 | source = "registry+https://github.com/rust-lang/crates.io-index" 2356 | checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41" 2357 | dependencies = [ 2358 | "cfg-if", 2359 | "concurrent-queue", 2360 | "pin-project-lite", 2361 | "rustix 0.38.21", 2362 | "tracing", 2363 | "windows-sys 0.52.0", 2364 | ] 2365 | 2366 | [[package]] 2367 | name = "powerfmt" 2368 | version = "0.2.0" 2369 | source = "registry+https://github.com/rust-lang/crates.io-index" 2370 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2371 | 2372 | [[package]] 2373 | name = "ppv-lite86" 2374 | version = "0.2.17" 2375 | source = "registry+https://github.com/rust-lang/crates.io-index" 2376 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2377 | 2378 | [[package]] 2379 | name = "precomputed-hash" 2380 | version = "0.1.1" 2381 | source = "registry+https://github.com/rust-lang/crates.io-index" 2382 | checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 2383 | 2384 | [[package]] 2385 | name = "proc-macro-crate" 2386 | version = "1.3.1" 2387 | source = "registry+https://github.com/rust-lang/crates.io-index" 2388 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 2389 | dependencies = [ 2390 | "once_cell", 2391 | "toml_edit 0.19.15", 2392 | ] 2393 | 2394 | [[package]] 2395 | name = "proc-macro-error" 2396 | version = "1.0.4" 2397 | source = "registry+https://github.com/rust-lang/crates.io-index" 2398 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2399 | dependencies = [ 2400 | "proc-macro-error-attr", 2401 | "proc-macro2", 2402 | "quote", 2403 | "syn 1.0.109", 2404 | "version_check", 2405 | ] 2406 | 2407 | [[package]] 2408 | name = "proc-macro-error-attr" 2409 | version = "1.0.4" 2410 | source = "registry+https://github.com/rust-lang/crates.io-index" 2411 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2412 | dependencies = [ 2413 | "proc-macro2", 2414 | "quote", 2415 | "version_check", 2416 | ] 2417 | 2418 | [[package]] 2419 | name = "proc-macro-hack" 2420 | version = "0.5.20+deprecated" 2421 | source = "registry+https://github.com/rust-lang/crates.io-index" 2422 | checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 2423 | 2424 | [[package]] 2425 | name = "proc-macro2" 2426 | version = "1.0.69" 2427 | source = "registry+https://github.com/rust-lang/crates.io-index" 2428 | checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" 2429 | dependencies = [ 2430 | "unicode-ident", 2431 | ] 2432 | 2433 | [[package]] 2434 | name = "quick-xml" 2435 | version = "0.30.0" 2436 | source = "registry+https://github.com/rust-lang/crates.io-index" 2437 | checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" 2438 | dependencies = [ 2439 | "memchr", 2440 | ] 2441 | 2442 | [[package]] 2443 | name = "quote" 2444 | version = "1.0.33" 2445 | source = "registry+https://github.com/rust-lang/crates.io-index" 2446 | checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 2447 | dependencies = [ 2448 | "proc-macro2", 2449 | ] 2450 | 2451 | [[package]] 2452 | name = "rand" 2453 | version = "0.7.3" 2454 | source = "registry+https://github.com/rust-lang/crates.io-index" 2455 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 2456 | dependencies = [ 2457 | "getrandom 0.1.16", 2458 | "libc", 2459 | "rand_chacha 0.2.2", 2460 | "rand_core 0.5.1", 2461 | "rand_hc", 2462 | "rand_pcg", 2463 | ] 2464 | 2465 | [[package]] 2466 | name = "rand" 2467 | version = "0.8.5" 2468 | source = "registry+https://github.com/rust-lang/crates.io-index" 2469 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2470 | dependencies = [ 2471 | "libc", 2472 | "rand_chacha 0.3.1", 2473 | "rand_core 0.6.4", 2474 | ] 2475 | 2476 | [[package]] 2477 | name = "rand_chacha" 2478 | version = "0.2.2" 2479 | source = "registry+https://github.com/rust-lang/crates.io-index" 2480 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 2481 | dependencies = [ 2482 | "ppv-lite86", 2483 | "rand_core 0.5.1", 2484 | ] 2485 | 2486 | [[package]] 2487 | name = "rand_chacha" 2488 | version = "0.3.1" 2489 | source = "registry+https://github.com/rust-lang/crates.io-index" 2490 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2491 | dependencies = [ 2492 | "ppv-lite86", 2493 | "rand_core 0.6.4", 2494 | ] 2495 | 2496 | [[package]] 2497 | name = "rand_core" 2498 | version = "0.5.1" 2499 | source = "registry+https://github.com/rust-lang/crates.io-index" 2500 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2501 | dependencies = [ 2502 | "getrandom 0.1.16", 2503 | ] 2504 | 2505 | [[package]] 2506 | name = "rand_core" 2507 | version = "0.6.4" 2508 | source = "registry+https://github.com/rust-lang/crates.io-index" 2509 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2510 | dependencies = [ 2511 | "getrandom 0.2.10", 2512 | ] 2513 | 2514 | [[package]] 2515 | name = "rand_hc" 2516 | version = "0.2.0" 2517 | source = "registry+https://github.com/rust-lang/crates.io-index" 2518 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2519 | dependencies = [ 2520 | "rand_core 0.5.1", 2521 | ] 2522 | 2523 | [[package]] 2524 | name = "rand_pcg" 2525 | version = "0.2.1" 2526 | source = "registry+https://github.com/rust-lang/crates.io-index" 2527 | checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 2528 | dependencies = [ 2529 | "rand_core 0.5.1", 2530 | ] 2531 | 2532 | [[package]] 2533 | name = "raw-window-handle" 2534 | version = "0.5.2" 2535 | source = "registry+https://github.com/rust-lang/crates.io-index" 2536 | checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" 2537 | 2538 | [[package]] 2539 | name = "redox_syscall" 2540 | version = "0.2.16" 2541 | source = "registry+https://github.com/rust-lang/crates.io-index" 2542 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 2543 | dependencies = [ 2544 | "bitflags 1.3.2", 2545 | ] 2546 | 2547 | [[package]] 2548 | name = "redox_syscall" 2549 | version = "0.3.5" 2550 | source = "registry+https://github.com/rust-lang/crates.io-index" 2551 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 2552 | dependencies = [ 2553 | "bitflags 1.3.2", 2554 | ] 2555 | 2556 | [[package]] 2557 | name = "redox_syscall" 2558 | version = "0.4.1" 2559 | source = "registry+https://github.com/rust-lang/crates.io-index" 2560 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 2561 | dependencies = [ 2562 | "bitflags 1.3.2", 2563 | ] 2564 | 2565 | [[package]] 2566 | name = "redox_users" 2567 | version = "0.4.3" 2568 | source = "registry+https://github.com/rust-lang/crates.io-index" 2569 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 2570 | dependencies = [ 2571 | "getrandom 0.2.10", 2572 | "redox_syscall 0.2.16", 2573 | "thiserror", 2574 | ] 2575 | 2576 | [[package]] 2577 | name = "regex" 2578 | version = "1.10.2" 2579 | source = "registry+https://github.com/rust-lang/crates.io-index" 2580 | checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" 2581 | dependencies = [ 2582 | "aho-corasick", 2583 | "memchr", 2584 | "regex-automata 0.4.3", 2585 | "regex-syntax 0.8.2", 2586 | ] 2587 | 2588 | [[package]] 2589 | name = "regex-automata" 2590 | version = "0.1.10" 2591 | source = "registry+https://github.com/rust-lang/crates.io-index" 2592 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 2593 | dependencies = [ 2594 | "regex-syntax 0.6.29", 2595 | ] 2596 | 2597 | [[package]] 2598 | name = "regex-automata" 2599 | version = "0.4.3" 2600 | source = "registry+https://github.com/rust-lang/crates.io-index" 2601 | checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" 2602 | dependencies = [ 2603 | "aho-corasick", 2604 | "memchr", 2605 | "regex-syntax 0.8.2", 2606 | ] 2607 | 2608 | [[package]] 2609 | name = "regex-syntax" 2610 | version = "0.6.29" 2611 | source = "registry+https://github.com/rust-lang/crates.io-index" 2612 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 2613 | 2614 | [[package]] 2615 | name = "regex-syntax" 2616 | version = "0.8.2" 2617 | source = "registry+https://github.com/rust-lang/crates.io-index" 2618 | checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 2619 | 2620 | [[package]] 2621 | name = "rfd" 2622 | version = "0.10.0" 2623 | source = "registry+https://github.com/rust-lang/crates.io-index" 2624 | checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" 2625 | dependencies = [ 2626 | "block", 2627 | "dispatch", 2628 | "glib-sys", 2629 | "gobject-sys", 2630 | "gtk-sys", 2631 | "js-sys", 2632 | "lazy_static", 2633 | "log", 2634 | "objc", 2635 | "objc-foundation", 2636 | "objc_id", 2637 | "raw-window-handle", 2638 | "wasm-bindgen", 2639 | "wasm-bindgen-futures", 2640 | "web-sys", 2641 | "windows 0.37.0", 2642 | ] 2643 | 2644 | [[package]] 2645 | name = "rustc-demangle" 2646 | version = "0.1.23" 2647 | source = "registry+https://github.com/rust-lang/crates.io-index" 2648 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 2649 | 2650 | [[package]] 2651 | name = "rustc_version" 2652 | version = "0.4.0" 2653 | source = "registry+https://github.com/rust-lang/crates.io-index" 2654 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 2655 | dependencies = [ 2656 | "semver", 2657 | ] 2658 | 2659 | [[package]] 2660 | name = "rustix" 2661 | version = "0.37.27" 2662 | source = "registry+https://github.com/rust-lang/crates.io-index" 2663 | checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" 2664 | dependencies = [ 2665 | "bitflags 1.3.2", 2666 | "errno", 2667 | "io-lifetimes", 2668 | "libc", 2669 | "linux-raw-sys 0.3.8", 2670 | "windows-sys 0.48.0", 2671 | ] 2672 | 2673 | [[package]] 2674 | name = "rustix" 2675 | version = "0.38.21" 2676 | source = "registry+https://github.com/rust-lang/crates.io-index" 2677 | checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" 2678 | dependencies = [ 2679 | "bitflags 2.4.1", 2680 | "errno", 2681 | "libc", 2682 | "linux-raw-sys 0.4.10", 2683 | "windows-sys 0.48.0", 2684 | ] 2685 | 2686 | [[package]] 2687 | name = "rustversion" 2688 | version = "1.0.14" 2689 | source = "registry+https://github.com/rust-lang/crates.io-index" 2690 | checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" 2691 | 2692 | [[package]] 2693 | name = "ryu" 2694 | version = "1.0.15" 2695 | source = "registry+https://github.com/rust-lang/crates.io-index" 2696 | checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" 2697 | 2698 | [[package]] 2699 | name = "safemem" 2700 | version = "0.3.3" 2701 | source = "registry+https://github.com/rust-lang/crates.io-index" 2702 | checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" 2703 | 2704 | [[package]] 2705 | name = "same-file" 2706 | version = "1.0.6" 2707 | source = "registry+https://github.com/rust-lang/crates.io-index" 2708 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2709 | dependencies = [ 2710 | "winapi-util", 2711 | ] 2712 | 2713 | [[package]] 2714 | name = "scoped-tls" 2715 | version = "1.0.1" 2716 | source = "registry+https://github.com/rust-lang/crates.io-index" 2717 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2718 | 2719 | [[package]] 2720 | name = "scopeguard" 2721 | version = "1.2.0" 2722 | source = "registry+https://github.com/rust-lang/crates.io-index" 2723 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2724 | 2725 | [[package]] 2726 | name = "selectors" 2727 | version = "0.22.0" 2728 | source = "registry+https://github.com/rust-lang/crates.io-index" 2729 | checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" 2730 | dependencies = [ 2731 | "bitflags 1.3.2", 2732 | "cssparser", 2733 | "derive_more", 2734 | "fxhash", 2735 | "log", 2736 | "matches", 2737 | "phf 0.8.0", 2738 | "phf_codegen 0.8.0", 2739 | "precomputed-hash", 2740 | "servo_arc", 2741 | "smallvec", 2742 | "thin-slice", 2743 | ] 2744 | 2745 | [[package]] 2746 | name = "semver" 2747 | version = "1.0.20" 2748 | source = "registry+https://github.com/rust-lang/crates.io-index" 2749 | checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" 2750 | dependencies = [ 2751 | "serde", 2752 | ] 2753 | 2754 | [[package]] 2755 | name = "serde" 2756 | version = "1.0.190" 2757 | source = "registry+https://github.com/rust-lang/crates.io-index" 2758 | checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" 2759 | dependencies = [ 2760 | "serde_derive", 2761 | ] 2762 | 2763 | [[package]] 2764 | name = "serde_derive" 2765 | version = "1.0.190" 2766 | source = "registry+https://github.com/rust-lang/crates.io-index" 2767 | checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" 2768 | dependencies = [ 2769 | "proc-macro2", 2770 | "quote", 2771 | "syn 2.0.38", 2772 | ] 2773 | 2774 | [[package]] 2775 | name = "serde_json" 2776 | version = "1.0.107" 2777 | source = "registry+https://github.com/rust-lang/crates.io-index" 2778 | checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" 2779 | dependencies = [ 2780 | "itoa 1.0.9", 2781 | "ryu", 2782 | "serde", 2783 | ] 2784 | 2785 | [[package]] 2786 | name = "serde_repr" 2787 | version = "0.1.16" 2788 | source = "registry+https://github.com/rust-lang/crates.io-index" 2789 | checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" 2790 | dependencies = [ 2791 | "proc-macro2", 2792 | "quote", 2793 | "syn 2.0.38", 2794 | ] 2795 | 2796 | [[package]] 2797 | name = "serde_spanned" 2798 | version = "0.6.4" 2799 | source = "registry+https://github.com/rust-lang/crates.io-index" 2800 | checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" 2801 | dependencies = [ 2802 | "serde", 2803 | ] 2804 | 2805 | [[package]] 2806 | name = "serde_with" 2807 | version = "3.4.0" 2808 | source = "registry+https://github.com/rust-lang/crates.io-index" 2809 | checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" 2810 | dependencies = [ 2811 | "base64 0.21.5", 2812 | "chrono", 2813 | "hex", 2814 | "indexmap 1.9.3", 2815 | "indexmap 2.0.2", 2816 | "serde", 2817 | "serde_json", 2818 | "serde_with_macros", 2819 | "time", 2820 | ] 2821 | 2822 | [[package]] 2823 | name = "serde_with_macros" 2824 | version = "3.4.0" 2825 | source = "registry+https://github.com/rust-lang/crates.io-index" 2826 | checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" 2827 | dependencies = [ 2828 | "darling", 2829 | "proc-macro2", 2830 | "quote", 2831 | "syn 2.0.38", 2832 | ] 2833 | 2834 | [[package]] 2835 | name = "serialize-to-javascript" 2836 | version = "0.1.1" 2837 | source = "registry+https://github.com/rust-lang/crates.io-index" 2838 | checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" 2839 | dependencies = [ 2840 | "serde", 2841 | "serde_json", 2842 | "serialize-to-javascript-impl", 2843 | ] 2844 | 2845 | [[package]] 2846 | name = "serialize-to-javascript-impl" 2847 | version = "0.1.1" 2848 | source = "registry+https://github.com/rust-lang/crates.io-index" 2849 | checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" 2850 | dependencies = [ 2851 | "proc-macro2", 2852 | "quote", 2853 | "syn 1.0.109", 2854 | ] 2855 | 2856 | [[package]] 2857 | name = "servo_arc" 2858 | version = "0.1.1" 2859 | source = "registry+https://github.com/rust-lang/crates.io-index" 2860 | checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" 2861 | dependencies = [ 2862 | "nodrop", 2863 | "stable_deref_trait", 2864 | ] 2865 | 2866 | [[package]] 2867 | name = "sha1" 2868 | version = "0.10.6" 2869 | source = "registry+https://github.com/rust-lang/crates.io-index" 2870 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 2871 | dependencies = [ 2872 | "cfg-if", 2873 | "cpufeatures", 2874 | "digest", 2875 | ] 2876 | 2877 | [[package]] 2878 | name = "sha2" 2879 | version = "0.10.8" 2880 | source = "registry+https://github.com/rust-lang/crates.io-index" 2881 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 2882 | dependencies = [ 2883 | "cfg-if", 2884 | "cpufeatures", 2885 | "digest", 2886 | ] 2887 | 2888 | [[package]] 2889 | name = "sharded-slab" 2890 | version = "0.1.7" 2891 | source = "registry+https://github.com/rust-lang/crates.io-index" 2892 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 2893 | dependencies = [ 2894 | "lazy_static", 2895 | ] 2896 | 2897 | [[package]] 2898 | name = "signal-hook-registry" 2899 | version = "1.4.1" 2900 | source = "registry+https://github.com/rust-lang/crates.io-index" 2901 | checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 2902 | dependencies = [ 2903 | "libc", 2904 | ] 2905 | 2906 | [[package]] 2907 | name = "simd-adler32" 2908 | version = "0.3.7" 2909 | source = "registry+https://github.com/rust-lang/crates.io-index" 2910 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 2911 | 2912 | [[package]] 2913 | name = "siphasher" 2914 | version = "0.3.11" 2915 | source = "registry+https://github.com/rust-lang/crates.io-index" 2916 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 2917 | 2918 | [[package]] 2919 | name = "slab" 2920 | version = "0.4.9" 2921 | source = "registry+https://github.com/rust-lang/crates.io-index" 2922 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2923 | dependencies = [ 2924 | "autocfg", 2925 | ] 2926 | 2927 | [[package]] 2928 | name = "smallvec" 2929 | version = "1.11.1" 2930 | source = "registry+https://github.com/rust-lang/crates.io-index" 2931 | checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" 2932 | 2933 | [[package]] 2934 | name = "socket2" 2935 | version = "0.4.10" 2936 | source = "registry+https://github.com/rust-lang/crates.io-index" 2937 | checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" 2938 | dependencies = [ 2939 | "libc", 2940 | "winapi", 2941 | ] 2942 | 2943 | [[package]] 2944 | name = "soup2" 2945 | version = "0.2.1" 2946 | source = "registry+https://github.com/rust-lang/crates.io-index" 2947 | checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" 2948 | dependencies = [ 2949 | "bitflags 1.3.2", 2950 | "gio", 2951 | "glib", 2952 | "libc", 2953 | "once_cell", 2954 | "soup2-sys", 2955 | ] 2956 | 2957 | [[package]] 2958 | name = "soup2-sys" 2959 | version = "0.2.0" 2960 | source = "registry+https://github.com/rust-lang/crates.io-index" 2961 | checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" 2962 | dependencies = [ 2963 | "bitflags 1.3.2", 2964 | "gio-sys", 2965 | "glib-sys", 2966 | "gobject-sys", 2967 | "libc", 2968 | "system-deps 5.0.0", 2969 | ] 2970 | 2971 | [[package]] 2972 | name = "stable_deref_trait" 2973 | version = "1.2.0" 2974 | source = "registry+https://github.com/rust-lang/crates.io-index" 2975 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2976 | 2977 | [[package]] 2978 | name = "state" 2979 | version = "0.5.3" 2980 | source = "registry+https://github.com/rust-lang/crates.io-index" 2981 | checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" 2982 | dependencies = [ 2983 | "loom", 2984 | ] 2985 | 2986 | [[package]] 2987 | name = "static_assertions" 2988 | version = "1.1.0" 2989 | source = "registry+https://github.com/rust-lang/crates.io-index" 2990 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 2991 | 2992 | [[package]] 2993 | name = "string_cache" 2994 | version = "0.8.7" 2995 | source = "registry+https://github.com/rust-lang/crates.io-index" 2996 | checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" 2997 | dependencies = [ 2998 | "new_debug_unreachable", 2999 | "once_cell", 3000 | "parking_lot", 3001 | "phf_shared 0.10.0", 3002 | "precomputed-hash", 3003 | "serde", 3004 | ] 3005 | 3006 | [[package]] 3007 | name = "string_cache_codegen" 3008 | version = "0.5.2" 3009 | source = "registry+https://github.com/rust-lang/crates.io-index" 3010 | checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" 3011 | dependencies = [ 3012 | "phf_generator 0.10.0", 3013 | "phf_shared 0.10.0", 3014 | "proc-macro2", 3015 | "quote", 3016 | ] 3017 | 3018 | [[package]] 3019 | name = "strsim" 3020 | version = "0.10.0" 3021 | source = "registry+https://github.com/rust-lang/crates.io-index" 3022 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 3023 | 3024 | [[package]] 3025 | name = "syn" 3026 | version = "1.0.109" 3027 | source = "registry+https://github.com/rust-lang/crates.io-index" 3028 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 3029 | dependencies = [ 3030 | "proc-macro2", 3031 | "quote", 3032 | "unicode-ident", 3033 | ] 3034 | 3035 | [[package]] 3036 | name = "syn" 3037 | version = "2.0.38" 3038 | source = "registry+https://github.com/rust-lang/crates.io-index" 3039 | checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" 3040 | dependencies = [ 3041 | "proc-macro2", 3042 | "quote", 3043 | "unicode-ident", 3044 | ] 3045 | 3046 | [[package]] 3047 | name = "system-deps" 3048 | version = "5.0.0" 3049 | source = "registry+https://github.com/rust-lang/crates.io-index" 3050 | checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" 3051 | dependencies = [ 3052 | "cfg-expr 0.9.1", 3053 | "heck 0.3.3", 3054 | "pkg-config", 3055 | "toml 0.5.11", 3056 | "version-compare 0.0.11", 3057 | ] 3058 | 3059 | [[package]] 3060 | name = "system-deps" 3061 | version = "6.1.2" 3062 | source = "registry+https://github.com/rust-lang/crates.io-index" 3063 | checksum = "94af52f9402f94aac4948a2518b43359be8d9ce6cd9efc1c4de3b2f7b7e897d6" 3064 | dependencies = [ 3065 | "cfg-expr 0.15.5", 3066 | "heck 0.4.1", 3067 | "pkg-config", 3068 | "toml 0.8.5", 3069 | "version-compare 0.1.1", 3070 | ] 3071 | 3072 | [[package]] 3073 | name = "tao" 3074 | version = "0.16.5" 3075 | source = "registry+https://github.com/rust-lang/crates.io-index" 3076 | checksum = "75f5aefd6be4cd3ad3f047442242fd9f57cbfb3e565379f66b5e14749364fa4f" 3077 | dependencies = [ 3078 | "bitflags 1.3.2", 3079 | "cairo-rs", 3080 | "cc", 3081 | "cocoa", 3082 | "core-foundation", 3083 | "core-graphics", 3084 | "crossbeam-channel", 3085 | "dispatch", 3086 | "gdk", 3087 | "gdk-pixbuf", 3088 | "gdk-sys", 3089 | "gdkwayland-sys", 3090 | "gdkx11-sys", 3091 | "gio", 3092 | "glib", 3093 | "glib-sys", 3094 | "gtk", 3095 | "image", 3096 | "instant", 3097 | "jni", 3098 | "lazy_static", 3099 | "libc", 3100 | "log", 3101 | "ndk", 3102 | "ndk-context", 3103 | "ndk-sys", 3104 | "objc", 3105 | "once_cell", 3106 | "parking_lot", 3107 | "png", 3108 | "raw-window-handle", 3109 | "scopeguard", 3110 | "serde", 3111 | "tao-macros", 3112 | "unicode-segmentation", 3113 | "uuid", 3114 | "windows 0.39.0", 3115 | "windows-implement", 3116 | "x11-dl", 3117 | ] 3118 | 3119 | [[package]] 3120 | name = "tao-macros" 3121 | version = "0.1.2" 3122 | source = "registry+https://github.com/rust-lang/crates.io-index" 3123 | checksum = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2" 3124 | dependencies = [ 3125 | "proc-macro2", 3126 | "quote", 3127 | "syn 1.0.109", 3128 | ] 3129 | 3130 | [[package]] 3131 | name = "tar" 3132 | version = "0.4.40" 3133 | source = "registry+https://github.com/rust-lang/crates.io-index" 3134 | checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" 3135 | dependencies = [ 3136 | "filetime", 3137 | "libc", 3138 | "xattr", 3139 | ] 3140 | 3141 | [[package]] 3142 | name = "target-lexicon" 3143 | version = "0.12.12" 3144 | source = "registry+https://github.com/rust-lang/crates.io-index" 3145 | checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" 3146 | 3147 | [[package]] 3148 | name = "tauri" 3149 | version = "1.5.2" 3150 | source = "registry+https://github.com/rust-lang/crates.io-index" 3151 | checksum = "9bfe673cf125ef364d6f56b15e8ce7537d9ca7e4dae1cf6fbbdeed2e024db3d9" 3152 | dependencies = [ 3153 | "anyhow", 3154 | "cocoa", 3155 | "dirs-next", 3156 | "embed_plist", 3157 | "encoding_rs", 3158 | "flate2", 3159 | "futures-util", 3160 | "glib", 3161 | "glob", 3162 | "gtk", 3163 | "heck 0.4.1", 3164 | "http", 3165 | "ignore", 3166 | "notify-rust", 3167 | "objc", 3168 | "once_cell", 3169 | "percent-encoding", 3170 | "rand 0.8.5", 3171 | "raw-window-handle", 3172 | "rfd", 3173 | "semver", 3174 | "serde", 3175 | "serde_json", 3176 | "serde_repr", 3177 | "serialize-to-javascript", 3178 | "state", 3179 | "tar", 3180 | "tauri-macros", 3181 | "tauri-runtime", 3182 | "tauri-runtime-wry", 3183 | "tauri-utils", 3184 | "tempfile", 3185 | "thiserror", 3186 | "tokio", 3187 | "url", 3188 | "uuid", 3189 | "webkit2gtk", 3190 | "webview2-com", 3191 | "windows 0.39.0", 3192 | ] 3193 | 3194 | [[package]] 3195 | name = "tauri-build" 3196 | version = "1.5.0" 3197 | source = "registry+https://github.com/rust-lang/crates.io-index" 3198 | checksum = "defbfc551bd38ab997e5f8e458f87396d2559d05ce32095076ad6c30f7fc5f9c" 3199 | dependencies = [ 3200 | "anyhow", 3201 | "cargo_toml", 3202 | "dirs-next", 3203 | "heck 0.4.1", 3204 | "json-patch", 3205 | "semver", 3206 | "serde", 3207 | "serde_json", 3208 | "tauri-utils", 3209 | "tauri-winres", 3210 | "walkdir", 3211 | ] 3212 | 3213 | [[package]] 3214 | name = "tauri-codegen" 3215 | version = "1.4.1" 3216 | source = "registry+https://github.com/rust-lang/crates.io-index" 3217 | checksum = "7b3475e55acec0b4a50fb96435f19631fb58cbcd31923e1a213de5c382536bbb" 3218 | dependencies = [ 3219 | "base64 0.21.5", 3220 | "brotli", 3221 | "ico", 3222 | "json-patch", 3223 | "plist", 3224 | "png", 3225 | "proc-macro2", 3226 | "quote", 3227 | "semver", 3228 | "serde", 3229 | "serde_json", 3230 | "sha2", 3231 | "tauri-utils", 3232 | "thiserror", 3233 | "time", 3234 | "uuid", 3235 | "walkdir", 3236 | ] 3237 | 3238 | [[package]] 3239 | name = "tauri-macros" 3240 | version = "1.4.1" 3241 | source = "registry+https://github.com/rust-lang/crates.io-index" 3242 | checksum = "613740228de92d9196b795ac455091d3a5fbdac2654abb8bb07d010b62ab43af" 3243 | dependencies = [ 3244 | "heck 0.4.1", 3245 | "proc-macro2", 3246 | "quote", 3247 | "syn 1.0.109", 3248 | "tauri-codegen", 3249 | "tauri-utils", 3250 | ] 3251 | 3252 | [[package]] 3253 | name = "tauri-runtime" 3254 | version = "0.14.1" 3255 | source = "registry+https://github.com/rust-lang/crates.io-index" 3256 | checksum = "07f8e9e53e00e9f41212c115749e87d5cd2a9eebccafca77a19722eeecd56d43" 3257 | dependencies = [ 3258 | "gtk", 3259 | "http", 3260 | "http-range", 3261 | "rand 0.8.5", 3262 | "raw-window-handle", 3263 | "serde", 3264 | "serde_json", 3265 | "tauri-utils", 3266 | "thiserror", 3267 | "url", 3268 | "uuid", 3269 | "webview2-com", 3270 | "windows 0.39.0", 3271 | ] 3272 | 3273 | [[package]] 3274 | name = "tauri-runtime-wry" 3275 | version = "0.14.1" 3276 | source = "registry+https://github.com/rust-lang/crates.io-index" 3277 | checksum = "8141d72b6b65f2008911e9ef5b98a68d1e3413b7a1464e8f85eb3673bb19a895" 3278 | dependencies = [ 3279 | "cocoa", 3280 | "gtk", 3281 | "percent-encoding", 3282 | "rand 0.8.5", 3283 | "raw-window-handle", 3284 | "tauri-runtime", 3285 | "tauri-utils", 3286 | "uuid", 3287 | "webkit2gtk", 3288 | "webview2-com", 3289 | "windows 0.39.0", 3290 | "wry", 3291 | ] 3292 | 3293 | [[package]] 3294 | name = "tauri-utils" 3295 | version = "1.5.0" 3296 | source = "registry+https://github.com/rust-lang/crates.io-index" 3297 | checksum = "34d55e185904a84a419308d523c2c6891d5e2dbcee740c4997eb42e75a7b0f46" 3298 | dependencies = [ 3299 | "brotli", 3300 | "ctor", 3301 | "dunce", 3302 | "glob", 3303 | "heck 0.4.1", 3304 | "html5ever 0.26.0", 3305 | "infer", 3306 | "json-patch", 3307 | "kuchikiki", 3308 | "log", 3309 | "memchr", 3310 | "phf 0.10.1", 3311 | "proc-macro2", 3312 | "quote", 3313 | "semver", 3314 | "serde", 3315 | "serde_json", 3316 | "serde_with", 3317 | "thiserror", 3318 | "url", 3319 | "walkdir", 3320 | "windows 0.39.0", 3321 | ] 3322 | 3323 | [[package]] 3324 | name = "tauri-winres" 3325 | version = "0.1.1" 3326 | source = "registry+https://github.com/rust-lang/crates.io-index" 3327 | checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" 3328 | dependencies = [ 3329 | "embed-resource", 3330 | "toml 0.7.8", 3331 | ] 3332 | 3333 | [[package]] 3334 | name = "tauri-winrt-notification" 3335 | version = "0.1.3" 3336 | source = "registry+https://github.com/rust-lang/crates.io-index" 3337 | checksum = "006851c9ccefa3c38a7646b8cec804bb429def3da10497bfa977179869c3e8e2" 3338 | dependencies = [ 3339 | "quick-xml", 3340 | "windows 0.51.1", 3341 | ] 3342 | 3343 | [[package]] 3344 | name = "tempfile" 3345 | version = "3.8.1" 3346 | source = "registry+https://github.com/rust-lang/crates.io-index" 3347 | checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" 3348 | dependencies = [ 3349 | "cfg-if", 3350 | "fastrand 2.0.1", 3351 | "redox_syscall 0.4.1", 3352 | "rustix 0.38.21", 3353 | "windows-sys 0.48.0", 3354 | ] 3355 | 3356 | [[package]] 3357 | name = "tendril" 3358 | version = "0.4.3" 3359 | source = "registry+https://github.com/rust-lang/crates.io-index" 3360 | checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 3361 | dependencies = [ 3362 | "futf", 3363 | "mac", 3364 | "utf-8", 3365 | ] 3366 | 3367 | [[package]] 3368 | name = "thin-slice" 3369 | version = "0.1.1" 3370 | source = "registry+https://github.com/rust-lang/crates.io-index" 3371 | checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" 3372 | 3373 | [[package]] 3374 | name = "thiserror" 3375 | version = "1.0.50" 3376 | source = "registry+https://github.com/rust-lang/crates.io-index" 3377 | checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" 3378 | dependencies = [ 3379 | "thiserror-impl", 3380 | ] 3381 | 3382 | [[package]] 3383 | name = "thiserror-impl" 3384 | version = "1.0.50" 3385 | source = "registry+https://github.com/rust-lang/crates.io-index" 3386 | checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" 3387 | dependencies = [ 3388 | "proc-macro2", 3389 | "quote", 3390 | "syn 2.0.38", 3391 | ] 3392 | 3393 | [[package]] 3394 | name = "thread_local" 3395 | version = "1.1.7" 3396 | source = "registry+https://github.com/rust-lang/crates.io-index" 3397 | checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" 3398 | dependencies = [ 3399 | "cfg-if", 3400 | "once_cell", 3401 | ] 3402 | 3403 | [[package]] 3404 | name = "time" 3405 | version = "0.3.30" 3406 | source = "registry+https://github.com/rust-lang/crates.io-index" 3407 | checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" 3408 | dependencies = [ 3409 | "deranged", 3410 | "itoa 1.0.9", 3411 | "powerfmt", 3412 | "serde", 3413 | "time-core", 3414 | "time-macros", 3415 | ] 3416 | 3417 | [[package]] 3418 | name = "time-core" 3419 | version = "0.1.2" 3420 | source = "registry+https://github.com/rust-lang/crates.io-index" 3421 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 3422 | 3423 | [[package]] 3424 | name = "time-macros" 3425 | version = "0.2.15" 3426 | source = "registry+https://github.com/rust-lang/crates.io-index" 3427 | checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" 3428 | dependencies = [ 3429 | "time-core", 3430 | ] 3431 | 3432 | [[package]] 3433 | name = "tinyvec" 3434 | version = "1.6.0" 3435 | source = "registry+https://github.com/rust-lang/crates.io-index" 3436 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 3437 | dependencies = [ 3438 | "tinyvec_macros", 3439 | ] 3440 | 3441 | [[package]] 3442 | name = "tinyvec_macros" 3443 | version = "0.1.1" 3444 | source = "registry+https://github.com/rust-lang/crates.io-index" 3445 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3446 | 3447 | [[package]] 3448 | name = "tokio" 3449 | version = "1.33.0" 3450 | source = "registry+https://github.com/rust-lang/crates.io-index" 3451 | checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" 3452 | dependencies = [ 3453 | "backtrace", 3454 | "bytes", 3455 | "num_cpus", 3456 | "pin-project-lite", 3457 | ] 3458 | 3459 | [[package]] 3460 | name = "toml" 3461 | version = "0.5.11" 3462 | source = "registry+https://github.com/rust-lang/crates.io-index" 3463 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 3464 | dependencies = [ 3465 | "serde", 3466 | ] 3467 | 3468 | [[package]] 3469 | name = "toml" 3470 | version = "0.7.8" 3471 | source = "registry+https://github.com/rust-lang/crates.io-index" 3472 | checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" 3473 | dependencies = [ 3474 | "serde", 3475 | "serde_spanned", 3476 | "toml_datetime", 3477 | "toml_edit 0.19.15", 3478 | ] 3479 | 3480 | [[package]] 3481 | name = "toml" 3482 | version = "0.8.5" 3483 | source = "registry+https://github.com/rust-lang/crates.io-index" 3484 | checksum = "3efaf127c78d5339cc547cce4e4d973bd5e4f56e949a06d091c082ebeef2f800" 3485 | dependencies = [ 3486 | "serde", 3487 | "serde_spanned", 3488 | "toml_datetime", 3489 | "toml_edit 0.20.5", 3490 | ] 3491 | 3492 | [[package]] 3493 | name = "toml_datetime" 3494 | version = "0.6.5" 3495 | source = "registry+https://github.com/rust-lang/crates.io-index" 3496 | checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" 3497 | dependencies = [ 3498 | "serde", 3499 | ] 3500 | 3501 | [[package]] 3502 | name = "toml_edit" 3503 | version = "0.19.15" 3504 | source = "registry+https://github.com/rust-lang/crates.io-index" 3505 | checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" 3506 | dependencies = [ 3507 | "indexmap 2.0.2", 3508 | "serde", 3509 | "serde_spanned", 3510 | "toml_datetime", 3511 | "winnow", 3512 | ] 3513 | 3514 | [[package]] 3515 | name = "toml_edit" 3516 | version = "0.20.5" 3517 | source = "registry+https://github.com/rust-lang/crates.io-index" 3518 | checksum = "782bf6c2ddf761c1e7855405e8975472acf76f7f36d0d4328bd3b7a2fae12a85" 3519 | dependencies = [ 3520 | "indexmap 2.0.2", 3521 | "serde", 3522 | "serde_spanned", 3523 | "toml_datetime", 3524 | "winnow", 3525 | ] 3526 | 3527 | [[package]] 3528 | name = "tracing" 3529 | version = "0.1.40" 3530 | source = "registry+https://github.com/rust-lang/crates.io-index" 3531 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 3532 | dependencies = [ 3533 | "pin-project-lite", 3534 | "tracing-attributes", 3535 | "tracing-core", 3536 | ] 3537 | 3538 | [[package]] 3539 | name = "tracing-attributes" 3540 | version = "0.1.27" 3541 | source = "registry+https://github.com/rust-lang/crates.io-index" 3542 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 3543 | dependencies = [ 3544 | "proc-macro2", 3545 | "quote", 3546 | "syn 2.0.38", 3547 | ] 3548 | 3549 | [[package]] 3550 | name = "tracing-core" 3551 | version = "0.1.32" 3552 | source = "registry+https://github.com/rust-lang/crates.io-index" 3553 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 3554 | dependencies = [ 3555 | "once_cell", 3556 | "valuable", 3557 | ] 3558 | 3559 | [[package]] 3560 | name = "tracing-log" 3561 | version = "0.1.4" 3562 | source = "registry+https://github.com/rust-lang/crates.io-index" 3563 | checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" 3564 | dependencies = [ 3565 | "log", 3566 | "once_cell", 3567 | "tracing-core", 3568 | ] 3569 | 3570 | [[package]] 3571 | name = "tracing-subscriber" 3572 | version = "0.3.17" 3573 | source = "registry+https://github.com/rust-lang/crates.io-index" 3574 | checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" 3575 | dependencies = [ 3576 | "matchers", 3577 | "nu-ansi-term", 3578 | "once_cell", 3579 | "regex", 3580 | "sharded-slab", 3581 | "smallvec", 3582 | "thread_local", 3583 | "tracing", 3584 | "tracing-core", 3585 | "tracing-log", 3586 | ] 3587 | 3588 | [[package]] 3589 | name = "treediff" 3590 | version = "4.0.2" 3591 | source = "registry+https://github.com/rust-lang/crates.io-index" 3592 | checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" 3593 | dependencies = [ 3594 | "serde_json", 3595 | ] 3596 | 3597 | [[package]] 3598 | name = "typenum" 3599 | version = "1.17.0" 3600 | source = "registry+https://github.com/rust-lang/crates.io-index" 3601 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 3602 | 3603 | [[package]] 3604 | name = "uds_windows" 3605 | version = "1.1.0" 3606 | source = "registry+https://github.com/rust-lang/crates.io-index" 3607 | checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 3608 | dependencies = [ 3609 | "memoffset 0.9.0", 3610 | "tempfile", 3611 | "winapi", 3612 | ] 3613 | 3614 | [[package]] 3615 | name = "unicode-bidi" 3616 | version = "0.3.13" 3617 | source = "registry+https://github.com/rust-lang/crates.io-index" 3618 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 3619 | 3620 | [[package]] 3621 | name = "unicode-ident" 3622 | version = "1.0.12" 3623 | source = "registry+https://github.com/rust-lang/crates.io-index" 3624 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 3625 | 3626 | [[package]] 3627 | name = "unicode-normalization" 3628 | version = "0.1.22" 3629 | source = "registry+https://github.com/rust-lang/crates.io-index" 3630 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 3631 | dependencies = [ 3632 | "tinyvec", 3633 | ] 3634 | 3635 | [[package]] 3636 | name = "unicode-segmentation" 3637 | version = "1.10.1" 3638 | source = "registry+https://github.com/rust-lang/crates.io-index" 3639 | checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" 3640 | 3641 | [[package]] 3642 | name = "url" 3643 | version = "2.4.1" 3644 | source = "registry+https://github.com/rust-lang/crates.io-index" 3645 | checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" 3646 | dependencies = [ 3647 | "form_urlencoded", 3648 | "idna", 3649 | "percent-encoding", 3650 | "serde", 3651 | ] 3652 | 3653 | [[package]] 3654 | name = "utf-8" 3655 | version = "0.7.6" 3656 | source = "registry+https://github.com/rust-lang/crates.io-index" 3657 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 3658 | 3659 | [[package]] 3660 | name = "uuid" 3661 | version = "1.5.0" 3662 | source = "registry+https://github.com/rust-lang/crates.io-index" 3663 | checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" 3664 | dependencies = [ 3665 | "getrandom 0.2.10", 3666 | ] 3667 | 3668 | [[package]] 3669 | name = "valuable" 3670 | version = "0.1.0" 3671 | source = "registry+https://github.com/rust-lang/crates.io-index" 3672 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 3673 | 3674 | [[package]] 3675 | name = "version-compare" 3676 | version = "0.0.11" 3677 | source = "registry+https://github.com/rust-lang/crates.io-index" 3678 | checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" 3679 | 3680 | [[package]] 3681 | name = "version-compare" 3682 | version = "0.1.1" 3683 | source = "registry+https://github.com/rust-lang/crates.io-index" 3684 | checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" 3685 | 3686 | [[package]] 3687 | name = "version_check" 3688 | version = "0.9.4" 3689 | source = "registry+https://github.com/rust-lang/crates.io-index" 3690 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 3691 | 3692 | [[package]] 3693 | name = "vswhom" 3694 | version = "0.1.0" 3695 | source = "registry+https://github.com/rust-lang/crates.io-index" 3696 | checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" 3697 | dependencies = [ 3698 | "libc", 3699 | "vswhom-sys", 3700 | ] 3701 | 3702 | [[package]] 3703 | name = "vswhom-sys" 3704 | version = "0.1.2" 3705 | source = "registry+https://github.com/rust-lang/crates.io-index" 3706 | checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" 3707 | dependencies = [ 3708 | "cc", 3709 | "libc", 3710 | ] 3711 | 3712 | [[package]] 3713 | name = "waker-fn" 3714 | version = "1.1.1" 3715 | source = "registry+https://github.com/rust-lang/crates.io-index" 3716 | checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" 3717 | 3718 | [[package]] 3719 | name = "walkdir" 3720 | version = "2.4.0" 3721 | source = "registry+https://github.com/rust-lang/crates.io-index" 3722 | checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" 3723 | dependencies = [ 3724 | "same-file", 3725 | "winapi-util", 3726 | ] 3727 | 3728 | [[package]] 3729 | name = "wasi" 3730 | version = "0.9.0+wasi-snapshot-preview1" 3731 | source = "registry+https://github.com/rust-lang/crates.io-index" 3732 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 3733 | 3734 | [[package]] 3735 | name = "wasi" 3736 | version = "0.11.0+wasi-snapshot-preview1" 3737 | source = "registry+https://github.com/rust-lang/crates.io-index" 3738 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3739 | 3740 | [[package]] 3741 | name = "wasm-bindgen" 3742 | version = "0.2.87" 3743 | source = "registry+https://github.com/rust-lang/crates.io-index" 3744 | checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" 3745 | dependencies = [ 3746 | "cfg-if", 3747 | "wasm-bindgen-macro", 3748 | ] 3749 | 3750 | [[package]] 3751 | name = "wasm-bindgen-backend" 3752 | version = "0.2.87" 3753 | source = "registry+https://github.com/rust-lang/crates.io-index" 3754 | checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" 3755 | dependencies = [ 3756 | "bumpalo", 3757 | "log", 3758 | "once_cell", 3759 | "proc-macro2", 3760 | "quote", 3761 | "syn 2.0.38", 3762 | "wasm-bindgen-shared", 3763 | ] 3764 | 3765 | [[package]] 3766 | name = "wasm-bindgen-futures" 3767 | version = "0.4.37" 3768 | source = "registry+https://github.com/rust-lang/crates.io-index" 3769 | checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" 3770 | dependencies = [ 3771 | "cfg-if", 3772 | "js-sys", 3773 | "wasm-bindgen", 3774 | "web-sys", 3775 | ] 3776 | 3777 | [[package]] 3778 | name = "wasm-bindgen-macro" 3779 | version = "0.2.87" 3780 | source = "registry+https://github.com/rust-lang/crates.io-index" 3781 | checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" 3782 | dependencies = [ 3783 | "quote", 3784 | "wasm-bindgen-macro-support", 3785 | ] 3786 | 3787 | [[package]] 3788 | name = "wasm-bindgen-macro-support" 3789 | version = "0.2.87" 3790 | source = "registry+https://github.com/rust-lang/crates.io-index" 3791 | checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" 3792 | dependencies = [ 3793 | "proc-macro2", 3794 | "quote", 3795 | "syn 2.0.38", 3796 | "wasm-bindgen-backend", 3797 | "wasm-bindgen-shared", 3798 | ] 3799 | 3800 | [[package]] 3801 | name = "wasm-bindgen-shared" 3802 | version = "0.2.87" 3803 | source = "registry+https://github.com/rust-lang/crates.io-index" 3804 | checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" 3805 | 3806 | [[package]] 3807 | name = "web-sys" 3808 | version = "0.3.64" 3809 | source = "registry+https://github.com/rust-lang/crates.io-index" 3810 | checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" 3811 | dependencies = [ 3812 | "js-sys", 3813 | "wasm-bindgen", 3814 | ] 3815 | 3816 | [[package]] 3817 | name = "webkit2gtk" 3818 | version = "0.18.2" 3819 | source = "registry+https://github.com/rust-lang/crates.io-index" 3820 | checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" 3821 | dependencies = [ 3822 | "bitflags 1.3.2", 3823 | "cairo-rs", 3824 | "gdk", 3825 | "gdk-sys", 3826 | "gio", 3827 | "gio-sys", 3828 | "glib", 3829 | "glib-sys", 3830 | "gobject-sys", 3831 | "gtk", 3832 | "gtk-sys", 3833 | "javascriptcore-rs", 3834 | "libc", 3835 | "once_cell", 3836 | "soup2", 3837 | "webkit2gtk-sys", 3838 | ] 3839 | 3840 | [[package]] 3841 | name = "webkit2gtk-sys" 3842 | version = "0.18.0" 3843 | source = "registry+https://github.com/rust-lang/crates.io-index" 3844 | checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" 3845 | dependencies = [ 3846 | "atk-sys", 3847 | "bitflags 1.3.2", 3848 | "cairo-sys-rs", 3849 | "gdk-pixbuf-sys", 3850 | "gdk-sys", 3851 | "gio-sys", 3852 | "glib-sys", 3853 | "gobject-sys", 3854 | "gtk-sys", 3855 | "javascriptcore-rs-sys", 3856 | "libc", 3857 | "pango-sys", 3858 | "pkg-config", 3859 | "soup2-sys", 3860 | "system-deps 6.1.2", 3861 | ] 3862 | 3863 | [[package]] 3864 | name = "webview2-com" 3865 | version = "0.19.1" 3866 | source = "registry+https://github.com/rust-lang/crates.io-index" 3867 | checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" 3868 | dependencies = [ 3869 | "webview2-com-macros", 3870 | "webview2-com-sys", 3871 | "windows 0.39.0", 3872 | "windows-implement", 3873 | ] 3874 | 3875 | [[package]] 3876 | name = "webview2-com-macros" 3877 | version = "0.6.0" 3878 | source = "registry+https://github.com/rust-lang/crates.io-index" 3879 | checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" 3880 | dependencies = [ 3881 | "proc-macro2", 3882 | "quote", 3883 | "syn 1.0.109", 3884 | ] 3885 | 3886 | [[package]] 3887 | name = "webview2-com-sys" 3888 | version = "0.19.0" 3889 | source = "registry+https://github.com/rust-lang/crates.io-index" 3890 | checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" 3891 | dependencies = [ 3892 | "regex", 3893 | "serde", 3894 | "serde_json", 3895 | "thiserror", 3896 | "windows 0.39.0", 3897 | "windows-bindgen", 3898 | "windows-metadata", 3899 | ] 3900 | 3901 | [[package]] 3902 | name = "winapi" 3903 | version = "0.3.9" 3904 | source = "registry+https://github.com/rust-lang/crates.io-index" 3905 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3906 | dependencies = [ 3907 | "winapi-i686-pc-windows-gnu", 3908 | "winapi-x86_64-pc-windows-gnu", 3909 | ] 3910 | 3911 | [[package]] 3912 | name = "winapi-i686-pc-windows-gnu" 3913 | version = "0.4.0" 3914 | source = "registry+https://github.com/rust-lang/crates.io-index" 3915 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3916 | 3917 | [[package]] 3918 | name = "winapi-util" 3919 | version = "0.1.6" 3920 | source = "registry+https://github.com/rust-lang/crates.io-index" 3921 | checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" 3922 | dependencies = [ 3923 | "winapi", 3924 | ] 3925 | 3926 | [[package]] 3927 | name = "winapi-x86_64-pc-windows-gnu" 3928 | version = "0.4.0" 3929 | source = "registry+https://github.com/rust-lang/crates.io-index" 3930 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3931 | 3932 | [[package]] 3933 | name = "windows" 3934 | version = "0.37.0" 3935 | source = "registry+https://github.com/rust-lang/crates.io-index" 3936 | checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" 3937 | dependencies = [ 3938 | "windows_aarch64_msvc 0.37.0", 3939 | "windows_i686_gnu 0.37.0", 3940 | "windows_i686_msvc 0.37.0", 3941 | "windows_x86_64_gnu 0.37.0", 3942 | "windows_x86_64_msvc 0.37.0", 3943 | ] 3944 | 3945 | [[package]] 3946 | name = "windows" 3947 | version = "0.39.0" 3948 | source = "registry+https://github.com/rust-lang/crates.io-index" 3949 | checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" 3950 | dependencies = [ 3951 | "windows-implement", 3952 | "windows_aarch64_msvc 0.39.0", 3953 | "windows_i686_gnu 0.39.0", 3954 | "windows_i686_msvc 0.39.0", 3955 | "windows_x86_64_gnu 0.39.0", 3956 | "windows_x86_64_msvc 0.39.0", 3957 | ] 3958 | 3959 | [[package]] 3960 | name = "windows" 3961 | version = "0.48.0" 3962 | source = "registry+https://github.com/rust-lang/crates.io-index" 3963 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 3964 | dependencies = [ 3965 | "windows-targets 0.48.5", 3966 | ] 3967 | 3968 | [[package]] 3969 | name = "windows" 3970 | version = "0.51.1" 3971 | source = "registry+https://github.com/rust-lang/crates.io-index" 3972 | checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" 3973 | dependencies = [ 3974 | "windows-core", 3975 | "windows-targets 0.48.5", 3976 | ] 3977 | 3978 | [[package]] 3979 | name = "windows-bindgen" 3980 | version = "0.39.0" 3981 | source = "registry+https://github.com/rust-lang/crates.io-index" 3982 | checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" 3983 | dependencies = [ 3984 | "windows-metadata", 3985 | "windows-tokens", 3986 | ] 3987 | 3988 | [[package]] 3989 | name = "windows-core" 3990 | version = "0.51.1" 3991 | source = "registry+https://github.com/rust-lang/crates.io-index" 3992 | checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" 3993 | dependencies = [ 3994 | "windows-targets 0.48.5", 3995 | ] 3996 | 3997 | [[package]] 3998 | name = "windows-implement" 3999 | version = "0.39.0" 4000 | source = "registry+https://github.com/rust-lang/crates.io-index" 4001 | checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" 4002 | dependencies = [ 4003 | "syn 1.0.109", 4004 | "windows-tokens", 4005 | ] 4006 | 4007 | [[package]] 4008 | name = "windows-metadata" 4009 | version = "0.39.0" 4010 | source = "registry+https://github.com/rust-lang/crates.io-index" 4011 | checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" 4012 | 4013 | [[package]] 4014 | name = "windows-sys" 4015 | version = "0.48.0" 4016 | source = "registry+https://github.com/rust-lang/crates.io-index" 4017 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 4018 | dependencies = [ 4019 | "windows-targets 0.48.5", 4020 | ] 4021 | 4022 | [[package]] 4023 | name = "windows-sys" 4024 | version = "0.52.0" 4025 | source = "registry+https://github.com/rust-lang/crates.io-index" 4026 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4027 | dependencies = [ 4028 | "windows-targets 0.52.0", 4029 | ] 4030 | 4031 | [[package]] 4032 | name = "windows-targets" 4033 | version = "0.48.5" 4034 | source = "registry+https://github.com/rust-lang/crates.io-index" 4035 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4036 | dependencies = [ 4037 | "windows_aarch64_gnullvm 0.48.5", 4038 | "windows_aarch64_msvc 0.48.5", 4039 | "windows_i686_gnu 0.48.5", 4040 | "windows_i686_msvc 0.48.5", 4041 | "windows_x86_64_gnu 0.48.5", 4042 | "windows_x86_64_gnullvm 0.48.5", 4043 | "windows_x86_64_msvc 0.48.5", 4044 | ] 4045 | 4046 | [[package]] 4047 | name = "windows-targets" 4048 | version = "0.52.0" 4049 | source = "registry+https://github.com/rust-lang/crates.io-index" 4050 | checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" 4051 | dependencies = [ 4052 | "windows_aarch64_gnullvm 0.52.0", 4053 | "windows_aarch64_msvc 0.52.0", 4054 | "windows_i686_gnu 0.52.0", 4055 | "windows_i686_msvc 0.52.0", 4056 | "windows_x86_64_gnu 0.52.0", 4057 | "windows_x86_64_gnullvm 0.52.0", 4058 | "windows_x86_64_msvc 0.52.0", 4059 | ] 4060 | 4061 | [[package]] 4062 | name = "windows-tokens" 4063 | version = "0.39.0" 4064 | source = "registry+https://github.com/rust-lang/crates.io-index" 4065 | checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" 4066 | 4067 | [[package]] 4068 | name = "windows_aarch64_gnullvm" 4069 | version = "0.48.5" 4070 | source = "registry+https://github.com/rust-lang/crates.io-index" 4071 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4072 | 4073 | [[package]] 4074 | name = "windows_aarch64_gnullvm" 4075 | version = "0.52.0" 4076 | source = "registry+https://github.com/rust-lang/crates.io-index" 4077 | checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" 4078 | 4079 | [[package]] 4080 | name = "windows_aarch64_msvc" 4081 | version = "0.37.0" 4082 | source = "registry+https://github.com/rust-lang/crates.io-index" 4083 | checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" 4084 | 4085 | [[package]] 4086 | name = "windows_aarch64_msvc" 4087 | version = "0.39.0" 4088 | source = "registry+https://github.com/rust-lang/crates.io-index" 4089 | checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" 4090 | 4091 | [[package]] 4092 | name = "windows_aarch64_msvc" 4093 | version = "0.48.5" 4094 | source = "registry+https://github.com/rust-lang/crates.io-index" 4095 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4096 | 4097 | [[package]] 4098 | name = "windows_aarch64_msvc" 4099 | version = "0.52.0" 4100 | source = "registry+https://github.com/rust-lang/crates.io-index" 4101 | checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" 4102 | 4103 | [[package]] 4104 | name = "windows_i686_gnu" 4105 | version = "0.37.0" 4106 | source = "registry+https://github.com/rust-lang/crates.io-index" 4107 | checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" 4108 | 4109 | [[package]] 4110 | name = "windows_i686_gnu" 4111 | version = "0.39.0" 4112 | source = "registry+https://github.com/rust-lang/crates.io-index" 4113 | checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" 4114 | 4115 | [[package]] 4116 | name = "windows_i686_gnu" 4117 | version = "0.48.5" 4118 | source = "registry+https://github.com/rust-lang/crates.io-index" 4119 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4120 | 4121 | [[package]] 4122 | name = "windows_i686_gnu" 4123 | version = "0.52.0" 4124 | source = "registry+https://github.com/rust-lang/crates.io-index" 4125 | checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" 4126 | 4127 | [[package]] 4128 | name = "windows_i686_msvc" 4129 | version = "0.37.0" 4130 | source = "registry+https://github.com/rust-lang/crates.io-index" 4131 | checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" 4132 | 4133 | [[package]] 4134 | name = "windows_i686_msvc" 4135 | version = "0.39.0" 4136 | source = "registry+https://github.com/rust-lang/crates.io-index" 4137 | checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" 4138 | 4139 | [[package]] 4140 | name = "windows_i686_msvc" 4141 | version = "0.48.5" 4142 | source = "registry+https://github.com/rust-lang/crates.io-index" 4143 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4144 | 4145 | [[package]] 4146 | name = "windows_i686_msvc" 4147 | version = "0.52.0" 4148 | source = "registry+https://github.com/rust-lang/crates.io-index" 4149 | checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" 4150 | 4151 | [[package]] 4152 | name = "windows_x86_64_gnu" 4153 | version = "0.37.0" 4154 | source = "registry+https://github.com/rust-lang/crates.io-index" 4155 | checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" 4156 | 4157 | [[package]] 4158 | name = "windows_x86_64_gnu" 4159 | version = "0.39.0" 4160 | source = "registry+https://github.com/rust-lang/crates.io-index" 4161 | checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" 4162 | 4163 | [[package]] 4164 | name = "windows_x86_64_gnu" 4165 | version = "0.48.5" 4166 | source = "registry+https://github.com/rust-lang/crates.io-index" 4167 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 4168 | 4169 | [[package]] 4170 | name = "windows_x86_64_gnu" 4171 | version = "0.52.0" 4172 | source = "registry+https://github.com/rust-lang/crates.io-index" 4173 | checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" 4174 | 4175 | [[package]] 4176 | name = "windows_x86_64_gnullvm" 4177 | version = "0.48.5" 4178 | source = "registry+https://github.com/rust-lang/crates.io-index" 4179 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 4180 | 4181 | [[package]] 4182 | name = "windows_x86_64_gnullvm" 4183 | version = "0.52.0" 4184 | source = "registry+https://github.com/rust-lang/crates.io-index" 4185 | checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" 4186 | 4187 | [[package]] 4188 | name = "windows_x86_64_msvc" 4189 | version = "0.37.0" 4190 | source = "registry+https://github.com/rust-lang/crates.io-index" 4191 | checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" 4192 | 4193 | [[package]] 4194 | name = "windows_x86_64_msvc" 4195 | version = "0.39.0" 4196 | source = "registry+https://github.com/rust-lang/crates.io-index" 4197 | checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" 4198 | 4199 | [[package]] 4200 | name = "windows_x86_64_msvc" 4201 | version = "0.48.5" 4202 | source = "registry+https://github.com/rust-lang/crates.io-index" 4203 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 4204 | 4205 | [[package]] 4206 | name = "windows_x86_64_msvc" 4207 | version = "0.52.0" 4208 | source = "registry+https://github.com/rust-lang/crates.io-index" 4209 | checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" 4210 | 4211 | [[package]] 4212 | name = "winnow" 4213 | version = "0.5.17" 4214 | source = "registry+https://github.com/rust-lang/crates.io-index" 4215 | checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" 4216 | dependencies = [ 4217 | "memchr", 4218 | ] 4219 | 4220 | [[package]] 4221 | name = "winreg" 4222 | version = "0.51.0" 4223 | source = "registry+https://github.com/rust-lang/crates.io-index" 4224 | checksum = "937f3df7948156640f46aacef17a70db0de5917bda9c92b0f751f3a955b588fc" 4225 | dependencies = [ 4226 | "cfg-if", 4227 | "windows-sys 0.48.0", 4228 | ] 4229 | 4230 | [[package]] 4231 | name = "wry" 4232 | version = "0.24.4" 4233 | source = "registry+https://github.com/rust-lang/crates.io-index" 4234 | checksum = "88ef04bdad49eba2e01f06e53688c8413bd6a87b0bc14b72284465cf96e3578e" 4235 | dependencies = [ 4236 | "base64 0.13.1", 4237 | "block", 4238 | "cocoa", 4239 | "core-graphics", 4240 | "crossbeam-channel", 4241 | "dunce", 4242 | "gdk", 4243 | "gio", 4244 | "glib", 4245 | "gtk", 4246 | "html5ever 0.25.2", 4247 | "http", 4248 | "kuchiki", 4249 | "libc", 4250 | "log", 4251 | "objc", 4252 | "objc_id", 4253 | "once_cell", 4254 | "serde", 4255 | "serde_json", 4256 | "sha2", 4257 | "soup2", 4258 | "tao", 4259 | "thiserror", 4260 | "url", 4261 | "webkit2gtk", 4262 | "webkit2gtk-sys", 4263 | "webview2-com", 4264 | "windows 0.39.0", 4265 | "windows-implement", 4266 | ] 4267 | 4268 | [[package]] 4269 | name = "x11" 4270 | version = "2.21.0" 4271 | source = "registry+https://github.com/rust-lang/crates.io-index" 4272 | checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" 4273 | dependencies = [ 4274 | "libc", 4275 | "pkg-config", 4276 | ] 4277 | 4278 | [[package]] 4279 | name = "x11-dl" 4280 | version = "2.21.0" 4281 | source = "registry+https://github.com/rust-lang/crates.io-index" 4282 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 4283 | dependencies = [ 4284 | "libc", 4285 | "once_cell", 4286 | "pkg-config", 4287 | ] 4288 | 4289 | [[package]] 4290 | name = "xattr" 4291 | version = "1.0.1" 4292 | source = "registry+https://github.com/rust-lang/crates.io-index" 4293 | checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" 4294 | dependencies = [ 4295 | "libc", 4296 | ] 4297 | 4298 | [[package]] 4299 | name = "xdg-home" 4300 | version = "1.1.0" 4301 | source = "registry+https://github.com/rust-lang/crates.io-index" 4302 | checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" 4303 | dependencies = [ 4304 | "libc", 4305 | "winapi", 4306 | ] 4307 | 4308 | [[package]] 4309 | name = "zbus" 4310 | version = "3.15.0" 4311 | source = "registry+https://github.com/rust-lang/crates.io-index" 4312 | checksum = "c45d06ae3b0f9ba1fb2671268b975557d8f5a84bb5ec6e43964f87e763d8bca8" 4313 | dependencies = [ 4314 | "async-broadcast", 4315 | "async-executor", 4316 | "async-fs", 4317 | "async-io 1.13.0", 4318 | "async-lock 2.8.0", 4319 | "async-process", 4320 | "async-recursion", 4321 | "async-task", 4322 | "async-trait", 4323 | "blocking", 4324 | "byteorder", 4325 | "derivative", 4326 | "enumflags2", 4327 | "event-listener 2.5.3", 4328 | "futures-core", 4329 | "futures-sink", 4330 | "futures-util", 4331 | "hex", 4332 | "nix", 4333 | "once_cell", 4334 | "ordered-stream", 4335 | "rand 0.8.5", 4336 | "serde", 4337 | "serde_repr", 4338 | "sha1", 4339 | "static_assertions", 4340 | "tracing", 4341 | "uds_windows", 4342 | "winapi", 4343 | "xdg-home", 4344 | "zbus_macros", 4345 | "zbus_names", 4346 | "zvariant", 4347 | ] 4348 | 4349 | [[package]] 4350 | name = "zbus_macros" 4351 | version = "3.15.0" 4352 | source = "registry+https://github.com/rust-lang/crates.io-index" 4353 | checksum = "b4a1ba45ed0ad344b85a2bb5a1fe9830aed23d67812ea39a586e7d0136439c7d" 4354 | dependencies = [ 4355 | "proc-macro-crate", 4356 | "proc-macro2", 4357 | "quote", 4358 | "regex", 4359 | "syn 1.0.109", 4360 | "zvariant_utils", 4361 | ] 4362 | 4363 | [[package]] 4364 | name = "zbus_names" 4365 | version = "2.6.0" 4366 | source = "registry+https://github.com/rust-lang/crates.io-index" 4367 | checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" 4368 | dependencies = [ 4369 | "serde", 4370 | "static_assertions", 4371 | "zvariant", 4372 | ] 4373 | 4374 | [[package]] 4375 | name = "zvariant" 4376 | version = "3.15.0" 4377 | source = "registry+https://github.com/rust-lang/crates.io-index" 4378 | checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" 4379 | dependencies = [ 4380 | "byteorder", 4381 | "enumflags2", 4382 | "libc", 4383 | "serde", 4384 | "static_assertions", 4385 | "zvariant_derive", 4386 | ] 4387 | 4388 | [[package]] 4389 | name = "zvariant_derive" 4390 | version = "3.15.0" 4391 | source = "registry+https://github.com/rust-lang/crates.io-index" 4392 | checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" 4393 | dependencies = [ 4394 | "proc-macro-crate", 4395 | "proc-macro2", 4396 | "quote", 4397 | "syn 1.0.109", 4398 | "zvariant_utils", 4399 | ] 4400 | 4401 | [[package]] 4402 | name = "zvariant_utils" 4403 | version = "1.0.1" 4404 | source = "registry+https://github.com/rust-lang/crates.io-index" 4405 | checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" 4406 | dependencies = [ 4407 | "proc-macro2", 4408 | "quote", 4409 | "syn 1.0.109", 4410 | ] 4411 | -------------------------------------------------------------------------------- /src-tauri/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "app" 3 | version = "0.1.0" 4 | description = "A Tauri App" 5 | authors = ["you"] 6 | license = "" 7 | repository = "" 8 | default-run = "app" 9 | edition = "2021" 10 | rust-version = "1.60" 11 | 12 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 13 | 14 | [build-dependencies] 15 | tauri-build = { version = "1.5.0", features = [] } 16 | 17 | [dependencies] 18 | serde_json = "1.0" 19 | serde = { version = "1.0", features = ["derive"] } 20 | tauri = { version = "1.5.2", features = [ "notification-all", "fs-remove-file", "fs-exists", "fs-write-file", "path-all", "dialog-all"] } 21 | 22 | [features] 23 | # this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled. 24 | # If you use cargo directly instead of tauri's cli you can use this feature flag to switch between tauri's `dev` and `build` modes. 25 | # DO NOT REMOVE!! 26 | custom-protocol = [ "tauri/custom-protocol" ] 27 | -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /src-tauri/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/StoreLogo.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src-tauri/icons/icon.png -------------------------------------------------------------------------------- /src-tauri/src/main.rs: -------------------------------------------------------------------------------- 1 | // Prevents additional console window on Windows in release, DO NOT REMOVE!! 2 | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] 3 | 4 | #[tauri::command] 5 | fn greet(name: &str) { 6 | println!("Hello, {}! You've been greeted from Rust!", name); 7 | format!("Hello, {}!", name); 8 | } 9 | 10 | fn main() { 11 | tauri::Builder::default() 12 | .invoke_handler(tauri::generate_handler![greet]) 13 | .run(tauri::generate_context!()) 14 | .expect("error while running tauri application"); 15 | } 16 | 17 | 18 | -------------------------------------------------------------------------------- /src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../node_modules/@tauri-apps/cli/schema.json", 3 | "build": { 4 | "beforeBuildCommand": "yarn run build:prod", 5 | "beforeDevCommand": "yarn run start", 6 | "devPath": "http://localhost:3000", 7 | "distDir": "../dist", 8 | "withGlobalTauri": true 9 | }, 10 | "package": { 11 | "productName": "apifox-tool", 12 | "version": "1.0.3" 13 | }, 14 | "tauri": { 15 | "allowlist": { 16 | "all": false, 17 | "dialog": { 18 | "all": true, 19 | "message": true 20 | }, 21 | "notification": { 22 | "all": true 23 | }, 24 | "path": { 25 | "all": true 26 | }, 27 | "fs": { 28 | "writeFile": true, 29 | "exists": true, 30 | "removeFile": true, 31 | "scope": [ 32 | "$APPDATA/databases/*" 33 | ] 34 | } 35 | }, 36 | "bundle": { 37 | "active": true, 38 | "category": "DeveloperTool", 39 | "copyright": "", 40 | "deb": { 41 | "depends": [] 42 | }, 43 | "externalBin": [], 44 | "icon": [ 45 | "icons/32x32.png", 46 | "icons/128x128.png", 47 | "icons/128x128@2x.png", 48 | "icons/icon.icns", 49 | "icons/icon.ico" 50 | ], 51 | "identifier": "com.apifox.tool", 52 | "longDescription": "", 53 | "macOS": { 54 | "entitlements": null, 55 | "exceptionDomain": "", 56 | "frameworks": [], 57 | "providerShortName": null, 58 | "signingIdentity": null 59 | }, 60 | "resources": [], 61 | "shortDescription": "", 62 | "targets": "all", 63 | "windows": { 64 | "certificateThumbprint": null, 65 | "digestAlgorithm": "sha256", 66 | "timestampUrl": "" 67 | } 68 | }, 69 | "security": { 70 | "csp": null 71 | }, 72 | "updater": { 73 | "active": false 74 | }, 75 | "windows": [ 76 | { 77 | "fullscreen": false, 78 | "width": 800, 79 | "height": 600, 80 | "resizable": false, 81 | "title": "define-tool", 82 | "fileDropEnabled": false 83 | } 84 | ] 85 | } 86 | } -------------------------------------------------------------------------------- /src/assets/css/global.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | @tailwind screens; 5 | 6 | /* 全局变量配置 */ 7 | :root { 8 | /* 字体,字号配置 */ 9 | --text-xxs: 12px; 10 | --text-xs: 13px; 11 | --text-base: 14px; 12 | --text-title: 16px; 13 | --text-18: 18px; 14 | --text-20: 20px; 15 | --text-24: 24px; 16 | --text-36: 36px; 17 | --text-48: 48px; 18 | --text-56: 56px; 19 | 20 | /* 圆角 */ 21 | --round-none: 0; 22 | --round-base: 4px; 23 | --round-md: 6px; 24 | --round-lg: 8px; 25 | --rounded: 50%; 26 | 27 | /* 投影 按投影面积从小到大 */ 28 | --shadow-1-center: '0 0 5px rgba(0, 0, 0, 0.1)'; 29 | --shadow-1-top: '0 -2px 5px rgba(0, 0, 0, 0.1)'; 30 | --shadow-1-bottom: '0 2px 5px rgba(0, 0, 0, 0.1)'; 31 | --shadow-1-left: '-2px 0 5px rgba(0, 0, 0, 0.1)'; 32 | --shadow-1-right: '2px 0 5px rgba(0, 0, 0, 0.1)'; 33 | --shadow-1-top-left: '-2px -2px 5px rgba(0, 0, 0, 0.1)'; 34 | --shadow-1-bottom-left: '-2px 2px 5px rgba(0, 0, 0, 0.1)'; 35 | --shadow-1-top-right: '2px -2px 5px rgba(0, 0, 0, 0.1)'; 36 | --shadow-1-bottom-right: '2px 2px 5px rgba(0, 0, 0, 0.1)'; 37 | 38 | --shadow-2-center: '0 0 10px rgba(0, 0, 0, 0.1)'; 39 | --shadow-2-top: '0 -4px 10px rgba(0, 0, 0, 0.1)'; 40 | --shadow-2-bottom: '0 4px 10px rgba(0, 0, 0, 0.1)'; 41 | --shadow-2-left: '-4px 0 10px rgba(0, 0, 0, 0.1)'; 42 | --shadow-2-right: '4px 0 10px rgba(0, 0, 0, 0.1)'; 43 | --shadow-2-top-left: '-4px -4px 10px rgba(0, 0, 0, 0.1)'; 44 | --shadow-2-bottom-left: '-4px 4px 10px rgba(0, 0, 0, 0.1)'; 45 | --shadow-2-top-right: '4px -4px 10px rgba(0, 0, 0, 0.1)'; 46 | --shadow-2-bottom-right: '4px 4px 10px rgba(0, 0, 0, 0.1)'; 47 | 48 | --shadow-3-center: '0 0 20px rgba(0, 0, 0, 0.1)'; 49 | --shadow-3-top: '0 -8px 20px rgba(0, 0, 0, 0.1)'; 50 | --shadow-3-bottom: '0 8px 20px rgba(0, 0, 0, 0.1)'; 51 | --shadow-3-left: '-8px 0 20px rgba(0, 0, 0, 0.1)'; 52 | --shadow-3-right: '8px 0 20px rgba(0, 0, 0, 0.1)'; 53 | --shadow-3-top-left: '-8px -8px 20px rgba(0, 0, 0, 0.1)'; 54 | --shadow-3-bottom-left: '-8px 8px 20px rgba(0, 0, 0, 0.1)'; 55 | --shadow-3-top-right: '8px -8px 20px rgba(0, 0, 0, 0.1)'; 56 | --shadow-3-bottom-right: '8px 8px 20px rgba(0, 0, 0, 0.1)'; 57 | } 58 | 59 | * { 60 | list-style: none; 61 | padding: 0; 62 | margin: 0; 63 | font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, Tahoma, 'PingFang SC', Roboto, Microsoft Yahei, 64 | 'Microsoft Jhenghei', Arial, 'Hiragino Sans GB', 'sans-serif', 'Apple Color Emoji', 'Segoe UI Emoji', 65 | 'Segoe UI Symbol', 'Noto Color Emoji'; 66 | } 67 | 68 | *:not(input):not(textarea) { 69 | user-select: none; 70 | } 71 | 72 | html { 73 | margin-top: 0 !important; 74 | -ms-text-size-adjust: 100%; 75 | -webkit-text-size-adjust: 100%; 76 | } 77 | 78 | body { 79 | -webkit-text-size-adjust: none !important; 80 | } 81 | 82 | a { 83 | text-decoration: none; 84 | } 85 | 86 | img { 87 | max-width: 100%; 88 | } 89 | 90 | article, 91 | aside, 92 | footer, 93 | header, 94 | nav, 95 | section { 96 | display: block; 97 | } 98 | 99 | button { 100 | border: none; 101 | outline: none; 102 | background: none; 103 | cursor: pointer; 104 | } 105 | 106 | input { 107 | outline: none; 108 | } 109 | 110 | /* 设置滚动条的样式 */ 111 | ::-webkit-scrollbar { 112 | width: 3px; 113 | height: 3px; 114 | display: none; 115 | } 116 | 117 | /* 滚动槽 */ 118 | ::-webkit-scrollbar-track { 119 | -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.3); 120 | box-shadow: inset006pxrgba(0, 0, 0, 0.3); 121 | border-radius: 10px; 122 | } 123 | 124 | /* 滚动条滑块 */ 125 | ::-webkit-scrollbar-thumb { 126 | border-radius: 10px; 127 | background: rgba(0, 0, 0, 0.1); 128 | -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.5); 129 | box-shadow: inset006pxrgba(0, 0, 0, 0.5); 130 | } 131 | 132 | ::-webkit-scrollbar-thumb:window-inactive { 133 | background: rgba(0, 0, 0, 0.1); 134 | } 135 | 136 | /** 单行文本加省略号 **/ 137 | .text-ellipsis { 138 | overflow: hidden; 139 | text-overflow: ellipsis; 140 | white-space: nowrap; 141 | } 142 | /** 2行文本加省略号 **/ 143 | .text-ellipsis-multiple { 144 | display: -webkit-box; 145 | -webkit-box-orient: vertical; 146 | -webkit-line-clamp: 2; 147 | overflow: hidden; 148 | } 149 | -------------------------------------------------------------------------------- /src/assets/images/preview1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src/assets/images/preview1.png -------------------------------------------------------------------------------- /src/assets/images/preview2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src/assets/images/preview2.png -------------------------------------------------------------------------------- /src/assets/images/preview3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src/assets/images/preview3.png -------------------------------------------------------------------------------- /src/assets/images/preview4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src/assets/images/preview4.jpg -------------------------------------------------------------------------------- /src/assets/images/preview5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theqianqiu/apifox-tool/21496b1b5c032b420dea3a4ddbf6191951ba56ee/src/assets/images/preview5.jpg -------------------------------------------------------------------------------- /src/components/LazyLoading/index.tsx: -------------------------------------------------------------------------------- 1 | import { Spin } from '@arco-design/web-react'; 2 | import { FunctionComponent, ReactElement } from 'react'; 3 | 4 | export const LazyLoading: FunctionComponent = (): ReactElement => { 5 | return ( 6 |
7 | 8 |
9 | ); 10 | }; 11 | 12 | LazyLoading.displayName = 'LazyLoading'; 13 | -------------------------------------------------------------------------------- /src/declaration.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | /// 4 | 5 | declare module '*.avif' { 6 | const src: string; 7 | export default src; 8 | } 9 | 10 | declare module '*.bmp' { 11 | const src: string; 12 | export default src; 13 | } 14 | 15 | declare module '*.gif' { 16 | const src: string; 17 | export default src; 18 | } 19 | 20 | declare module '*.jpg' { 21 | const src: string; 22 | export default src; 23 | } 24 | 25 | declare module '*.jpeg' { 26 | const src: string; 27 | export default src; 28 | } 29 | 30 | declare module '*.png' { 31 | const src: string; 32 | export default src; 33 | } 34 | 35 | declare module '*.webp' { 36 | const src: string; 37 | export default src; 38 | } 39 | 40 | declare module '*.svg' { 41 | import * as React from 'react'; 42 | 43 | export const ReactComponent: React.FunctionComponent & { title?: string }>; 44 | 45 | const src: string; 46 | export default src; 47 | } 48 | 49 | declare module '*.css' { 50 | const classes: { readonly [key: string]: string }; 51 | export default classes; 52 | } 53 | 54 | declare module '*.less' { 55 | const classes: { readonly [key: string]: string }; 56 | export default classes; 57 | } 58 | 59 | declare module '*.scss' { 60 | const classes: { readonly [key: string]: string }; 61 | export default classes; 62 | } 63 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | define exporter 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import { createRoot } from 'react-dom/client'; 2 | import './assets/css/global.css'; 3 | import { Routers } from './router'; 4 | import { GlobalStore } from './store/globalStore'; 5 | import '@arco-design/web-react/dist/css/arco.css'; 6 | 7 | const root = createRoot(document.getElementById('root') as HTMLElement); 8 | root.render( 9 | 10 | 11 | , 12 | ); 13 | -------------------------------------------------------------------------------- /src/router/constans.tsx: -------------------------------------------------------------------------------- 1 | export enum RouterEnum { 2 | /** 首页 */ 3 | HOME = '/home', 4 | } 5 | -------------------------------------------------------------------------------- /src/router/index.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { BrowserRouter, Route, Routes } from 'react-router-dom'; 3 | 4 | import { Home } from '../screen/home'; 5 | import { RoutersMap } from './routeList'; 6 | 7 | export const Routers: FC = () => { 8 | return ( 9 | 10 | 11 | <> 12 | } /> 13 | {/* } /> */} 14 | 15 | {RoutersMap.single.map((route, index) => { 16 | return ; 17 | })} 18 | 19 | {/* 22 | 23 | 24 | } 25 | > 26 | {RoutersMap.layout.map((route, index) => { 27 | return ; 28 | })} 29 | */} 30 | 31 | 32 | 33 | ); 34 | }; 35 | 36 | Routers.displayName = 'Routers'; 37 | -------------------------------------------------------------------------------- /src/router/routeList.tsx: -------------------------------------------------------------------------------- 1 | import { ReactElement, ReactNode } from 'react'; 2 | 3 | import { Home } from '../screen/home'; 4 | import { RouterEnum } from './constans'; 5 | 6 | interface RouterInfo { 7 | path: string; 8 | title?: string; 9 | icon?: ReactNode; 10 | element: ReactElement; 11 | children?: RouterInfo[]; 12 | } 13 | interface RouterType { 14 | [key: string]: RouterInfo[]; 15 | } 16 | 17 | export const RoutersMap: RouterType = { 18 | /** 没有统一layout的路由页面 */ 19 | single: [ 20 | { 21 | path: RouterEnum.HOME, 22 | element: , 23 | }, 24 | ], 25 | layout: [], 26 | }; 27 | -------------------------------------------------------------------------------- /src/screen/home/components/Generate/components/AddServerPop/index.tsx: -------------------------------------------------------------------------------- 1 | import { Button, Input, Modal, Tooltip } from '@arco-design/web-react'; 2 | import { IconMinusCircle, IconPlus, IconQuestionCircle } from '@arco-design/web-react/icon'; 3 | import { FC, ReactElement, useCallback, useContext, useEffect, useState } from 'react'; 4 | import { GlobalContext, ServiceInfo } from '../../../../../../store/globalStore'; 5 | 6 | const ServerItem: FC<{ info: ServiceInfo; index: number }> = ({ info, index }) => { 7 | const { updateServiceList } = useContext(GlobalContext); 8 | const [iteminfo, setiteminfo] = useState(info); 9 | 10 | useEffect(() => { 11 | updateServiceList(iteminfo, index); 12 | }, [index, iteminfo, updateServiceList]); 13 | 14 | return ( 15 |
16 | setiteminfo({ ...iteminfo, name: val })} 21 | /> 22 | setiteminfo({ ...iteminfo, url: val })} 27 | /> 28 | 33 |
34 | ); 35 | }; 36 | 37 | interface Props { 38 | show: boolean; 39 | onClose: () => void; 40 | } 41 | export const AddServerPop: FC = ({ show, onClose }): ReactElement => { 42 | const { serviceList, updateServiceList } = useContext(GlobalContext); 43 | 44 | const onAddServiceClick = useCallback(() => { 45 | updateServiceList({ name: '', url: '' }, -1); 46 | }, [updateServiceList]); 47 | 48 | return ( 49 | onClose()} 53 | onCancel={() => onClose()} 54 | escToExit={false} 55 | maskClosable={false} 56 | > 57 |
58 |
59 | 服务名 60 | 61 | 62 | 63 |
64 | 前置URL 65 |
66 |
67 | {serviceList.map((item, index) => ( 68 | 69 | ))} 70 |
71 | 74 |
75 | ); 76 | }; 77 | 78 | AddServerPop.displayName = 'AddServerPop'; 79 | -------------------------------------------------------------------------------- /src/screen/home/components/Generate/components/CustomRequestOption/index.tsx: -------------------------------------------------------------------------------- 1 | import { Input, Switch, Tooltip } from '@arco-design/web-react'; 2 | import { IconQuestionCircle } from '@arco-design/web-react/icon'; 3 | import classNames from 'classnames'; 4 | import { FC, ReactElement, useContext } from 'react'; 5 | import { GlobalContext } from '../../../../../../store/globalStore'; 6 | 7 | export const CustomRequestOption: FC<{ classname?: string }> = ({ classname }): ReactElement => { 8 | const { customRequest, updateCustomRequestInfo } = useContext(GlobalContext); 9 | 10 | return ( 11 |
12 |
13 |

18 | 自定义请求代码 19 |

20 | updateCustomRequestInfo({ opend: value })} /> 21 |

22 | 注:此选项可配置自己项目中的请求代码。默认不开启,使用axios请求。 23 |

24 |
25 | 26 |
32 | import代码 33 | updateCustomRequestInfo({ importCode: value })} 39 | disabled={!customRequest.opend} 40 | /> 41 |
42 | 43 |
49 |
50 | 请求代码 51 | 52 | 55 | 56 |
57 | updateCustomRequestInfo({ requestCode: value })} 69 | disabled={!customRequest.opend} 70 | /> 71 |
72 |
73 | ); 74 | }; 75 | 76 | CustomRequestOption.displayName = 'CustomRequestOption'; 77 | -------------------------------------------------------------------------------- /src/screen/home/components/Generate/components/OnlyDataExport/index.tsx: -------------------------------------------------------------------------------- 1 | import { Input, Switch, Tooltip, Typography } from '@arco-design/web-react'; 2 | import { IconQuestionCircle } from '@arco-design/web-react/icon'; 3 | import classNames from 'classnames'; 4 | import { FC, ReactElement, useContext } from 'react'; 5 | import { GlobalContext } from '../../../../../../store/globalStore'; 6 | 7 | export const OnlyDataExportCom: FC<{ classname?: string }> = ({ classname }): ReactElement => { 8 | const { onlyDataExport, updateOnlyDataExportInfo } = useContext(GlobalContext); 9 | 10 | return ( 11 |
12 | 返回数据字段名(默认data): 13 | updateOnlyDataExportInfo({ paramName: value })} 18 | disabled={!onlyDataExport.opend} 19 | /> 20 | 21 | updateOnlyDataExportInfo({ opend: value })} /> 22 | 23 |
24 |

注: 打开此选项后,只生成实际的数据

25 | 28 |
29 |

例如,如果接口返回了

30 | {`{"code": 0, "message": "success", "data": {"name": "wanpeng", "age": 25}}`} 33 |

,则只会导出

34 | {`{"name": "wanpeng", "age": 25}`} 35 |
36 |
37 | } 38 | > 39 |
40 | 41 |
42 | 43 |
44 | 45 | ); 46 | }; 47 | 48 | OnlyDataExportCom.displayName = 'OnlyDataExportCom'; 49 | -------------------------------------------------------------------------------- /src/screen/home/components/Generate/index.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable prefer-regex-literals */ 2 | /* eslint-disable max-lines-per-function */ 3 | import { Button, Divider, Input, Message, Radio, Tooltip, Upload } from '@arco-design/web-react'; 4 | import { UploadItem } from '@arco-design/web-react/es/Upload'; 5 | import { IconList, IconPaste, IconShareExternal } from '@arco-design/web-react/icon'; 6 | import { open } from '@tauri-apps/api/dialog'; 7 | import { downloadDir } from '@tauri-apps/api/path'; 8 | import classNames from 'classnames'; 9 | import { FunctionComponent, ReactElement, useCallback, useContext, useEffect, useState } from 'react'; 10 | import { GlobalContext } from '../../../../store/globalStore'; 11 | import { JsonDataInfo, Parser } from '../../../../utils/Parser'; 12 | import { AddServerPop } from './components/AddServerPop'; 13 | import { CustomRequestOption } from './components/CustomRequestOption'; 14 | import { OnlyDataExportCom } from './components/OnlyDataExport'; 15 | 16 | const parser = new Parser(); 17 | 18 | enum ExportType { 19 | JSON = 'JSON', 20 | URL = 'URL', 21 | } 22 | 23 | const isAcceptFile = (file: File, accept: string) => { 24 | if (accept && file) { 25 | // const accepts = Array.isArray(accept) 26 | // ? accept 27 | // : accept 28 | // .split(',') 29 | // .map((x) => x.trim()) 30 | // .filter((x) => x); 31 | const fileExtension = file.name.indexOf('.') > -1 ? file.name.split('.').pop() : ''; 32 | // console.log('fileExtension: ', fileExtension); 33 | return fileExtension === accept; 34 | } 35 | return !!file; 36 | }; 37 | 38 | const leftCls = 'ml-[60px]'; 39 | export const Generate: FunctionComponent = (): ReactElement => { 40 | const [jsonData, setJsonData] = useState({} as JsonDataInfo); 41 | const [exportType, setExportType] = useState(ExportType.URL); 42 | const [showAddServerPop, setShowAddServerPop] = useState(false); 43 | 44 | const { savePath, setSavePath, jsonUrl, setJsonUrl, onlyDataExport, customRequest, serviceList } = 45 | useContext(GlobalContext); 46 | 47 | const onSaveOutputDir = useCallback(async () => { 48 | const filePath = await open({ 49 | directory: true, 50 | multiple: false, 51 | title: '请选择文件导出目录', 52 | defaultPath: await downloadDir(), 53 | }); 54 | setSavePath((filePath as string) || ''); 55 | }, [setSavePath]); 56 | 57 | const onSaveJsonUrl = useCallback( 58 | (value: string) => { 59 | setJsonUrl(value); 60 | }, 61 | [setJsonUrl], 62 | ); 63 | 64 | const setDownloadDir = useCallback(async () => { 65 | if (savePath) return; 66 | setSavePath((await downloadDir()) || ''); 67 | }, [savePath, setSavePath]); 68 | 69 | const onFileUploaded = (files: UploadItem[]) => { 70 | const file = files[0]?.originFile; 71 | 72 | if (!file) return; 73 | 74 | const reader = new FileReader(); 75 | reader.readAsText(file, 'UTF-8'); 76 | reader.onload = (fileReader) => { 77 | const fileData = fileReader?.target?.result; 78 | setJsonData(JSON.parse(fileData as string) as JsonDataInfo); 79 | }; 80 | }; 81 | 82 | const onCreateCodeClick = useCallback(() => { 83 | if (exportType === ExportType.URL) { 84 | parser.start(savePath, jsonUrl); 85 | } else parser.start(savePath, undefined, jsonData); 86 | }, [exportType, jsonData, jsonUrl, savePath]); 87 | 88 | useEffect(() => { 89 | parser.dataExport = onlyDataExport; 90 | }, [onlyDataExport]); 91 | 92 | useEffect(() => { 93 | parser.customCode = customRequest; 94 | }, [customRequest]); 95 | 96 | useEffect(() => { 97 | parser.serviceList = serviceList; 98 | }, [serviceList]); 99 | 100 | useEffect(() => { 101 | setDownloadDir(); 102 | }, [setDownloadDir]); 103 | 104 | return ( 105 |
106 |
107 | 生成目录: 108 | 109 | 110 |
111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | setExportType(value as ExportType)} 125 | className={classNames('mb-6', leftCls)} 126 | /> 127 | 128 | {exportType === ExportType.URL ? ( 129 |
130 | JSON URL: 131 | onSaveJsonUrl(value)} 137 | /> 138 |
139 | ) : ( 140 |
141 | { 150 | const uploadFile = e.dataTransfer.files[0]; 151 | if (!isAcceptFile(uploadFile, 'json')) 152 | Message.info('不接受的文件类型,请重新上传指定文件类型~'); 153 | }} 154 | onChange={onFileUploaded} 155 | > 156 |
157 | {!jsonData?.tags?.length ? ( 158 | <> 159 | 160 |

点击或拖拽文件到此区域

161 |

OpenAPI/Swagger的JSON文件

162 | 163 | ) : ( 164 | <> 165 | 166 |

点击或拖拽重新上传

167 | 168 | )} 169 |
170 |
171 |
172 | )} 173 | 174 |
180 | 192 |
193 | 194 | 195 |
205 | ); 206 | }; 207 | 208 | Generate.displayName = 'Generate'; 209 | -------------------------------------------------------------------------------- /src/screen/home/components/Setting/index.tsx: -------------------------------------------------------------------------------- 1 | import { FunctionComponent, ReactElement, useCallback, useEffect, useState } from 'react'; 2 | import styles from './styles.css'; 3 | 4 | export const Setting: FunctionComponent = (): ReactElement => { 5 | return ( 6 |
7 |

{'Setting'}

8 |
9 | ); 10 | }; 11 | 12 | Setting.displayName = 'Setting'; 13 | -------------------------------------------------------------------------------- /src/screen/home/components/Setting/styles.css: -------------------------------------------------------------------------------- 1 | .container { 2 | background: #eee; 3 | } -------------------------------------------------------------------------------- /src/screen/home/index.tsx: -------------------------------------------------------------------------------- 1 | import { Menu } from '@arco-design/web-react'; 2 | // import { invoke } from '@tauri-apps/api'; 3 | // access the pre-bundled global API functions(用配置的withGlobalTauri来使用invoke) 4 | // const { invoke } = window.__TAURI__.tauri 5 | import { FC, Suspense, lazy, useCallback, useMemo, useState } from 'react'; 6 | import { LazyLoading } from '../../components/LazyLoading'; 7 | 8 | const Generate = lazy(() => 9 | import('./components/Generate').then((module) => { 10 | return { default: module.Generate }; 11 | }), 12 | ); 13 | 14 | const Setting = lazy(() => 15 | import('./components/Setting').then((module) => { 16 | return { default: module.Setting }; 17 | }), 18 | ); 19 | 20 | export const Home: FC = () => { 21 | const [curMenu, setCurMenu] = useState('1'); 22 | 23 | const onMenuClick = useCallback((key: string) => { 24 | setCurMenu(key); 25 | }, []); 26 | 27 | const MenuPane = useMemo(() => { 28 | switch (curMenu) { 29 | case '1': 30 | return Generate; 31 | case '2': 32 | return Setting; 33 | 34 | default: 35 | return Generate; 36 | } 37 | }, [curMenu]); 38 | 39 | // useEffect(() => { 40 | // invoke('greet', { name: 'World, this is from react ' }) 41 | // // `invoke` returns a Promise 42 | // .then((response) => console.log(response)); 43 | // }, []); 44 | 45 | return ( 46 |
47 | {/* 53 | 生成 54 | 配置 55 | */} 56 |
57 | }> 58 | 59 | 60 |
61 |
62 | ); 63 | }; 64 | Home.displayName = 'Home'; 65 | -------------------------------------------------------------------------------- /src/store/constants.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 全局的一些常量 3 | */ 4 | -------------------------------------------------------------------------------- /src/store/globalStore.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * 全局store 3 | */ 4 | import { LocalStorage } from '@6653302wy/ts-utils'; 5 | import { FC, ReactElement, createContext, useCallback, useEffect, useState } from 'react'; 6 | 7 | export interface CustomRequest { 8 | opend: boolean; 9 | importCode: string; 10 | requestCode: string; 11 | } 12 | 13 | export interface OnlyDataExport { 14 | opend: boolean; 15 | paramName: string; 16 | } 17 | 18 | export interface ServiceInfo { 19 | name: string; 20 | url: string; 21 | desc?: string; 22 | } 23 | 24 | type GlobalStoreType = { 25 | savePath: string; 26 | setSavePath: (str: string) => void; 27 | 28 | jsonUrl: string; 29 | setJsonUrl: (str: string) => void; 30 | 31 | onlyDataExport: OnlyDataExport; 32 | updateOnlyDataExportInfo: (info: Partial) => void; 33 | 34 | customRequest: CustomRequest; 35 | updateCustomRequestInfo: (info: Partial) => void; 36 | 37 | serviceList: ServiceInfo[]; 38 | updateServiceList: (info: ServiceInfo, index: number, isDelet?: boolean) => void; 39 | 40 | saveInLocalCache: (info: Partial) => void; 41 | }; 42 | 43 | export const GlobalContext = createContext({} as GlobalStoreType); 44 | 45 | const cacheData = LocalStorage.inst.getObj('cache') as GlobalStoreType; 46 | 47 | export const GlobalStore: FC<{ children: ReactElement }> = ({ children }) => { 48 | const [savePath, setSavePath] = useState(cacheData?.savePath || ''); 49 | const [jsonUrl, setJsonUrl] = useState(cacheData?.jsonUrl || ''); 50 | const [onlyDataExport, setonlyDataExport] = useState({ 51 | opend: cacheData?.onlyDataExport?.opend || false, 52 | paramName: 'data', 53 | }); 54 | const [customRequest, setcustomRequest] = useState({ 55 | opend: cacheData?.customRequest?.opend || false, 56 | importCode: cacheData?.customRequest.importCode || '', 57 | requestCode: cacheData?.customRequest.requestCode || '', 58 | }); 59 | const [serviceList, setServiceList] = useState(cacheData?.serviceList || []); 60 | 61 | const updateServiceList = useCallback((info: ServiceInfo, index: number, isDelet?: boolean) => { 62 | setServiceList((pre) => { 63 | const newlist = [...pre]; 64 | if (isDelet && index !== -1) { 65 | newlist.splice(index, 1); 66 | return newlist; 67 | } 68 | 69 | if (index >= 0) newlist[index] = info; 70 | else newlist.push(info); 71 | return newlist; 72 | }); 73 | }, []); 74 | 75 | const updateOnlyDataExportInfo = useCallback((info: Partial) => { 76 | setonlyDataExport((pre) => { 77 | return { ...pre, ...info }; 78 | }); 79 | }, []); 80 | 81 | const updateCustomRequestInfo = useCallback((info: Partial) => { 82 | setcustomRequest((pre) => { 83 | return { ...pre, ...info }; 84 | }); 85 | }, []); 86 | 87 | const saveInLocalCache = useCallback((info: Partial) => { 88 | const curCache = LocalStorage.inst.getObj('cache') as GlobalStoreType; 89 | LocalStorage.inst.setObj('cache', { ...curCache, ...info }); 90 | }, []); 91 | 92 | useEffect(() => { 93 | saveInLocalCache({ savePath }); 94 | }, [saveInLocalCache, savePath]); 95 | 96 | useEffect(() => { 97 | saveInLocalCache({ jsonUrl }); 98 | }, [jsonUrl, saveInLocalCache]); 99 | 100 | useEffect(() => { 101 | saveInLocalCache({ onlyDataExport }); 102 | }, [saveInLocalCache, onlyDataExport]); 103 | 104 | useEffect(() => { 105 | saveInLocalCache({ customRequest }); 106 | }, [saveInLocalCache, customRequest]); 107 | 108 | useEffect(() => { 109 | saveInLocalCache({ serviceList }); 110 | }, [saveInLocalCache, serviceList]); 111 | 112 | return ( 113 | 128 | {children} 129 | 130 | ); 131 | }; 132 | -------------------------------------------------------------------------------- /src/utils/FetchRequest.ts: -------------------------------------------------------------------------------- 1 | const request = (url: string, method: string, contentType?: string, data?: T) => { 2 | const config = { 3 | method: method.toUpperCase(), 4 | headers: { 5 | 'Content-Type': contentType ?? 'application/json', 6 | }, 7 | } as { 8 | method: string; 9 | headers: { 'Content-Type': string }; 10 | body?: any; 11 | }; 12 | 13 | const reqmethod = method.toUpperCase(); 14 | let dataStr = ''; // 数据拼接字符串 15 | if (/^(POST|PUT|PATCH)$/i.test(reqmethod)) { 16 | config.body = JSON.stringify(data); 17 | } else { 18 | if (!data) return; 19 | const keys = Object.keys(data); 20 | keys.forEach((key, index) => { 21 | dataStr += `${key}=${(data as any)[key]}${index !== keys.length - 1 ? '&' : ''}`; 22 | }); 23 | } 24 | 25 | // 发送请求 26 | fetch(`${url}${dataStr ? `?${dataStr}` : ''}`, config) 27 | .then((response) => { 28 | const { status, type } = response; 29 | // 只要状态码是以2或者3开始的,才是真正的获取成功 30 | if (status >= 200 && status < 400) { 31 | let result; 32 | switch (type.toUpperCase()) { 33 | case 'JSON': 34 | result = response.json(); 35 | break; 36 | case 'TEXT': 37 | result = response.text(); 38 | break; 39 | case 'BLOB': 40 | result = response.blob(); 41 | break; 42 | case 'ARRAYBUFFER': 43 | result = response.arrayBuffer(); 44 | break; 45 | default: 46 | result = response.json(); 47 | } 48 | return result; 49 | } 50 | return Promise.reject(response); 51 | }) 52 | .catch((reason) => { 53 | return Promise.reject(reason); 54 | }); 55 | }; 56 | -------------------------------------------------------------------------------- /src/utils/Parser.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable max-lines-per-function */ 2 | import { Message } from '@arco-design/web-react'; 3 | import axios from 'axios'; 4 | import { CustomRequest, OnlyDataExport, ServiceInfo } from '../store/globalStore'; 5 | import { FilerUtils } from './fileUtls'; 6 | 7 | interface PropertyInfo { 8 | type: string; 9 | description?: string; 10 | example?: string; 11 | items?: { [key: string]: PropertyInfo }; 12 | } 13 | 14 | type ParamInfo = { [key: string]: PropertyInfo }; 15 | 16 | interface SchemaInfo { 17 | type: string; 18 | properties: ParamInfo; 19 | // 必填参数列表 20 | required?: string[]; 21 | /** type 为 array 时 */ 22 | items?: { [key: string]: PropertyInfo }; 23 | } 24 | 25 | interface ParameterInfo { 26 | name: string; 27 | in: string; 28 | description: string; 29 | required: boolean; 30 | /** 在请求的 parameters 中,schema里的数据均为基础类型数据 */ 31 | schema: PropertyInfo; 32 | } 33 | 34 | interface ServerInfo { 35 | url: string; 36 | description: string; 37 | } 38 | 39 | interface PathInfo { 40 | // 协议名 41 | summary: string; 42 | description: string; 43 | deprecated: boolean; 44 | tags: string[]; 45 | // get请求中的请求参数 (只解析其中一个,有parameters就是走get,有body就是走post) 46 | parameters: ParameterInfo[]; 47 | // post请求中的请求参数 (只解析其中一个,有parameters就是走get,有body就是走post) 48 | requestBody: { 49 | content: { 'application/json': { schema: SchemaInfo } }; 50 | }; 51 | // 返回数据 52 | responses: { '200': { content: { 'application/json': { schema: SchemaInfo } } } }; 53 | } 54 | export interface JsonDataInfo { 55 | tags: { name: string }[]; 56 | paths: { [key: string]: { [key: string]: PathInfo } }; 57 | servers: ServerInfo[]; 58 | } 59 | 60 | // 基础数据类型 61 | const basicDataTypes = ['string', 'number', 'integer', 'boolean', 'file']; 62 | 63 | export class Parser { 64 | private apiJsonFile: JsonDataInfo | undefined = undefined; 65 | private apiDefines = ''; 66 | private interfaceDefines = ''; 67 | private responseSubDefineMap: Map = new Map(); 68 | private apiImports = ''; 69 | 70 | private apiList: string[] = []; 71 | 72 | // 文件保存路径 73 | private savepath = ''; 74 | 75 | // 导出数据类型 76 | private onlyDataExport: OnlyDataExport = { opend: false, paramName: '' }; 77 | // 自定义请求代码 78 | private customRequestCode: CustomRequest = { opend: false, importCode: '', requestCode: '' }; 79 | // 服务列表 80 | private serverList: ServiceInfo[] = []; 81 | 82 | set savePath(path: string) { 83 | this.savepath = path; 84 | } 85 | 86 | get savePath() { 87 | return this.savepath; 88 | } 89 | 90 | set dataExport(data: OnlyDataExport) { 91 | this.onlyDataExport = data; 92 | console.log('set onlyDataExport: ', this.onlyDataExport); 93 | } 94 | 95 | get dataExport() { 96 | return this.onlyDataExport; 97 | } 98 | 99 | set customCode(data: CustomRequest) { 100 | this.customRequestCode = data; 101 | console.log('set customCode: ', this.customRequestCode); 102 | } 103 | 104 | set serviceList(list: ServiceInfo[]) { 105 | this.serverList = list; 106 | console.log('set serviceList: ', this.serverList); 107 | } 108 | 109 | start(savePath: string, url?: string, jsonData?: JsonDataInfo) { 110 | this.savePath = savePath; 111 | 112 | this.resetDefines(); 113 | 114 | if (url) { 115 | console.log(' parse by url: ', url); 116 | this.getJsonData(url); 117 | return; 118 | } 119 | 120 | if (jsonData) { 121 | console.log(' parse by json file: ', jsonData); 122 | this.apiJsonFile = jsonData; 123 | this.createModuleCodes(); 124 | } 125 | } 126 | 127 | private async createModuleCodes() { 128 | if (!this.apiJsonFile) return; 129 | // console.log('createModuleCodes: ', this.apiJsonFile); 130 | 131 | // 解析出api列表 132 | this.apiList = Array.from(Object.keys(this.apiJsonFile.paths)); 133 | this.apiList.forEach((api) => { 134 | const data = this?.apiJsonFile?.paths[api]; 135 | if (data) { 136 | const reqMethod = Array.from(Object.keys(data))[0]; 137 | const apidata = data[reqMethod]; 138 | const apiname = this.createAPIName(api); 139 | const requestApi = `${apiname}Request`; 140 | const responseApi = `${apiname}Response`; 141 | 142 | // 创建api 143 | this.apiDefines += this.defineAPI( 144 | api, 145 | requestApi, 146 | responseApi, 147 | apidata, 148 | reqMethod, 149 | this.getValueByKey(apidata?.responses, 'schema') as SchemaInfo, 150 | ); 151 | 152 | // 创建请求数据结构体 153 | this.interfaceDefines += this.parseRequestDefine( 154 | requestApi, 155 | apidata?.parameters, 156 | this.getValueByKey(apidata?.requestBody, 'schema') as SchemaInfo, 157 | ); 158 | 159 | // 创建返回数据结构体 160 | this.interfaceDefines += this.parseResoneDefine( 161 | responseApi, 162 | this.getValueByKey(apidata?.responses, 'schema') as SchemaInfo, 163 | ); 164 | // console.log('解析defines: ', this.interfaceDefines); 165 | } 166 | }); 167 | 168 | // 写入接口文件 169 | this.touchAPIFile(); 170 | this.touchInterfaceFile(); 171 | 172 | Message.success({ 173 | content: '接口文件生成成功! 请到指定目录查看', 174 | showIcon: true, 175 | position: 'bottom', 176 | }); 177 | } 178 | 179 | private defineAPI( 180 | apiPath: string, 181 | requestDefine: string, 182 | responseDefine: string, 183 | apidata: PathInfo, 184 | reqMethod: string, 185 | responseData: SchemaInfo, 186 | ) { 187 | const apiname = this.createAPIName(apiPath); 188 | 189 | let headerContentType = apidata?.requestBody ? Object.keys(apidata?.requestBody?.content)?.[0] : ''; 190 | headerContentType = reqMethod === 'post' && !apidata?.requestBody ? 'multipart/form-data' : headerContentType; 191 | 192 | const getResponseDefine = () => { 193 | const parserObj = this.dataExport?.opend 194 | ? (responseData?.properties?.[this.dataExport?.paramName || ''] as unknown as SchemaInfo) || 195 | responseData 196 | : responseData; 197 | const { type } = parserObj; 198 | if (!this.dataExport?.opend) return responseDefine; 199 | // 普通类型 200 | if (basicDataTypes.includes(type)) return type; 201 | // 复杂类型 object / array 202 | return type === 'array' ? `${responseDefine}[]` : responseDefine; 203 | }; 204 | const respDefineName = getResponseDefine(); 205 | 206 | if (this.customRequestCode.opend) { 207 | return ` 208 | /** 209 | * ${apidata?.description || apidata?.summary || ''} 210 | * ${apidata?.deprecated ? '@deprecated 接口已弃用' : ''} 211 | */ 212 | export const ${apiname} = (data${requestDefine === '{}' ? '?' : ''}: ${requestDefine}): Promise<${respDefineName}> => { 213 | return ${this.customRequestCode.requestCode 214 | .replace('@url', `'${this.getApiPre(apidata?.tags?.[0] || '')}${apiPath}'`) 215 | .replace('@method', `'${reqMethod}'`) 216 | .replace('@data', `data`) 217 | .replace('@contentType', `'${headerContentType || 'application/json;charset=utf-8'}'`)}; 218 | }\n`; 219 | } 220 | 221 | // return ` 222 | // /** 223 | // * ${apidata?.description || apidata?.summary || ''} 224 | // * ${apidata?.deprecated ? '@deprecated 接口已弃用' : ''} 225 | // */ 226 | // export const ${apiname} = (data${requestDefine === '{}' ? '?' : ''}: ${requestDefine}): Promise<${respDefineName}> => { 227 | // return NetManager.inst.request('${this.getApiPre(apidata?.tags?.[0] || '')}${apiPath}', '${reqMethod}', data, '${ 228 | // headerContentType || 'application/json;charset=utf-8' 229 | // }'); 230 | // }\n`; 231 | return ` 232 | /** 233 | * ${apidata?.description || apidata?.summary || ''} 234 | * ${apidata?.deprecated ? '@deprecated 接口已弃用' : ''} 235 | */ 236 | export const ${apiname} = (data${requestDefine === '{}' ? '?' : ''}: ${requestDefine}): Promise<${respDefineName}> => { 237 | return new Promise((resolve, reject) => { 238 | axios({ 239 | method: '${reqMethod}', 240 | url: '${this.getApiPre(apidata?.tags?.[0] || '')}${apiPath}', 241 | ${reqMethod === 'get' ? 'params' : 'data'}: data, 242 | headers: { "Content-Type":'${headerContentType || 'application/json;charset=utf-8'}' }, 243 | }) 244 | .then((res) => resolve(${ 245 | this.onlyDataExport?.opend ? `res['${this.onlyDataExport?.paramName ?? 'data'}']` : 'res ?? ""' 246 | })) 247 | .catch((err) => { 248 | reject(err); 249 | }); 250 | }); 251 | }\n`; 252 | } 253 | 254 | // 解析请求数据结构体 255 | private parseRequestDefine(api: string, parameters?: ParameterInfo[], requestBody?: SchemaInfo) { 256 | // console.log('parseRequestDefine: ', api, parameters, requestBody); 257 | 258 | let defines = ''; 259 | 260 | // 读取 parameters 对象 261 | if (parameters?.length) { 262 | const params = parameters?.filter((val) => val?.in !== 'header'); // 放进header中的参数这边不解析 263 | // console.log(`解析: ${api}, parameters:`, params); 264 | for (let i = 0; i < params?.length; i += 1) { 265 | const obj = params[i]; 266 | // parameters 里的参数只能配置基础数据类型,例如: string, number, boolean 267 | defines += this.createParam(obj.name, obj.description, obj.schema.type, obj.required); 268 | } 269 | } 270 | 271 | // 读取 requestBody 对象 272 | if (requestBody?.properties) { 273 | defines += this.parseObjectStruct(requestBody, api); 274 | } 275 | 276 | const subDefines = this.responseSubDefineMap.get(api) || []; 277 | 278 | this.apiImports += ` 279 | import { ${api} } from './Interface';\n`; 280 | 281 | return `export interface ${api} { 282 | ${defines} 283 | }\n 284 | ${subDefines.join('\n')} 285 | `; 286 | } 287 | 288 | // 解析返回数据结构体 289 | private parseResoneDefine(api: string, response: SchemaInfo) { 290 | const parserObj = this.dataExport?.opend 291 | ? (response?.properties?.[this.dataExport?.paramName || ''] as unknown as SchemaInfo) || response 292 | : response; 293 | const defines = this.parseObjectStruct(parserObj, api); 294 | const subDefines = this.responseSubDefineMap.get(api) || []; 295 | 296 | // console.log('parseResoneDefine: ', api, defines, subDefines); 297 | 298 | this.apiImports += `import { ${api} } from './Interface';`; 299 | 300 | return `export interface ${api} { 301 | ${defines} 302 | }\n 303 | ${subDefines.join('\n')} 304 | `; 305 | } 306 | 307 | private parseObjectStruct(param: SchemaInfo, api: string) { 308 | const { properties, items, required, type } = param; 309 | 310 | // 普通类型 311 | if (basicDataTypes.includes(type)) { 312 | const paramname = this.dataExport?.opend ? this.dataExport?.paramName || 'data' : 'data'; 313 | return this.createParam(paramname, '', type, param?.required?.includes(paramname) ?? false); 314 | } 315 | 316 | const createSubDefine = (name: string, subparams: SchemaInfo) => { 317 | return `export interface ${name} { 318 | ${this.parseObjectStruct(subparams, api)} 319 | } 320 | `; 321 | }; 322 | 323 | // 复杂类型 324 | let params: string[] = []; 325 | let propertyObj = properties; 326 | if (type === 'object') { 327 | params = Object.keys(properties ?? {}); 328 | } else if (type === 'array') { 329 | params = Object.keys(items?.properties || {}); 330 | propertyObj = (items?.properties || ({} as ParamInfo)) as ParamInfo; 331 | } 332 | 333 | if (!params.length) return ''; 334 | 335 | const subDefines = api ? this.responseSubDefineMap.get(api) || [] : []; 336 | 337 | let defines = ''; 338 | params.forEach((key) => { 339 | const obj = propertyObj[key]; 340 | const desc = `${obj?.description || ''} ${obj?.example ? 'expamle: ' : ''}${obj?.example || ''}`; 341 | const require = required?.includes?.(key) || false; 342 | 343 | // 普通数据类型 344 | if (basicDataTypes.includes(obj.type)) { 345 | defines += this.createParam(key, desc, obj.type, require); 346 | } else { 347 | // 复杂数据格式, object 和 array , 需要继续往下一层解析 348 | const subParamName = `${api?.replace(/Request|Response|/g, '')}${this.firstUpperCase(key)}`; 349 | 350 | // 对象类型解析 351 | if (obj.type === 'object') { 352 | defines += this.createParam(key, desc, subParamName, require); 353 | subDefines.push(createSubDefine(subParamName, obj as unknown as SchemaInfo)); 354 | } 355 | 356 | // 数组类型解析 357 | if (obj.type === 'array') { 358 | const isBasicType = basicDataTypes.includes(`${obj?.items?.type}` || ''); 359 | defines += this.createParam( 360 | key, 361 | desc, 362 | isBasicType ? `${obj?.items?.type}[]` : `${subParamName}[]`, 363 | require, 364 | ); 365 | 366 | if (!isBasicType) { 367 | subDefines.push(createSubDefine(subParamName, obj as unknown as SchemaInfo)); 368 | } 369 | } 370 | } 371 | if (api) this.responseSubDefineMap.set(api, subDefines); 372 | }); 373 | 374 | return defines; 375 | } 376 | 377 | private createParam(key: string, desc: string, dataType: string, required: boolean) { 378 | let datatype = dataType; 379 | switch (dataType) { 380 | case 'integer': 381 | datatype = 'number'; 382 | break; 383 | case 'file': 384 | datatype = 'File'; 385 | break; 386 | default: 387 | } 388 | return ` 389 | /** ${desc || ''} */ 390 | ${key}${required ? '' : '?'}: ${datatype};\n`; 391 | } 392 | 393 | // 创建api文件 394 | 395 | private async touchAPIFile() { 396 | const isDefault = !this.customRequestCode.opend; 397 | // 'import { NetManager } from "@vgene/utils"' 398 | const final = `${isDefault ? `import axios from 'axios'` : this.customRequestCode.importCode}; 399 | ${this.apiImports} 400 | ${this.apiDefines}`; 401 | await FilerUtils.saveTextFile(`${this.savePath}/Apis.ts`, final); 402 | } 403 | 404 | // 创建Interface文件 405 | private async touchInterfaceFile() { 406 | await FilerUtils.saveTextFile(`${this.savePath}/Interface.ts`, this.interfaceDefines); 407 | } 408 | 409 | // 读取服务列表, 不同服务api前缀不同 410 | private getApiPre(tag: string) { 411 | return this.serverList?.find?.((server) => server.name.includes(tag) || tag.includes(server.name))?.url || ''; 412 | 413 | // if (!this.apiJsonFile?.servers?.length) return { pre: '', suf: '' }; 414 | 415 | // return { pre: this.apiJsonFile.servers.find((server) => server.description.includes(tag))?.url || '', suf: '' }; 416 | } 417 | 418 | // 将 'user/login' 类型的接口名解析成驼峰式 UserLogin 419 | private createAPIName(api: string) { 420 | const apiname = api 421 | .split('/') 422 | .map((str) => { 423 | if (str.includes('-')) { 424 | return str 425 | .split('-') 426 | .map((subStr) => { 427 | return this.firstUpperCase(subStr); 428 | }) 429 | .join(''); 430 | } 431 | return this.firstUpperCase(str); 432 | }) 433 | .join(''); 434 | 435 | return apiname; 436 | } 437 | 438 | private resetDefines() { 439 | this.apiDefines = ''; 440 | this.interfaceDefines = ''; 441 | this.apiImports = ''; 442 | this.responseSubDefineMap.clear(); 443 | this.apiList = []; 444 | } 445 | 446 | private getJsonData(url: string) { 447 | axios 448 | .get(url) 449 | .then((response) => { 450 | // 检查HTTP响应状态 451 | if (response.status === 200) { 452 | // 响应数据包含在response.data中,它已经是JSON格式的对象 453 | const jsonData = response.data; 454 | this.apiJsonFile = jsonData; 455 | this.createModuleCodes(); 456 | } else { 457 | Message.error({ 458 | content: 'JSON文件下载失败,请检查网络连接或URL地址是否正确。', 459 | showIcon: true, 460 | position: 'bottom', 461 | }); 462 | console.error('Failed to download JSON file. HTTP Status:', response.status); 463 | } 464 | }) 465 | .catch((error) => { 466 | console.error('Error downloading JSON file:', error); 467 | }); 468 | } 469 | 470 | private firstUpperCase(str: string) { 471 | return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase()); 472 | } 473 | 474 | private getValueByKey(obj: { [key: string]: T }, targetKey: string): unknown { 475 | if (!obj) return ''; 476 | let result; 477 | // 检查当前对象是否包含目标 key 478 | if (obj[targetKey]) { 479 | return obj[targetKey]; 480 | } 481 | 482 | // 遍历对象的所有属性 483 | const keys = Array.from(Object.keys(obj)); 484 | for (let i = 0; i < keys.length; i += 1) { 485 | const key = keys[i]; 486 | if (Object.hasOwn(obj, key) && typeof obj[key] === 'object') { 487 | // 如果属性的值是一个对象,则进行递归调用 488 | result = this.getValueByKey(obj[key] as { [key: string]: T }, targetKey); 489 | // 如果找到目标值,立即返回 490 | if (result !== undefined) break; 491 | } 492 | } 493 | 494 | // 如果未找到目标值,返回 undefined 495 | return result; 496 | } 497 | } 498 | -------------------------------------------------------------------------------- /src/utils/fileUtls.ts: -------------------------------------------------------------------------------- 1 | import { exists, removeFile, writeTextFile, BaseDirectory } from '@tauri-apps/api/fs'; 2 | 3 | const saveTextFile = async (filePath: string, content: string) => { 4 | console.log('saveTextFile: ', filePath); 5 | const isExist = await exists(filePath, { dir: BaseDirectory.AppData }); 6 | 7 | if (isExist) await removeFile(filePath, { dir: BaseDirectory.AppConfig }); 8 | 9 | await writeTextFile(filePath, content, { dir: BaseDirectory.AppConfig }); 10 | }; 11 | 12 | export const FilerUtils = { 13 | saveTextFile, 14 | }; 15 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./src/**/*.{html,js,ts,jsx,tsx}'], 4 | darkMode: 'class', 5 | plugins: [], 6 | theme: { 7 | fontSize: { 8 | xxs: 'var(--text-xxs)', 9 | xs: 'var(--text-xs)', 10 | DEFAULT: 'var(--text-base)', 11 | title: 'var(--text-title)', 12 | text18: 'var(--text-18)', 13 | }, 14 | borderRadius: { 15 | none: '0', 16 | sm: 'var(--round-base)', 17 | DEFAULT: 'var(--round-md)', 18 | lg: 'var(--round-lg)', 19 | }, 20 | extend: { 21 | boxShadow: { 22 | itemHover: '0px 12px 32px 0px rgba(4,8,35,0.0933)', 23 | }, 24 | }, 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["es2022", "DOM"], 4 | "jsx": "react-jsx", 5 | "target": "es6", 6 | "module": "esnext", 7 | "allowJs": true, 8 | "allowSyntheticDefaultImports": true, 9 | "esModuleInterop": true, 10 | "moduleResolution": "node", 11 | "resolveJsonModule": true, 12 | "skipLibCheck": true, 13 | "strict": true, 14 | "removeComments": true, 15 | "outDir": "./" 16 | }, 17 | "exclude": ["node_modules", "dist"], 18 | "include": ["src"] 19 | } 20 | --------------------------------------------------------------------------------