├── .eslintignore ├── .eslintrc.cjs ├── .gitignore ├── .npmrc ├── .vscode ├── extensions.json └── settings.json ├── LICENSE.md ├── README.md ├── index.html ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── public ├── favicon.ico └── icons │ ├── apple-icon-120x120.png │ ├── apple-icon-152x152.png │ ├── apple-icon-167x167.png │ ├── apple-icon-180x180.png │ ├── favicon-128x128.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── icon-128x128.png │ ├── icon-192x192.png │ ├── icon-256x256.png │ ├── icon-384x384.png │ ├── icon-512x512.png │ ├── ms-icon-144x144.png │ └── safari-pinned-tab.svg ├── quasar.config.js ├── quasar.extensions.json ├── src-tauri ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── build.rs ├── icons │ ├── 128x128.png │ ├── 128x128@2x.png │ ├── 32x32.png │ ├── icon.icns │ └── icon.ico ├── src │ ├── epub.rs │ ├── epub │ │ └── template.rs │ └── main.rs └── tauri.conf.json ├── src ├── App.vue ├── assets │ └── quasar-logo-vertical.svg ├── auto-imports.d.ts ├── boot │ ├── .gitkeep │ └── unocss.ts ├── components.d.ts ├── components │ ├── ImagePreview.vue │ ├── MainHeader.vue │ └── SetMeta.vue ├── composables │ ├── use-drawer.ts │ ├── use-images.ts │ ├── use-loading.ts │ ├── use-meta.ts │ └── use-options.ts ├── css │ ├── app.scss │ └── quasar.variables.scss ├── elepub.d.ts ├── env.d.ts ├── layouts │ └── MainLayout.vue ├── pages │ └── index.vue ├── quasar.d.ts ├── router │ └── index.ts ├── shims-vue.d.ts ├── ssg-flag.d.ts ├── ssg.d.ts ├── stores │ ├── index.ts │ └── store-flag.d.ts └── utils │ └── index.ts ├── tsconfig.json └── unocss.config.ts /.eslintignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /src-capacitor 3 | /src-cordova 4 | /.quasar 5 | /node_modules 6 | .eslintrc.js 7 | /src-ssr 8 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | 4 | env: { 5 | browser: true, 6 | es2021: true, 7 | node: true, 8 | 'vue/setup-compiler-macros': true, 9 | }, 10 | 11 | extends: [ 12 | '@taiyuuki/eslint-config-vue-unimport', 13 | ], 14 | 15 | globals: { 16 | ga: 'readonly', // Google Analytics 17 | cordova: 'readonly', 18 | __statics: 'readonly', 19 | __QUASAR_SSR__: 'readonly', 20 | __QUASAR_SSR_SERVER__: 'readonly', 21 | __QUASAR_SSR_CLIENT__: 'readonly', 22 | __QUASAR_SSR_PWA__: 'readonly', 23 | process: 'readonly', 24 | Capacitor: 'readonly', 25 | chrome: 'readonly', 26 | }, 27 | rules: { 28 | 'import/no-unresolved': 29 | ['error', { 30 | 'ignore': [ 31 | '~pages', 32 | 'uno.css', 33 | 'virtual:generated-layouts', 34 | 'virtual:generated-pages', 35 | 'virtual:vue-component-preview', 36 | ], 37 | }], 38 | }, 39 | } 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .thumbs.db 3 | node_modules 4 | 5 | # Quasar core related directories 6 | .quasar 7 | /dist 8 | 9 | # Cordova related directories and files 10 | /src-cordova/node_modules 11 | /src-cordova/platforms 12 | /src-cordova/plugins 13 | /src-cordova/www 14 | 15 | # Capacitor related directories and files 16 | /src-capacitor/www 17 | /src-capacitor/node_modules 18 | 19 | # BEX related directories and files 20 | /src-bex/www 21 | /src-bex/js/core 22 | 23 | # Log files 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # Editor directories and files 29 | .idea 30 | *.suo 31 | *.ntvs* 32 | *.njsproj 33 | *.sln 34 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | # pnpm-related options 2 | shamefully-hoist=true 3 | strict-peer-dependencies=false 4 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "Vue.volar", 4 | "tauri-apps.tauri-vscode", 5 | "rust-lang.rust-analyzer" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "rust-analyzer.linkedProjects": [ 3 | ".\\src-tauri\\Cargo.toml", 4 | ".\\src-tauri\\Cargo.toml" 5 | ] 6 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2022-2023 Taiyuuki 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sub license, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | 6 |

elepub

7 | 8 |

9 | GitHub Repo stars 10 |

11 | 12 | 将漫画图片打包成 epub 的小工具,适配多看阅读,推荐用于条漫,页漫虽然也能用,但如果存在跨页,阅读体验不会好。 13 | 14 | ## 下载和使用 15 | 16 | - [Windows版下载](../../releases) 17 | - Mac版请下载源码自行打包,由于我并没有对其进行配置,如果打包失败,请参考Tauri的[文档](https://tauri.app/v1/guides/building/macos)。 18 | - [在线版](https://taiyuuki.github.io/elepub-web-build/) 19 | 在线版的生产速度会慢很多,且最大支持2GB的文档。如果图片较多、较大,建议使用Windows版。 20 | 21 | 导入图片如果遇到杀毒软件安全警告,请关闭杀毒软件或选择允许。开源项目,请放心使用。 22 | 23 | ## 更新 3.0.2 24 | 25 | * 3.0.2 修正创建日期 26 | 27 | * 3.0.1 修正bug 显示进度 28 | 29 | * `3.0.0`使用`Tauri`重构了整个项目,界面基本维持原样,但得益于`Tauri`使用`Rust`的优势,大幅提高了EPUB的生产速度(提速90%以上),大幅减少软件包大小(68MB→2.8MB),软件安装后占用也更小(150MB→6MB)。 30 | 31 | 如果遇到问题,欢迎提[issue](../../issues),我会尽快修复。 32 | 33 | Web + electron的版本理论上不再更新,但代码保留在本仓库[electron](../../tree/electron)分支。 34 | 35 | ## 项目运行 36 | 37 | 本项目使用 electron Tauri、Vue、Quasar 等框架开发。 38 | 39 | ### 安装依赖 40 | 41 | ```bash 42 | pnpm install 43 | ``` 44 | 45 | ### 开发模式运行 46 | 47 | ```bash 48 | pnpm tauri dev 49 | ``` 50 | 51 | ### 打包 52 | 53 | ```bash 54 | pnpm tauri build 55 | ``` 56 | ### 打包报错 57 | 58 | 打包时如果遇到以下错误: 59 | 60 | ```bash 61 | [vite:resolve] Missing "./preload-helper" export in "vite" package 62 | ``` 63 | 64 | 打开报错的文件(`\node_modules\vite\dist\node\chunks\dep-[hash].js`),找到`vite/preload-helper`,将其改为`\0vite/preload-helper`,然后重新打包即可。 -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <%= productName %> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "elepub", 3 | "version": "3.0.2", 4 | "description": "多看漫画制作工具", 5 | "productName": "多看漫画制作", 6 | "author": "taiyuuki ", 7 | "private": true, 8 | "scripts": { 9 | "lint": "eslint --ext .js,.ts,.vue ./src --fix", 10 | "dev": "quasar ssg dev", 11 | "build": "quasar ssg generate", 12 | "tauri:dev": "tauri dev", 13 | "tauri:build": "tauri build", 14 | "serve:ssg": "quasar ssg serve dist/ssg" 15 | }, 16 | "dependencies": { 17 | "@quasar/extras": "^1.16.7", 18 | "@taiyuuki/utils": "^0.4.6", 19 | "pinia": "^2.1.6", 20 | "quasar": "^2.12.7", 21 | "vue": "^3.3.4", 22 | "vue-router": "^4.2.5" 23 | }, 24 | "devDependencies": { 25 | "@iconify-json/bi": "^1.1.20", 26 | "@iconify-json/flat-color-icons": "^1.1.7", 27 | "@iconify-json/ic": "^1.1.14", 28 | "@quasar/app-vite": "^1.6.2", 29 | "@taiyuuki/eslint-config-vue-unimport": "^0.0.9", 30 | "@taiyuuki/unocss-preset": "^0.0.4", 31 | "@tauri-apps/api": "^1.5.0", 32 | "@tauri-apps/cli": "^1.5.0", 33 | "@types/node": "^20.8.0", 34 | "@typescript-eslint/eslint-plugin": "^5.62.0", 35 | "@typescript-eslint/parser": "^5.62.0", 36 | "@unocss/preset-attributify": "^0.51.13", 37 | "@unocss/preset-icons": "^0.51.13", 38 | "@unocss/preset-uno": "^0.51.13", 39 | "autoprefixer": "^10.4.16", 40 | "eslint": "^8.50.0", 41 | "eslint-plugin-promise": "^6.1.1", 42 | "postcss": "^8.4.31", 43 | "quasar-app-extension-ssg": "^5.0.2", 44 | "typescript": "^4.9.5", 45 | "unocss": "^0.51.13", 46 | "unplugin-auto-import": "^0.16.6", 47 | "unplugin-vue-components": "^0.24.1", 48 | "vite": "^4.4.9", 49 | "vite-plugin-pages": "^0.29.1", 50 | "vite-plugin-vue-layouts": "^0.8.0" 51 | }, 52 | "engines": { 53 | "node": "^18 || ^16 || ^14.19", 54 | "npm": ">= 6.13.4", 55 | "yarn": ">= 1.21.1" 56 | }, 57 | "pnpm": { 58 | "peerDependencyRules": { 59 | "ignoreMissing": [ 60 | "@vitejs/plugin-vue" 61 | ] 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // https://github.com/michael-ciniawsky/postcss-load-config 3 | 4 | module.exports = { 5 | plugins: [ 6 | // https://github.com/postcss/autoprefixer 7 | require('autoprefixer')({ 8 | overrideBrowserslist: [ 9 | 'last 4 Chrome versions', 10 | 'last 4 Firefox versions', 11 | 'last 4 Edge versions', 12 | 'last 4 Safari versions', 13 | 'last 4 Android versions', 14 | 'last 4 ChromeAndroid versions', 15 | 'last 4 FirefoxAndroid versions', 16 | 'last 4 iOS versions' 17 | ] 18 | }) 19 | 20 | // https://github.com/elchininet/postcss-rtlcss 21 | // If you want to support RTL css, then 22 | // 1. yarn/npm install postcss-rtlcss 23 | // 2. optionally set quasar.config.js > framework > lang to an RTL language 24 | // 3. uncomment the following line: 25 | // require('postcss-rtlcss') 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/favicon.ico -------------------------------------------------------------------------------- /public/icons/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/apple-icon-120x120.png -------------------------------------------------------------------------------- /public/icons/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/apple-icon-152x152.png -------------------------------------------------------------------------------- /public/icons/apple-icon-167x167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/apple-icon-167x167.png -------------------------------------------------------------------------------- /public/icons/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/apple-icon-180x180.png -------------------------------------------------------------------------------- /public/icons/favicon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/favicon-128x128.png -------------------------------------------------------------------------------- /public/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/favicon-16x16.png -------------------------------------------------------------------------------- /public/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/favicon-32x32.png -------------------------------------------------------------------------------- /public/icons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/favicon-96x96.png -------------------------------------------------------------------------------- /public/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/icon-128x128.png -------------------------------------------------------------------------------- /public/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/icon-192x192.png -------------------------------------------------------------------------------- /public/icons/icon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/icon-256x256.png -------------------------------------------------------------------------------- /public/icons/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/icon-384x384.png -------------------------------------------------------------------------------- /public/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/icon-512x512.png -------------------------------------------------------------------------------- /public/icons/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/public/icons/ms-icon-144x144.png -------------------------------------------------------------------------------- /public/icons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /quasar.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | 3 | /* 4 | * This file runs in a Node context (it's NOT transpiled by Babel), so use only 5 | * the ES6 features that are supported by your Node version. https://node.green/ 6 | */ 7 | 8 | // Configuration for your app 9 | // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js 10 | 11 | const { join } = require('path') 12 | const { configure } = require('quasar/wrappers') 13 | 14 | const isPro = process.env.NODE_ENV === 'production' 15 | 16 | function resolve(dir) { 17 | join(__dirname, dir) 18 | } 19 | 20 | module.exports = configure(function (/* ctx */) { 21 | return { 22 | eslint: { 23 | // fix: true, 24 | // include: [], 25 | // exclude: [], 26 | // rawOptions: {}, 27 | warnings: true, 28 | errors: true, 29 | }, 30 | 31 | alias: { 32 | '@': resolve('src'), 33 | src: resolve('src'), 34 | components: resolve('src/components'), 35 | boot: resolve('src/boot'), 36 | layouts: resolve('src/layouts'), 37 | pages: resolve('src/pages'), 38 | router: resolve('src/router'), 39 | stores: resolve('src/stores'), 40 | assets: resolve('src/assets'), 41 | }, 42 | 43 | // https://v2.quasar.dev/quasar-cli-vite/prefetch-feature 44 | // preFetch: true, 45 | 46 | // app boot file (/src/boot) 47 | // --> boot files are part of "main.js" 48 | // https://v2.quasar.dev/quasar-cli-vite/boot-files 49 | boot: [ 50 | 'unocss', 51 | ], 52 | 53 | // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css 54 | css: [ 55 | 'app.scss', 56 | ], 57 | 58 | // https://github.com/quasarframework/quasar/tree/dev/extras 59 | extras: [ 60 | // 'ionicons-v4', 61 | // 'mdi-v5', 62 | // 'fontawesome-v6', 63 | // 'eva-icons', 64 | // 'themify', 65 | // 'line-awesome', 66 | // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! 67 | 68 | // 'roboto-font', // optional, you are not bound to it 69 | // 'material-icons', // optional, you are not bound to it 70 | 'mdi-v6', 71 | ], 72 | 73 | // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build 74 | build: { 75 | target: { 76 | browser: ['es2019', 'edge88', 'firefox78', 'chrome87', 'safari13.1'], 77 | node: 'node16', 78 | }, 79 | 80 | vueRouterMode: 'hash', // available values: 'hash', 'history' 81 | // vueRouterBase, 82 | // vueDevtools, 83 | // vueOptionsAPI: false, 84 | 85 | // rebuildCache: true, // rebuilds Vite/linter/etc cache on startup 86 | 87 | // publicPath: '/', 88 | // analyze: true, 89 | // env: {}, 90 | // rawDefine: {} 91 | // ignorePublicFolder: true, 92 | // minify: false, 93 | // polyfillModulePreload: true, 94 | // distDir 95 | 96 | extendViteConf(viteConf) { 97 | viteConf.base = '/' 98 | viteConf.clearScreen = false 99 | // viteConf.server = { 100 | // strictPort: true, 101 | // } 102 | viteConf.envPrefix = ['VITE_', 'TAURI_'] 103 | viteConf.build.target = process.env.TAURI_PLATFORM === 'windows' ? 'chrome105' : 'safari13' 104 | viteConf.minify = process.env.TAURI_DEBUG ? false : 'esbuild' 105 | viteConf.sourcemap = !!process.env.TAURI_DEBUG 106 | 107 | if (!isPro) { 108 | viteConf.server.hmr = { overlay: false } 109 | } 110 | }, 111 | // viteVuePluginOptions: {}, 112 | 113 | vitePlugins: [ 114 | ['vite-plugin-pages', { 115 | extensions: ['vue'], 116 | extendRoute(route) { 117 | if (route.path === '/') { 118 | return route 119 | } 120 | return { 121 | ...route, 122 | meta: { auth: true }, 123 | } 124 | }, 125 | }], 126 | [ 127 | 'vite-plugin-vue-layouts', 128 | { defaultLayout: 'MainLayout' }, 129 | ], 130 | [ 131 | 'unplugin-vue-components/vite', 132 | { 133 | dts: 'src/components.d.ts', 134 | }, 135 | ], 136 | [ 137 | 'unplugin-auto-import/vite', 138 | { 139 | imports: [ 140 | 'vue', 141 | 'pinia', 142 | 'vue-router', 143 | { 144 | quasar: [ 145 | 'useQuasar', 146 | 'Notify', 147 | 'Dialog', 148 | ], 149 | 'quasar/wrappers': ['boot'], 150 | }, 151 | ], 152 | dts: 'src/auto-imports.d.ts', 153 | }, 154 | ], 155 | ['unocss/vite', {/** unocss options */ }], 156 | ], 157 | }, 158 | 159 | // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer 160 | devServer: { 161 | // https: true 162 | open: false, // opens browser window automatically 163 | }, 164 | 165 | // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework 166 | framework: { 167 | config: {}, 168 | 169 | // iconSet: 'material-icons', // Quasar icon set 170 | lang: 'zh-CN', // Quasar language pack 171 | 172 | // For special cases outside of where the auto-import strategy can have an impact 173 | // (like functional components as one of the examples), 174 | // you can manually specify Quasar components/directives to be available everywhere: 175 | // 176 | // components: [], 177 | // directives: [], 178 | 179 | // Quasar plugins 180 | plugins: ['Notify', 'Dialog'], 181 | }, 182 | 183 | // animations: 'all', // --- includes all animations 184 | // https://v2.quasar.dev/options/animations 185 | animations: [], 186 | 187 | // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#sourcefiles 188 | // sourceFiles: { 189 | // rootComponent: 'src/App.vue', 190 | // router: 'src/router/index', 191 | // store: 'src/store/index', 192 | // registerServiceWorker: 'src-pwa/register-service-worker', 193 | // serviceWorker: 'src-pwa/custom-service-worker', 194 | // pwaManifestFile: 'src-pwa/manifest.json', 195 | // electronMain: 'src-electron/electron-main', 196 | // electronPreload: 'src-electron/electron-preload' 197 | // }, 198 | 199 | ssg: { 200 | inlineCriticalCss: false, 201 | }, 202 | 203 | // https://v2.quasar.dev/quasar-cli-vite/developing-ssr/configuring-ssr 204 | ssr: { 205 | // ssrPwaHtmlFilename: 'offline.html', // do NOT use index.html as name! 206 | // will mess up SSR 207 | 208 | // extendSSRWebserverConf (esbuildConf) {}, 209 | // extendPackageJson (json) {}, 210 | 211 | pwa: false, 212 | 213 | // manualStoreHydration: true, 214 | // manualPostHydrationTrigger: true, 215 | 216 | prodPort: 3000, // The default port that the production server should use 217 | // (gets superseded if process.env.PORT is specified at runtime) 218 | 219 | middlewares: [ 220 | 'render', // keep this as last one 221 | ], 222 | }, 223 | 224 | // https://v2.quasar.dev/quasar-cli-vite/developing-pwa/configuring-pwa 225 | pwa: { 226 | workboxMode: 'generateSW', // or 'injectManifest' 227 | injectPwaMetaTags: true, 228 | swFilename: 'sw.js', 229 | manifestFilename: 'manifest.json', 230 | useCredentialsForManifestTag: false, 231 | // useFilenameHashes: true, 232 | // extendGenerateSWOptions (cfg) {} 233 | // extendInjectManifestOptions (cfg) {}, 234 | // extendManifestJson (json) {} 235 | // extendPWACustomSWConf (esbuildConf) {} 236 | }, 237 | 238 | // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-cordova-apps/configuring-cordova 239 | cordova: { 240 | // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing 241 | }, 242 | 243 | // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-capacitor-apps/configuring-capacitor 244 | capacitor: { 245 | hideSplashscreen: true, 246 | }, 247 | 248 | // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-electron-apps/configuring-electron 249 | electron: { 250 | // extendElectronMainConf (esbuildConf) 251 | // extendElectronPreloadConf (esbuildConf) 252 | 253 | inspectPort: 5858, 254 | 255 | bundler: 'packager', // 'packager' or 'builder' 256 | 257 | packager: { 258 | // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options 259 | 260 | // OS X / Mac App Store 261 | // appBundleId: '', 262 | // appCategoryType: '', 263 | // osxSign: '', 264 | // protocol: 'myapp://path', 265 | 266 | // Windows only 267 | // win32metadata: { ... } 268 | }, 269 | 270 | builder: { 271 | // https://www.electron.build/configuration/configuration 272 | 273 | appId: 'elepub', 274 | }, 275 | }, 276 | 277 | // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex 278 | bex: { 279 | contentScripts: [ 280 | 'my-content-script', 281 | ], 282 | 283 | // extendBexScriptsConf (esbuildConf) {} 284 | // extendBexManifestJson (json) {} 285 | }, 286 | } 287 | }) 288 | -------------------------------------------------------------------------------- /quasar.extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "ssg": { 3 | "scripts": true, 4 | "IDE": true, 5 | "inlineCriticalCss": true 6 | } 7 | } -------------------------------------------------------------------------------- /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 = "adler" 7 | version = "1.0.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 10 | 11 | [[package]] 12 | name = "aes" 13 | version = "0.8.3" 14 | source = "registry+https://github.com/rust-lang/crates.io-index" 15 | checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" 16 | dependencies = [ 17 | "cfg-if", 18 | "cipher", 19 | "cpufeatures", 20 | ] 21 | 22 | [[package]] 23 | name = "aho-corasick" 24 | version = "0.7.20" 25 | source = "registry+https://github.com/rust-lang/crates.io-index" 26 | checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" 27 | dependencies = [ 28 | "memchr", 29 | ] 30 | 31 | [[package]] 32 | name = "aho-corasick" 33 | version = "1.0.1" 34 | source = "registry+https://github.com/rust-lang/crates.io-index" 35 | checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" 36 | dependencies = [ 37 | "memchr", 38 | ] 39 | 40 | [[package]] 41 | name = "alloc-no-stdlib" 42 | version = "2.0.4" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 45 | 46 | [[package]] 47 | name = "alloc-stdlib" 48 | version = "0.2.2" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 51 | dependencies = [ 52 | "alloc-no-stdlib", 53 | ] 54 | 55 | [[package]] 56 | name = "android_system_properties" 57 | version = "0.1.5" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 60 | dependencies = [ 61 | "libc", 62 | ] 63 | 64 | [[package]] 65 | name = "anyhow" 66 | version = "1.0.71" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" 69 | 70 | [[package]] 71 | name = "app" 72 | version = "0.1.0" 73 | dependencies = [ 74 | "serde", 75 | "serde_json", 76 | "tauri", 77 | "tauri-build", 78 | "zip", 79 | ] 80 | 81 | [[package]] 82 | name = "atk" 83 | version = "0.15.1" 84 | source = "registry+https://github.com/rust-lang/crates.io-index" 85 | checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" 86 | dependencies = [ 87 | "atk-sys", 88 | "bitflags", 89 | "glib", 90 | "libc", 91 | ] 92 | 93 | [[package]] 94 | name = "atk-sys" 95 | version = "0.15.1" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" 98 | dependencies = [ 99 | "glib-sys", 100 | "gobject-sys", 101 | "libc", 102 | "system-deps 6.1.0", 103 | ] 104 | 105 | [[package]] 106 | name = "autocfg" 107 | version = "1.1.0" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 110 | 111 | [[package]] 112 | name = "base64" 113 | version = "0.13.1" 114 | source = "registry+https://github.com/rust-lang/crates.io-index" 115 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 116 | 117 | [[package]] 118 | name = "base64" 119 | version = "0.21.0" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" 122 | 123 | [[package]] 124 | name = "base64ct" 125 | version = "1.6.0" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 128 | 129 | [[package]] 130 | name = "bitflags" 131 | version = "1.3.2" 132 | source = "registry+https://github.com/rust-lang/crates.io-index" 133 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 134 | 135 | [[package]] 136 | name = "block" 137 | version = "0.1.6" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 140 | 141 | [[package]] 142 | name = "block-buffer" 143 | version = "0.10.4" 144 | source = "registry+https://github.com/rust-lang/crates.io-index" 145 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 146 | dependencies = [ 147 | "generic-array", 148 | ] 149 | 150 | [[package]] 151 | name = "brotli" 152 | version = "3.3.4" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" 155 | dependencies = [ 156 | "alloc-no-stdlib", 157 | "alloc-stdlib", 158 | "brotli-decompressor", 159 | ] 160 | 161 | [[package]] 162 | name = "brotli-decompressor" 163 | version = "2.3.4" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" 166 | dependencies = [ 167 | "alloc-no-stdlib", 168 | "alloc-stdlib", 169 | ] 170 | 171 | [[package]] 172 | name = "bstr" 173 | version = "1.4.0" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" 176 | dependencies = [ 177 | "memchr", 178 | "serde", 179 | ] 180 | 181 | [[package]] 182 | name = "bumpalo" 183 | version = "3.12.2" 184 | source = "registry+https://github.com/rust-lang/crates.io-index" 185 | checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b" 186 | 187 | [[package]] 188 | name = "bytemuck" 189 | version = "1.13.1" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" 192 | 193 | [[package]] 194 | name = "byteorder" 195 | version = "1.4.3" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 198 | 199 | [[package]] 200 | name = "bytes" 201 | version = "1.4.0" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" 204 | 205 | [[package]] 206 | name = "bzip2" 207 | version = "0.4.4" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" 210 | dependencies = [ 211 | "bzip2-sys", 212 | "libc", 213 | ] 214 | 215 | [[package]] 216 | name = "bzip2-sys" 217 | version = "0.1.11+1.0.8" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" 220 | dependencies = [ 221 | "cc", 222 | "libc", 223 | "pkg-config", 224 | ] 225 | 226 | [[package]] 227 | name = "cairo-rs" 228 | version = "0.15.12" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" 231 | dependencies = [ 232 | "bitflags", 233 | "cairo-sys-rs", 234 | "glib", 235 | "libc", 236 | "thiserror", 237 | ] 238 | 239 | [[package]] 240 | name = "cairo-sys-rs" 241 | version = "0.15.1" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" 244 | dependencies = [ 245 | "glib-sys", 246 | "libc", 247 | "system-deps 6.1.0", 248 | ] 249 | 250 | [[package]] 251 | name = "cargo_toml" 252 | version = "0.15.2" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "7f83bc2e401ed041b7057345ebc488c005efa0341d5541ce7004d30458d0090b" 255 | dependencies = [ 256 | "serde", 257 | "toml 0.7.3", 258 | ] 259 | 260 | [[package]] 261 | name = "cc" 262 | version = "1.0.79" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" 265 | dependencies = [ 266 | "jobserver", 267 | ] 268 | 269 | [[package]] 270 | name = "cesu8" 271 | version = "1.1.0" 272 | source = "registry+https://github.com/rust-lang/crates.io-index" 273 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 274 | 275 | [[package]] 276 | name = "cfb" 277 | version = "0.7.3" 278 | source = "registry+https://github.com/rust-lang/crates.io-index" 279 | checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" 280 | dependencies = [ 281 | "byteorder", 282 | "fnv", 283 | "uuid", 284 | ] 285 | 286 | [[package]] 287 | name = "cfg-expr" 288 | version = "0.9.1" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" 291 | dependencies = [ 292 | "smallvec", 293 | ] 294 | 295 | [[package]] 296 | name = "cfg-expr" 297 | version = "0.15.1" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9" 300 | dependencies = [ 301 | "smallvec", 302 | "target-lexicon", 303 | ] 304 | 305 | [[package]] 306 | name = "cfg-if" 307 | version = "1.0.0" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 310 | 311 | [[package]] 312 | name = "chrono" 313 | version = "0.4.24" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" 316 | dependencies = [ 317 | "iana-time-zone", 318 | "num-integer", 319 | "num-traits", 320 | "serde", 321 | "winapi", 322 | ] 323 | 324 | [[package]] 325 | name = "cipher" 326 | version = "0.4.4" 327 | source = "registry+https://github.com/rust-lang/crates.io-index" 328 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 329 | dependencies = [ 330 | "crypto-common", 331 | "inout", 332 | ] 333 | 334 | [[package]] 335 | name = "cocoa" 336 | version = "0.24.1" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" 339 | dependencies = [ 340 | "bitflags", 341 | "block", 342 | "cocoa-foundation", 343 | "core-foundation", 344 | "core-graphics", 345 | "foreign-types", 346 | "libc", 347 | "objc", 348 | ] 349 | 350 | [[package]] 351 | name = "cocoa-foundation" 352 | version = "0.1.1" 353 | source = "registry+https://github.com/rust-lang/crates.io-index" 354 | checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6" 355 | dependencies = [ 356 | "bitflags", 357 | "block", 358 | "core-foundation", 359 | "core-graphics-types", 360 | "foreign-types", 361 | "libc", 362 | "objc", 363 | ] 364 | 365 | [[package]] 366 | name = "color_quant" 367 | version = "1.1.0" 368 | source = "registry+https://github.com/rust-lang/crates.io-index" 369 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 370 | 371 | [[package]] 372 | name = "combine" 373 | version = "4.6.6" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" 376 | dependencies = [ 377 | "bytes", 378 | "memchr", 379 | ] 380 | 381 | [[package]] 382 | name = "constant_time_eq" 383 | version = "0.1.5" 384 | source = "registry+https://github.com/rust-lang/crates.io-index" 385 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 386 | 387 | [[package]] 388 | name = "convert_case" 389 | version = "0.4.0" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 392 | 393 | [[package]] 394 | name = "core-foundation" 395 | version = "0.9.3" 396 | source = "registry+https://github.com/rust-lang/crates.io-index" 397 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 398 | dependencies = [ 399 | "core-foundation-sys", 400 | "libc", 401 | ] 402 | 403 | [[package]] 404 | name = "core-foundation-sys" 405 | version = "0.8.4" 406 | source = "registry+https://github.com/rust-lang/crates.io-index" 407 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 408 | 409 | [[package]] 410 | name = "core-graphics" 411 | version = "0.22.3" 412 | source = "registry+https://github.com/rust-lang/crates.io-index" 413 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" 414 | dependencies = [ 415 | "bitflags", 416 | "core-foundation", 417 | "core-graphics-types", 418 | "foreign-types", 419 | "libc", 420 | ] 421 | 422 | [[package]] 423 | name = "core-graphics-types" 424 | version = "0.1.1" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 427 | dependencies = [ 428 | "bitflags", 429 | "core-foundation", 430 | "foreign-types", 431 | "libc", 432 | ] 433 | 434 | [[package]] 435 | name = "cpufeatures" 436 | version = "0.2.7" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" 439 | dependencies = [ 440 | "libc", 441 | ] 442 | 443 | [[package]] 444 | name = "crc32fast" 445 | version = "1.3.2" 446 | source = "registry+https://github.com/rust-lang/crates.io-index" 447 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 448 | dependencies = [ 449 | "cfg-if", 450 | ] 451 | 452 | [[package]] 453 | name = "crossbeam-channel" 454 | version = "0.5.8" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" 457 | dependencies = [ 458 | "cfg-if", 459 | "crossbeam-utils", 460 | ] 461 | 462 | [[package]] 463 | name = "crossbeam-utils" 464 | version = "0.8.15" 465 | source = "registry+https://github.com/rust-lang/crates.io-index" 466 | checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" 467 | dependencies = [ 468 | "cfg-if", 469 | ] 470 | 471 | [[package]] 472 | name = "crypto-common" 473 | version = "0.1.6" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 476 | dependencies = [ 477 | "generic-array", 478 | "typenum", 479 | ] 480 | 481 | [[package]] 482 | name = "cssparser" 483 | version = "0.27.2" 484 | source = "registry+https://github.com/rust-lang/crates.io-index" 485 | checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" 486 | dependencies = [ 487 | "cssparser-macros", 488 | "dtoa-short", 489 | "itoa 0.4.8", 490 | "matches", 491 | "phf 0.8.0", 492 | "proc-macro2", 493 | "quote", 494 | "smallvec", 495 | "syn 1.0.109", 496 | ] 497 | 498 | [[package]] 499 | name = "cssparser-macros" 500 | version = "0.6.0" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" 503 | dependencies = [ 504 | "quote", 505 | "syn 1.0.109", 506 | ] 507 | 508 | [[package]] 509 | name = "ctor" 510 | version = "0.1.26" 511 | source = "registry+https://github.com/rust-lang/crates.io-index" 512 | checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 513 | dependencies = [ 514 | "quote", 515 | "syn 1.0.109", 516 | ] 517 | 518 | [[package]] 519 | name = "cty" 520 | version = "0.2.2" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" 523 | 524 | [[package]] 525 | name = "darling" 526 | version = "0.20.1" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" 529 | dependencies = [ 530 | "darling_core", 531 | "darling_macro", 532 | ] 533 | 534 | [[package]] 535 | name = "darling_core" 536 | version = "0.20.1" 537 | source = "registry+https://github.com/rust-lang/crates.io-index" 538 | checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" 539 | dependencies = [ 540 | "fnv", 541 | "ident_case", 542 | "proc-macro2", 543 | "quote", 544 | "strsim", 545 | "syn 2.0.16", 546 | ] 547 | 548 | [[package]] 549 | name = "darling_macro" 550 | version = "0.20.1" 551 | source = "registry+https://github.com/rust-lang/crates.io-index" 552 | checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" 553 | dependencies = [ 554 | "darling_core", 555 | "quote", 556 | "syn 2.0.16", 557 | ] 558 | 559 | [[package]] 560 | name = "derive_more" 561 | version = "0.99.17" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 564 | dependencies = [ 565 | "convert_case", 566 | "proc-macro2", 567 | "quote", 568 | "rustc_version", 569 | "syn 1.0.109", 570 | ] 571 | 572 | [[package]] 573 | name = "digest" 574 | version = "0.10.6" 575 | source = "registry+https://github.com/rust-lang/crates.io-index" 576 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 577 | dependencies = [ 578 | "block-buffer", 579 | "crypto-common", 580 | "subtle", 581 | ] 582 | 583 | [[package]] 584 | name = "dirs-next" 585 | version = "2.0.0" 586 | source = "registry+https://github.com/rust-lang/crates.io-index" 587 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 588 | dependencies = [ 589 | "cfg-if", 590 | "dirs-sys-next", 591 | ] 592 | 593 | [[package]] 594 | name = "dirs-sys-next" 595 | version = "0.1.2" 596 | source = "registry+https://github.com/rust-lang/crates.io-index" 597 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 598 | dependencies = [ 599 | "libc", 600 | "redox_users", 601 | "winapi", 602 | ] 603 | 604 | [[package]] 605 | name = "dispatch" 606 | version = "0.2.0" 607 | source = "registry+https://github.com/rust-lang/crates.io-index" 608 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 609 | 610 | [[package]] 611 | name = "dtoa" 612 | version = "0.4.8" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" 615 | 616 | [[package]] 617 | name = "dtoa-short" 618 | version = "0.3.3" 619 | source = "registry+https://github.com/rust-lang/crates.io-index" 620 | checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" 621 | dependencies = [ 622 | "dtoa", 623 | ] 624 | 625 | [[package]] 626 | name = "dunce" 627 | version = "1.0.4" 628 | source = "registry+https://github.com/rust-lang/crates.io-index" 629 | checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" 630 | 631 | [[package]] 632 | name = "embed-resource" 633 | version = "2.1.1" 634 | source = "registry+https://github.com/rust-lang/crates.io-index" 635 | checksum = "80663502655af01a2902dff3f06869330782267924bf1788410b74edcd93770a" 636 | dependencies = [ 637 | "cc", 638 | "rustc_version", 639 | "toml 0.7.3", 640 | "vswhom", 641 | "winreg", 642 | ] 643 | 644 | [[package]] 645 | name = "embed_plist" 646 | version = "1.2.2" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" 649 | 650 | [[package]] 651 | name = "encoding_rs" 652 | version = "0.8.32" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" 655 | dependencies = [ 656 | "cfg-if", 657 | ] 658 | 659 | [[package]] 660 | name = "equivalent" 661 | version = "1.0.1" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 664 | 665 | [[package]] 666 | name = "errno" 667 | version = "0.3.1" 668 | source = "registry+https://github.com/rust-lang/crates.io-index" 669 | checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" 670 | dependencies = [ 671 | "errno-dragonfly", 672 | "libc", 673 | "windows-sys 0.48.0", 674 | ] 675 | 676 | [[package]] 677 | name = "errno-dragonfly" 678 | version = "0.1.2" 679 | source = "registry+https://github.com/rust-lang/crates.io-index" 680 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 681 | dependencies = [ 682 | "cc", 683 | "libc", 684 | ] 685 | 686 | [[package]] 687 | name = "fastrand" 688 | version = "1.9.0" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 691 | dependencies = [ 692 | "instant", 693 | ] 694 | 695 | [[package]] 696 | name = "fdeflate" 697 | version = "0.3.0" 698 | source = "registry+https://github.com/rust-lang/crates.io-index" 699 | checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" 700 | dependencies = [ 701 | "simd-adler32", 702 | ] 703 | 704 | [[package]] 705 | name = "field-offset" 706 | version = "0.3.5" 707 | source = "registry+https://github.com/rust-lang/crates.io-index" 708 | checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" 709 | dependencies = [ 710 | "memoffset", 711 | "rustc_version", 712 | ] 713 | 714 | [[package]] 715 | name = "filetime" 716 | version = "0.2.21" 717 | source = "registry+https://github.com/rust-lang/crates.io-index" 718 | checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" 719 | dependencies = [ 720 | "cfg-if", 721 | "libc", 722 | "redox_syscall 0.2.16", 723 | "windows-sys 0.48.0", 724 | ] 725 | 726 | [[package]] 727 | name = "flate2" 728 | version = "1.0.26" 729 | source = "registry+https://github.com/rust-lang/crates.io-index" 730 | checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" 731 | dependencies = [ 732 | "crc32fast", 733 | "miniz_oxide", 734 | ] 735 | 736 | [[package]] 737 | name = "fnv" 738 | version = "1.0.7" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 741 | 742 | [[package]] 743 | name = "foreign-types" 744 | version = "0.3.2" 745 | source = "registry+https://github.com/rust-lang/crates.io-index" 746 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 747 | dependencies = [ 748 | "foreign-types-shared", 749 | ] 750 | 751 | [[package]] 752 | name = "foreign-types-shared" 753 | version = "0.1.1" 754 | source = "registry+https://github.com/rust-lang/crates.io-index" 755 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 756 | 757 | [[package]] 758 | name = "form_urlencoded" 759 | version = "1.1.0" 760 | source = "registry+https://github.com/rust-lang/crates.io-index" 761 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 762 | dependencies = [ 763 | "percent-encoding", 764 | ] 765 | 766 | [[package]] 767 | name = "futf" 768 | version = "0.1.5" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 771 | dependencies = [ 772 | "mac", 773 | "new_debug_unreachable", 774 | ] 775 | 776 | [[package]] 777 | name = "futures-channel" 778 | version = "0.3.28" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" 781 | dependencies = [ 782 | "futures-core", 783 | ] 784 | 785 | [[package]] 786 | name = "futures-core" 787 | version = "0.3.28" 788 | source = "registry+https://github.com/rust-lang/crates.io-index" 789 | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" 790 | 791 | [[package]] 792 | name = "futures-executor" 793 | version = "0.3.28" 794 | source = "registry+https://github.com/rust-lang/crates.io-index" 795 | checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" 796 | dependencies = [ 797 | "futures-core", 798 | "futures-task", 799 | "futures-util", 800 | ] 801 | 802 | [[package]] 803 | name = "futures-io" 804 | version = "0.3.28" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" 807 | 808 | [[package]] 809 | name = "futures-macro" 810 | version = "0.3.28" 811 | source = "registry+https://github.com/rust-lang/crates.io-index" 812 | checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" 813 | dependencies = [ 814 | "proc-macro2", 815 | "quote", 816 | "syn 2.0.16", 817 | ] 818 | 819 | [[package]] 820 | name = "futures-task" 821 | version = "0.3.28" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" 824 | 825 | [[package]] 826 | name = "futures-util" 827 | version = "0.3.28" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" 830 | dependencies = [ 831 | "futures-core", 832 | "futures-macro", 833 | "futures-task", 834 | "pin-project-lite", 835 | "pin-utils", 836 | "slab", 837 | ] 838 | 839 | [[package]] 840 | name = "fxhash" 841 | version = "0.2.1" 842 | source = "registry+https://github.com/rust-lang/crates.io-index" 843 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 844 | dependencies = [ 845 | "byteorder", 846 | ] 847 | 848 | [[package]] 849 | name = "gdk" 850 | version = "0.15.4" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" 853 | dependencies = [ 854 | "bitflags", 855 | "cairo-rs", 856 | "gdk-pixbuf", 857 | "gdk-sys", 858 | "gio", 859 | "glib", 860 | "libc", 861 | "pango", 862 | ] 863 | 864 | [[package]] 865 | name = "gdk-pixbuf" 866 | version = "0.15.11" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" 869 | dependencies = [ 870 | "bitflags", 871 | "gdk-pixbuf-sys", 872 | "gio", 873 | "glib", 874 | "libc", 875 | ] 876 | 877 | [[package]] 878 | name = "gdk-pixbuf-sys" 879 | version = "0.15.10" 880 | source = "registry+https://github.com/rust-lang/crates.io-index" 881 | checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" 882 | dependencies = [ 883 | "gio-sys", 884 | "glib-sys", 885 | "gobject-sys", 886 | "libc", 887 | "system-deps 6.1.0", 888 | ] 889 | 890 | [[package]] 891 | name = "gdk-sys" 892 | version = "0.15.1" 893 | source = "registry+https://github.com/rust-lang/crates.io-index" 894 | checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" 895 | dependencies = [ 896 | "cairo-sys-rs", 897 | "gdk-pixbuf-sys", 898 | "gio-sys", 899 | "glib-sys", 900 | "gobject-sys", 901 | "libc", 902 | "pango-sys", 903 | "pkg-config", 904 | "system-deps 6.1.0", 905 | ] 906 | 907 | [[package]] 908 | name = "gdkwayland-sys" 909 | version = "0.15.3" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" 912 | dependencies = [ 913 | "gdk-sys", 914 | "glib-sys", 915 | "gobject-sys", 916 | "libc", 917 | "pkg-config", 918 | "system-deps 6.1.0", 919 | ] 920 | 921 | [[package]] 922 | name = "gdkx11-sys" 923 | version = "0.15.1" 924 | source = "registry+https://github.com/rust-lang/crates.io-index" 925 | checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" 926 | dependencies = [ 927 | "gdk-sys", 928 | "glib-sys", 929 | "libc", 930 | "system-deps 6.1.0", 931 | "x11", 932 | ] 933 | 934 | [[package]] 935 | name = "generator" 936 | version = "0.7.4" 937 | source = "registry+https://github.com/rust-lang/crates.io-index" 938 | checksum = "f3e123d9ae7c02966b4d892e550bdc32164f05853cd40ab570650ad600596a8a" 939 | dependencies = [ 940 | "cc", 941 | "libc", 942 | "log", 943 | "rustversion", 944 | "windows 0.48.0", 945 | ] 946 | 947 | [[package]] 948 | name = "generic-array" 949 | version = "0.14.7" 950 | source = "registry+https://github.com/rust-lang/crates.io-index" 951 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 952 | dependencies = [ 953 | "typenum", 954 | "version_check", 955 | ] 956 | 957 | [[package]] 958 | name = "getrandom" 959 | version = "0.1.16" 960 | source = "registry+https://github.com/rust-lang/crates.io-index" 961 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 962 | dependencies = [ 963 | "cfg-if", 964 | "libc", 965 | "wasi 0.9.0+wasi-snapshot-preview1", 966 | ] 967 | 968 | [[package]] 969 | name = "getrandom" 970 | version = "0.2.9" 971 | source = "registry+https://github.com/rust-lang/crates.io-index" 972 | checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" 973 | dependencies = [ 974 | "cfg-if", 975 | "libc", 976 | "wasi 0.11.0+wasi-snapshot-preview1", 977 | ] 978 | 979 | [[package]] 980 | name = "gio" 981 | version = "0.15.12" 982 | source = "registry+https://github.com/rust-lang/crates.io-index" 983 | checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" 984 | dependencies = [ 985 | "bitflags", 986 | "futures-channel", 987 | "futures-core", 988 | "futures-io", 989 | "gio-sys", 990 | "glib", 991 | "libc", 992 | "once_cell", 993 | "thiserror", 994 | ] 995 | 996 | [[package]] 997 | name = "gio-sys" 998 | version = "0.15.10" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" 1001 | dependencies = [ 1002 | "glib-sys", 1003 | "gobject-sys", 1004 | "libc", 1005 | "system-deps 6.1.0", 1006 | "winapi", 1007 | ] 1008 | 1009 | [[package]] 1010 | name = "glib" 1011 | version = "0.15.12" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" 1014 | dependencies = [ 1015 | "bitflags", 1016 | "futures-channel", 1017 | "futures-core", 1018 | "futures-executor", 1019 | "futures-task", 1020 | "glib-macros", 1021 | "glib-sys", 1022 | "gobject-sys", 1023 | "libc", 1024 | "once_cell", 1025 | "smallvec", 1026 | "thiserror", 1027 | ] 1028 | 1029 | [[package]] 1030 | name = "glib-macros" 1031 | version = "0.15.13" 1032 | source = "registry+https://github.com/rust-lang/crates.io-index" 1033 | checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" 1034 | dependencies = [ 1035 | "anyhow", 1036 | "heck 0.4.1", 1037 | "proc-macro-crate", 1038 | "proc-macro-error", 1039 | "proc-macro2", 1040 | "quote", 1041 | "syn 1.0.109", 1042 | ] 1043 | 1044 | [[package]] 1045 | name = "glib-sys" 1046 | version = "0.15.10" 1047 | source = "registry+https://github.com/rust-lang/crates.io-index" 1048 | checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" 1049 | dependencies = [ 1050 | "libc", 1051 | "system-deps 6.1.0", 1052 | ] 1053 | 1054 | [[package]] 1055 | name = "glob" 1056 | version = "0.3.1" 1057 | source = "registry+https://github.com/rust-lang/crates.io-index" 1058 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 1059 | 1060 | [[package]] 1061 | name = "globset" 1062 | version = "0.4.10" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" 1065 | dependencies = [ 1066 | "aho-corasick 0.7.20", 1067 | "bstr", 1068 | "fnv", 1069 | "log", 1070 | "regex", 1071 | ] 1072 | 1073 | [[package]] 1074 | name = "gobject-sys" 1075 | version = "0.15.10" 1076 | source = "registry+https://github.com/rust-lang/crates.io-index" 1077 | checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" 1078 | dependencies = [ 1079 | "glib-sys", 1080 | "libc", 1081 | "system-deps 6.1.0", 1082 | ] 1083 | 1084 | [[package]] 1085 | name = "gtk" 1086 | version = "0.15.5" 1087 | source = "registry+https://github.com/rust-lang/crates.io-index" 1088 | checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" 1089 | dependencies = [ 1090 | "atk", 1091 | "bitflags", 1092 | "cairo-rs", 1093 | "field-offset", 1094 | "futures-channel", 1095 | "gdk", 1096 | "gdk-pixbuf", 1097 | "gio", 1098 | "glib", 1099 | "gtk-sys", 1100 | "gtk3-macros", 1101 | "libc", 1102 | "once_cell", 1103 | "pango", 1104 | "pkg-config", 1105 | ] 1106 | 1107 | [[package]] 1108 | name = "gtk-sys" 1109 | version = "0.15.3" 1110 | source = "registry+https://github.com/rust-lang/crates.io-index" 1111 | checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" 1112 | dependencies = [ 1113 | "atk-sys", 1114 | "cairo-sys-rs", 1115 | "gdk-pixbuf-sys", 1116 | "gdk-sys", 1117 | "gio-sys", 1118 | "glib-sys", 1119 | "gobject-sys", 1120 | "libc", 1121 | "pango-sys", 1122 | "system-deps 6.1.0", 1123 | ] 1124 | 1125 | [[package]] 1126 | name = "gtk3-macros" 1127 | version = "0.15.6" 1128 | source = "registry+https://github.com/rust-lang/crates.io-index" 1129 | checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" 1130 | dependencies = [ 1131 | "anyhow", 1132 | "proc-macro-crate", 1133 | "proc-macro-error", 1134 | "proc-macro2", 1135 | "quote", 1136 | "syn 1.0.109", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "hashbrown" 1141 | version = "0.12.3" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1144 | 1145 | [[package]] 1146 | name = "hashbrown" 1147 | version = "0.14.1" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" 1150 | 1151 | [[package]] 1152 | name = "heck" 1153 | version = "0.3.3" 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" 1155 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 1156 | dependencies = [ 1157 | "unicode-segmentation", 1158 | ] 1159 | 1160 | [[package]] 1161 | name = "heck" 1162 | version = "0.4.1" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1165 | 1166 | [[package]] 1167 | name = "hermit-abi" 1168 | version = "0.2.6" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" 1171 | dependencies = [ 1172 | "libc", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "hermit-abi" 1177 | version = "0.3.1" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" 1180 | 1181 | [[package]] 1182 | name = "hex" 1183 | version = "0.4.3" 1184 | source = "registry+https://github.com/rust-lang/crates.io-index" 1185 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1186 | 1187 | [[package]] 1188 | name = "hmac" 1189 | version = "0.12.1" 1190 | source = "registry+https://github.com/rust-lang/crates.io-index" 1191 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1192 | dependencies = [ 1193 | "digest", 1194 | ] 1195 | 1196 | [[package]] 1197 | name = "html5ever" 1198 | version = "0.25.2" 1199 | source = "registry+https://github.com/rust-lang/crates.io-index" 1200 | checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" 1201 | dependencies = [ 1202 | "log", 1203 | "mac", 1204 | "markup5ever 0.10.1", 1205 | "proc-macro2", 1206 | "quote", 1207 | "syn 1.0.109", 1208 | ] 1209 | 1210 | [[package]] 1211 | name = "html5ever" 1212 | version = "0.26.0" 1213 | source = "registry+https://github.com/rust-lang/crates.io-index" 1214 | checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" 1215 | dependencies = [ 1216 | "log", 1217 | "mac", 1218 | "markup5ever 0.11.0", 1219 | "proc-macro2", 1220 | "quote", 1221 | "syn 1.0.109", 1222 | ] 1223 | 1224 | [[package]] 1225 | name = "http" 1226 | version = "0.2.9" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" 1229 | dependencies = [ 1230 | "bytes", 1231 | "fnv", 1232 | "itoa 1.0.6", 1233 | ] 1234 | 1235 | [[package]] 1236 | name = "http-range" 1237 | version = "0.1.5" 1238 | source = "registry+https://github.com/rust-lang/crates.io-index" 1239 | checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" 1240 | 1241 | [[package]] 1242 | name = "iana-time-zone" 1243 | version = "0.1.56" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" 1246 | dependencies = [ 1247 | "android_system_properties", 1248 | "core-foundation-sys", 1249 | "iana-time-zone-haiku", 1250 | "js-sys", 1251 | "wasm-bindgen", 1252 | "windows 0.48.0", 1253 | ] 1254 | 1255 | [[package]] 1256 | name = "iana-time-zone-haiku" 1257 | version = "0.1.2" 1258 | source = "registry+https://github.com/rust-lang/crates.io-index" 1259 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1260 | dependencies = [ 1261 | "cc", 1262 | ] 1263 | 1264 | [[package]] 1265 | name = "ico" 1266 | version = "0.3.0" 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" 1268 | checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" 1269 | dependencies = [ 1270 | "byteorder", 1271 | "png", 1272 | ] 1273 | 1274 | [[package]] 1275 | name = "ident_case" 1276 | version = "1.0.1" 1277 | source = "registry+https://github.com/rust-lang/crates.io-index" 1278 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1279 | 1280 | [[package]] 1281 | name = "idna" 1282 | version = "0.3.0" 1283 | source = "registry+https://github.com/rust-lang/crates.io-index" 1284 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 1285 | dependencies = [ 1286 | "unicode-bidi", 1287 | "unicode-normalization", 1288 | ] 1289 | 1290 | [[package]] 1291 | name = "ignore" 1292 | version = "0.4.18" 1293 | source = "registry+https://github.com/rust-lang/crates.io-index" 1294 | checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" 1295 | dependencies = [ 1296 | "crossbeam-utils", 1297 | "globset", 1298 | "lazy_static", 1299 | "log", 1300 | "memchr", 1301 | "regex", 1302 | "same-file", 1303 | "thread_local", 1304 | "walkdir", 1305 | "winapi-util", 1306 | ] 1307 | 1308 | [[package]] 1309 | name = "image" 1310 | version = "0.24.6" 1311 | source = "registry+https://github.com/rust-lang/crates.io-index" 1312 | checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" 1313 | dependencies = [ 1314 | "bytemuck", 1315 | "byteorder", 1316 | "color_quant", 1317 | "num-rational", 1318 | "num-traits", 1319 | ] 1320 | 1321 | [[package]] 1322 | name = "indexmap" 1323 | version = "1.9.3" 1324 | source = "registry+https://github.com/rust-lang/crates.io-index" 1325 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 1326 | dependencies = [ 1327 | "autocfg", 1328 | "hashbrown 0.12.3", 1329 | "serde", 1330 | ] 1331 | 1332 | [[package]] 1333 | name = "indexmap" 1334 | version = "2.0.2" 1335 | source = "registry+https://github.com/rust-lang/crates.io-index" 1336 | checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" 1337 | dependencies = [ 1338 | "equivalent", 1339 | "hashbrown 0.14.1", 1340 | "serde", 1341 | ] 1342 | 1343 | [[package]] 1344 | name = "infer" 1345 | version = "0.12.0" 1346 | source = "registry+https://github.com/rust-lang/crates.io-index" 1347 | checksum = "a898e4b7951673fce96614ce5751d13c40fc5674bc2d759288e46c3ab62598b3" 1348 | dependencies = [ 1349 | "cfb", 1350 | ] 1351 | 1352 | [[package]] 1353 | name = "inout" 1354 | version = "0.1.3" 1355 | source = "registry+https://github.com/rust-lang/crates.io-index" 1356 | checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" 1357 | dependencies = [ 1358 | "generic-array", 1359 | ] 1360 | 1361 | [[package]] 1362 | name = "instant" 1363 | version = "0.1.12" 1364 | source = "registry+https://github.com/rust-lang/crates.io-index" 1365 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1366 | dependencies = [ 1367 | "cfg-if", 1368 | ] 1369 | 1370 | [[package]] 1371 | name = "io-lifetimes" 1372 | version = "1.0.10" 1373 | source = "registry+https://github.com/rust-lang/crates.io-index" 1374 | checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" 1375 | dependencies = [ 1376 | "hermit-abi 0.3.1", 1377 | "libc", 1378 | "windows-sys 0.48.0", 1379 | ] 1380 | 1381 | [[package]] 1382 | name = "itoa" 1383 | version = "0.4.8" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" 1386 | 1387 | [[package]] 1388 | name = "itoa" 1389 | version = "1.0.6" 1390 | source = "registry+https://github.com/rust-lang/crates.io-index" 1391 | checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" 1392 | 1393 | [[package]] 1394 | name = "javascriptcore-rs" 1395 | version = "0.16.0" 1396 | source = "registry+https://github.com/rust-lang/crates.io-index" 1397 | checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" 1398 | dependencies = [ 1399 | "bitflags", 1400 | "glib", 1401 | "javascriptcore-rs-sys", 1402 | ] 1403 | 1404 | [[package]] 1405 | name = "javascriptcore-rs-sys" 1406 | version = "0.4.0" 1407 | source = "registry+https://github.com/rust-lang/crates.io-index" 1408 | checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" 1409 | dependencies = [ 1410 | "glib-sys", 1411 | "gobject-sys", 1412 | "libc", 1413 | "system-deps 5.0.0", 1414 | ] 1415 | 1416 | [[package]] 1417 | name = "jni" 1418 | version = "0.20.0" 1419 | source = "registry+https://github.com/rust-lang/crates.io-index" 1420 | checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" 1421 | dependencies = [ 1422 | "cesu8", 1423 | "combine", 1424 | "jni-sys", 1425 | "log", 1426 | "thiserror", 1427 | "walkdir", 1428 | ] 1429 | 1430 | [[package]] 1431 | name = "jni-sys" 1432 | version = "0.3.0" 1433 | source = "registry+https://github.com/rust-lang/crates.io-index" 1434 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1435 | 1436 | [[package]] 1437 | name = "jobserver" 1438 | version = "0.1.26" 1439 | source = "registry+https://github.com/rust-lang/crates.io-index" 1440 | checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" 1441 | dependencies = [ 1442 | "libc", 1443 | ] 1444 | 1445 | [[package]] 1446 | name = "js-sys" 1447 | version = "0.3.63" 1448 | source = "registry+https://github.com/rust-lang/crates.io-index" 1449 | checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" 1450 | dependencies = [ 1451 | "wasm-bindgen", 1452 | ] 1453 | 1454 | [[package]] 1455 | name = "json-patch" 1456 | version = "1.0.0" 1457 | source = "registry+https://github.com/rust-lang/crates.io-index" 1458 | checksum = "1f54898088ccb91df1b492cc80029a6fdf1c48ca0db7c6822a8babad69c94658" 1459 | dependencies = [ 1460 | "serde", 1461 | "serde_json", 1462 | "thiserror", 1463 | "treediff", 1464 | ] 1465 | 1466 | [[package]] 1467 | name = "kuchiki" 1468 | version = "0.8.1" 1469 | source = "registry+https://github.com/rust-lang/crates.io-index" 1470 | checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" 1471 | dependencies = [ 1472 | "cssparser", 1473 | "html5ever 0.25.2", 1474 | "matches", 1475 | "selectors", 1476 | ] 1477 | 1478 | [[package]] 1479 | name = "kuchikiki" 1480 | version = "0.8.2" 1481 | source = "registry+https://github.com/rust-lang/crates.io-index" 1482 | checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" 1483 | dependencies = [ 1484 | "cssparser", 1485 | "html5ever 0.26.0", 1486 | "indexmap 1.9.3", 1487 | "matches", 1488 | "selectors", 1489 | ] 1490 | 1491 | [[package]] 1492 | name = "lazy_static" 1493 | version = "1.4.0" 1494 | source = "registry+https://github.com/rust-lang/crates.io-index" 1495 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1496 | 1497 | [[package]] 1498 | name = "libc" 1499 | version = "0.2.144" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" 1502 | 1503 | [[package]] 1504 | name = "line-wrap" 1505 | version = "0.1.1" 1506 | source = "registry+https://github.com/rust-lang/crates.io-index" 1507 | checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" 1508 | dependencies = [ 1509 | "safemem", 1510 | ] 1511 | 1512 | [[package]] 1513 | name = "linux-raw-sys" 1514 | version = "0.3.7" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" 1517 | 1518 | [[package]] 1519 | name = "lock_api" 1520 | version = "0.4.9" 1521 | source = "registry+https://github.com/rust-lang/crates.io-index" 1522 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 1523 | dependencies = [ 1524 | "autocfg", 1525 | "scopeguard", 1526 | ] 1527 | 1528 | [[package]] 1529 | name = "log" 1530 | version = "0.4.20" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 1533 | 1534 | [[package]] 1535 | name = "loom" 1536 | version = "0.5.6" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" 1539 | dependencies = [ 1540 | "cfg-if", 1541 | "generator", 1542 | "scoped-tls", 1543 | "serde", 1544 | "serde_json", 1545 | "tracing", 1546 | "tracing-subscriber", 1547 | ] 1548 | 1549 | [[package]] 1550 | name = "mac" 1551 | version = "0.1.1" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 1554 | 1555 | [[package]] 1556 | name = "malloc_buf" 1557 | version = "0.0.6" 1558 | source = "registry+https://github.com/rust-lang/crates.io-index" 1559 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1560 | dependencies = [ 1561 | "libc", 1562 | ] 1563 | 1564 | [[package]] 1565 | name = "markup5ever" 1566 | version = "0.10.1" 1567 | source = "registry+https://github.com/rust-lang/crates.io-index" 1568 | checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" 1569 | dependencies = [ 1570 | "log", 1571 | "phf 0.8.0", 1572 | "phf_codegen 0.8.0", 1573 | "string_cache", 1574 | "string_cache_codegen", 1575 | "tendril", 1576 | ] 1577 | 1578 | [[package]] 1579 | name = "markup5ever" 1580 | version = "0.11.0" 1581 | source = "registry+https://github.com/rust-lang/crates.io-index" 1582 | checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" 1583 | dependencies = [ 1584 | "log", 1585 | "phf 0.10.1", 1586 | "phf_codegen 0.10.0", 1587 | "string_cache", 1588 | "string_cache_codegen", 1589 | "tendril", 1590 | ] 1591 | 1592 | [[package]] 1593 | name = "matchers" 1594 | version = "0.1.0" 1595 | source = "registry+https://github.com/rust-lang/crates.io-index" 1596 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 1597 | dependencies = [ 1598 | "regex-automata", 1599 | ] 1600 | 1601 | [[package]] 1602 | name = "matches" 1603 | version = "0.1.10" 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" 1605 | checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 1606 | 1607 | [[package]] 1608 | name = "memchr" 1609 | version = "2.5.0" 1610 | source = "registry+https://github.com/rust-lang/crates.io-index" 1611 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 1612 | 1613 | [[package]] 1614 | name = "memoffset" 1615 | version = "0.8.0" 1616 | source = "registry+https://github.com/rust-lang/crates.io-index" 1617 | checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" 1618 | dependencies = [ 1619 | "autocfg", 1620 | ] 1621 | 1622 | [[package]] 1623 | name = "miniz_oxide" 1624 | version = "0.7.1" 1625 | source = "registry+https://github.com/rust-lang/crates.io-index" 1626 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1627 | dependencies = [ 1628 | "adler", 1629 | "simd-adler32", 1630 | ] 1631 | 1632 | [[package]] 1633 | name = "ndk" 1634 | version = "0.6.0" 1635 | source = "registry+https://github.com/rust-lang/crates.io-index" 1636 | checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" 1637 | dependencies = [ 1638 | "bitflags", 1639 | "jni-sys", 1640 | "ndk-sys", 1641 | "num_enum", 1642 | "thiserror", 1643 | ] 1644 | 1645 | [[package]] 1646 | name = "ndk-context" 1647 | version = "0.1.1" 1648 | source = "registry+https://github.com/rust-lang/crates.io-index" 1649 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1650 | 1651 | [[package]] 1652 | name = "ndk-sys" 1653 | version = "0.3.0" 1654 | source = "registry+https://github.com/rust-lang/crates.io-index" 1655 | checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" 1656 | dependencies = [ 1657 | "jni-sys", 1658 | ] 1659 | 1660 | [[package]] 1661 | name = "new_debug_unreachable" 1662 | version = "1.0.4" 1663 | source = "registry+https://github.com/rust-lang/crates.io-index" 1664 | checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" 1665 | 1666 | [[package]] 1667 | name = "nodrop" 1668 | version = "0.1.14" 1669 | source = "registry+https://github.com/rust-lang/crates.io-index" 1670 | checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 1671 | 1672 | [[package]] 1673 | name = "nu-ansi-term" 1674 | version = "0.46.0" 1675 | source = "registry+https://github.com/rust-lang/crates.io-index" 1676 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 1677 | dependencies = [ 1678 | "overload", 1679 | "winapi", 1680 | ] 1681 | 1682 | [[package]] 1683 | name = "num-integer" 1684 | version = "0.1.45" 1685 | source = "registry+https://github.com/rust-lang/crates.io-index" 1686 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1687 | dependencies = [ 1688 | "autocfg", 1689 | "num-traits", 1690 | ] 1691 | 1692 | [[package]] 1693 | name = "num-rational" 1694 | version = "0.4.1" 1695 | source = "registry+https://github.com/rust-lang/crates.io-index" 1696 | checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" 1697 | dependencies = [ 1698 | "autocfg", 1699 | "num-integer", 1700 | "num-traits", 1701 | ] 1702 | 1703 | [[package]] 1704 | name = "num-traits" 1705 | version = "0.2.15" 1706 | source = "registry+https://github.com/rust-lang/crates.io-index" 1707 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 1708 | dependencies = [ 1709 | "autocfg", 1710 | ] 1711 | 1712 | [[package]] 1713 | name = "num_cpus" 1714 | version = "1.15.0" 1715 | source = "registry+https://github.com/rust-lang/crates.io-index" 1716 | checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" 1717 | dependencies = [ 1718 | "hermit-abi 0.2.6", 1719 | "libc", 1720 | ] 1721 | 1722 | [[package]] 1723 | name = "num_enum" 1724 | version = "0.5.11" 1725 | source = "registry+https://github.com/rust-lang/crates.io-index" 1726 | checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" 1727 | dependencies = [ 1728 | "num_enum_derive", 1729 | ] 1730 | 1731 | [[package]] 1732 | name = "num_enum_derive" 1733 | version = "0.5.11" 1734 | source = "registry+https://github.com/rust-lang/crates.io-index" 1735 | checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" 1736 | dependencies = [ 1737 | "proc-macro-crate", 1738 | "proc-macro2", 1739 | "quote", 1740 | "syn 1.0.109", 1741 | ] 1742 | 1743 | [[package]] 1744 | name = "num_threads" 1745 | version = "0.1.6" 1746 | source = "registry+https://github.com/rust-lang/crates.io-index" 1747 | checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" 1748 | dependencies = [ 1749 | "libc", 1750 | ] 1751 | 1752 | [[package]] 1753 | name = "objc" 1754 | version = "0.2.7" 1755 | source = "registry+https://github.com/rust-lang/crates.io-index" 1756 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1757 | dependencies = [ 1758 | "malloc_buf", 1759 | "objc_exception", 1760 | ] 1761 | 1762 | [[package]] 1763 | name = "objc-foundation" 1764 | version = "0.1.1" 1765 | source = "registry+https://github.com/rust-lang/crates.io-index" 1766 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 1767 | dependencies = [ 1768 | "block", 1769 | "objc", 1770 | "objc_id", 1771 | ] 1772 | 1773 | [[package]] 1774 | name = "objc_exception" 1775 | version = "0.1.2" 1776 | source = "registry+https://github.com/rust-lang/crates.io-index" 1777 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 1778 | dependencies = [ 1779 | "cc", 1780 | ] 1781 | 1782 | [[package]] 1783 | name = "objc_id" 1784 | version = "0.1.1" 1785 | source = "registry+https://github.com/rust-lang/crates.io-index" 1786 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 1787 | dependencies = [ 1788 | "objc", 1789 | ] 1790 | 1791 | [[package]] 1792 | name = "once_cell" 1793 | version = "1.17.1" 1794 | source = "registry+https://github.com/rust-lang/crates.io-index" 1795 | checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" 1796 | 1797 | [[package]] 1798 | name = "open" 1799 | version = "3.2.0" 1800 | source = "registry+https://github.com/rust-lang/crates.io-index" 1801 | checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" 1802 | dependencies = [ 1803 | "pathdiff", 1804 | "windows-sys 0.42.0", 1805 | ] 1806 | 1807 | [[package]] 1808 | name = "overload" 1809 | version = "0.1.1" 1810 | source = "registry+https://github.com/rust-lang/crates.io-index" 1811 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 1812 | 1813 | [[package]] 1814 | name = "pango" 1815 | version = "0.15.10" 1816 | source = "registry+https://github.com/rust-lang/crates.io-index" 1817 | checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" 1818 | dependencies = [ 1819 | "bitflags", 1820 | "glib", 1821 | "libc", 1822 | "once_cell", 1823 | "pango-sys", 1824 | ] 1825 | 1826 | [[package]] 1827 | name = "pango-sys" 1828 | version = "0.15.10" 1829 | source = "registry+https://github.com/rust-lang/crates.io-index" 1830 | checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" 1831 | dependencies = [ 1832 | "glib-sys", 1833 | "gobject-sys", 1834 | "libc", 1835 | "system-deps 6.1.0", 1836 | ] 1837 | 1838 | [[package]] 1839 | name = "parking_lot" 1840 | version = "0.12.1" 1841 | source = "registry+https://github.com/rust-lang/crates.io-index" 1842 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 1843 | dependencies = [ 1844 | "lock_api", 1845 | "parking_lot_core", 1846 | ] 1847 | 1848 | [[package]] 1849 | name = "parking_lot_core" 1850 | version = "0.9.7" 1851 | source = "registry+https://github.com/rust-lang/crates.io-index" 1852 | checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" 1853 | dependencies = [ 1854 | "cfg-if", 1855 | "libc", 1856 | "redox_syscall 0.2.16", 1857 | "smallvec", 1858 | "windows-sys 0.45.0", 1859 | ] 1860 | 1861 | [[package]] 1862 | name = "password-hash" 1863 | version = "0.4.2" 1864 | source = "registry+https://github.com/rust-lang/crates.io-index" 1865 | checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" 1866 | dependencies = [ 1867 | "base64ct", 1868 | "rand_core 0.6.4", 1869 | "subtle", 1870 | ] 1871 | 1872 | [[package]] 1873 | name = "pathdiff" 1874 | version = "0.2.1" 1875 | source = "registry+https://github.com/rust-lang/crates.io-index" 1876 | checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" 1877 | 1878 | [[package]] 1879 | name = "pbkdf2" 1880 | version = "0.11.0" 1881 | source = "registry+https://github.com/rust-lang/crates.io-index" 1882 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 1883 | dependencies = [ 1884 | "digest", 1885 | "hmac", 1886 | "password-hash", 1887 | "sha2", 1888 | ] 1889 | 1890 | [[package]] 1891 | name = "percent-encoding" 1892 | version = "2.2.0" 1893 | source = "registry+https://github.com/rust-lang/crates.io-index" 1894 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 1895 | 1896 | [[package]] 1897 | name = "phf" 1898 | version = "0.8.0" 1899 | source = "registry+https://github.com/rust-lang/crates.io-index" 1900 | checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" 1901 | dependencies = [ 1902 | "phf_macros 0.8.0", 1903 | "phf_shared 0.8.0", 1904 | "proc-macro-hack", 1905 | ] 1906 | 1907 | [[package]] 1908 | name = "phf" 1909 | version = "0.10.1" 1910 | source = "registry+https://github.com/rust-lang/crates.io-index" 1911 | checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" 1912 | dependencies = [ 1913 | "phf_macros 0.10.0", 1914 | "phf_shared 0.10.0", 1915 | "proc-macro-hack", 1916 | ] 1917 | 1918 | [[package]] 1919 | name = "phf_codegen" 1920 | version = "0.8.0" 1921 | source = "registry+https://github.com/rust-lang/crates.io-index" 1922 | checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" 1923 | dependencies = [ 1924 | "phf_generator 0.8.0", 1925 | "phf_shared 0.8.0", 1926 | ] 1927 | 1928 | [[package]] 1929 | name = "phf_codegen" 1930 | version = "0.10.0" 1931 | source = "registry+https://github.com/rust-lang/crates.io-index" 1932 | checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" 1933 | dependencies = [ 1934 | "phf_generator 0.10.0", 1935 | "phf_shared 0.10.0", 1936 | ] 1937 | 1938 | [[package]] 1939 | name = "phf_generator" 1940 | version = "0.8.0" 1941 | source = "registry+https://github.com/rust-lang/crates.io-index" 1942 | checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" 1943 | dependencies = [ 1944 | "phf_shared 0.8.0", 1945 | "rand 0.7.3", 1946 | ] 1947 | 1948 | [[package]] 1949 | name = "phf_generator" 1950 | version = "0.10.0" 1951 | source = "registry+https://github.com/rust-lang/crates.io-index" 1952 | checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" 1953 | dependencies = [ 1954 | "phf_shared 0.10.0", 1955 | "rand 0.8.5", 1956 | ] 1957 | 1958 | [[package]] 1959 | name = "phf_macros" 1960 | version = "0.8.0" 1961 | source = "registry+https://github.com/rust-lang/crates.io-index" 1962 | checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" 1963 | dependencies = [ 1964 | "phf_generator 0.8.0", 1965 | "phf_shared 0.8.0", 1966 | "proc-macro-hack", 1967 | "proc-macro2", 1968 | "quote", 1969 | "syn 1.0.109", 1970 | ] 1971 | 1972 | [[package]] 1973 | name = "phf_macros" 1974 | version = "0.10.0" 1975 | source = "registry+https://github.com/rust-lang/crates.io-index" 1976 | checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" 1977 | dependencies = [ 1978 | "phf_generator 0.10.0", 1979 | "phf_shared 0.10.0", 1980 | "proc-macro-hack", 1981 | "proc-macro2", 1982 | "quote", 1983 | "syn 1.0.109", 1984 | ] 1985 | 1986 | [[package]] 1987 | name = "phf_shared" 1988 | version = "0.8.0" 1989 | source = "registry+https://github.com/rust-lang/crates.io-index" 1990 | checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" 1991 | dependencies = [ 1992 | "siphasher", 1993 | ] 1994 | 1995 | [[package]] 1996 | name = "phf_shared" 1997 | version = "0.10.0" 1998 | source = "registry+https://github.com/rust-lang/crates.io-index" 1999 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 2000 | dependencies = [ 2001 | "siphasher", 2002 | ] 2003 | 2004 | [[package]] 2005 | name = "pin-project-lite" 2006 | version = "0.2.9" 2007 | source = "registry+https://github.com/rust-lang/crates.io-index" 2008 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 2009 | 2010 | [[package]] 2011 | name = "pin-utils" 2012 | version = "0.1.0" 2013 | source = "registry+https://github.com/rust-lang/crates.io-index" 2014 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2015 | 2016 | [[package]] 2017 | name = "pkg-config" 2018 | version = "0.3.27" 2019 | source = "registry+https://github.com/rust-lang/crates.io-index" 2020 | checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" 2021 | 2022 | [[package]] 2023 | name = "plist" 2024 | version = "1.4.3" 2025 | source = "registry+https://github.com/rust-lang/crates.io-index" 2026 | checksum = "9bd9647b268a3d3e14ff09c23201133a62589c658db02bb7388c7246aafe0590" 2027 | dependencies = [ 2028 | "base64 0.21.0", 2029 | "indexmap 1.9.3", 2030 | "line-wrap", 2031 | "quick-xml", 2032 | "serde", 2033 | "time", 2034 | ] 2035 | 2036 | [[package]] 2037 | name = "png" 2038 | version = "0.17.8" 2039 | source = "registry+https://github.com/rust-lang/crates.io-index" 2040 | checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" 2041 | dependencies = [ 2042 | "bitflags", 2043 | "crc32fast", 2044 | "fdeflate", 2045 | "flate2", 2046 | "miniz_oxide", 2047 | ] 2048 | 2049 | [[package]] 2050 | name = "ppv-lite86" 2051 | version = "0.2.17" 2052 | source = "registry+https://github.com/rust-lang/crates.io-index" 2053 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2054 | 2055 | [[package]] 2056 | name = "precomputed-hash" 2057 | version = "0.1.1" 2058 | source = "registry+https://github.com/rust-lang/crates.io-index" 2059 | checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 2060 | 2061 | [[package]] 2062 | name = "proc-macro-crate" 2063 | version = "1.3.1" 2064 | source = "registry+https://github.com/rust-lang/crates.io-index" 2065 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 2066 | dependencies = [ 2067 | "once_cell", 2068 | "toml_edit", 2069 | ] 2070 | 2071 | [[package]] 2072 | name = "proc-macro-error" 2073 | version = "1.0.4" 2074 | source = "registry+https://github.com/rust-lang/crates.io-index" 2075 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2076 | dependencies = [ 2077 | "proc-macro-error-attr", 2078 | "proc-macro2", 2079 | "quote", 2080 | "syn 1.0.109", 2081 | "version_check", 2082 | ] 2083 | 2084 | [[package]] 2085 | name = "proc-macro-error-attr" 2086 | version = "1.0.4" 2087 | source = "registry+https://github.com/rust-lang/crates.io-index" 2088 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2089 | dependencies = [ 2090 | "proc-macro2", 2091 | "quote", 2092 | "version_check", 2093 | ] 2094 | 2095 | [[package]] 2096 | name = "proc-macro-hack" 2097 | version = "0.5.20+deprecated" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 2100 | 2101 | [[package]] 2102 | name = "proc-macro2" 2103 | version = "1.0.58" 2104 | source = "registry+https://github.com/rust-lang/crates.io-index" 2105 | checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" 2106 | dependencies = [ 2107 | "unicode-ident", 2108 | ] 2109 | 2110 | [[package]] 2111 | name = "quick-xml" 2112 | version = "0.28.2" 2113 | source = "registry+https://github.com/rust-lang/crates.io-index" 2114 | checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" 2115 | dependencies = [ 2116 | "memchr", 2117 | ] 2118 | 2119 | [[package]] 2120 | name = "quote" 2121 | version = "1.0.27" 2122 | source = "registry+https://github.com/rust-lang/crates.io-index" 2123 | checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" 2124 | dependencies = [ 2125 | "proc-macro2", 2126 | ] 2127 | 2128 | [[package]] 2129 | name = "rand" 2130 | version = "0.7.3" 2131 | source = "registry+https://github.com/rust-lang/crates.io-index" 2132 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 2133 | dependencies = [ 2134 | "getrandom 0.1.16", 2135 | "libc", 2136 | "rand_chacha 0.2.2", 2137 | "rand_core 0.5.1", 2138 | "rand_hc", 2139 | "rand_pcg", 2140 | ] 2141 | 2142 | [[package]] 2143 | name = "rand" 2144 | version = "0.8.5" 2145 | source = "registry+https://github.com/rust-lang/crates.io-index" 2146 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2147 | dependencies = [ 2148 | "libc", 2149 | "rand_chacha 0.3.1", 2150 | "rand_core 0.6.4", 2151 | ] 2152 | 2153 | [[package]] 2154 | name = "rand_chacha" 2155 | version = "0.2.2" 2156 | source = "registry+https://github.com/rust-lang/crates.io-index" 2157 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 2158 | dependencies = [ 2159 | "ppv-lite86", 2160 | "rand_core 0.5.1", 2161 | ] 2162 | 2163 | [[package]] 2164 | name = "rand_chacha" 2165 | version = "0.3.1" 2166 | source = "registry+https://github.com/rust-lang/crates.io-index" 2167 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2168 | dependencies = [ 2169 | "ppv-lite86", 2170 | "rand_core 0.6.4", 2171 | ] 2172 | 2173 | [[package]] 2174 | name = "rand_core" 2175 | version = "0.5.1" 2176 | source = "registry+https://github.com/rust-lang/crates.io-index" 2177 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2178 | dependencies = [ 2179 | "getrandom 0.1.16", 2180 | ] 2181 | 2182 | [[package]] 2183 | name = "rand_core" 2184 | version = "0.6.4" 2185 | source = "registry+https://github.com/rust-lang/crates.io-index" 2186 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2187 | dependencies = [ 2188 | "getrandom 0.2.9", 2189 | ] 2190 | 2191 | [[package]] 2192 | name = "rand_hc" 2193 | version = "0.2.0" 2194 | source = "registry+https://github.com/rust-lang/crates.io-index" 2195 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2196 | dependencies = [ 2197 | "rand_core 0.5.1", 2198 | ] 2199 | 2200 | [[package]] 2201 | name = "rand_pcg" 2202 | version = "0.2.1" 2203 | source = "registry+https://github.com/rust-lang/crates.io-index" 2204 | checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 2205 | dependencies = [ 2206 | "rand_core 0.5.1", 2207 | ] 2208 | 2209 | [[package]] 2210 | name = "raw-window-handle" 2211 | version = "0.5.0" 2212 | source = "registry+https://github.com/rust-lang/crates.io-index" 2213 | checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" 2214 | dependencies = [ 2215 | "cty", 2216 | ] 2217 | 2218 | [[package]] 2219 | name = "redox_syscall" 2220 | version = "0.2.16" 2221 | source = "registry+https://github.com/rust-lang/crates.io-index" 2222 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 2223 | dependencies = [ 2224 | "bitflags", 2225 | ] 2226 | 2227 | [[package]] 2228 | name = "redox_syscall" 2229 | version = "0.3.5" 2230 | source = "registry+https://github.com/rust-lang/crates.io-index" 2231 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 2232 | dependencies = [ 2233 | "bitflags", 2234 | ] 2235 | 2236 | [[package]] 2237 | name = "redox_users" 2238 | version = "0.4.3" 2239 | source = "registry+https://github.com/rust-lang/crates.io-index" 2240 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 2241 | dependencies = [ 2242 | "getrandom 0.2.9", 2243 | "redox_syscall 0.2.16", 2244 | "thiserror", 2245 | ] 2246 | 2247 | [[package]] 2248 | name = "regex" 2249 | version = "1.8.1" 2250 | source = "registry+https://github.com/rust-lang/crates.io-index" 2251 | checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" 2252 | dependencies = [ 2253 | "aho-corasick 1.0.1", 2254 | "memchr", 2255 | "regex-syntax 0.7.1", 2256 | ] 2257 | 2258 | [[package]] 2259 | name = "regex-automata" 2260 | version = "0.1.10" 2261 | source = "registry+https://github.com/rust-lang/crates.io-index" 2262 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 2263 | dependencies = [ 2264 | "regex-syntax 0.6.29", 2265 | ] 2266 | 2267 | [[package]] 2268 | name = "regex-syntax" 2269 | version = "0.6.29" 2270 | source = "registry+https://github.com/rust-lang/crates.io-index" 2271 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 2272 | 2273 | [[package]] 2274 | name = "regex-syntax" 2275 | version = "0.7.1" 2276 | source = "registry+https://github.com/rust-lang/crates.io-index" 2277 | checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" 2278 | 2279 | [[package]] 2280 | name = "rfd" 2281 | version = "0.10.0" 2282 | source = "registry+https://github.com/rust-lang/crates.io-index" 2283 | checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" 2284 | dependencies = [ 2285 | "block", 2286 | "dispatch", 2287 | "glib-sys", 2288 | "gobject-sys", 2289 | "gtk-sys", 2290 | "js-sys", 2291 | "lazy_static", 2292 | "log", 2293 | "objc", 2294 | "objc-foundation", 2295 | "objc_id", 2296 | "raw-window-handle", 2297 | "wasm-bindgen", 2298 | "wasm-bindgen-futures", 2299 | "web-sys", 2300 | "windows 0.37.0", 2301 | ] 2302 | 2303 | [[package]] 2304 | name = "rustc_version" 2305 | version = "0.4.0" 2306 | source = "registry+https://github.com/rust-lang/crates.io-index" 2307 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 2308 | dependencies = [ 2309 | "semver", 2310 | ] 2311 | 2312 | [[package]] 2313 | name = "rustix" 2314 | version = "0.37.19" 2315 | source = "registry+https://github.com/rust-lang/crates.io-index" 2316 | checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" 2317 | dependencies = [ 2318 | "bitflags", 2319 | "errno", 2320 | "io-lifetimes", 2321 | "libc", 2322 | "linux-raw-sys", 2323 | "windows-sys 0.48.0", 2324 | ] 2325 | 2326 | [[package]] 2327 | name = "rustversion" 2328 | version = "1.0.12" 2329 | source = "registry+https://github.com/rust-lang/crates.io-index" 2330 | checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" 2331 | 2332 | [[package]] 2333 | name = "ryu" 2334 | version = "1.0.13" 2335 | source = "registry+https://github.com/rust-lang/crates.io-index" 2336 | checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" 2337 | 2338 | [[package]] 2339 | name = "safemem" 2340 | version = "0.3.3" 2341 | source = "registry+https://github.com/rust-lang/crates.io-index" 2342 | checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" 2343 | 2344 | [[package]] 2345 | name = "same-file" 2346 | version = "1.0.6" 2347 | source = "registry+https://github.com/rust-lang/crates.io-index" 2348 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2349 | dependencies = [ 2350 | "winapi-util", 2351 | ] 2352 | 2353 | [[package]] 2354 | name = "scoped-tls" 2355 | version = "1.0.1" 2356 | source = "registry+https://github.com/rust-lang/crates.io-index" 2357 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2358 | 2359 | [[package]] 2360 | name = "scopeguard" 2361 | version = "1.1.0" 2362 | source = "registry+https://github.com/rust-lang/crates.io-index" 2363 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 2364 | 2365 | [[package]] 2366 | name = "selectors" 2367 | version = "0.22.0" 2368 | source = "registry+https://github.com/rust-lang/crates.io-index" 2369 | checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" 2370 | dependencies = [ 2371 | "bitflags", 2372 | "cssparser", 2373 | "derive_more", 2374 | "fxhash", 2375 | "log", 2376 | "matches", 2377 | "phf 0.8.0", 2378 | "phf_codegen 0.8.0", 2379 | "precomputed-hash", 2380 | "servo_arc", 2381 | "smallvec", 2382 | "thin-slice", 2383 | ] 2384 | 2385 | [[package]] 2386 | name = "semver" 2387 | version = "1.0.17" 2388 | source = "registry+https://github.com/rust-lang/crates.io-index" 2389 | checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" 2390 | dependencies = [ 2391 | "serde", 2392 | ] 2393 | 2394 | [[package]] 2395 | name = "serde" 2396 | version = "1.0.163" 2397 | source = "registry+https://github.com/rust-lang/crates.io-index" 2398 | checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" 2399 | dependencies = [ 2400 | "serde_derive", 2401 | ] 2402 | 2403 | [[package]] 2404 | name = "serde_derive" 2405 | version = "1.0.163" 2406 | source = "registry+https://github.com/rust-lang/crates.io-index" 2407 | checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" 2408 | dependencies = [ 2409 | "proc-macro2", 2410 | "quote", 2411 | "syn 2.0.16", 2412 | ] 2413 | 2414 | [[package]] 2415 | name = "serde_json" 2416 | version = "1.0.96" 2417 | source = "registry+https://github.com/rust-lang/crates.io-index" 2418 | checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" 2419 | dependencies = [ 2420 | "itoa 1.0.6", 2421 | "ryu", 2422 | "serde", 2423 | ] 2424 | 2425 | [[package]] 2426 | name = "serde_repr" 2427 | version = "0.1.12" 2428 | source = "registry+https://github.com/rust-lang/crates.io-index" 2429 | checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" 2430 | dependencies = [ 2431 | "proc-macro2", 2432 | "quote", 2433 | "syn 2.0.16", 2434 | ] 2435 | 2436 | [[package]] 2437 | name = "serde_spanned" 2438 | version = "0.6.2" 2439 | source = "registry+https://github.com/rust-lang/crates.io-index" 2440 | checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" 2441 | dependencies = [ 2442 | "serde", 2443 | ] 2444 | 2445 | [[package]] 2446 | name = "serde_with" 2447 | version = "3.3.0" 2448 | source = "registry+https://github.com/rust-lang/crates.io-index" 2449 | checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" 2450 | dependencies = [ 2451 | "base64 0.21.0", 2452 | "chrono", 2453 | "hex", 2454 | "indexmap 1.9.3", 2455 | "indexmap 2.0.2", 2456 | "serde", 2457 | "serde_json", 2458 | "serde_with_macros", 2459 | "time", 2460 | ] 2461 | 2462 | [[package]] 2463 | name = "serde_with_macros" 2464 | version = "3.3.0" 2465 | source = "registry+https://github.com/rust-lang/crates.io-index" 2466 | checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" 2467 | dependencies = [ 2468 | "darling", 2469 | "proc-macro2", 2470 | "quote", 2471 | "syn 2.0.16", 2472 | ] 2473 | 2474 | [[package]] 2475 | name = "serialize-to-javascript" 2476 | version = "0.1.1" 2477 | source = "registry+https://github.com/rust-lang/crates.io-index" 2478 | checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" 2479 | dependencies = [ 2480 | "serde", 2481 | "serde_json", 2482 | "serialize-to-javascript-impl", 2483 | ] 2484 | 2485 | [[package]] 2486 | name = "serialize-to-javascript-impl" 2487 | version = "0.1.1" 2488 | source = "registry+https://github.com/rust-lang/crates.io-index" 2489 | checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" 2490 | dependencies = [ 2491 | "proc-macro2", 2492 | "quote", 2493 | "syn 1.0.109", 2494 | ] 2495 | 2496 | [[package]] 2497 | name = "servo_arc" 2498 | version = "0.1.1" 2499 | source = "registry+https://github.com/rust-lang/crates.io-index" 2500 | checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" 2501 | dependencies = [ 2502 | "nodrop", 2503 | "stable_deref_trait", 2504 | ] 2505 | 2506 | [[package]] 2507 | name = "sha1" 2508 | version = "0.10.5" 2509 | source = "registry+https://github.com/rust-lang/crates.io-index" 2510 | checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" 2511 | dependencies = [ 2512 | "cfg-if", 2513 | "cpufeatures", 2514 | "digest", 2515 | ] 2516 | 2517 | [[package]] 2518 | name = "sha2" 2519 | version = "0.10.6" 2520 | source = "registry+https://github.com/rust-lang/crates.io-index" 2521 | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" 2522 | dependencies = [ 2523 | "cfg-if", 2524 | "cpufeatures", 2525 | "digest", 2526 | ] 2527 | 2528 | [[package]] 2529 | name = "sharded-slab" 2530 | version = "0.1.4" 2531 | source = "registry+https://github.com/rust-lang/crates.io-index" 2532 | checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" 2533 | dependencies = [ 2534 | "lazy_static", 2535 | ] 2536 | 2537 | [[package]] 2538 | name = "simd-adler32" 2539 | version = "0.3.5" 2540 | source = "registry+https://github.com/rust-lang/crates.io-index" 2541 | checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" 2542 | 2543 | [[package]] 2544 | name = "siphasher" 2545 | version = "0.3.10" 2546 | source = "registry+https://github.com/rust-lang/crates.io-index" 2547 | checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" 2548 | 2549 | [[package]] 2550 | name = "slab" 2551 | version = "0.4.8" 2552 | source = "registry+https://github.com/rust-lang/crates.io-index" 2553 | checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" 2554 | dependencies = [ 2555 | "autocfg", 2556 | ] 2557 | 2558 | [[package]] 2559 | name = "smallvec" 2560 | version = "1.10.0" 2561 | source = "registry+https://github.com/rust-lang/crates.io-index" 2562 | checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 2563 | 2564 | [[package]] 2565 | name = "soup2" 2566 | version = "0.2.1" 2567 | source = "registry+https://github.com/rust-lang/crates.io-index" 2568 | checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" 2569 | dependencies = [ 2570 | "bitflags", 2571 | "gio", 2572 | "glib", 2573 | "libc", 2574 | "once_cell", 2575 | "soup2-sys", 2576 | ] 2577 | 2578 | [[package]] 2579 | name = "soup2-sys" 2580 | version = "0.2.0" 2581 | source = "registry+https://github.com/rust-lang/crates.io-index" 2582 | checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" 2583 | dependencies = [ 2584 | "bitflags", 2585 | "gio-sys", 2586 | "glib-sys", 2587 | "gobject-sys", 2588 | "libc", 2589 | "system-deps 5.0.0", 2590 | ] 2591 | 2592 | [[package]] 2593 | name = "stable_deref_trait" 2594 | version = "1.2.0" 2595 | source = "registry+https://github.com/rust-lang/crates.io-index" 2596 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2597 | 2598 | [[package]] 2599 | name = "state" 2600 | version = "0.5.3" 2601 | source = "registry+https://github.com/rust-lang/crates.io-index" 2602 | checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" 2603 | dependencies = [ 2604 | "loom", 2605 | ] 2606 | 2607 | [[package]] 2608 | name = "string_cache" 2609 | version = "0.8.7" 2610 | source = "registry+https://github.com/rust-lang/crates.io-index" 2611 | checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" 2612 | dependencies = [ 2613 | "new_debug_unreachable", 2614 | "once_cell", 2615 | "parking_lot", 2616 | "phf_shared 0.10.0", 2617 | "precomputed-hash", 2618 | "serde", 2619 | ] 2620 | 2621 | [[package]] 2622 | name = "string_cache_codegen" 2623 | version = "0.5.2" 2624 | source = "registry+https://github.com/rust-lang/crates.io-index" 2625 | checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" 2626 | dependencies = [ 2627 | "phf_generator 0.10.0", 2628 | "phf_shared 0.10.0", 2629 | "proc-macro2", 2630 | "quote", 2631 | ] 2632 | 2633 | [[package]] 2634 | name = "strsim" 2635 | version = "0.10.0" 2636 | source = "registry+https://github.com/rust-lang/crates.io-index" 2637 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 2638 | 2639 | [[package]] 2640 | name = "subtle" 2641 | version = "2.4.1" 2642 | source = "registry+https://github.com/rust-lang/crates.io-index" 2643 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 2644 | 2645 | [[package]] 2646 | name = "syn" 2647 | version = "1.0.109" 2648 | source = "registry+https://github.com/rust-lang/crates.io-index" 2649 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 2650 | dependencies = [ 2651 | "proc-macro2", 2652 | "quote", 2653 | "unicode-ident", 2654 | ] 2655 | 2656 | [[package]] 2657 | name = "syn" 2658 | version = "2.0.16" 2659 | source = "registry+https://github.com/rust-lang/crates.io-index" 2660 | checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" 2661 | dependencies = [ 2662 | "proc-macro2", 2663 | "quote", 2664 | "unicode-ident", 2665 | ] 2666 | 2667 | [[package]] 2668 | name = "system-deps" 2669 | version = "5.0.0" 2670 | source = "registry+https://github.com/rust-lang/crates.io-index" 2671 | checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" 2672 | dependencies = [ 2673 | "cfg-expr 0.9.1", 2674 | "heck 0.3.3", 2675 | "pkg-config", 2676 | "toml 0.5.11", 2677 | "version-compare 0.0.11", 2678 | ] 2679 | 2680 | [[package]] 2681 | name = "system-deps" 2682 | version = "6.1.0" 2683 | source = "registry+https://github.com/rust-lang/crates.io-index" 2684 | checksum = "e5fa6fb9ee296c0dc2df41a656ca7948546d061958115ddb0bcaae43ad0d17d2" 2685 | dependencies = [ 2686 | "cfg-expr 0.15.1", 2687 | "heck 0.4.1", 2688 | "pkg-config", 2689 | "toml 0.7.3", 2690 | "version-compare 0.1.1", 2691 | ] 2692 | 2693 | [[package]] 2694 | name = "tao" 2695 | version = "0.16.1" 2696 | source = "registry+https://github.com/rust-lang/crates.io-index" 2697 | checksum = "dd3cde9c0cd2b872616bba26b818e0d6469330196869d7e5000dba96ce9431df" 2698 | dependencies = [ 2699 | "bitflags", 2700 | "cairo-rs", 2701 | "cc", 2702 | "cocoa", 2703 | "core-foundation", 2704 | "core-graphics", 2705 | "crossbeam-channel", 2706 | "dispatch", 2707 | "gdk", 2708 | "gdk-pixbuf", 2709 | "gdk-sys", 2710 | "gdkwayland-sys", 2711 | "gdkx11-sys", 2712 | "gio", 2713 | "glib", 2714 | "glib-sys", 2715 | "gtk", 2716 | "image", 2717 | "instant", 2718 | "jni", 2719 | "lazy_static", 2720 | "libc", 2721 | "log", 2722 | "ndk", 2723 | "ndk-context", 2724 | "ndk-sys", 2725 | "objc", 2726 | "once_cell", 2727 | "parking_lot", 2728 | "png", 2729 | "raw-window-handle", 2730 | "scopeguard", 2731 | "serde", 2732 | "tao-macros", 2733 | "unicode-segmentation", 2734 | "uuid", 2735 | "windows 0.39.0", 2736 | "windows-implement", 2737 | "x11-dl", 2738 | ] 2739 | 2740 | [[package]] 2741 | name = "tao-macros" 2742 | version = "0.1.1" 2743 | source = "registry+https://github.com/rust-lang/crates.io-index" 2744 | checksum = "3b27a4bcc5eb524658234589bdffc7e7bfb996dbae6ce9393bfd39cb4159b445" 2745 | dependencies = [ 2746 | "proc-macro2", 2747 | "quote", 2748 | "syn 1.0.109", 2749 | ] 2750 | 2751 | [[package]] 2752 | name = "tar" 2753 | version = "0.4.38" 2754 | source = "registry+https://github.com/rust-lang/crates.io-index" 2755 | checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" 2756 | dependencies = [ 2757 | "filetime", 2758 | "libc", 2759 | "xattr", 2760 | ] 2761 | 2762 | [[package]] 2763 | name = "target-lexicon" 2764 | version = "0.12.7" 2765 | source = "registry+https://github.com/rust-lang/crates.io-index" 2766 | checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" 2767 | 2768 | [[package]] 2769 | name = "tauri" 2770 | version = "1.5.0" 2771 | source = "registry+https://github.com/rust-lang/crates.io-index" 2772 | checksum = "72aee3277d0a0df01472cc704ab5934a51a1f25348838df17bfb3c5cb727880c" 2773 | dependencies = [ 2774 | "anyhow", 2775 | "cocoa", 2776 | "dirs-next", 2777 | "embed_plist", 2778 | "encoding_rs", 2779 | "flate2", 2780 | "futures-util", 2781 | "glib", 2782 | "glob", 2783 | "gtk", 2784 | "heck 0.4.1", 2785 | "http", 2786 | "ignore", 2787 | "objc", 2788 | "once_cell", 2789 | "open", 2790 | "percent-encoding", 2791 | "rand 0.8.5", 2792 | "raw-window-handle", 2793 | "regex", 2794 | "rfd", 2795 | "semver", 2796 | "serde", 2797 | "serde_json", 2798 | "serde_repr", 2799 | "serialize-to-javascript", 2800 | "state", 2801 | "tar", 2802 | "tauri-macros", 2803 | "tauri-runtime", 2804 | "tauri-runtime-wry", 2805 | "tauri-utils", 2806 | "tempfile", 2807 | "thiserror", 2808 | "tokio", 2809 | "url", 2810 | "uuid", 2811 | "webkit2gtk", 2812 | "webview2-com", 2813 | "windows 0.39.0", 2814 | ] 2815 | 2816 | [[package]] 2817 | name = "tauri-build" 2818 | version = "1.5.0" 2819 | source = "registry+https://github.com/rust-lang/crates.io-index" 2820 | checksum = "defbfc551bd38ab997e5f8e458f87396d2559d05ce32095076ad6c30f7fc5f9c" 2821 | dependencies = [ 2822 | "anyhow", 2823 | "cargo_toml", 2824 | "dirs-next", 2825 | "heck 0.4.1", 2826 | "json-patch", 2827 | "semver", 2828 | "serde", 2829 | "serde_json", 2830 | "tauri-utils", 2831 | "tauri-winres", 2832 | "walkdir", 2833 | ] 2834 | 2835 | [[package]] 2836 | name = "tauri-codegen" 2837 | version = "1.4.1" 2838 | source = "registry+https://github.com/rust-lang/crates.io-index" 2839 | checksum = "7b3475e55acec0b4a50fb96435f19631fb58cbcd31923e1a213de5c382536bbb" 2840 | dependencies = [ 2841 | "base64 0.21.0", 2842 | "brotli", 2843 | "ico", 2844 | "json-patch", 2845 | "plist", 2846 | "png", 2847 | "proc-macro2", 2848 | "quote", 2849 | "regex", 2850 | "semver", 2851 | "serde", 2852 | "serde_json", 2853 | "sha2", 2854 | "tauri-utils", 2855 | "thiserror", 2856 | "time", 2857 | "uuid", 2858 | "walkdir", 2859 | ] 2860 | 2861 | [[package]] 2862 | name = "tauri-macros" 2863 | version = "1.4.1" 2864 | source = "registry+https://github.com/rust-lang/crates.io-index" 2865 | checksum = "613740228de92d9196b795ac455091d3a5fbdac2654abb8bb07d010b62ab43af" 2866 | dependencies = [ 2867 | "heck 0.4.1", 2868 | "proc-macro2", 2869 | "quote", 2870 | "syn 1.0.109", 2871 | "tauri-codegen", 2872 | "tauri-utils", 2873 | ] 2874 | 2875 | [[package]] 2876 | name = "tauri-runtime" 2877 | version = "0.14.1" 2878 | source = "registry+https://github.com/rust-lang/crates.io-index" 2879 | checksum = "07f8e9e53e00e9f41212c115749e87d5cd2a9eebccafca77a19722eeecd56d43" 2880 | dependencies = [ 2881 | "gtk", 2882 | "http", 2883 | "http-range", 2884 | "rand 0.8.5", 2885 | "raw-window-handle", 2886 | "serde", 2887 | "serde_json", 2888 | "tauri-utils", 2889 | "thiserror", 2890 | "url", 2891 | "uuid", 2892 | "webview2-com", 2893 | "windows 0.39.0", 2894 | ] 2895 | 2896 | [[package]] 2897 | name = "tauri-runtime-wry" 2898 | version = "0.14.1" 2899 | source = "registry+https://github.com/rust-lang/crates.io-index" 2900 | checksum = "8141d72b6b65f2008911e9ef5b98a68d1e3413b7a1464e8f85eb3673bb19a895" 2901 | dependencies = [ 2902 | "cocoa", 2903 | "gtk", 2904 | "percent-encoding", 2905 | "rand 0.8.5", 2906 | "raw-window-handle", 2907 | "tauri-runtime", 2908 | "tauri-utils", 2909 | "uuid", 2910 | "webkit2gtk", 2911 | "webview2-com", 2912 | "windows 0.39.0", 2913 | "wry", 2914 | ] 2915 | 2916 | [[package]] 2917 | name = "tauri-utils" 2918 | version = "1.5.0" 2919 | source = "registry+https://github.com/rust-lang/crates.io-index" 2920 | checksum = "34d55e185904a84a419308d523c2c6891d5e2dbcee740c4997eb42e75a7b0f46" 2921 | dependencies = [ 2922 | "brotli", 2923 | "ctor", 2924 | "dunce", 2925 | "glob", 2926 | "heck 0.4.1", 2927 | "html5ever 0.26.0", 2928 | "infer", 2929 | "json-patch", 2930 | "kuchikiki", 2931 | "log", 2932 | "memchr", 2933 | "phf 0.10.1", 2934 | "proc-macro2", 2935 | "quote", 2936 | "semver", 2937 | "serde", 2938 | "serde_json", 2939 | "serde_with", 2940 | "thiserror", 2941 | "url", 2942 | "walkdir", 2943 | "windows 0.39.0", 2944 | ] 2945 | 2946 | [[package]] 2947 | name = "tauri-winres" 2948 | version = "0.1.1" 2949 | source = "registry+https://github.com/rust-lang/crates.io-index" 2950 | checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" 2951 | dependencies = [ 2952 | "embed-resource", 2953 | "toml 0.7.3", 2954 | ] 2955 | 2956 | [[package]] 2957 | name = "tempfile" 2958 | version = "3.5.0" 2959 | source = "registry+https://github.com/rust-lang/crates.io-index" 2960 | checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" 2961 | dependencies = [ 2962 | "cfg-if", 2963 | "fastrand", 2964 | "redox_syscall 0.3.5", 2965 | "rustix", 2966 | "windows-sys 0.45.0", 2967 | ] 2968 | 2969 | [[package]] 2970 | name = "tendril" 2971 | version = "0.4.3" 2972 | source = "registry+https://github.com/rust-lang/crates.io-index" 2973 | checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 2974 | dependencies = [ 2975 | "futf", 2976 | "mac", 2977 | "utf-8", 2978 | ] 2979 | 2980 | [[package]] 2981 | name = "thin-slice" 2982 | version = "0.1.1" 2983 | source = "registry+https://github.com/rust-lang/crates.io-index" 2984 | checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" 2985 | 2986 | [[package]] 2987 | name = "thiserror" 2988 | version = "1.0.40" 2989 | source = "registry+https://github.com/rust-lang/crates.io-index" 2990 | checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" 2991 | dependencies = [ 2992 | "thiserror-impl", 2993 | ] 2994 | 2995 | [[package]] 2996 | name = "thiserror-impl" 2997 | version = "1.0.40" 2998 | source = "registry+https://github.com/rust-lang/crates.io-index" 2999 | checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" 3000 | dependencies = [ 3001 | "proc-macro2", 3002 | "quote", 3003 | "syn 2.0.16", 3004 | ] 3005 | 3006 | [[package]] 3007 | name = "thread_local" 3008 | version = "1.1.7" 3009 | source = "registry+https://github.com/rust-lang/crates.io-index" 3010 | checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" 3011 | dependencies = [ 3012 | "cfg-if", 3013 | "once_cell", 3014 | ] 3015 | 3016 | [[package]] 3017 | name = "time" 3018 | version = "0.3.15" 3019 | source = "registry+https://github.com/rust-lang/crates.io-index" 3020 | checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" 3021 | dependencies = [ 3022 | "itoa 1.0.6", 3023 | "libc", 3024 | "num_threads", 3025 | "serde", 3026 | ] 3027 | 3028 | [[package]] 3029 | name = "tinyvec" 3030 | version = "1.6.0" 3031 | source = "registry+https://github.com/rust-lang/crates.io-index" 3032 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 3033 | dependencies = [ 3034 | "tinyvec_macros", 3035 | ] 3036 | 3037 | [[package]] 3038 | name = "tinyvec_macros" 3039 | version = "0.1.1" 3040 | source = "registry+https://github.com/rust-lang/crates.io-index" 3041 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3042 | 3043 | [[package]] 3044 | name = "tokio" 3045 | version = "1.28.1" 3046 | source = "registry+https://github.com/rust-lang/crates.io-index" 3047 | checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" 3048 | dependencies = [ 3049 | "autocfg", 3050 | "bytes", 3051 | "num_cpus", 3052 | "pin-project-lite", 3053 | "windows-sys 0.48.0", 3054 | ] 3055 | 3056 | [[package]] 3057 | name = "toml" 3058 | version = "0.5.11" 3059 | source = "registry+https://github.com/rust-lang/crates.io-index" 3060 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 3061 | dependencies = [ 3062 | "serde", 3063 | ] 3064 | 3065 | [[package]] 3066 | name = "toml" 3067 | version = "0.7.3" 3068 | source = "registry+https://github.com/rust-lang/crates.io-index" 3069 | checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" 3070 | dependencies = [ 3071 | "serde", 3072 | "serde_spanned", 3073 | "toml_datetime", 3074 | "toml_edit", 3075 | ] 3076 | 3077 | [[package]] 3078 | name = "toml_datetime" 3079 | version = "0.6.2" 3080 | source = "registry+https://github.com/rust-lang/crates.io-index" 3081 | checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" 3082 | dependencies = [ 3083 | "serde", 3084 | ] 3085 | 3086 | [[package]] 3087 | name = "toml_edit" 3088 | version = "0.19.8" 3089 | source = "registry+https://github.com/rust-lang/crates.io-index" 3090 | checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" 3091 | dependencies = [ 3092 | "indexmap 1.9.3", 3093 | "serde", 3094 | "serde_spanned", 3095 | "toml_datetime", 3096 | "winnow", 3097 | ] 3098 | 3099 | [[package]] 3100 | name = "tracing" 3101 | version = "0.1.37" 3102 | source = "registry+https://github.com/rust-lang/crates.io-index" 3103 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 3104 | dependencies = [ 3105 | "cfg-if", 3106 | "pin-project-lite", 3107 | "tracing-attributes", 3108 | "tracing-core", 3109 | ] 3110 | 3111 | [[package]] 3112 | name = "tracing-attributes" 3113 | version = "0.1.24" 3114 | source = "registry+https://github.com/rust-lang/crates.io-index" 3115 | checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" 3116 | dependencies = [ 3117 | "proc-macro2", 3118 | "quote", 3119 | "syn 2.0.16", 3120 | ] 3121 | 3122 | [[package]] 3123 | name = "tracing-core" 3124 | version = "0.1.31" 3125 | source = "registry+https://github.com/rust-lang/crates.io-index" 3126 | checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" 3127 | dependencies = [ 3128 | "once_cell", 3129 | "valuable", 3130 | ] 3131 | 3132 | [[package]] 3133 | name = "tracing-log" 3134 | version = "0.1.3" 3135 | source = "registry+https://github.com/rust-lang/crates.io-index" 3136 | checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" 3137 | dependencies = [ 3138 | "lazy_static", 3139 | "log", 3140 | "tracing-core", 3141 | ] 3142 | 3143 | [[package]] 3144 | name = "tracing-subscriber" 3145 | version = "0.3.17" 3146 | source = "registry+https://github.com/rust-lang/crates.io-index" 3147 | checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" 3148 | dependencies = [ 3149 | "matchers", 3150 | "nu-ansi-term", 3151 | "once_cell", 3152 | "regex", 3153 | "sharded-slab", 3154 | "smallvec", 3155 | "thread_local", 3156 | "tracing", 3157 | "tracing-core", 3158 | "tracing-log", 3159 | ] 3160 | 3161 | [[package]] 3162 | name = "treediff" 3163 | version = "4.0.2" 3164 | source = "registry+https://github.com/rust-lang/crates.io-index" 3165 | checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" 3166 | dependencies = [ 3167 | "serde_json", 3168 | ] 3169 | 3170 | [[package]] 3171 | name = "typenum" 3172 | version = "1.16.0" 3173 | source = "registry+https://github.com/rust-lang/crates.io-index" 3174 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 3175 | 3176 | [[package]] 3177 | name = "unicode-bidi" 3178 | version = "0.3.13" 3179 | source = "registry+https://github.com/rust-lang/crates.io-index" 3180 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 3181 | 3182 | [[package]] 3183 | name = "unicode-ident" 3184 | version = "1.0.8" 3185 | source = "registry+https://github.com/rust-lang/crates.io-index" 3186 | checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" 3187 | 3188 | [[package]] 3189 | name = "unicode-normalization" 3190 | version = "0.1.22" 3191 | source = "registry+https://github.com/rust-lang/crates.io-index" 3192 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 3193 | dependencies = [ 3194 | "tinyvec", 3195 | ] 3196 | 3197 | [[package]] 3198 | name = "unicode-segmentation" 3199 | version = "1.10.1" 3200 | source = "registry+https://github.com/rust-lang/crates.io-index" 3201 | checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" 3202 | 3203 | [[package]] 3204 | name = "url" 3205 | version = "2.3.1" 3206 | source = "registry+https://github.com/rust-lang/crates.io-index" 3207 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 3208 | dependencies = [ 3209 | "form_urlencoded", 3210 | "idna", 3211 | "percent-encoding", 3212 | "serde", 3213 | ] 3214 | 3215 | [[package]] 3216 | name = "utf-8" 3217 | version = "0.7.6" 3218 | source = "registry+https://github.com/rust-lang/crates.io-index" 3219 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 3220 | 3221 | [[package]] 3222 | name = "uuid" 3223 | version = "1.3.3" 3224 | source = "registry+https://github.com/rust-lang/crates.io-index" 3225 | checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" 3226 | dependencies = [ 3227 | "getrandom 0.2.9", 3228 | ] 3229 | 3230 | [[package]] 3231 | name = "valuable" 3232 | version = "0.1.0" 3233 | source = "registry+https://github.com/rust-lang/crates.io-index" 3234 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 3235 | 3236 | [[package]] 3237 | name = "version-compare" 3238 | version = "0.0.11" 3239 | source = "registry+https://github.com/rust-lang/crates.io-index" 3240 | checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" 3241 | 3242 | [[package]] 3243 | name = "version-compare" 3244 | version = "0.1.1" 3245 | source = "registry+https://github.com/rust-lang/crates.io-index" 3246 | checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" 3247 | 3248 | [[package]] 3249 | name = "version_check" 3250 | version = "0.9.4" 3251 | source = "registry+https://github.com/rust-lang/crates.io-index" 3252 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 3253 | 3254 | [[package]] 3255 | name = "vswhom" 3256 | version = "0.1.0" 3257 | source = "registry+https://github.com/rust-lang/crates.io-index" 3258 | checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" 3259 | dependencies = [ 3260 | "libc", 3261 | "vswhom-sys", 3262 | ] 3263 | 3264 | [[package]] 3265 | name = "vswhom-sys" 3266 | version = "0.1.2" 3267 | source = "registry+https://github.com/rust-lang/crates.io-index" 3268 | checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" 3269 | dependencies = [ 3270 | "cc", 3271 | "libc", 3272 | ] 3273 | 3274 | [[package]] 3275 | name = "walkdir" 3276 | version = "2.3.3" 3277 | source = "registry+https://github.com/rust-lang/crates.io-index" 3278 | checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" 3279 | dependencies = [ 3280 | "same-file", 3281 | "winapi-util", 3282 | ] 3283 | 3284 | [[package]] 3285 | name = "wasi" 3286 | version = "0.9.0+wasi-snapshot-preview1" 3287 | source = "registry+https://github.com/rust-lang/crates.io-index" 3288 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 3289 | 3290 | [[package]] 3291 | name = "wasi" 3292 | version = "0.11.0+wasi-snapshot-preview1" 3293 | source = "registry+https://github.com/rust-lang/crates.io-index" 3294 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3295 | 3296 | [[package]] 3297 | name = "wasm-bindgen" 3298 | version = "0.2.86" 3299 | source = "registry+https://github.com/rust-lang/crates.io-index" 3300 | checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" 3301 | dependencies = [ 3302 | "cfg-if", 3303 | "wasm-bindgen-macro", 3304 | ] 3305 | 3306 | [[package]] 3307 | name = "wasm-bindgen-backend" 3308 | version = "0.2.86" 3309 | source = "registry+https://github.com/rust-lang/crates.io-index" 3310 | checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" 3311 | dependencies = [ 3312 | "bumpalo", 3313 | "log", 3314 | "once_cell", 3315 | "proc-macro2", 3316 | "quote", 3317 | "syn 2.0.16", 3318 | "wasm-bindgen-shared", 3319 | ] 3320 | 3321 | [[package]] 3322 | name = "wasm-bindgen-futures" 3323 | version = "0.4.36" 3324 | source = "registry+https://github.com/rust-lang/crates.io-index" 3325 | checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" 3326 | dependencies = [ 3327 | "cfg-if", 3328 | "js-sys", 3329 | "wasm-bindgen", 3330 | "web-sys", 3331 | ] 3332 | 3333 | [[package]] 3334 | name = "wasm-bindgen-macro" 3335 | version = "0.2.86" 3336 | source = "registry+https://github.com/rust-lang/crates.io-index" 3337 | checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" 3338 | dependencies = [ 3339 | "quote", 3340 | "wasm-bindgen-macro-support", 3341 | ] 3342 | 3343 | [[package]] 3344 | name = "wasm-bindgen-macro-support" 3345 | version = "0.2.86" 3346 | source = "registry+https://github.com/rust-lang/crates.io-index" 3347 | checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" 3348 | dependencies = [ 3349 | "proc-macro2", 3350 | "quote", 3351 | "syn 2.0.16", 3352 | "wasm-bindgen-backend", 3353 | "wasm-bindgen-shared", 3354 | ] 3355 | 3356 | [[package]] 3357 | name = "wasm-bindgen-shared" 3358 | version = "0.2.86" 3359 | source = "registry+https://github.com/rust-lang/crates.io-index" 3360 | checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" 3361 | 3362 | [[package]] 3363 | name = "web-sys" 3364 | version = "0.3.63" 3365 | source = "registry+https://github.com/rust-lang/crates.io-index" 3366 | checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" 3367 | dependencies = [ 3368 | "js-sys", 3369 | "wasm-bindgen", 3370 | ] 3371 | 3372 | [[package]] 3373 | name = "webkit2gtk" 3374 | version = "0.18.2" 3375 | source = "registry+https://github.com/rust-lang/crates.io-index" 3376 | checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" 3377 | dependencies = [ 3378 | "bitflags", 3379 | "cairo-rs", 3380 | "gdk", 3381 | "gdk-sys", 3382 | "gio", 3383 | "gio-sys", 3384 | "glib", 3385 | "glib-sys", 3386 | "gobject-sys", 3387 | "gtk", 3388 | "gtk-sys", 3389 | "javascriptcore-rs", 3390 | "libc", 3391 | "once_cell", 3392 | "soup2", 3393 | "webkit2gtk-sys", 3394 | ] 3395 | 3396 | [[package]] 3397 | name = "webkit2gtk-sys" 3398 | version = "0.18.0" 3399 | source = "registry+https://github.com/rust-lang/crates.io-index" 3400 | checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" 3401 | dependencies = [ 3402 | "atk-sys", 3403 | "bitflags", 3404 | "cairo-sys-rs", 3405 | "gdk-pixbuf-sys", 3406 | "gdk-sys", 3407 | "gio-sys", 3408 | "glib-sys", 3409 | "gobject-sys", 3410 | "gtk-sys", 3411 | "javascriptcore-rs-sys", 3412 | "libc", 3413 | "pango-sys", 3414 | "pkg-config", 3415 | "soup2-sys", 3416 | "system-deps 6.1.0", 3417 | ] 3418 | 3419 | [[package]] 3420 | name = "webview2-com" 3421 | version = "0.19.1" 3422 | source = "registry+https://github.com/rust-lang/crates.io-index" 3423 | checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" 3424 | dependencies = [ 3425 | "webview2-com-macros", 3426 | "webview2-com-sys", 3427 | "windows 0.39.0", 3428 | "windows-implement", 3429 | ] 3430 | 3431 | [[package]] 3432 | name = "webview2-com-macros" 3433 | version = "0.6.0" 3434 | source = "registry+https://github.com/rust-lang/crates.io-index" 3435 | checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" 3436 | dependencies = [ 3437 | "proc-macro2", 3438 | "quote", 3439 | "syn 1.0.109", 3440 | ] 3441 | 3442 | [[package]] 3443 | name = "webview2-com-sys" 3444 | version = "0.19.0" 3445 | source = "registry+https://github.com/rust-lang/crates.io-index" 3446 | checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" 3447 | dependencies = [ 3448 | "regex", 3449 | "serde", 3450 | "serde_json", 3451 | "thiserror", 3452 | "windows 0.39.0", 3453 | "windows-bindgen", 3454 | "windows-metadata", 3455 | ] 3456 | 3457 | [[package]] 3458 | name = "winapi" 3459 | version = "0.3.9" 3460 | source = "registry+https://github.com/rust-lang/crates.io-index" 3461 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3462 | dependencies = [ 3463 | "winapi-i686-pc-windows-gnu", 3464 | "winapi-x86_64-pc-windows-gnu", 3465 | ] 3466 | 3467 | [[package]] 3468 | name = "winapi-i686-pc-windows-gnu" 3469 | version = "0.4.0" 3470 | source = "registry+https://github.com/rust-lang/crates.io-index" 3471 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3472 | 3473 | [[package]] 3474 | name = "winapi-util" 3475 | version = "0.1.5" 3476 | source = "registry+https://github.com/rust-lang/crates.io-index" 3477 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 3478 | dependencies = [ 3479 | "winapi", 3480 | ] 3481 | 3482 | [[package]] 3483 | name = "winapi-x86_64-pc-windows-gnu" 3484 | version = "0.4.0" 3485 | source = "registry+https://github.com/rust-lang/crates.io-index" 3486 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3487 | 3488 | [[package]] 3489 | name = "windows" 3490 | version = "0.37.0" 3491 | source = "registry+https://github.com/rust-lang/crates.io-index" 3492 | checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" 3493 | dependencies = [ 3494 | "windows_aarch64_msvc 0.37.0", 3495 | "windows_i686_gnu 0.37.0", 3496 | "windows_i686_msvc 0.37.0", 3497 | "windows_x86_64_gnu 0.37.0", 3498 | "windows_x86_64_msvc 0.37.0", 3499 | ] 3500 | 3501 | [[package]] 3502 | name = "windows" 3503 | version = "0.39.0" 3504 | source = "registry+https://github.com/rust-lang/crates.io-index" 3505 | checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" 3506 | dependencies = [ 3507 | "windows-implement", 3508 | "windows_aarch64_msvc 0.39.0", 3509 | "windows_i686_gnu 0.39.0", 3510 | "windows_i686_msvc 0.39.0", 3511 | "windows_x86_64_gnu 0.39.0", 3512 | "windows_x86_64_msvc 0.39.0", 3513 | ] 3514 | 3515 | [[package]] 3516 | name = "windows" 3517 | version = "0.48.0" 3518 | source = "registry+https://github.com/rust-lang/crates.io-index" 3519 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 3520 | dependencies = [ 3521 | "windows-targets 0.48.0", 3522 | ] 3523 | 3524 | [[package]] 3525 | name = "windows-bindgen" 3526 | version = "0.39.0" 3527 | source = "registry+https://github.com/rust-lang/crates.io-index" 3528 | checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" 3529 | dependencies = [ 3530 | "windows-metadata", 3531 | "windows-tokens", 3532 | ] 3533 | 3534 | [[package]] 3535 | name = "windows-implement" 3536 | version = "0.39.0" 3537 | source = "registry+https://github.com/rust-lang/crates.io-index" 3538 | checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" 3539 | dependencies = [ 3540 | "syn 1.0.109", 3541 | "windows-tokens", 3542 | ] 3543 | 3544 | [[package]] 3545 | name = "windows-metadata" 3546 | version = "0.39.0" 3547 | source = "registry+https://github.com/rust-lang/crates.io-index" 3548 | checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" 3549 | 3550 | [[package]] 3551 | name = "windows-sys" 3552 | version = "0.42.0" 3553 | source = "registry+https://github.com/rust-lang/crates.io-index" 3554 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 3555 | dependencies = [ 3556 | "windows_aarch64_gnullvm 0.42.2", 3557 | "windows_aarch64_msvc 0.42.2", 3558 | "windows_i686_gnu 0.42.2", 3559 | "windows_i686_msvc 0.42.2", 3560 | "windows_x86_64_gnu 0.42.2", 3561 | "windows_x86_64_gnullvm 0.42.2", 3562 | "windows_x86_64_msvc 0.42.2", 3563 | ] 3564 | 3565 | [[package]] 3566 | name = "windows-sys" 3567 | version = "0.45.0" 3568 | source = "registry+https://github.com/rust-lang/crates.io-index" 3569 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 3570 | dependencies = [ 3571 | "windows-targets 0.42.2", 3572 | ] 3573 | 3574 | [[package]] 3575 | name = "windows-sys" 3576 | version = "0.48.0" 3577 | source = "registry+https://github.com/rust-lang/crates.io-index" 3578 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 3579 | dependencies = [ 3580 | "windows-targets 0.48.0", 3581 | ] 3582 | 3583 | [[package]] 3584 | name = "windows-targets" 3585 | version = "0.42.2" 3586 | source = "registry+https://github.com/rust-lang/crates.io-index" 3587 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 3588 | dependencies = [ 3589 | "windows_aarch64_gnullvm 0.42.2", 3590 | "windows_aarch64_msvc 0.42.2", 3591 | "windows_i686_gnu 0.42.2", 3592 | "windows_i686_msvc 0.42.2", 3593 | "windows_x86_64_gnu 0.42.2", 3594 | "windows_x86_64_gnullvm 0.42.2", 3595 | "windows_x86_64_msvc 0.42.2", 3596 | ] 3597 | 3598 | [[package]] 3599 | name = "windows-targets" 3600 | version = "0.48.0" 3601 | source = "registry+https://github.com/rust-lang/crates.io-index" 3602 | checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" 3603 | dependencies = [ 3604 | "windows_aarch64_gnullvm 0.48.0", 3605 | "windows_aarch64_msvc 0.48.0", 3606 | "windows_i686_gnu 0.48.0", 3607 | "windows_i686_msvc 0.48.0", 3608 | "windows_x86_64_gnu 0.48.0", 3609 | "windows_x86_64_gnullvm 0.48.0", 3610 | "windows_x86_64_msvc 0.48.0", 3611 | ] 3612 | 3613 | [[package]] 3614 | name = "windows-tokens" 3615 | version = "0.39.0" 3616 | source = "registry+https://github.com/rust-lang/crates.io-index" 3617 | checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" 3618 | 3619 | [[package]] 3620 | name = "windows_aarch64_gnullvm" 3621 | version = "0.42.2" 3622 | source = "registry+https://github.com/rust-lang/crates.io-index" 3623 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 3624 | 3625 | [[package]] 3626 | name = "windows_aarch64_gnullvm" 3627 | version = "0.48.0" 3628 | source = "registry+https://github.com/rust-lang/crates.io-index" 3629 | checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" 3630 | 3631 | [[package]] 3632 | name = "windows_aarch64_msvc" 3633 | version = "0.37.0" 3634 | source = "registry+https://github.com/rust-lang/crates.io-index" 3635 | checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" 3636 | 3637 | [[package]] 3638 | name = "windows_aarch64_msvc" 3639 | version = "0.39.0" 3640 | source = "registry+https://github.com/rust-lang/crates.io-index" 3641 | checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" 3642 | 3643 | [[package]] 3644 | name = "windows_aarch64_msvc" 3645 | version = "0.42.2" 3646 | source = "registry+https://github.com/rust-lang/crates.io-index" 3647 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 3648 | 3649 | [[package]] 3650 | name = "windows_aarch64_msvc" 3651 | version = "0.48.0" 3652 | source = "registry+https://github.com/rust-lang/crates.io-index" 3653 | checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" 3654 | 3655 | [[package]] 3656 | name = "windows_i686_gnu" 3657 | version = "0.37.0" 3658 | source = "registry+https://github.com/rust-lang/crates.io-index" 3659 | checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" 3660 | 3661 | [[package]] 3662 | name = "windows_i686_gnu" 3663 | version = "0.39.0" 3664 | source = "registry+https://github.com/rust-lang/crates.io-index" 3665 | checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" 3666 | 3667 | [[package]] 3668 | name = "windows_i686_gnu" 3669 | version = "0.42.2" 3670 | source = "registry+https://github.com/rust-lang/crates.io-index" 3671 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 3672 | 3673 | [[package]] 3674 | name = "windows_i686_gnu" 3675 | version = "0.48.0" 3676 | source = "registry+https://github.com/rust-lang/crates.io-index" 3677 | checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" 3678 | 3679 | [[package]] 3680 | name = "windows_i686_msvc" 3681 | version = "0.37.0" 3682 | source = "registry+https://github.com/rust-lang/crates.io-index" 3683 | checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" 3684 | 3685 | [[package]] 3686 | name = "windows_i686_msvc" 3687 | version = "0.39.0" 3688 | source = "registry+https://github.com/rust-lang/crates.io-index" 3689 | checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" 3690 | 3691 | [[package]] 3692 | name = "windows_i686_msvc" 3693 | version = "0.42.2" 3694 | source = "registry+https://github.com/rust-lang/crates.io-index" 3695 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 3696 | 3697 | [[package]] 3698 | name = "windows_i686_msvc" 3699 | version = "0.48.0" 3700 | source = "registry+https://github.com/rust-lang/crates.io-index" 3701 | checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" 3702 | 3703 | [[package]] 3704 | name = "windows_x86_64_gnu" 3705 | version = "0.37.0" 3706 | source = "registry+https://github.com/rust-lang/crates.io-index" 3707 | checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" 3708 | 3709 | [[package]] 3710 | name = "windows_x86_64_gnu" 3711 | version = "0.39.0" 3712 | source = "registry+https://github.com/rust-lang/crates.io-index" 3713 | checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" 3714 | 3715 | [[package]] 3716 | name = "windows_x86_64_gnu" 3717 | version = "0.42.2" 3718 | source = "registry+https://github.com/rust-lang/crates.io-index" 3719 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 3720 | 3721 | [[package]] 3722 | name = "windows_x86_64_gnu" 3723 | version = "0.48.0" 3724 | source = "registry+https://github.com/rust-lang/crates.io-index" 3725 | checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" 3726 | 3727 | [[package]] 3728 | name = "windows_x86_64_gnullvm" 3729 | version = "0.42.2" 3730 | source = "registry+https://github.com/rust-lang/crates.io-index" 3731 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 3732 | 3733 | [[package]] 3734 | name = "windows_x86_64_gnullvm" 3735 | version = "0.48.0" 3736 | source = "registry+https://github.com/rust-lang/crates.io-index" 3737 | checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" 3738 | 3739 | [[package]] 3740 | name = "windows_x86_64_msvc" 3741 | version = "0.37.0" 3742 | source = "registry+https://github.com/rust-lang/crates.io-index" 3743 | checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" 3744 | 3745 | [[package]] 3746 | name = "windows_x86_64_msvc" 3747 | version = "0.39.0" 3748 | source = "registry+https://github.com/rust-lang/crates.io-index" 3749 | checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" 3750 | 3751 | [[package]] 3752 | name = "windows_x86_64_msvc" 3753 | version = "0.42.2" 3754 | source = "registry+https://github.com/rust-lang/crates.io-index" 3755 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 3756 | 3757 | [[package]] 3758 | name = "windows_x86_64_msvc" 3759 | version = "0.48.0" 3760 | source = "registry+https://github.com/rust-lang/crates.io-index" 3761 | checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" 3762 | 3763 | [[package]] 3764 | name = "winnow" 3765 | version = "0.4.1" 3766 | source = "registry+https://github.com/rust-lang/crates.io-index" 3767 | checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" 3768 | dependencies = [ 3769 | "memchr", 3770 | ] 3771 | 3772 | [[package]] 3773 | name = "winreg" 3774 | version = "0.11.0" 3775 | source = "registry+https://github.com/rust-lang/crates.io-index" 3776 | checksum = "76a1a57ff50e9b408431e8f97d5456f2807f8eb2a2cd79b06068fc87f8ecf189" 3777 | dependencies = [ 3778 | "cfg-if", 3779 | "winapi", 3780 | ] 3781 | 3782 | [[package]] 3783 | name = "wry" 3784 | version = "0.24.4" 3785 | source = "registry+https://github.com/rust-lang/crates.io-index" 3786 | checksum = "88ef04bdad49eba2e01f06e53688c8413bd6a87b0bc14b72284465cf96e3578e" 3787 | dependencies = [ 3788 | "base64 0.13.1", 3789 | "block", 3790 | "cocoa", 3791 | "core-graphics", 3792 | "crossbeam-channel", 3793 | "dunce", 3794 | "gdk", 3795 | "gio", 3796 | "glib", 3797 | "gtk", 3798 | "html5ever 0.25.2", 3799 | "http", 3800 | "kuchiki", 3801 | "libc", 3802 | "log", 3803 | "objc", 3804 | "objc_id", 3805 | "once_cell", 3806 | "serde", 3807 | "serde_json", 3808 | "sha2", 3809 | "soup2", 3810 | "tao", 3811 | "thiserror", 3812 | "url", 3813 | "webkit2gtk", 3814 | "webkit2gtk-sys", 3815 | "webview2-com", 3816 | "windows 0.39.0", 3817 | "windows-implement", 3818 | ] 3819 | 3820 | [[package]] 3821 | name = "x11" 3822 | version = "2.21.0" 3823 | source = "registry+https://github.com/rust-lang/crates.io-index" 3824 | checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" 3825 | dependencies = [ 3826 | "libc", 3827 | "pkg-config", 3828 | ] 3829 | 3830 | [[package]] 3831 | name = "x11-dl" 3832 | version = "2.21.0" 3833 | source = "registry+https://github.com/rust-lang/crates.io-index" 3834 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 3835 | dependencies = [ 3836 | "libc", 3837 | "once_cell", 3838 | "pkg-config", 3839 | ] 3840 | 3841 | [[package]] 3842 | name = "xattr" 3843 | version = "0.2.3" 3844 | source = "registry+https://github.com/rust-lang/crates.io-index" 3845 | checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" 3846 | dependencies = [ 3847 | "libc", 3848 | ] 3849 | 3850 | [[package]] 3851 | name = "zip" 3852 | version = "0.6.6" 3853 | source = "registry+https://github.com/rust-lang/crates.io-index" 3854 | checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" 3855 | dependencies = [ 3856 | "aes", 3857 | "byteorder", 3858 | "bzip2", 3859 | "constant_time_eq", 3860 | "crc32fast", 3861 | "crossbeam-utils", 3862 | "flate2", 3863 | "hmac", 3864 | "pbkdf2", 3865 | "sha1", 3866 | "time", 3867 | "zstd", 3868 | ] 3869 | 3870 | [[package]] 3871 | name = "zstd" 3872 | version = "0.11.2+zstd.1.5.2" 3873 | source = "registry+https://github.com/rust-lang/crates.io-index" 3874 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 3875 | dependencies = [ 3876 | "zstd-safe", 3877 | ] 3878 | 3879 | [[package]] 3880 | name = "zstd-safe" 3881 | version = "5.0.2+zstd.1.5.2" 3882 | source = "registry+https://github.com/rust-lang/crates.io-index" 3883 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 3884 | dependencies = [ 3885 | "libc", 3886 | "zstd-sys", 3887 | ] 3888 | 3889 | [[package]] 3890 | name = "zstd-sys" 3891 | version = "2.0.8+zstd.1.5.5" 3892 | source = "registry+https://github.com/rust-lang/crates.io-index" 3893 | checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" 3894 | dependencies = [ 3895 | "cc", 3896 | "libc", 3897 | "pkg-config", 3898 | ] 3899 | -------------------------------------------------------------------------------- /src-tauri/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "app" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["taiyuuki "] 6 | license = "MIT" 7 | repository = "https://github.com/taiyuuki/elepub" 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.0", features = [ 21 | "fs-exists", 22 | "dialog-all", 23 | "shell-open", 24 | "protocol-asset", 25 | ] } 26 | zip = "0.6.6" 27 | 28 | [features] 29 | # this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled. 30 | # 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. 31 | # DO NOT REMOVE!! 32 | custom-protocol = ["tauri/custom-protocol"] 33 | -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/src/epub.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | use std::{fs::File, io::prelude::*}; 3 | use zip::write::FileOptions; 4 | 5 | mod template; 6 | 7 | pub enum FileContent { 8 | Text(String), 9 | ImagePath(String), 10 | } 11 | 12 | use FileContent::{ImagePath, Text}; 13 | 14 | pub enum Compression { 15 | Store, 16 | Zip, 17 | } 18 | 19 | pub struct EpubFile { 20 | pub dir: String, 21 | pub name: String, 22 | pub content: FileContent, 23 | pub compress: Compression, 24 | } 25 | 26 | impl EpubFile { 27 | pub fn new(dir: &str, name: &str, content: FileContent, compress: Compression) -> EpubFile { 28 | EpubFile { 29 | dir: String::from(dir), 30 | name: String::from(name), 31 | content, 32 | compress, 33 | } 34 | } 35 | } 36 | 37 | #[derive(Deserialize)] 38 | pub struct Image { 39 | title: String, 40 | xhtml: String, 41 | name: String, 42 | path: String, 43 | index: bool, 44 | mime: String, 45 | } 46 | 47 | #[derive(Deserialize)] 48 | pub struct Metadata { 49 | pub id: String, 50 | pub cover: Image, 51 | pub title: String, 52 | pub author: String, 53 | pub images: Vec, 54 | pub output: String, 55 | pub creator: String, 56 | pub volume: String, 57 | pub publisher: String, 58 | pub description: String, 59 | pub date: String, 60 | } 61 | 62 | fn get_image(image: &Image) -> EpubFile { 63 | let image_path = String::from(&image.path); 64 | EpubFile::new( 65 | "OEBPF/images/", 66 | &image.name, 67 | ImagePath(image_path), 68 | Compression::Zip, 69 | ) 70 | } 71 | 72 | fn get_mimetype() -> EpubFile { 73 | EpubFile::new( 74 | "", 75 | "mimetype", 76 | Text("application/epub+zip".to_string()), 77 | Compression::Store, 78 | ) 79 | } 80 | 81 | fn get_duokan_extension() -> EpubFile { 82 | EpubFile::new( 83 | "META-INF/", 84 | "duokan-extension.xml", 85 | Text(String::from(template::MIMETYPE)), 86 | Compression::Zip, 87 | ) 88 | } 89 | 90 | fn get_container() -> EpubFile { 91 | EpubFile::new( 92 | "META-INF/", 93 | "container.xml", 94 | Text(String::from(template::CONTAINER)), 95 | Compression::Zip, 96 | ) 97 | } 98 | 99 | fn get_section(image: &Image) -> EpubFile { 100 | EpubFile::new( 101 | "OEBPF/content/", 102 | &image.xhtml, 103 | Text( 104 | template::SECTION 105 | .replace("{title}", &image.title) 106 | .replace("{image}", &image.name), 107 | ), 108 | Compression::Zip, 109 | ) 110 | } 111 | 112 | fn get_css() -> EpubFile { 113 | EpubFile::new( 114 | "OEBPF/css/", 115 | "ebook.css", 116 | Text(String::from(template::CSS)), 117 | Compression::Zip, 118 | ) 119 | } 120 | 121 | fn get_cover(image: &Image) -> EpubFile { 122 | EpubFile::new( 123 | "OEBPF/", 124 | "cover.xhtml", 125 | Text( 126 | template::COVER 127 | .replace("{title}", &image.title) 128 | .replace("{cover}", &image.name), 129 | ), 130 | Compression::Zip, 131 | ) 132 | } 133 | 134 | fn get_message(meta: &Metadata) -> EpubFile { 135 | EpubFile::new( 136 | "OEBPF/content/", 137 | "msg.xhtml", 138 | Text( 139 | template::MESSAGE 140 | .replace("{title}", &meta.title) 141 | .replace("{author}", &meta.author) 142 | .replace("{creator}", &meta.creator) 143 | .replace("{volume}", &meta.volume), 144 | ), 145 | Compression::Zip, 146 | ) 147 | } 148 | 149 | fn get_opf(meta: &Metadata) -> EpubFile { 150 | let mut opf_file = String::new(); 151 | opf_file += r#" 152 | 153 | "#; 154 | opf_file += &format!( 155 | " {}{}\n", 156 | &meta.title, &meta.volume 157 | ); 158 | opf_file += &format!( 159 | " {}\n", 160 | &meta.id 161 | ); 162 | opf_file += " zh-CN\n"; 163 | opf_file += &format!( 164 | " {}\n", 165 | &meta.author 166 | ); 167 | opf_file += &format!(" {}\n", &meta.publisher); 168 | opf_file += &format!( 169 | " {}\n", 170 | &meta.description 171 | ); 172 | opf_file += &format!( 173 | " {}\n", 174 | &meta.date 175 | ); 176 | opf_file += r#" undefined 177 | 178 | 179 | 180 | 181 | "#; 182 | opf_file += &format!( 183 | " \n", 184 | &meta.cover.name 185 | ); 186 | opf_file += r#" 187 | 188 | 189 | "#; 190 | let mut i = 2; 191 | for image in &meta.images { 192 | opf_file += &format!( 193 | " \n", 194 | i, &image.xhtml 195 | ); 196 | i += 1; 197 | } 198 | opf_file += " \n"; 199 | i = 0; 200 | for image in &meta.images { 201 | opf_file += &format!( 202 | " \n", 203 | i, &image.mime, &image.name 204 | ); 205 | i += 1; 206 | } 207 | opf_file += &format!( 208 | " \n", 209 | i, &meta.cover.mime, &meta.cover.name 210 | ); 211 | opf_file += r#" 212 | 213 | 214 | 215 | "#; 216 | i = 2; 217 | for _image in &meta.images { 218 | opf_file += &format!(" \n", i); 219 | i += 1; 220 | } 221 | opf_file += r#" 222 | "#; 223 | EpubFile::new("OEBPF/", "ebook.opf", Text(opf_file), Compression::Zip) 224 | } 225 | 226 | fn get_ncx(meta: &Metadata) -> EpubFile { 227 | let mut ncx_file = String::new(); 228 | ncx_file += r#" 229 | 230 | 231 | 232 | "#; 233 | ncx_file += &format!(" \n", &meta.id); 234 | ncx_file += r#" 235 | 236 | 237 | 238 | "#; 239 | ncx_file += &format!("{}\n", &meta.title); 240 | ncx_file += &format!("{}\n", &meta.author); 241 | ncx_file += r#" 242 | 243 | Cover 244 | 245 | 246 | "#; 247 | let mut i = 2; 248 | let mut o = 2; 249 | for image in &meta.images { 250 | if image.index { 251 | ncx_file += &format!(" \n", i, o); 252 | ncx_file += &format!(" {}\n", &image.title); 253 | ncx_file += &format!(" \n", &image.xhtml); 254 | ncx_file += " \n"; 255 | o += 1; 256 | } 257 | i += 1; 258 | } 259 | ncx_file += "\n"; 260 | ncx_file += ""; 261 | EpubFile::new("OEBPF/", "navigation.ncx", Text(ncx_file), Compression::Zip) 262 | } 263 | 264 | pub struct Epub { 265 | pub id: String, 266 | pub author: String, 267 | pub files: Vec, 268 | pub output: String, 269 | } 270 | 271 | impl Epub { 272 | pub fn new(meta: Metadata) -> Epub { 273 | let mut files: Vec = vec![]; 274 | files.push(get_mimetype()); 275 | files.push(get_duokan_extension()); 276 | files.push(get_container()); 277 | files.push(get_opf(&meta)); 278 | files.push(get_ncx(&meta)); 279 | files.push(get_css()); 280 | files.push(get_cover(&meta.cover)); 281 | files.push(get_image(&meta.cover)); 282 | files.push(get_message(&meta)); 283 | for image in &meta.images { 284 | files.push(get_section(&image)); 285 | files.push(get_image(&image)); 286 | } 287 | Epub { 288 | id: meta.id, 289 | author: meta.author, 290 | files, 291 | output: meta.output, 292 | } 293 | } 294 | pub fn generate_epub(&mut self, get_progress: F) -> zip::result::ZipResult<()> 295 | where 296 | F: Fn(f32) -> (), 297 | { 298 | let file = std::fs::File::create(&self.output).unwrap(); 299 | let mut zip = zip::ZipWriter::new(file); 300 | 301 | let option_zip = FileOptions::default() 302 | .compression_method(zip::CompressionMethod::Deflated) 303 | .compression_level(Some(1)); 304 | let option_store = 305 | FileOptions::default().compression_method(zip::CompressionMethod::Stored); 306 | let mut i = 0; 307 | for file in &self.files { 308 | get_progress(i as f32 / self.files.len() as f32); 309 | zip.start_file( 310 | format!("{}{}", file.dir, file.name), 311 | match file.compress { 312 | Compression::Zip => option_zip, 313 | Compression::Store => option_store, 314 | }, 315 | )?; 316 | match &file.content { 317 | Text(c) => { 318 | zip.write_all(c.as_bytes())?; 319 | } 320 | ImagePath(path) => { 321 | let mut file = match File::open(path) { 322 | Ok(f) => f, 323 | Err(_) => { 324 | zip.write("文件不存在".as_bytes())?; 325 | continue; 326 | } 327 | }; 328 | let mut data = vec![]; 329 | file.read_to_end(&mut data).expect("图片读取失败"); 330 | zip.write_all(&data)?; 331 | } 332 | }; 333 | i += 1; 334 | } 335 | zip.finish()?; 336 | 337 | Ok(()) 338 | } 339 | } 340 | -------------------------------------------------------------------------------- /src-tauri/src/epub/template.rs: -------------------------------------------------------------------------------- 1 | pub const COVER: &str = r#" 2 | 3 | 4 | 5 | {title} 6 | 11 | 12 | 13 |
Cover
14 | 15 | "#; 16 | 17 | pub const MIMETYPE: &str = r#" 18 | 19 | 20 | 21 | 22 | 23 | 24 | "#; 25 | 26 | pub const CONTAINER: &str = r#" 27 | 28 | 29 | 30 | 31 | "#; 32 | 33 | pub const SECTION: &str = r#" 34 | 35 | 36 | 37 | {title} 38 | 39 | 40 | 41 |
42 | {image} 43 |
44 | 45 | "#; 46 | 47 | pub const CSS: &str = r#"body { 48 | padding: 0; 49 | margin: 0; 50 | text-indent: 0; 51 | duokan-text-indent: 0; 52 | } 53 | p { 54 | text-indent: 0; 55 | duokan-text-indent: 0; 56 | display: block; 57 | line-height: 1.3em; 58 | margin-top: 0.6em; 59 | margin-bottom: 0.6em; 60 | } 61 | div { 62 | text-indent: 0; 63 | duokan-text-indent: 0; 64 | margin: 0; 65 | padding: 0; 66 | text-align: justify; 67 | } 68 | img { 69 | width: 100%; 70 | } 71 | a { 72 | text-decoration: none; 73 | } 74 | a:hover { 75 | background-color: rgba(0, 0, 0, 0.5); 76 | } 77 | .box { 78 | color: #258; 79 | padding: 5px; 80 | margin: 10% -0.25em; 81 | border: 1px solid #258; 82 | background-color: rgba(34, 85, 136, 0.1); 83 | } 84 | .box p { 85 | font-size: 0.8em; 86 | } 87 | .book { 88 | font-family: "微软雅黑", "黑体", "ht", "sans-serif"; 89 | } 90 | .book p { 91 | font-size: 1em; 92 | text-shadow: 1px 1px 1px #fff; 93 | text-indent: 0; 94 | duokan-text-indent: 0; 95 | } 96 | .meg { 97 | margin: -5px; 98 | padding: 5px; 99 | color: #fff; 100 | font-family: "gy", "DK-FANGSONG", "fs", "fangsong", "仿宋"; 101 | font-weight: bold; 102 | font-size: 1.2em; 103 | text-indent: 0; 104 | duokan-text-indent: 0; 105 | text-align: center; 106 | line-height: 120%; 107 | background-color: #258; 108 | } 109 | .option { 110 | font-family: "gy", "DK-FANGSONG", "fs", "fangsong", "仿宋"; 111 | font-size: 1em; 112 | font-weight: bold; 113 | margin: -5px; 114 | padding: 5px; 115 | line-height: 120%; 116 | background-color: rgba(34, 85, 136, 0.8); 117 | color: #fff; 118 | } 119 | .option p { 120 | text-indent: -4em; 121 | duokan-text-indent: -4em; 122 | padding-left: 4em; 123 | }"#; 124 | 125 | pub const MESSAGE: &str = r#" 126 | 127 | 128 | 129 | 说明 130 | 131 | 132 | 133 |
134 |
135 |

说明

136 |
137 |

书 名:{title} {volume}

138 |

图 文:{author}

139 |

制 作:{creator}

140 |
141 |
142 |

声 明:此EPUB文档由软件自动生成,仅供测试,禁止传播和商用。

143 |

地 址:https://taiyuuki.github.io/elepub-web-build/

144 |

阅读器:请使用多看阅读,并将翻页模式设置为“上下翻页”。

145 |
146 |
147 |
148 | 149 | "#; 150 | -------------------------------------------------------------------------------- /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 | mod epub; 5 | use epub::Epub; 6 | use tauri::{AppHandle, Manager}; 7 | 8 | #[tauri::command] 9 | fn get_meta(meta: epub::Metadata, app_handel: AppHandle) -> String { 10 | let mut epub = Epub::new(meta); 11 | match epub.generate_epub(|payload| match app_handel.emit_all("progress", payload) { 12 | Ok(c) => c, 13 | _ => panic!("通信失败"), 14 | }) { 15 | Ok(_) => String::from("OK"), 16 | _ => String::from("Err"), 17 | } 18 | } 19 | 20 | fn main() { 21 | tauri::Builder::default() 22 | .invoke_handler(tauri::generate_handler![get_meta]) 23 | .run(tauri::generate_context!()) 24 | .expect("error while running tauri application"); 25 | } 26 | -------------------------------------------------------------------------------- /src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "beforeDevCommand": "pnpm dev", 4 | "beforeBuildCommand": "pnpm build", 5 | "devPath": "http://localhost:9100", 6 | "distDir": "../dist/ssg", 7 | "withGlobalTauri": false 8 | }, 9 | "package": { 10 | "productName": "elepub", 11 | "version": "3.0.2" 12 | }, 13 | "tauri": { 14 | "allowlist": { 15 | "all": false, 16 | "shell": { 17 | "all": false, 18 | "open": true 19 | }, 20 | "dialog": { 21 | "all": true, 22 | "open": true, 23 | "save": true 24 | }, 25 | "protocol": { 26 | "all": false, 27 | "asset": true, 28 | "assetScope": [ 29 | "$PICTURE" 30 | ] 31 | }, 32 | "fs": { 33 | "all": false, 34 | "copyFile": false, 35 | "createDir": false, 36 | "exists": true, 37 | "readDir": false, 38 | "readFile": false, 39 | "removeDir": false, 40 | "removeFile": false, 41 | "renameFile": false, 42 | "scope": [ 43 | "**" 44 | ], 45 | "writeFile": false 46 | } 47 | }, 48 | "bundle": { 49 | "active": true, 50 | "icon": [ 51 | "icons/32x32.png", 52 | "icons/128x128.png", 53 | "icons/128x128@2x.png", 54 | "icons/icon.ico" 55 | ], 56 | "identifier": "com.tauri.elepub", 57 | "targets": "all", 58 | "windows": { 59 | "wix": { 60 | "language": "zh-CN" 61 | } 62 | } 63 | }, 64 | "security": { 65 | "csp": "" 66 | }, 67 | "updater": { 68 | "active": false 69 | }, 70 | "windows": [ 71 | { 72 | "fullscreen": false, 73 | "resizable": true, 74 | "title": "多看漫画制作", 75 | "width": 1024, 76 | "height": 600 77 | } 78 | ] 79 | } 80 | } -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /src/assets/quasar-logo-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 15 | -------------------------------------------------------------------------------- /src/auto-imports.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | /* prettier-ignore */ 3 | // @ts-nocheck 4 | // noinspection JSUnusedGlobalSymbols 5 | // Generated by unplugin-auto-import 6 | export {} 7 | declare global { 8 | const AxiosInstance: typeof import('axios')['AxiosInstance'] 9 | const Dialog: typeof import('quasar')['Dialog'] 10 | const EffectScope: typeof import('vue')['EffectScope'] 11 | const LocalStorage: typeof import('quasar')['LocalStorage'] 12 | const Notify: typeof import('quasar')['Notify'] 13 | const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] 14 | const axios: typeof import('axios')['default'] 15 | const boot: typeof import('quasar/wrappers')['boot'] 16 | const computed: typeof import('vue')['computed'] 17 | const createApp: typeof import('vue')['createApp'] 18 | const createPinia: typeof import('pinia')['createPinia'] 19 | const customRef: typeof import('vue')['customRef'] 20 | const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] 21 | const defineComponent: typeof import('vue')['defineComponent'] 22 | const defineStore: typeof import('pinia')['defineStore'] 23 | const effectScope: typeof import('vue')['effectScope'] 24 | const getActivePinia: typeof import('pinia')['getActivePinia'] 25 | const getCurrentInstance: typeof import('vue')['getCurrentInstance'] 26 | const getCurrentScope: typeof import('vue')['getCurrentScope'] 27 | const h: typeof import('vue')['h'] 28 | const inject: typeof import('vue')['inject'] 29 | const isProxy: typeof import('vue')['isProxy'] 30 | const isReactive: typeof import('vue')['isReactive'] 31 | const isReadonly: typeof import('vue')['isReadonly'] 32 | const isRef: typeof import('vue')['isRef'] 33 | const mapActions: typeof import('pinia')['mapActions'] 34 | const mapGetters: typeof import('pinia')['mapGetters'] 35 | const mapState: typeof import('pinia')['mapState'] 36 | const mapStores: typeof import('pinia')['mapStores'] 37 | const mapWritableState: typeof import('pinia')['mapWritableState'] 38 | const markRaw: typeof import('vue')['markRaw'] 39 | const nextTick: typeof import('vue')['nextTick'] 40 | const onActivated: typeof import('vue')['onActivated'] 41 | const onBeforeMount: typeof import('vue')['onBeforeMount'] 42 | const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] 43 | const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] 44 | const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] 45 | const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] 46 | const onDeactivated: typeof import('vue')['onDeactivated'] 47 | const onErrorCaptured: typeof import('vue')['onErrorCaptured'] 48 | const onMounted: typeof import('vue')['onMounted'] 49 | const onRenderTracked: typeof import('vue')['onRenderTracked'] 50 | const onRenderTriggered: typeof import('vue')['onRenderTriggered'] 51 | const onScopeDispose: typeof import('vue')['onScopeDispose'] 52 | const onServerPrefetch: typeof import('vue')['onServerPrefetch'] 53 | const onUnmounted: typeof import('vue')['onUnmounted'] 54 | const onUpdated: typeof import('vue')['onUpdated'] 55 | const provide: typeof import('vue')['provide'] 56 | const reactive: typeof import('vue')['reactive'] 57 | const readonly: typeof import('vue')['readonly'] 58 | const ref: typeof import('vue')['ref'] 59 | const resolveComponent: typeof import('vue')['resolveComponent'] 60 | const setActivePinia: typeof import('pinia')['setActivePinia'] 61 | const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix'] 62 | const shallowReactive: typeof import('vue')['shallowReactive'] 63 | const shallowReadonly: typeof import('vue')['shallowReadonly'] 64 | const shallowRef: typeof import('vue')['shallowRef'] 65 | const storeToRefs: typeof import('pinia')['storeToRefs'] 66 | const toRaw: typeof import('vue')['toRaw'] 67 | const toRef: typeof import('vue')['toRef'] 68 | const toRefs: typeof import('vue')['toRefs'] 69 | const toValue: typeof import('vue')['toValue'] 70 | const triggerRef: typeof import('vue')['triggerRef'] 71 | const unref: typeof import('vue')['unref'] 72 | const useAttrs: typeof import('vue')['useAttrs'] 73 | const useCssModule: typeof import('vue')['useCssModule'] 74 | const useCssVars: typeof import('vue')['useCssVars'] 75 | const useLink: typeof import('vue-router')['useLink'] 76 | const useMeta: typeof import('quasar')['useMeta'] 77 | const useQuasar: typeof import('quasar')['useQuasar'] 78 | const useRoute: typeof import('vue-router')['useRoute'] 79 | const useRouter: typeof import('vue-router')['useRouter'] 80 | const useSlots: typeof import('vue')['useSlots'] 81 | const watch: typeof import('vue')['watch'] 82 | const watchEffect: typeof import('vue')['watchEffect'] 83 | const watchPostEffect: typeof import('vue')['watchPostEffect'] 84 | const watchSyncEffect: typeof import('vue')['watchSyncEffect'] 85 | } 86 | // for type re-export 87 | declare global { 88 | // @ts-ignore 89 | export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' 90 | } 91 | -------------------------------------------------------------------------------- /src/boot/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/taiyuuki/elepub/52dea53ce115e16fe8aef4b36f7b482f29f91312/src/boot/.gitkeep -------------------------------------------------------------------------------- /src/boot/unocss.ts: -------------------------------------------------------------------------------- 1 | import 'uno.css' 2 | -------------------------------------------------------------------------------- /src/components.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | /* prettier-ignore */ 3 | // @ts-nocheck 4 | // Generated by unplugin-vue-components 5 | // Read more: https://github.com/vuejs/core/pull/3399 6 | import '@vue/runtime-core' 7 | 8 | export {} 9 | 10 | declare module '@vue/runtime-core' { 11 | export interface GlobalComponents { 12 | ImagePreview: typeof import('./components/ImagePreview.vue')['default'] 13 | MainHeader: typeof import('./components/MainHeader.vue')['default'] 14 | RouterLink: typeof import('vue-router')['RouterLink'] 15 | RouterView: typeof import('vue-router')['RouterView'] 16 | SetMeta: typeof import('./components/SetMeta.vue')['default'] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/components/ImagePreview.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 110 | 111 | 442 | 443 | 462 | -------------------------------------------------------------------------------- /src/components/MainHeader.vue: -------------------------------------------------------------------------------- 1 | 168 | 169 | 255 | -------------------------------------------------------------------------------- /src/components/SetMeta.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 70 | 71 | 281 | 282 | 288 | -------------------------------------------------------------------------------- /src/composables/use-drawer.ts: -------------------------------------------------------------------------------- 1 | export const showDrawer = ref(true) 2 | -------------------------------------------------------------------------------- /src/composables/use-images.ts: -------------------------------------------------------------------------------- 1 | import { is_empty_obj, object_keys, throttle } from '@taiyuuki/utils' 2 | import { chapterMode, firstPage, pageCount, firstChapter } from './use-options' 3 | 4 | interface ImageFile { 5 | path: string 6 | name: string 7 | url: string 8 | } 9 | 10 | const cover = ref({ 11 | path: '', 12 | name: '', 13 | url: '', 14 | }) 15 | 16 | const images = reactive([]) 17 | 18 | const contents = reactive>({}) 19 | 20 | export function useCover() { 21 | return cover 22 | } 23 | 24 | export function useImages() { 25 | return images 26 | } 27 | 28 | export function useContents() { 29 | return contents 30 | } 31 | 32 | // 清空目录 33 | export function clearContents() { 34 | const kyes = object_keys(contents) 35 | kyes.forEach(key => { 36 | delete contents[key] 37 | }) 38 | } 39 | 40 | // 移除目录 41 | export function removeContentsItem(i: string | number) { 42 | delete contents[i] 43 | } 44 | 45 | let mode_1 = true // 默认 46 | let mode_2 = false// 按标记 47 | let mode_3 = false// 按页数 48 | 49 | export function setContentsMode() { 50 | mode_1 51 | = chapterMode.value === 'default' 52 | || (chapterMode.value === 'mark' && firstPage.value.trim().length === 0) 53 | mode_2 54 | = chapterMode.value === 'mark' && firstPage.value.trim().length > 0 55 | mode_3 = chapterMode.value === 'count' && pageCount.value !== 1 56 | } 57 | 58 | export function setContent(file: ImageFile, i: number, count: number) { 59 | if (mode_1) { 60 | contents[i] = `P${i + 1}` 61 | } 62 | else if (mode_2) { 63 | const regM = new RegExp(firstPage.value) 64 | const check = regM.test(file.name) 65 | if (check) { 66 | contents[i] = `第${count.toFixed(0)}话` 67 | return true 68 | } 69 | } 70 | else if (mode_3) { 71 | if (i % pageCount.value === 0) { 72 | const count = Number(pageCount.value) 73 | let title = `P${i + 1}-P${i + count}` 74 | const length = images.length 75 | if (i + count >= length) { 76 | title = `P${i + 1}-P${length}` 77 | } 78 | contents[i] = title 79 | } 80 | } 81 | } 82 | 83 | export function setContents() { 84 | setContentsMode() 85 | if (!is_empty_obj(contents)) { 86 | clearContents() 87 | } 88 | let count = Number(firstChapter.value) 89 | images.forEach((image, i) => { 90 | if (setContent(image, i, count)) { 91 | count++ 92 | } 93 | }) 94 | } 95 | 96 | export const triggerSetContents = throttle(setContents, 500) 97 | -------------------------------------------------------------------------------- /src/composables/use-loading.ts: -------------------------------------------------------------------------------- 1 | export const importing = ref(false) 2 | 3 | export const generating = ref(false) 4 | 5 | export const payload = ref(0) 6 | 7 | export const progress = computed(() => { 8 | return payload.value.toFixed(0) + '%' 9 | }) 10 | -------------------------------------------------------------------------------- /src/composables/use-meta.ts: -------------------------------------------------------------------------------- 1 | const meta = reactive({ 2 | id: '0', 3 | cover: { 4 | index: false, 5 | name: '', 6 | path: '', 7 | title: '', 8 | xhtml: '', 9 | mime: 'image/jpeg', 10 | }, 11 | title: '', 12 | author: '', 13 | images: [], 14 | output: '', 15 | creator: '', 16 | volume: '', 17 | publisher: '', 18 | description: '', 19 | date: '', 20 | }) 21 | 22 | export const volume = ref('') 23 | 24 | export function useMeta() { 25 | return meta 26 | } 27 | -------------------------------------------------------------------------------- /src/composables/use-options.ts: -------------------------------------------------------------------------------- 1 | import { storage_get, storage_set } from '@taiyuuki/utils' 2 | 3 | export const confoundingImage = ref(false) 4 | export const confoundingXhtml = ref(false) 5 | export const chapterMode = ref('default') 6 | export const firstChapter = ref(1) 7 | export const pageCount = ref(10) 8 | export const firstPage = ref('') 9 | export const output = ref('') 10 | 11 | export function useOptions() { 12 | onMounted(() => { 13 | output.value = storage_get('output') || '' 14 | }) 15 | 16 | watch(output, (value) => { 17 | storage_set('output', value) 18 | }) 19 | return { 20 | confoundingImage, confoundingXhtml, chapterMode, firstChapter, pageCount, firstPage, output, 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/css/app.scss: -------------------------------------------------------------------------------- 1 | // app global css in SCSS form 2 | :root { 3 | --primary: #1976d2; 4 | --secondary: #ef3473; 5 | --font-color: #000; 6 | 7 | overflow-x: hidden; 8 | overflow-y: auto; 9 | } 10 | 11 | .q-dialog-plugin { 12 | background-color: #fff; 13 | color: var(--secondary); 14 | 15 | .q-dialog__title { 16 | background-color: var(--secondary); 17 | color: #fff; 18 | padding: 0 10px; 19 | margin-bottom: 16px; 20 | font-size: 16px; 21 | } 22 | 23 | .q-dialog__message { 24 | padding: 0 16px; 25 | } 26 | 27 | .q-card__actions { 28 | span { 29 | color: var(--secondary); 30 | } 31 | } 32 | } 33 | 34 | html { 35 | -webkit-overflow-scrolling: touch; 36 | scrollbar-color: var(--primary) !important; 37 | scrollbar-width: thin; 38 | 39 | // scroll-behavior: smooth; 40 | 41 | ::-webkit-scrollbar { 42 | width: 8px; 43 | height: 8px; 44 | background-color: transparent !important; 45 | } 46 | 47 | ::-webkit-scrollbar-thumb { 48 | background-color: var(--primary) !important; 49 | border-radius: 4px; 50 | } 51 | } 52 | 53 | body { 54 | box-sizing: border-box; 55 | width: 100vw !important; 56 | margin: 0; 57 | padding: 0; 58 | overflow: hidden; 59 | } 60 | 61 | :root body { 62 | position: absolute !important; 63 | } -------------------------------------------------------------------------------- /src/css/quasar.variables.scss: -------------------------------------------------------------------------------- 1 | // Quasar SCSS (& Sass) Variables 2 | // -------------------------------------------------- 3 | // To customize the look and feel of this app, you can override 4 | // the Sass/SCSS variables found in Quasar's source Sass/SCSS files. 5 | 6 | // Check documentation for full list of Quasar variables 7 | 8 | // Your own variables (that are declared here) and Quasar's own 9 | // ones will be available out of the box in your .vue/.scss/.sass files 10 | 11 | // It's highly recommended to change the default colors 12 | // to match your app's branding. 13 | // Tip: Use the "Theme Builder" on Quasar's documentation website. 14 | 15 | $primary : #1976D2; 16 | $secondary : #26A69A; 17 | $accent : #9C27B0; 18 | 19 | $dark : #1D1D1D; 20 | $dark-page : #121212; 21 | 22 | $positive : #21BA45; 23 | $negative : #C10015; 24 | $info : #31CCEC; 25 | $warning : #F2C037; 26 | -------------------------------------------------------------------------------- /src/elepub.d.ts: -------------------------------------------------------------------------------- 1 | declare interface ImageInfo { 2 | title: string, 3 | xhtml: string, 4 | name: string, 5 | path: string, 6 | index: boolean, 7 | mime: string, 8 | } 9 | 10 | declare interface Metadata { 11 | id: string, 12 | cover: ImageInfo, 13 | title: string, 14 | author: string, 15 | images: ImageInfo[], 16 | output: string, 17 | creator: string, 18 | volume: string, 19 | publisher: string, 20 | description: string, 21 | date: string, 22 | } -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | declare namespace NodeJS { 4 | interface ProcessEnv { 5 | NODE_ENV: string; 6 | VUE_ROUTER_MODE: 'hash' | 'history' | 'abstract' | undefined; 7 | VUE_ROUTER_BASE: string | undefined; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/layouts/MainLayout.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 48 | -------------------------------------------------------------------------------- /src/pages/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /src/quasar.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // Forces TS to apply `@quasar/app-vite` augmentations of `quasar` package 4 | // Removing this would break `quasar/wrappers` imports as those typings are declared 5 | // into `@quasar/app-vite` 6 | // As a side effect, since `@quasar/app-vite` reference `quasar` to augment it, 7 | // this declaration also apply `quasar` own 8 | // augmentations (eg. adds `$q` into Vue component context) 9 | /// 10 | -------------------------------------------------------------------------------- /src/router/index.ts: -------------------------------------------------------------------------------- 1 | import { route } from 'quasar/wrappers' 2 | import { 3 | createMemoryHistory, 4 | createRouter, 5 | createWebHashHistory, 6 | createWebHistory, 7 | } from 'vue-router' 8 | import { setupLayouts } from 'virtual:generated-layouts' 9 | import generatedRoutes from 'virtual:generated-pages' 10 | 11 | const routes = setupLayouts(generatedRoutes) 12 | routes.push({ 13 | path: '/:catchAll(.*)*', 14 | redirect: '/', 15 | }) 16 | 17 | export default route(function (/* { store, ssrContext } */) { 18 | const routerMode = process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory 19 | const createHistory = process.env.SERVER 20 | ? createMemoryHistory 21 | : routerMode 22 | 23 | return createRouter({ 24 | scrollBehavior: () => ({ left: 0, top: 0 }), 25 | routes, 26 | history: createHistory(process.env.VUE_ROUTER_BASE), 27 | }) 28 | }) 29 | -------------------------------------------------------------------------------- /src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | /// 4 | 5 | // Mocks all files ending in `.vue` showing them as plain Vue instances 6 | declare module '*.vue' { 7 | import type { DefineComponent } from 'vue'; 8 | const component: DefineComponent<{}, {}, any>; 9 | export default component; 10 | } 11 | -------------------------------------------------------------------------------- /src/ssg-flag.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | /* prettier-ignore */ 3 | // @ts-nocheck 4 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 5 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 6 | import 'quasar/dist/types/feature-flag'; 7 | 8 | declare module 'quasar/dist/types/feature-flag' { 9 | interface QuasarFeatureFlags { 10 | ssr: true; 11 | ssg: true; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/ssg.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | /* prettier-ignore */ 3 | // @ts-nocheck 4 | 5 | import 'quasar-app-extension-ssg/types/vite/quasar-wrappers'; 6 | -------------------------------------------------------------------------------- /src/stores/index.ts: -------------------------------------------------------------------------------- 1 | import { store } from 'quasar/wrappers' 2 | import { createPinia } from 'pinia' 3 | import type { Router } from 'vue-router' 4 | /* 5 | * When adding new properties to stores, you should also 6 | * extend the `PiniaCustomProperties` interface. 7 | * @see https://pinia.vuejs.org/core-concepts/plugins.html#typing-new-store-properties 8 | */ 9 | declare module 'pinia' { 10 | export interface PiniaCustomProperties { 11 | readonly router: Router 12 | } 13 | } 14 | 15 | /* 16 | * If not building with SSR mode, you can 17 | * directly export the Store instantiation; 18 | * 19 | * The function below can be async too; either use 20 | * async/await or return a Promise which resolves 21 | * with the Store instance. 22 | */ 23 | 24 | export default store(() => { 25 | const pinia = createPinia() 26 | 27 | // You can add Pinia plugins here 28 | // pinia.use(SomePiniaPlugin) 29 | // const cookies = process.env.SERVER ? Cookies.parseSSR(ssrContext) : Cookies 30 | // pinia.use( 31 | // cretaeCookiePersisted(cookies, { 32 | // cookiesOptions: { 33 | // expires: 15, 34 | // sameSite: 'Strict', 35 | // }, 36 | // }) 37 | // ) 38 | // pinia.use(createLSPersisted(LocalStorage)) 39 | 40 | return pinia 41 | }) 42 | -------------------------------------------------------------------------------- /src/stores/store-flag.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 3 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 4 | import "quasar/dist/types/feature-flag"; 5 | 6 | declare module "quasar/dist/types/feature-flag" { 7 | interface QuasarFeatureFlags { 8 | store: true; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | import { str_random } from '@taiyuuki/utils' 2 | 3 | export function getRandomName(fileName?: string) { 4 | if (fileName) { 5 | return str_random(12) + fileName.substring(fileName.lastIndexOf('.')) 6 | } 7 | return str_random(12) 8 | } 9 | 10 | export function getFileName(path: string) { 11 | return path.substring(path.lastIndexOf('\\') + 1) 12 | } 13 | 14 | export function getFileExt(filename: string) { 15 | return filename.substring(filename.lastIndexOf('.') + 1) 16 | } 17 | 18 | export function ensureNoExt(filename: string) { 19 | return filename.substring(0, filename.lastIndexOf('.')) 20 | } 21 | 22 | export function getMinetype(filename: string) { 23 | const imageExt = filename.substring(filename.lastIndexOf('.')) 24 | let imageType = '' 25 | imageType = imageExt === '.svg' ? 'image/svg+xml' : imageType 26 | imageType = imageExt === '.png' ? 'image/png' : imageType 27 | imageType 28 | = imageExt === '.jpg' || imageExt === '.jpeg' ? 'image/jpeg' : imageType 29 | imageType = imageExt === '.gif' ? 'image/gif' : imageType 30 | imageType 31 | = imageExt === '.tif' || imageExt === '.tiff' ? 'image/tiff' : imageType 32 | return imageType 33 | } 34 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@quasar/app-vite/tsconfig-preset", 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "types": [ 6 | "vite-plugin-pages/client", 7 | "vite-plugin-vue-layouts/client", 8 | "node" 9 | ], 10 | "paths": { 11 | "@/*": [ 12 | "src/*" 13 | ], 14 | "src/*": [ 15 | "src/*" 16 | ] 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /unocss.config.ts: -------------------------------------------------------------------------------- 1 | import { 2 | defineConfig, 3 | presetUno, 4 | presetAttributify, 5 | presetIcons, 6 | } from 'unocss' 7 | import { presetTaiyuuki } from '@taiyuuki/unocss-preset' 8 | 9 | export default defineConfig({ 10 | presets: [ 11 | presetAttributify({}), 12 | presetUno(), 13 | presetIcons(), 14 | presetTaiyuuki(), 15 | ], 16 | shortcuts: [], 17 | variants: [], 18 | }) 19 | --------------------------------------------------------------------------------